![](http://d.hiphotos.baidu.com/zhidao/wh%3D600%2C800/sign=8464aa8c060828386858d41288a98539/1ad5ad6eddc451da22d00d78b7fd5266d016327a.jpg)
比如上圖所示是位置向量R逆時針旋轉(zhuǎn)角度B前后的情況.
在左圖中,我們有關(guān)系:
x0 = |R| * cosA => cosA = x0 / |R|
y0 = |R| * sinA => sinA = y0 / |R|
在右圖中,我們有關(guān)系:
x1 = |R| * cos(A+B)
y1 = |R| * sin(A+B)
其中(x1,y1)就是(x0,y0)旋轉(zhuǎn)角B后得到的點,也就是位置向量R最后指向的點.我們展開cos(A+B)和sin(A+B),得到:
x1 = |R| * (cosAcosB - sinAsinB)
y1 = |R| * (sinAcosB + cosAsinB)
現(xiàn)在把 cosA = x0 / |R| 和 sinA = y0 / |R| 代入上面的式子,得到:
x1 = |R| * (x0 * cosB / |R| - y0 * sinB / |R|) => x1 = x0 * cosB - y0 * sinB
y1 = |R| * (y0 * cosB / |R| + x0 * sinB / |R|) => y1 = x0 * sinB + y0 * cosB
這樣我們就得到了二維坐標(biāo)下向量圍繞圓點的逆時針旋轉(zhuǎn)公式.順時針旋轉(zhuǎn)就把角度變?yōu)樨摚?br/> x1 = x0 * cos(-B) - y0 * sin(-B) => x1 = x0 * cosB + y0 * sinB
y1 = x0 * sin(-B) + y0 * cos(-B)=> y1 = -x0 * sinB + y0 * cosB
現(xiàn)在我要把這個旋轉(zhuǎn)公式寫成矩陣的形式,有一個概念我簡單提一下,平面或空間里的每個線性變換(這里就是旋轉(zhuǎn)變換)都對應(yīng)一個矩陣,叫做變換矩陣.對一個點實施線性變換就是通過乘上該線性變換的矩陣完成的.好了,打住,不然就跑題了.
所以二維旋轉(zhuǎn)變換矩陣就是:
[cosA sinA] [cosA -sinA]
[-sinA cosA] 或者 [sinA cosA]
我們對向量進行旋轉(zhuǎn)變換可以通過矩陣完成,比如我要向量(x,y)繞原點逆時針旋轉(zhuǎn)角度A:
[x,y] x [cosA sinA] = [x*cosA-y*sinA x*sinA+y*cosA]
[-sinA cosA]
旋轉(zhuǎn)后的向量為:[x*cosA-y*sinA x*sinA+y*cosA]