作者hxhgon (芋圓)
看板MATLAB
標題[繪圖] 如何繪製3D拋物面
時間Tue May 22 22:20:27 2012
若假設有一拋物曲面 型式為 z=x.^2+(y-1).^2
如何繪製其在 r<=2.2 之範圍內的3D曲面 (r.^2= x.^2+y.^2 亦即是個極作標)
我剛開始的程式如下:
x=linspace(-2.2,2.2)
y=linspace(-2.2,2.2)
[xx,yy]=meshgrid(x,y)
z=xx.^2+(yy-1).^2
mesh(x,y,z)
但是顯而易見的 會連r>2.2的範圍也畫進去
所以後來把y的部分改成 y=linspace(-(2.2.^2-x.^2).^0.5,(2.2.^2-x.^2).^0.5)
不過很顯然的 不能這樣亂改...= =
之後又改成
r=linspace(0,2.2)
theta=linspace(-pi,pi)
[rr,thetaa]=meshgrid(r,theta)
x=cos(thetaa)*rr
y=sin(thetaa)*rr
z=x.^2+(y-1).^2
mesh(x,y,z)
還是不行 之後又試了幾種方法後就崩潰了...QQ
想請教各位大大 我這種問題該怎麼解決
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.201.84
1F:推 ejialan:第一種在mesh前多加z(xx.^2+yy.^2>2.2^2)=nan; 05/23 00:02
2F:→ ejialan:第二種 x=cos(thetaa).*rr; y=sin(thetaa).*rr; 05/23 00:03