这是我在做游戏三维图像处理中编制的一个矩阵类模板,能够产生整型,浮点,和自定义类型的任意阶矩阵和行列式,并且定义了一些常用的三维向量运算函数模板,希望大家给出修改意见。建议大家只看函数生命,不要看具体实现,因为贴上来之后格式不对头,由于文档比较长,我将其分为两个帖子
矩阵类模板
//***************************************************************************/
//声明: */
// */
//这个版本纯粹是处于个人爱好而编写,其中可能有不少错误。主要是为了让各位爱好*/
//者相互交流一起提高编程水平。因此,您能够任意修改复制其中的代码,并能够应用*/
//于任何场合,但由此带来的问题本人不负任何责任。假如您有什么建议的话,欢迎和*/
//我联系,我们一起探讨。 */
//我的邮箱是:swnuwangyun@21cn.com */
//***************************************************************************/
// */
//Matrix.h */
//本文档定义了基本的矩阵模板,能够由此复制出各种int,float,double等 */
//等各种类型的矩阵类型。重载了基本的矩阵运算符。为了满足矢量处理的 */
//需要,定义了一系列坐标变换函数 */
// */
// */
//***************************************************************************/
//版本升级说明:原来的版本中矩阵这一单一类型能够满足一般的需要,但是当在结构*/
//没有默认的构造函数,而且在编写坐标变换函数模板时很不方便,且无法定义各种*/
//常用的特别矢量。归根结蒂是因为原来的模板中只有一个矩阵内数据类型的参数。在*/
//这个版本中将模板参数扩展为3个,有两个是矩阵的行和列,取消了构造时的init参 */
//数,统一初始化为0。这样矩阵就有了默认的构造函数,且模板参数中有足够的信息 */
//有效的解决了上面提出的问题。 */
//***************************************************************************/
//编写人:王云 */
//修改人:王云
//开始时间:2002.10.18 */
//结束时间:2002.10.19 */
//***************************************************************************/
#include<windows.h>
#include<iostream.h>
#include<math.h>
template<typename ElemType,int r,int c> class Matrix;
//***************************************************************************/
//二维向量和点 */
//***************************************************************************/
typedef Matrix<int,1,2> Vector2i;
typedef Matrix<int,1,2> Vertex2i;
typedef Matrix<float,1,2> Vector2f;
typedef Matrix<float,1,2> Vertex2f;
typedef Matrix<double,1,2> Vector2d;
typedef Matrix<double,1,2> Vertex2d;
//***************************************************************************/
//三维向量和点 */
//***************************************************************************/
typedef Matrix<int,1,3> Vector3i;
typedef Matrix<int,1,3> Vertex3i;
typedef Matrix<float,1,3> Vector3f;
typedef Matrix<float,1,3> Vertex3f;
typedef Matrix<double,1,3> Vector3d;
typedef Matrix<double,1,3> Vertex3d;
//***************************************************************************/
//四维齐次坐标和向量 */
//***************************************************************************/
typedef Matrix<int,1,4> Vector4i;
typedef Matrix<int,1,4> Vertex4i;
typedef Matrix<float,1,4> Vector4f;
typedef Matrix<float,1,4> Vertex4f;
typedef Matrix<double,1,4> Vector4d;
typedef Matrix<double,1,4> Vertex4d;
//***************************************************************************/
//常用的向量运算函数模板定义 */
//***************************************************************************/
/*
template<typename ElemType,int r,int c> //向量在各个局部坐标轴上的分量
int VectorProjection(Matrix<ElemType,r,c>& vector,Matrix<ElemType,r,c>*pVectorX,Matrix<ElemType,r,c>*pVectorY,Matrix<ElemType,r,c>* pVectorZ);
*/
template<typename ElemType,int r,int c> //计算向量的模
ElemType VectorMo(Matrix<ElemType,r,c>& vector);
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




