關於二維圖形旋轉可能在很多計算機圖形學相關的書籍上都會介紹,然而真正理解公式推導過程的卻講得不多。那么如何推導出二維圖形繞某一點旋轉的公式呢?我在這里就將其推導過程簡要的說明一下。
其實推導過程比較簡單,首先我們來看一幅圖,看看如何推導出二維圖形繞原點進行旋轉的公式。

上圖畫的比較粗略,不過能說明問題就夠了。假設旋轉前的點位於P處,旋轉之后的點位於P'處。如何求旋轉之后的點P'坐標?
在圖中,旋轉之前P的方向角是a,旋轉之后P'的方向角就變為a+b,這里b就是旋轉的角度,所謂方向角是改點和原點連線與X軸正向的夾角。旋轉的正方向是逆時針
在圖中,從P'點向X軸引垂線,垂足為B點,根據三角形的基礎知識,可以寫出如下的等式。

公式1中的R就是點P以及P'到原點的距離
由公式1,根據高中三角函數的知識,即和差公式得到如下等式2

通過觀察上式,Rcos(a)=x,Rsin(a)=y,所以上式進一步花間可以得到下面的等式。

這個公式就是我們經常看到的二維圖形旋轉的公式,這樣繞原點的旋轉公式推導出來了,那么嗨經常碰到的繞某一點旋轉的,比如繞着矢量圖形的中心旋轉的。在這種情況下,首先需要平移,然后旋轉,最后平移回去,具體過程如下。

由上圖可知,(x0,y0)是旋轉的頂點,那么先將圖形平移到原點,然后繞着原點旋轉b角度,最后平移到(x0,y0)上去。
那么很容易可知繞任意一點(x0,y0)旋轉的公式為

是不是比較簡單,我覺得還行。
先介紹一個公式,即點(x,y)繞原點逆時針旋轉α得到(x',y')的公式
x'=xcosα-ysinα
y'=xsinα+ycosα
現在順時針旋轉α,即逆時針旋轉-α,用-α代替上面的α,並根據公式cos(-α)=cosα,sin(-α)=-sinα得
x'=xcosα+ysinα
y'=-xsinα+ycosα
最后如果旋轉中心為(a,b),在利用上面的公式時,需要把(a,b)沿向量(-a,-b)移動到原點,此時(x,y)變成(x-a,y-b),(x',y')變成(x'-a,y'-b),整理得
x'=(x-a)cosα+(y-b)sinα+a
y'=-(x-a)sinα+(y-b)cosα+b
