2010-04-18 100 views
1

我有我的iPhone應用程序中的(x,y,z)座標40點。現在我只是NSLog他們。但我想在...... 3D中展示它們!
我該怎麼做?我必須使用openGL ES嗎?其他可能性(如果有的話)有哪些?
我從來沒有在編程中使用3D ......這是一件困難的事情嗎?在iPhone上以三維(x,y,z)座標顯示點?

謝謝!

回答

0

您可以使用CGContext繪圖API執行自己的3D數學運算並渲染到二維曲面,也可以使用OpenGL ES爲您進行轉換和渲染。兩種選擇都有優點和缺點,而且都有學習曲線。

我推薦使用OpenGL選項,因爲最終的結果會更簡單,更快,並且您選擇的技能將更具可重用性。

-1

如果您要在3D中顯示點並進行自己的數學計算,只要它們都是點並且您正在直接觀察一個軸,就非常簡單。道理很簡單,你可以使用像這樣開始:

http://www.cleverpig.com/tutorials/starfield/

現在,如果你想用一個更現實的透視投影,畫線,3D對象,用「相機」或播放做複雜的動畫,OpenGL ES將被指示。

0

讓我給出一個非常簡單的硬連線設置描述,如果您只是想在不學習任何新API的情況下繪製點,就可以開始使用。

讓我們假設一個90度視野的相機。假設您想要繪製一個寬度和高度爲w的方形窗口。將「z」座標解釋爲屏幕中距離的距離。

然後你繪製座標(X,Y)給出的點(x,y,z)通過

X = w/2+w/2*x/z 
Y = w/2+w/2*y/z 

w/2+位偏移到你的窗口的中心。 w/2*位是一個縮放比例,使您的90度視野填滿窗口。 /z但是是一個縮放,使更遙遠的事情看起來更小。而已!

雖然有一些事情要注意。如果z <= 0那麼你不想繪製那個點,因爲它在相機後面,或者更糟糕的是,在屏幕的平面上導致除以零。在繪圖之前,您可能想要檢查XY是否在範圍內。如果沒有,那麼你會試圖畫出你的視野之外的點。

當然,OpenGL可以爲你自動完成大部分工作,它可以讓你改變攝像機,繪製更多點,旋轉點以及快速完成這些任務。但首先了解這些原則是很好的。

(BTW常見的做法是用z<0而不是z>0只畫出點。在這種情況下,你需要在上面的代碼與-符號來代替+。)

(固定錯字。感謝您指出出來!)

+0

「常見約定是僅繪製z <0而不是z <0」的點。那裏有一個錯字嗎? – Ponkadoodle 2010-05-06 00:33:09

相關問題