如何將角度(rx, ry, rz)
的點(x, y, z)
關於各自的軸旋轉?計算旋轉角度和旋轉角度前的位置的絕對位置
也就是說,如何確定(x, y, z)
的旋轉角度由(rx, ry, rz)
旋轉產生的點(x1, y1, z1)
?
是否有任何DirectX例程可以完成此任務?
如何將角度(rx, ry, rz)
的點(x, y, z)
關於各自的軸旋轉?計算旋轉角度和旋轉角度前的位置的絕對位置
也就是說,如何確定(x, y, z)
的旋轉角度由(rx, ry, rz)
旋轉產生的點(x1, y1, z1)
?
是否有任何DirectX例程可以完成此任務?
你在問什麼是如何使用Euler Angles進行旋轉。有幾種慣例可供您選擇,但在我看來,您感興趣的是應用圍繞Z軸的旋轉,然後繞Y旋轉,然後圍繞X旋轉。爲此,您將乘以矩陣
其中
c1 = cos(rx) s1 = sin(rx)
c2 = cos(ry) s2 = sin(ry)
cs = cos(rz) s3 = sin(rz)
有幾個問題這種方法,比較常見的是gimbal lock之一。首選的方法是使用角度軸配方之一。其中最常見的兩種是Unit Quaternion Rotations和Euler-Rodreigues Rotation Matrices。可以通過明確定義三個旋轉軸及其相關旋轉角度來產生12個歐拉旋轉矩陣中的任意一個,然後將產生的旋轉表示以與要旋轉的矢量相反的順序相乘。
DirectX使用Quaternions for performing rotations。
+1瞭解問題(我不能),併爲清晰和詳細的答案! – Ali 2012-08-14 19:37:15
在我的電子器件(EM)類我學會使用公式
X = R sinq cosf,Y = R sinq SINF,Z = R COSQ
More Info Here轉換笛卡爾座標到極座標cordinates
q是theta,f是phi。
我不認爲這是海報的要求。你在極座標和笛卡爾座標之間轉換。 OP正在詢問如何使用歐拉角將點從一個位置旋轉到另一個位置。 – andand 2012-08-14 16:18:48
您需要找到公式。這個問題與編程有什麼關係? – klm123 2012-08-14 13:10:58
這些角度指的是什麼?他們是歐拉角嗎?一般來說,你應該從這些角度得到一個旋轉矩陣(方式取決於這些角度代表的內容,參見例如[這裏](http://en.wikipedia.org/wiki/Rotation_formalisms_in_three_dimensions#Conversion_formulae_between_formalisms)),並將其應用於位置矢量。 – 2012-08-14 13:11:43
閱讀這個http://en.wikipedia.org/wiki/Rotation_matrix – mathematician1975 2012-08-14 13:16:00