Re: [問題] 畫個橢球?

看板MATLAB作者 (Mesh Construction...)時間19年前 (2005/12/30 21:42), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/1
※ 引述《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
文章代碼(AID): #13jJbXc1 (MATLAB)
文章代碼(AID): #13jJbXc1 (MATLAB)