正文

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

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


 

8.5.2  單位矩陣

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

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

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

將如下定義添加到矩陣類中。

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 ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號