2010-04-29 59 views
0

如何轉換來自歐拉座標 E1 =(x1,y1,z1,yaw1,pitch1,roll1) to E2 =(x2,y2,z2,yaw2,pitch2,roll2) 其中x,y,z是點 的座標和偏航,俯仰,滾動原點是點的矢量的方向/方向。 偏航在y周圍,在x周圍傾斜,在z周圍滾動。它們按照該順序執行。偏航0與計劃xy垂直(與E1相反,E2等於z)。如何改變座標的旋向性?

E1採用了右手的空間和E2左手空間。 兩者具有相同的原點,y(頂部)和z(進入屏幕)的方向相同。 它們在E1的左邊和X2的右邊相差x。 他們也有不同的正向旋轉的方向。

我有一個自定義類型來保存標量表示,並從與等效WPF的Matrix3D表示轉換。

+0

一般從向量空間的任意鹼基轉換成另一個你只需解方程₂=⋅₁其中然後是變換矩陣,以從₁轉換成₂。既然你知道你的基數((1,1,1)和(-1,1,1)),這應該不會太難。 – Joey 2010-04-29 07:49:51

+0

謝謝Johannes。我不是一個數學人員,這一點我不清楚。我嘗試過一些隨機組合。看起來這是一個使用自定義「Point6DoF」類型將左手轉換爲WPF /右手空間的類型,該類型包含3D點和3D查看方向:Point6DoF positionInRightHanded = new Point6DoF(-X,Y,Z , - Yaw,Pitch,-Roll)。這對你有意義嗎? – 742 2010-04-29 17:33:56

回答

0

到底該解決方案適用於我:

Point6DoF right = new Point6DoF(
    -left.X, left.Y, left.Z,-left.Yaw, left.Pitch, -left.Roll) 

其中Point6DoF是保存位置和歐拉角類。