Matlab中绘制度长方体3D图形
已知空间中长方体网格的三维坐标(x,y,z)及其对应的值Value,绘制出长方体的各个面,
各个面的颜色根据对应坐标的值设定。
图形效果如下
以下是matlab中的代码
clear;
clc;
% colormap([0 0 0;1 1 1]);
caxis=[0 1];
nx=10;
ny=5;
nz=5;
value=ones(nx,ny,nz);
for k=1:nz
for j=1:ny
for i=1:nx
% value(i,j,k)=i;
value(i,j,k)=rand;
end;
end
end
x=1:nx;
y=1:ny;
z=1:nz;
close all;
% x=1 yz面
[Y,Z]=meshgrid(1:ny,1:nz);
X=ones(nz,ny);
C=X;
for k=1:nz
for j=1:ny
C(k,j)=value(1,j,k);
end;
end
surf(X,Y,Z,C);
hold on;
% x=nx yz面
X=zeros(nz,ny)+nx;
C=X;
for k=1:nz
for j=1:ny
C(k,j)=value(nx-1,j,k);
end;
end
% mesh(X,Y,Z);
surf(X,Y,Z,C);
hold on;
%
% y=1 xz面
[X,Z]=meshgrid(1:nx,1:nz);
Y=ones(nz,nx);
C=Y;
for k=1:nz
for i=1:nx
C(k,i)=value(i,1,k);
% C(k,i)=rand;
end;
end
% mesh(X,Y,Z);
surf(X,Y,Z,C);
hold on;
% y=ny xz面
Y=zeros(nz,nx)+ny;
C=Y;
for k=1:nz
for i=1:nx
C(k,i)=value(i,ny-1,k);
end;
end
% mesh(X,Y,Z);
surf(X,Y,Z,C);
hold on;
% z=1 xy面
[X,Y]=meshgrid(1:nx,1:ny);
Z=ones(ny,nx);
C=Z;
for j=1:ny
for i=1:nx
C(j,i)=value(i,j,1);
end;
end
% mesh(X,Y,Z);
surf(X,Y,Z,C);
hold on;
% z=nz xy面
Z=zeros(ny,nx)+nz;
C=Z;
for j=1:ny
for i=1:nx
C(j,i)=value(i,j,nz-1);
end;
end
% mesh(X,Y,Z);
surf(X,Y,Z,C);
% surf(X,Y,Z,C,'CDataMapping','direct');
hold on;
axis square
axis([0 nx+1 0 ny+1 0 nz+1]);
colorbar;
% colormap hot
xlabel('x');
ylabel('y');
zlabel('z');