2009-11-25 111 views
0

我想用sin和cos在一架飛機上做一個圓。雖然它與x,y或z軸對齊時效果很好,但我需要更動態的東西。有沒有辦法使用平面法線或其他解決方案將2D矢量變換爲3D矢量?2D矢量到3D矢量

回答

1

你可能想看看MathOverflow.

+0

是的,也許是這樣。 – Alex 2009-11-25 05:46:26

0

所以,如果我得到你的問題吧,你想畫在不直接面對軸的一個三維空間中的循環?一種方法是首先使用一個普通的三維向量作爲中心,並以二維方式圍繞它繪製一個圓,所以它仍然面向一個軸(忽略第三個座標)。要獲得旋轉的圓,您需要使用旋轉矩陣並將其應用於生成圓的點。這個數學是:

raw_point = Center + (cos(angle)|sin(angle)) 

      [raw_point.x] [1][0    ][0    ] [cos(YRotation)][0][-sin(YRotation)] [cos(ZRotation)][-sin(ZRotation)][0] 
3DPoint = [raw_point.y] * [0][cos(XRotation)][-sin(XRotation)] * [0    ][1][0    ] * [sin(ZRotation)][cos(ZRotation) ][0] 
      [raw_point.z] [0][sin(XRotation)][cos(XRotation) ] [sin(YRotation)][0][cos(YRotation) ] [0    ][0    ][1] 

(支架塊矩陣)

如果你需要的方式(rotation-)矩陣工作看它在維基百科上進一步解釋。 Btw。如果你想在java這樣的代碼語言中使用這種方法,你首先需要創建一個類來包含矩陣的數學。我可以告訴你這些是否必要,因爲我曾經有一個基於維度的問題。