接著講一下三維坐標(biāo)系繞任意軸旋轉(zhuǎn)的算法原理,,這些算法可能應(yīng)用的時(shí)候很少碰到,但是不可以不學(xué),,說(shuō)不定哪天碰到各問(wèn)題就是這個(gè)算法可以解決的,,例如,想快速搞一個(gè)球面軌跡出來(lái);建議朋友們了解下,! 對(duì)于空間里兩個(gè)任意姿態(tài)的坐標(biāo)系,,總可以找到某個(gè)軸,使其中一個(gè)坐標(biāo)系繞該軸旋轉(zhuǎn)一個(gè)角度就能與另一個(gè)坐標(biāo)系姿態(tài)重合,。 用matlab寫一下程序,; 先寫個(gè)旋轉(zhuǎn)矩陣,分別繞X/Y/Z旋轉(zhuǎn)0.1,、0.2,、0.3弧度; >> R = rpy2r(0.1 , 0.2, 0.3); 旋轉(zhuǎn) 這個(gè)旋轉(zhuǎn)矩陣是從原點(diǎn)坐標(biāo)系通過(guò)旋轉(zhuǎn)矩陣旋轉(zhuǎn)到一個(gè)新位置,,那么我們可以通過(guò)下面的程序得出,,坐標(biāo)系原點(diǎn)是繞著哪個(gè)向量軸旋轉(zhuǎn)一定角度后得到新坐標(biāo)系的;
其中theta是旋轉(zhuǎn)角度,,V是繞其旋轉(zhuǎn)的向量軸,;
>> [x,e] = eig(R)x =-0.6944 + 0.0000i -0.6944 + 0.0000i 0.1886 + 0.0000i0.0792 + 0.5688i 0.0792 - 0.5688i 0.5834 + 0.0000i0.1073 - 0.4200i 0.1073 + 0.4200i 0.7900 + 0.0000ie =0.9339 + 0.3574i 0.0000 + 0.0000i 0.0000 + 0.0000i0.0000 + 0.0000i 0.9339 - 0.3574i 0.0000 + 0.0000i0.0000 + 0.0000i 0.0000 + 0.0000i 1.0000 + 0.0000i
反過(guò)來(lái)推導(dǎo),;利用羅德里格斯的旋轉(zhuǎn)公式,,可以實(shí)現(xiàn)從角度和矢量到旋轉(zhuǎn)矩陣的逆轉(zhuǎn)問(wèn)題:
函數(shù)里有四個(gè)輸入?yún)?shù),,一個(gè)表示角度pi/2,其它三個(gè)[1 0 0]表示向量旋轉(zhuǎn)軸;實(shí)際可以更簡(jiǎn)化,因?yàn)橄蛄靠梢灾挥脙蓚€(gè)參數(shù)表示,,另一個(gè)可以通過(guò)這兩個(gè)參數(shù)求出值,; 所以實(shí)際只需要輸入三個(gè)參數(shù),就可以實(shí)現(xiàn)轉(zhuǎn)換,! |
|