關於三維旋轉的歐拉角的問題?

我想用這種方法代替歐拉角。

mathbb{R}^3中,繞x_1軸旋轉	heta_1,再繞x_2軸旋轉	heta_2,再繞x_3軸旋轉	heta_3.

這裡繞某軸轉動的意思是這個軸不動,別的軸所在的平面旋轉。

比如繞x_1軸旋轉	heta_1就是坐標乘以矩陣:

 egin{array}{ccc}
1  0  0\
0  cos	heta_1  sin	heta_1  \
0  -sin	heta_1   cos	heta_1\
end{array}

顯然,為了得到所有的旋轉結果,所有的	heta _i可以限制在[0,2pi)內。

能否更進一步縮小範圍?

化為純代數問題就是

所有的	heta _i可以限制在一個怎樣的最小範圍內,使得:

left[   egin{array}{ccc}
 cos	heta_3  sin	heta_3 0 \
 -sin	heta_3   cos	heta_3 0\
0  0  1\
end{array}

ight] left[ 
egin{array}{ccc}
 cos	heta_2  0 sin	heta_2\
0  1  0  \
-sin	heta_2  0  cos	heta_2\
end{array}

ight]left[   egin{array}{ccc}
1  0  0\
0  cos	heta_1  sin	heta_1  \
0  -sin	heta_1   cos	heta_1\
end{array}

ight]

能取其最大範圍(應該就是三維特殊正交群吧)


這其實也是歐拉角... 根據歐拉旋轉定理, 空間中的任何一個旋轉都可以用三個參量表示. 這三個參量就叫做歐拉角. 只是比較常見的是zyz形式的分解而你的分解是xyz形式的(也叫pitch-roll-yaw convention).

所有類型的歐拉角的取值範圍都是一樣的, 只有一個區別. 總是有	heta_1,	heta_3in[0,2pi], 但有時	heta_2in[0,pi], 對應有重複軸的分解, 比如zyz; 有時是	heta_2in[-pi/2,pi/2], 對應沒有重複軸的分解, 比如xyz. 這只是一個習慣問題.

最重要的是, SO(3)的拓撲是不平凡的. 因此無論你怎麼取範圍, 總不是雙射, 會有singularity. 比如zyz形式的歐拉角	heta_2=0或者pi時就一個旋轉就不能唯一確定	heta_1	heta_3. 這實際上就是萬向鎖的起源.


這個叫做「卡爾丹角」,和歐拉角其實是一樣的。

歐拉角在theta角為0的時候是一個變換奇點,也就是說其變換矩陣行列式為0,所以在描述剛體旋轉姿態的時候往往和「卡爾丹角」結合使用,因為「卡爾丹角」的變換奇點為theta角90度。

話又說回來,現在流行用四元數。


推薦閱讀:

三角形穩定性的本質是什麼?
求推薦幾本好的力學及有限元書籍?
1+1=2是公理還是定理?
2^31-1是質數對32位計算機帶來什麼好處了么?
為什麼兩個負數相乘等於一個正數,而不是等於負數?

TAG:數學 | 計算機 | 物理學 | 計算機圖形學 |