基本的二維變換可包括旋轉(zhuǎn)、縮放、扭曲,和平移四種,
而這些幾何運算則可以轉(zhuǎn)換為一些基本的矩陣運算:
這幾個變換都是線性的,但平移運算不是線性的,不能通過2*2矩陣運算完成。若要將點 (2, 1)在 x 方向?qū)⑵淦揭?3 個單位,在 y 方向?qū)⑵淦揭?4 個單位。 可通過先使用矩陣乘法再使用矩陣加法來完成此操作。
綜合這幾種基本運算,數(shù)學(xué)家們將其統(tǒng)一為一個3*3矩陣,存儲形式如下:
由于表示仿射變換的矩陣的第三列總是(0,0,1),在存儲矩陣的時候,大多只存成一個2*3的數(shù)組。
變換的原點
二維變換的參考點是非常重要的,例如如下旋轉(zhuǎn)的結(jié)果就大不相同:
當(dāng)然,有一種特殊的變換除外。那就是平移變換,無論原點是什么其變換的結(jié)果都是沒有變化的。
復(fù)合變換
復(fù)合變換的矩陣可通過將幾個單獨的變換矩陣相乘而得到,這就意味著任何仿射變換的序列均可存儲于單個的 Matrix 對象中。
需要注意的是,復(fù)合變換是有順序的,一般說來,先旋轉(zhuǎn)、再縮放、然后平移,與先縮放、再旋轉(zhuǎn)、然后平移是不同的。
逆矩陣
可以根據(jù)一定的運算求出某個矩陣的逆矩陣,這個矩陣可以用來求出新的坐標(biāo)點在原坐標(biāo)系的位置。但需要注意的是,并非所有矩陣都是可逆的,可逆矩陣要求是非奇異矩陣。
在線預(yù)覽
微軟有一個幾何變換的在線預(yù)覽的頁面,可以非常直觀的幫助我們理解這些變換,感興趣的朋友不妨試試。
http://ie.microsoft.com/testdrive/Graphics/hands-on-css3/hands-on_2d-transforms.htm
小結(jié)
矩陣運算其實是非?;A(chǔ)的數(shù)學(xué)知識,在圖形學(xué)中應(yīng)用得還是非常廣泛的,但大學(xué)學(xué)的時候往往不知道干嘛用,現(xiàn)在用的時候卻又忘了啥原理了。本文這里只是介紹了一些矩陣運算的基本概念,具體詳細(xì)的內(nèi)容可以參考下下面的這些參考資料。下一篇文章再簡單的介紹一下矩陣變換的實際使用。
參考資料: