如何在Matlab中绘制球体时定义半径?

时间:2012-03-23 00:14:45

标签: matlab geometry

我需要绘制多个球体,我正在使用mathwork帮助中的示例代码,如下所示 -

figure
[x,y,z] = sphere();
surf(x,y,z)  % sphere centered at origin
hold on
surf(x+3,y-2,z)  % sphere centered at (3,-2,0)
surf(x,y+1,z-3)  % sphere centered at (0,1,-3)
daspect([1 1 1])

我需要球体的半径不同。如何定义每个球体的半径?

2 个答案:

答案 0 :(得分:9)

[sphere](http://www.mathworks.com.au/help/techdoc/ref/sphere.html)的帮助文件表示它会为单位球体或半径为1的球体生成坐标。更改球体的坐标半径为1到半径为r的球体,您只需乘以r

[x,y,z] = sphere();
r = 5;
surf( r*x, r*y, r*z ) % sphere with radius 5 centred at (0,0,0)    

答案 1 :(得分:2)

IMO,surf()根本不是用户友好的。代码surf(x+3,y-2,z) % sphere centered at (3,-2,0)违反直觉(surf(x-1,y+2,0)与数学一致)。

无论如何,我建议您改用ellipsoid()。由于球体只是椭圆体的特例,因此您可以轻松理解它,而不必处理surf(),请查看http://www.mathworks.com/help/matlab/ref/ellipsoid.html

一个简单的例子:

r=5;
[x,y,z]=ellipsoid(1,2,3,r,r,r,20);
surf(x, y, z,'FaceColor','y', 'FaceAlpha', 0.2);
axis equal;
box on; xlabel('x-axis (m)'); ylabel('y-axis (m)'); zlabel('z-axis (m)');