3d坐标+阴影

时间:2014-10-02 16:29:29

标签: matlab plot 3d mesh

我正在尝试绘制一个三维坐标系(X,Y,Z),然后我想在这个三维坐标系中用一些颜色遮蔽一个区域,例如阴影区域定义如下:

Z> Y> X

有人可以帮忙吗?

我做了以下但是似乎无法知道如何继续,

a=0:0.1:10;
b=0:0.1:10;
c=0:0.1:10;
[x,y,z]=meshgrid(a,b,c);

2 个答案:

答案 0 :(得分:0)

好的,那么你需要能够绘制体积数据。您可以做的最好的事情是下载vol3d以实现这一目标。它是一个非常好的体素可视化器。

然后:

a=0:0.1:10;
b=0:0.1:10;
c=0:0.1:10;
[x,y,z]=meshgrid(a,b,c);

shaded_area=false(size(x));

% Your rules

shaded_area=y>x;           % two ways ;).
shaded_area(z>y)=true;

% Plot it!
vol3d('Cdata',shaded_area);

然而,当你正在试图绘制体积布尔数据时,我建议你使用这几个好东西来获得更好的"更好的"可视化,不再。

vol3d('Cdata',smooth3(uint8(shaded_area),'gaussian'))
axis([0 length(a) 0 length(b) 0 length(c)])
view(122,14)
axis off

enter image description here

答案 1 :(得分:0)

根据您所说的阴影,这可以作为一个起点:

创建满足条件的点3D网格和逻辑3D数组:

[X,Y,Z] = meshgrid(1:100,1:100,1:100);
ShadeRegion=(Z > Y).*(Y> X);

然后使用内置函数isosurface

fv = isosurface(X,Y,Z,ShadeRegion,0.5);

然后,您可以在the manual中显示isosurfaces时应用该示例:

p=patch(fv);
set(p,'FaceColor','red','EdgeColor','none');
daspect([1,1,1])
view(3); axis tight
camlight 
lighting gouraud

结果:

shaded region