2010-09-03 307 views
9

我試圖教自己關於3D圖形,但是我很難想象涉及的3D矢量。3D圖形:用於可視化3D矢量的軟件?

有什麼好的軟件可以用來可視化3D矢量嗎?

例如,現在我正在學習相機轉換,如果我可以輕鬆地繪製正確/向上/向量/眼睛向量,將會很好。

我試過了Grapher.app和gnuplot,但是很難在Grapher.app中輸入點,而gnuplot似乎無法鎖定長寬比。

回答

8

Visual Python是一個超級簡單的三維可視化庫。

例如,爲了顯示一個球體和箭頭:

import time, math, visual 

ball = visual.sphere(pos=(0,2,0), radius=1, color=visual.color.red) 
vect = visual.arrow(pos=(2,0,0), axis=(2 ,2,-2)) 

visual.scene.forward = (.1, -.3, -1) # controls the camera view angle 

alt text

此窗口現在也有所有正常的鼠標交互,諸如縮放和照相機(即視角)的旋轉。

VPython也很容易動畫。例如,下面將旋轉箭頭:

da = 2*math.pi/100 
for timestep in range(100): 
    angle = timestep*da 
    vect.axis = (2+2*math.sin(angle), 2*math.cos(angle), -2) 
    time.sleep(.1) 
+0

真棒 - 看起來非常好。非常感謝。 – 2010-09-06 18:44:07

+0

如果我有更多的問題,我會爲他們開新的問題......但只是運行你到達的地方,我沒有得到任何類型的鼠標交互。我有一些祕密醬嗎? – 2010-09-06 18:48:07

+0

我使用的是Ubuntu Linux中的VPython,並且中間的鼠標按鈕縮放並且鼠標右鍵旋轉(並且我沒有做任何特殊的事情來獲取它)。你說你沒有得到這個?你可能想嘗試設置:visual.scene.autoscale = 0,visual.scene.userzoom = 1,visual.scene.userspin = 1,但我認爲默認是允許交互,所以這不應該是必要的。 – tom10 2010-09-06 22:21:09

2

我不知道這是否比Grapher.app或gnuplot更容易,但是您可以編寫自己的3D圖形程序,只繪製矢量圖。

Here's an example in OpenGL繪製X,Y和Z軸向量。

更新:Here's a Java applet特別專注於幫助您可視化攝像機轉換中的矢量。請注意安裝說明:您必須安裝Java 3D。

描述:透視相機 參數小應用程序的目的是熟悉 學生用合成, 透視投影照相機相關聯的各種參數 。用戶 可以調整以下任何參數:視場寬度, 視場高度,近剪輯 平面距離,遠剪裁平面 距離,向上向量和外觀向量。 可視化截屏在 窗口中顯示,允許學生 瞭解參數如何將 與可視截錐的形狀相關聯。

相同的網站有many components, such as axes,你可以用它來設置一個簡單的applet,只顯示你想要的矢量。

+0

嗯...我沒有考慮過(我正在處理非交互式3D圖形),但這不是一個壞主意。謝謝。 – 2010-09-04 01:02:26

+0

@傑,你在和誰說話? – LarsH 2010-09-06 04:33:03

+0

@David Wolever,如果你創建一個應用程序並開放它的源碼,我相信它也會對其他人有所幫助。 – 2010-09-06 12:18:32