【发布时间】:2012-01-26 13:25:33
【问题描述】:
我对 MATLAB 中的体积数据几乎没有经验, 我需要完成下一个任务: 我有 3 个向量(行):
x_ = vector(1:smpl:max_row,1);
y_ = vector(1:smpl:max_row,2);
z_ = vector(1:smpl:max_row,3);
是来自高度为 max_row 的大型 3 列数组向量的样本。 x_ , y_ , z_ 是 3D 图形的点 - 图形的表面点(体积)。它们代表应该在 matlab 中绘制的 3D 物体。
我创建了线性网格:
%linear grid
a = -1.1:step:(-1.1+step*(length(x_)-1));
b = -1.1:step:(-1.1+step*(length(y_)-1));
c = -1.1:step:(-1.1+step*(length(z_)-1));
[x,y,z] = meshgrid(-1.1:step:(-1.1+step*(length(x_)-1)));
我还创建了数组 v length(x_)*length(x_)*length(x_),其中包含 3D 身体表示功能点的单元格中的“1”和另一个“0”。
我试着做插值:
vi = interp3(x,y,z,v,x,y,z,'nearest');
但是我已经创建了 vi = v。
现在我需要在 3D 上绘制 v 数组并像在
中那样形成 3D 体http://www.mathworks.com/help/techdoc/ref/isonormals.html
例如。
接下来我会这样做:
%plotting:
figure
p = patch(isosurface(x,y,z,v,1e-5,'verbose'),'FaceColor','green','EdgeColor','none');
grid on;
isonormals(v,p);
daspect([1 1 1])
view(3);
axis tight;
camproj perspective;
camlight
lighting gouraud
colormap(hsv)
但是我得到的只是小矩形来代替函数“1”,这些矩形没有像附加的图片中那样连接。 我希望绘制由该点包围的实体。
有谁知道问题出在哪里,如何从 x,y,z,v 数组中绘制 3D 身体?
提前致谢。
图片:
【问题讨论】:
标签: matlab