⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 matrix.h

📁 Cal3D实现虚拟角色 Cal3D实现虚拟角色
💻 H
字号:
//****************************************************************************//// matrix.h                                                                   //// Copyright (C) 2001, 2002 Bruno 'Beosil' Heidelberger                       ////****************************************************************************//// This library is free software; you can redistribute it and/or modify it    //// under the terms of the GNU Lesser General Public License as published by   //// the Free Software Foundation; either version 2.1 of the License, or (at    //// your option) any later version.                                            ////****************************************************************************//#ifndef CAL_MATRIX_H#define CAL_MATRIX_H//****************************************************************************//// Includes                                                                   ////****************************************************************************//#include "cal3d/global.h"//****************************************************************************//// Forward declarations                                                       ////****************************************************************************//class CalQuaternion;//****************************************************************************//// Class declaration                                                          ////****************************************************************************///*****************************************************************************//** The matrix class.*****************************************************************************/class CAL3D_API CalMatrix{	// member variablespublic:	float dxdx,dydx,dzdx;	float dxdy,dydy,dzdy;	float dxdz,dydz,dzdz;		// constructors/destructorpublic:	inline CalMatrix()	: dxdx(0.0), dydx(0.0), dzdx(0.0),		dxdy(0.0), dydy(0.0), dzdy(0.0),		dxdz(0.0), dydz(0.0), dzdz(0.0)	{	}		CalMatrix(const CalQuaternion &q);		inline CalMatrix(float weight, const CalMatrix &m)	{		dxdx = m.dxdx*weight;		dxdy = m.dxdy*weight;		dxdz = m.dxdz*weight;		dydx = m.dydx*weight;		dydy = m.dydy*weight;		dydz = m.dydz*weight;		dzdx = m.dzdx*weight;		dzdy = m.dzdy*weight;		dzdz = m.dzdz*weight;	}			inline ~CalMatrix() {};		// member functionspublic:	void operator=(const CalQuaternion& q);		inline void operator=(const CalMatrix& m)	{		dxdx=m.dxdx; dxdy=m.dxdy; dxdz=m.dxdz;		dydx=m.dydx; dydy=m.dydy; dydz=m.dydz;		dzdx=m.dzdx; dzdy=m.dzdy; dzdz=m.dzdz;	}	inline void operator *= (const CalMatrix &m)	{		float ndxdx=m.dxdx*dxdx+m.dxdy*dydx+m.dxdz*dzdx;		float ndydx=m.dydx*dxdx+m.dydy*dydx+m.dydz*dzdx;		float ndzdx=m.dzdx*dxdx+m.dzdy*dydx+m.dzdz*dzdx;				float ndxdy=m.dxdx*dxdy+m.dxdy*dydy+m.dxdz*dzdy;		float ndydy=m.dydx*dxdy+m.dydy*dydy+m.dydz*dzdy;		float ndzdy=m.dzdx*dxdy+m.dzdy*dydy+m.dzdz*dzdy;				float ndxdz=m.dxdx*dxdz+m.dxdy*dydz+m.dxdz*dzdz;		float ndydz=m.dydx*dxdz+m.dydy*dydz+m.dydz*dzdz;		float ndzdz=m.dzdx*dxdz+m.dzdy*dydz+m.dzdz*dzdz;				dxdx=ndxdx;		dydx=ndydx;		dzdx=ndzdx;		dxdy=ndxdy;		dydy=ndydy;		dzdy=ndzdy;		dxdz=ndxdz;		dydz=ndydz;		dzdz=ndzdz;	}		inline void operator *= (float factor)	{		dxdx *= factor;		dydx *= factor;		dzdx *= factor;		dxdy *= factor;		dydy *= factor;		dzdy *= factor;		dxdz *= factor;		dydz *= factor;		dzdz *= factor;	}	inline void blend(float factor, const CalMatrix& m)	{		dxdx += m.dxdx*factor;		dydx += m.dydx*factor;		dzdx += m.dzdx*factor;		dxdy += m.dxdy*factor;		dydy += m.dydy*factor;		dzdy += m.dzdy*factor;		dxdz += m.dxdz*factor;		dydz += m.dydz*factor;		dzdz += m.dzdz*factor;	}		inline float det()	{		return dxdx * (dydy*dzdz-dydz*dzdy)            -dxdy* ( dydx*dzdz-dzdx*dydz)			+dxdz* (dydx*dzdy-dzdx*dydy);	}	};#endif//****************************************************************************//

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -