2012-08-14 296 views
1

如何將角度(rx, ry, rz)的點(x, y, z)關於各自的軸旋轉?計算旋轉角度和旋轉角度前的位置的絕對位置

也就是說,如何確定(x, y, z)的旋轉角度由(rx, ry, rz)旋轉產生的點(x1, y1, z1)

是否有任何DirectX例程可以完成此任務?

+2

您需要找到公式。這個問題與編程有什麼關係? – klm123 2012-08-14 13:10:58

+4

這些角度指的是什麼?他們是歐拉角嗎?一般來說,你應該從這些角度得到一個旋轉矩陣(方式取決於這些角度代表的內容,參見例如[這裏](http://en.wikipedia.org/wiki/Rotation_formalisms_in_three_dimensions#Conversion_formulae_between_formalisms)),並將其應用於位置矢量。 – 2012-08-14 13:11:43

+3

閱讀這個http://en.wikipedia.org/wiki/Rotation_matrix – mathematician1975 2012-08-14 13:16:00

回答

3

你在問什麼是如何使用Euler Angles進行旋轉。有幾種慣例可供您選擇,但在我看來,您感興趣的是應用圍繞Z軸的旋轉,然後繞Y旋轉,然後圍繞X旋轉。爲此,您將乘以矩陣

enter image description here

其中

c1 = cos(rx) s1 = sin(rx) 
c2 = cos(ry) s2 = sin(ry) 
cs = cos(rz) s3 = sin(rz) 

有幾個問題這種方法,比較常見的是gimbal lock之一。首選的方法是使用角度軸配方之一。其中最常見的兩種是Unit Quaternion RotationsEuler-Rodreigues Rotation Matrices。可以通過明確定義三個旋轉軸及其相關旋轉角度來產生12個歐拉旋轉矩陣中的任意一個,然後將產生的旋轉表示以與要旋轉的矢量相反的順序相乘。

DirectX使用Quaternions for performing rotations

+0

+1瞭解問題(我不能),併爲清晰和詳細的答案! – Ali 2012-08-14 19:37:15

1

在我的電子器件(EM)類我學會使用公式

X = R sinq cosf,Y = R sinq SINF,Z = R COSQ

More Info Here轉換笛卡爾座標到極座標cordinates

q是theta,f是phi。

+0

我不認爲這是海報的要求。你在極座標和笛卡爾座標之間轉換。 OP正在詢問如何使用歐拉角將點從一個位置旋轉到另一個位置。 – andand 2012-08-14 16:18:48