2012-02-14 51 views
0

我正在創建一個C++ ifc進口商。歐拉角和擠壓方向

我有一個方向矢量,我想擠出一個部分。該部分本身是一個2d點的列表。 要計算擠出方向,我必須將非變換方向與變換矩陣相乘。

該矩陣在x,yz(如歐拉角)中具有變換。

我必須計算圍繞拉伸方向的旋轉角度。

我有一個返回歐拉從 矩陣角矩陣類:

matrix.ExtractEulerXYZ(x,y,z)

的問題是,我可以有一個具有在xyz旋轉的方向矢量,如何我可以從拉伸方向選擇正確的角度xyz

+0

你在做2D矢量的3D數學嗎?這不建議。至少將所有點生成爲,但除此之外,您是在嘗試確定這些角度,還是僅對點進行轉換?也爲什麼不只是做矢量加法?您可能還想考慮其他標籤。因爲這看起來不是特定於語言的,並且更像是一個普通的[數學]事物 – gardian06 2012-02-14 19:42:36

回答

0

2d點在2d空間的位置(x,y)和3d空間的(x,y,0)。

三維空間中的歐拉角定義了xyz軸的3次旋轉以將xyz軸旋轉到指定點。也就是說,如果您在x軸上標記x軸上與該點正確距離的點,則沿着XY平面將a軸旋轉a,沿ZY平面旋轉軸b,沿ZX平面旋轉軸c。

請參閱http://en.wikipedia.org/wiki/Euler_angles中「與物理運動的關係」部分中的動畫 - 特別是,請遵循最初投影到左下角的x軸的進度。

如果您只有2d點,則ZY和ZX旋轉不起任何作用 - 您只是圍繞XY軸旋轉。因此,您可以使用簡單的三角函數(SOH CAH TOA)來查找從原點到點的直線的角度;沒有必要使用矩陣。