使用matlab的椭圆体

时间:2010-07-13 00:33:18

标签: matlab

这是课堂作业。我写了一些代码,希望有人可以帮助我。

alt text http://i32.tinypic.com/2gw9so3.jpg

这是我的代码

% --- This is optional to verify whether my parametrization is consistent with the
% --- original equation
% syms x y z p t
% ellipsoid=[2*sin(p)*cos(t),4*sin(t)*sin(p),sqrt(2)*cos(p)]
% simplify(subs((x^2/4)+(y^2/16)+(z^2/2),[x,y,z],ellipsoid))
% --- END

t=linspace(-2,2*pi,20);
s=linspace(0,pi/2,20);

[s t]=meshgrid(s,t);

x=2*cos(t).*sin(s); 
y=4.*sin(s).*sin(t); 
z=sqrt(2).*cos(s);

surf(x,y,z); 
grid on;

xlabel('x');ylabel('y');zlabel('z'); axis equal

hold on;
% I think this is how we draw the lower half of the ellipsoid using -sqrt(2)
t=linspace(-2,2*pi,20);
s=linspace(0,pi/2,20);

[s t]=meshgrid(s,t);

x=-2.*cos(t).*sin(s); y=-4.*sin(s).*sin(t); z=-sqrt(2).*cos(s);
surf(x,y,z)
axis equal

第二种方法是使用椭球注释,这是这个问题的第二部分。

[x, y, z] = ellipsoid(0,0,0,2.0,4.0,sqrt(2),20);
surfl(x, y, z)
colormap copper
axis equal

中断图片请点击以下链接(太大)

http://i26.tinypic.com/6ye1j7.jpg 左侧是部分a,右侧图像是使用椭球...

你认为他们是一样的吗?

谢谢

1 个答案:

答案 0 :(得分:1)

是的,他们几乎一样。

您可以通过在同一轴上绘制两个椭球来测试它,即在绘制第一个椭球后,运行

[x, y, z] = ellipsoid(0,0,0,2.0,4.0,sqrt(2),20);
sh = surfl(x, y, z); %# capture the handle, i.e. the unique identifier, of the surface

%# set color to gray, make mostly transparent
set(sh,'FaceColor',[0.5,0.5,0.5],'FaceAlpha',0.5)

现在您可以旋转绘图(单击带有圆圈箭头的按钮,然后拖动绘图),您将看到两个椭圆体非常吻合。如果第二个比第一个大,你会看到两者之间的空间;如果第二个小于第一个,你只会看到第一个不透明的。