正文

游戏数学(34)

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


 

图8-21使用3个轴向量和一个位置向量(原点)来表示矩阵。XxXyXz描述了x向量,YxYyYz描述了y向量,ZxZyZz描述了z向量,OxOyOz描述了原点向量。这些向量是模型的轴及其原点。可以使用它们来快速确定对象的位置以及对象在X、Y和Z轴上面对的方向。如果所有的轴都被归一化,那么对象不被缩放;如果轴的长度都为2,那么对象被放大到原来的两倍。这种可视化的思考矩阵的方法使得它们更易于使用。

图8-21中的最后一列是[0,0,0,1]。这个列中的值不会改变,它们只在计算投影(从3D空间变换到2D空间)时使用。这种投影操作不太常见,所以我们将使用的矩阵为4×3矩阵。最后一列将始终为[0,0,0,1]。

在介绍矩阵操作之前,先创建一个基本的类。

public class Matrix

{

double _m11, _m12, _m13;

double _m21, _m22, _m23;

double _m31, _m32, _m33;

double _m41, _m42, _m43;

}

这个Matrix类是一个4×3矩阵。它的成员变量的分布方式与图8-18类似,但是没有第4列(我们知道第4列总是[0,0,0,1],所以不需要存在这几个值)。Vector、Color和Point都是结构,但是Matrix是一个更大的结构,所以把它声明成了一个类。

在下面的小节中,我们将为Matrix类添加各种操作。


上一章目录下一章

Copyright © 读书网 www.dushu.com 2005-2020, All Rights Reserved.
鄂ICP备15019699号 鄂公网安备 42010302001612号