Re: [問題] 畫個橢球?
※ 引述《PFZ (努力為未來打拼)》之銘言:
: ※ 引述《PFZ (努力為未來打拼)》之銘言:
: : 一個空間中的橢球可以表示成下列方程式:
: : (x/a)^2 + (y/b)^2 + (z/c)^2 = 1
: : 請用ez開頭的繪圖指令,畫出三度空間的一個平滑的橢球,其中a=3,b=4,c=8。
: : 精華區有類似的...
: : 我有試過自己改看看...
: : 可是command window總是出現一堆我不認識的錯誤訊息...orz
: : 還請板上哪位人士來幫幫忙...thx
: theta=linspace(0,pi,30);
: th1=linspace(0,2*pi,30);
: r=1;
: x=r*3*sin(theta)'*cos(th1);
: y=r*4*sin(theta)'*sin(th1);
: z=r*8*cos(theta)'*ones(1,30);
: surf(x,y,z)
這個方法是直接用球座標積分來畫圖的去
你可以去翻翻工程數學裡頭的定義...
球座標的變數是由半徑和兩個角度(即經度和緯度)
而上面的程式 theta即是緯度 , th1為經度
其中緯度範為是從 0 < theta < pi
而經度範圍是從 0 < th1 < 2*pi
而由直角座標轉成球座標我們都令
x=r*sin(theta)*cos(th1)
y=r*sin(theta)*sin(th1)
z=r*cos(theta)
: 這是精華區的解法...
: 可是我有很多地方看不懂...
: 為什麼theta只到pi...不是到2*pi...
: th1是什麼...
: x,y,z的等式??
: 如果用ezsurf要怎麼改??
: 問題好像很多...@@a
: 不好意思...麻煩各位了...
而你現在的問題是要畫橢圓
所以要令
x=a*sin(theta)*cos(th1)
y=b*sin(theta)*sin(th1)
z=c*cos(theta)
我用help檔裡頭的範例稍微修改成你要的型式
答案如下 :
ezsurf('3*sin(theta)*cos(th1)','4*sin(theta)*sin(th1)','8*cos(theta)',[0,pi,0,2*pi])
你可以用help 檔查查看ezsurf的用法
裡頭還有其它用法..
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.0.217
→
12/30 22:08, , 1F
12/30 22:08, 1F
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章
-4
30