對一個點或者向量進行旋轉的時候,做法是讓這個點(或向量,為了敘述方便,以下只談論點的情況,向量的情況也是一樣的),乘以一個矩陣M,根據之前的知識(參考上一篇blog: https://www.cnblogs.com/heben/p/9182090.html),矩陣M是一個3X3的方陣。
於是點P經過旋轉之后,新點P'的坐標計算公式如下:
然而這只是旋轉。要讓P點能夠平移,先要思考什么是平移,其實平移就是對P點的每一個坐標加上一個數字,所以帶上平移的功能之后,新點P'的坐標應該是下面這樣:
為了將Tx的信息能夠存入M矩陣,scratchapixel介紹的方式是,為M矩陣新增一行,將Tx存儲為M30,將Ty存儲為M31,將Tz存儲為M32
於是P'坐標的計算方式就變成:
這時M已經成為了一個4X3矩陣,為了滿足矩陣的乘法,顯然P點也需要改寫,寫成P(x, y ,z, 1)這樣的形式。不過在實際編碼中,並不會真的給坐標加上一個第四維度的1,而只是假裝那里有個1。點P形式為(x, y, z ,1)的時候,我們稱這樣的點為同質點(homogeneous point)
最后,CG中常用的M矩陣式4X4的。但這需要了解更多的知識,現在只需要知道,矩陣M由4x3變成4x4,就是新增一列,大部分情況下這一列的數值是(0, 0, 0, 1)