正文

游戲數(shù)學(xué)(35)

精通C#游戲編程 作者:(英)斯庫(kù)勒


 

8.5.2  單位矩陣

單位矩陣是這樣的一種矩陣:當(dāng)將它與另外一個(gè)矩陣相乘時(shí),它不會(huì)修改那個(gè)矩陣。數(shù)字1是實(shí)數(shù)中的一個(gè)單位,將任何數(shù)值與1相乘都會(huì)得到原來(lái)的數(shù)值。

單位矩陣是方陣。下面是3×3矩陣和4×4矩陣的單位矩陣。

創(chuàng)建一個(gè)矩陣操作時(shí),單位矩陣是一個(gè)絕佳的起點(diǎn)。對(duì)模型應(yīng)用單位矩陣時(shí),頂點(diǎn)不會(huì)發(fā)生改變,所以只有在單位矩陣之上執(zhí)行的操作才會(huì)得到執(zhí)行。如果對(duì)任何模型應(yīng)用全零矩陣,該模型將會(huì)消失,所有的頂點(diǎn)都將縮減為一個(gè)奇點(diǎn),就像黑洞那樣。矩陣類(lèi)應(yīng)該默認(rèn)被初始化為單位矩陣。

將如下定義添加到矩陣類(lèi)中。

public static readonly Matrix Identity =

new Matrix(new Vector(1, 0, 0),

new Vector(0, 1, 0),

new Vector(0, 0, 1),

new Vector(0, 0, 1));

public Matrix() : this (Identity)

{

}

public Matrix(Matrix m)

{

_m11 = m._m11;

_m12 = m._m12;

_m13 = m._m13;

_m21 = m._m21;

_m22 = m._m22;

_m23 = m._m23;

_m31 = m._m31;

_m32 = m._m32;

_m33 = m._m33;

_m41 = m._m41;

_m42 = m._m42;

_m43 = m._m43;

}

public Matrix(Vector x, Vector y, Vector z, Vector o)

{

_m11 = x.X; _m12 = x.Y; _m13 = x.Z;

_m21 = y.X; _m22 = y.Y; _m23 = y.Z;

_m31 = z.X; _m32 = z.Y; _m33 = z.Z;

_m41 = o.X; _m42 = o.Y; _m43 = o.Z;

}


上一章目錄下一章

Copyright ? 讀書(shū)網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)