http://blog.csdn.net/xiajun07061225/article/details/7766838
在三維變換中,經常要用到旋轉變換,而且很多變換是圍繞任意軸的。那么下面就介紹繞任意單位軸旋轉的兩種方法。
假設要旋轉的角度是a,圍繞的軸是r。
方法一:
(1)構建新的基
尋找另外兩條單位長度的坐標軸s、t,他們相互垂直,而且與r垂直。這樣r、s、t組成了一組新基。
具體求s的方法:
找到r中的最小分量,將其設置為0.然后交換其他兩個分量,接着將第一個非零的分量取反(實際上也可以對另外一個非零分量取反)。
要求t,只需求r、s的叉積即可。
詳細計算公式:
這樣就確保了r、s、t組成了一組正交單位基。
(2)將標准基變換到新的基。
需要通過變換使得r和x軸重合,這樣之后的旋轉就是繞x軸的普通旋轉。另外的兩個軸也相互重合。
變換矩陣由上面的r、s、t向量組成:
(3)旋轉
因為r與x重合,在新的基中我們只需圍繞x軸進行旋轉(正常情況下的旋轉)即可。
假設旋轉矩陣是Rx(a)。
(4)變換回到原來的標准基。
變換矩陣應該是M的逆矩陣,由於M是正交的,因此其逆矩陣就是其轉置矩陣。
因此,最終的繞任意單位軸的變換矩陣是:
方法二
根據Goldman給出的公式進行計算,這個公式有點復雜:
具體推導過程可以參考:
http://www.cppblog.com/lovedday/archive/2008/01/12/41031.html
http://www.cnblogs.com/cg_ghost/archive/2012/04/27/2473347.html
再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!https://blog.csdn.net/jiangjunshow