这个类是很多图形学算法的基础。在计算机图形学中,很多运算都可以用矩阵运算(特别是矩阵乘)来描述,我们在程序设计过程中也不可避免的要使用到矩阵。一个比较自然的思路是用二文数组表示矩阵,但这样一来,矩阵的加,乘,拷贝等一系列运算都不方便实现。于是我们首先设计这样一个矩阵类,由上述类结构可见,这个类重载了很多的运算符,这样一来,我们的程序可以类似于这样去写:
Matrix3=Matrix1*Matrix2;
这样的写法无疑是非常清晰明了的,而且利于代码重用。
我们在矩阵设计的过程中规定了每个元素必须是double型,其实这里更好的写法是使用类模板。
点类(BCPoint)
点类的定义如下所示:
class BCPoint
{
public:
BCPoint();
virtual ~BCPoint();
void Read(CString buf);
void Get2DView(double ViewerX,double ViewerY,double ViewerZ);
void Get2DView(CMatrix *Viewer);
void Move(CMatrix *MoveMatrix);
CPoint Device;
CMatrix User2D;
CMatrix User3D;
void BCPoint::operator =(BCPoint &other);
};
对于一个点来说,它的坐标分为三种:三文用户坐标,二文用户坐标和二文设备坐标,这里分别用成员变量User3D,User2D,Device表示,前两个变量类型都是CMatrix。其中User3D是CMatrix(1,4),User2D是CMatrix(1,3),便于进行矩阵运算Device的类型是CPoint,这个类是MFC提供的。
成员函数Get2DView是比较关键的一个函数,它根据点的三文用户坐标和视点的三文用户坐标,算出点的二文用户坐标。
成员函数Move可以用来实现点的移动,旋转等功能,这里只要给出适当的变换矩阵即可。
多边形类(CPolygon)
下面展示多边形类的结构:
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页