我需要绘制多个球体,我正在使用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])
我需要球体的半径不同。如何定义每个球体的半径?
答案 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)');