旋轉角度
已知兩向量a=(x1,y1,z1)和b=(x2,y2,z2),
兩向量的旋轉角度,可以通過點乘獲得
a•b=|a|*|b|*cosθ
通過cosθ反轉可求得旋轉角度
旋轉軸
兩個(不平行)的向量,決定一個平面,
而平面內任意向量,都可以通過旋轉角度θ獲得,所以,該平面的法向量一定是旋轉軸(旋轉軸不一定是該平面的法向量)
而法向量可以通過兩向量的叉乘得到,可參考
數學基礎知識01
旋轉矩陣
(旋轉矩陣)是基於(旋轉軸)和(旋轉角度)推導出來的
具體推導公式,可參考前輩的以下網址
http://www.cnblogs.com/xpvincent/archive/2013/02/15/2912836.html
推導出來的(旋轉矩陣)為
公式說明
假設(旋轉軸)的向量n=(nx, ny, nz);
I是單位矩陣,A是向量n的反對稱矩陣,即
反對稱矩陣如何求,詳情可看
數學基礎知識01
而θ旋轉角度
最后求出的旋轉矩陣如下
通過旋轉矩陣可以求出(向量a)繞(旋轉軸)旋轉(角度θ)得到的(向量b)
設3X3的(旋轉矩陣)為R
v' = Rv
除此之外,在后面會遇到一種特殊的情況,(攝像機的移動)
已知(旋轉軸向量n),已知(需要旋轉的向量a),已知(需要旋轉的向量a,逆時針旋轉90度得到的向量b)
而且(向量n)是,(向量a)和(向量b),所在平面的法向量
通過旋轉矩陣,我們可以得到
化簡整合有
當(向量n)是法向量的時候,我們可以清楚地看見
所以
把vx2代入公式,有
同理,把新得到的向量,逆時針旋轉90度,可以獲得,向量b旋轉同樣角度后,得到的新向量
由x坐標變化,我們可以輕易獲得向量變化之后的,y坐標 和 z坐標