正文

游戏数学(35)

精通C#游戏编程 作者:(英)斯库勒


 

8.5.2  单位矩阵

单位矩阵是这样的一种矩阵:当将它与另外一个矩阵相乘时,它不会修改那个矩阵。数字1是实数中的一个单位,将任何数值与1相乘都会得到原来的数值。

单位矩阵是方阵。下面是3×3矩阵和4×4矩阵的单位矩阵。

创建一个矩阵操作时,单位矩阵是一个绝佳的起点。对模型应用单位矩阵时,顶点不会发生改变,所以只有在单位矩阵之上执行的操作才会得到执行。如果对任何模型应用全零矩阵,该模型将会消失,所有的顶点都将缩减为一个奇点,就像黑洞那样。矩阵类应该默认被初始化为单位矩阵。

将如下定义添加到矩阵类中。

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 © 读书网 www.dushu.com 2005-2020, All Rights Reserved.
鄂ICP备15019699号 鄂公网安备 42010302001612号