2010-07-13 95 views
0

這是一個班級作業。我寫了一些代碼,希望有人能幫助我。使用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 

的outupt圖片請點擊以下(太大)的鏈接

http://i26.tinypic.com/6ye1j7.jpg 左側是一個部分,右圖像是利用橢球上......

你認爲他們是相同的?

謝謝

回答

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) 

現在,您可以旋轉圖(點擊按鈕與circlular箭頭,然後拖動該圖),你會發現兩個橢球非常吻合。如果第二個比第一個大,你會看到兩者之間的空間;如果第二個比第一個小,你只會看到第一個不透明的。