圖8-21使用3個(gè)軸向量和一個(gè)位置向量(原點(diǎn))來表示矩陣。XxXyXz描述了x向量,YxYyYz描述了y向量,ZxZyZz描述了z向量,OxOyOz描述了原點(diǎn)向量。這些向量是模型的軸及其原點(diǎn)??梢允褂盟鼈儊砜焖俅_定對(duì)象的位置以及對(duì)象在X、Y和Z軸上面對(duì)的方向。如果所有的軸都被歸一化,那么對(duì)象不被縮放;如果軸的長(zhǎng)度都為2,那么對(duì)象被放大到原來的兩倍。這種可視化的思考矩陣的方法使得它們更易于使用。
圖8-21中的最后一列是[0,0,0,1]。這個(gè)列中的值不會(huì)改變,它們只在計(jì)算投影(從3D空間變換到2D空間)時(shí)使用。這種投影操作不太常見,所以我們將使用的矩陣為4×3矩陣。最后一列將始終為[0,0,0,1]。
在介紹矩陣操作之前,先創(chuàng)建一個(gè)基本的類。
public class Matrix
{
double _m11, _m12, _m13;
double _m21, _m22, _m23;
double _m31, _m32, _m33;
double _m41, _m42, _m43;
}
這個(gè)Matrix類是一個(gè)4×3矩陣。它的成員變量的分布方式與圖8-18類似,但是沒有第4列(我們知道第4列總是[0,0,0,1],所以不需要存在這幾個(gè)值)。Vector、Color和Point都是結(jié)構(gòu),但是Matrix是一個(gè)更大的結(jié)構(gòu),所以把它聲明成了一個(gè)類。
在下面的小節(jié)中,我們將為Matrix類添加各種操作。