📄 xmathlib.h
字号:
/**********************************************************************
声明:
这里的代码版权归潘李亮所有.你可以自由使用分发这些代码.但是不得用于商业用途.
如有需要请于作者联系.
在你使用本代码时候,请务必保留本声明
潘李亮 2003-10
Stanly Lee. 2003-10
Email : xheartblue@etang.com
*******************************************************************
XMath Lib global header file
These Libs major purpose is to provide a set function
and class to perform the basic math algorithm used in
CG.
Create this lib and Then Create a software renderer is
my target :)
Revision history
2003 / 10 / 11 Create this file
Stanly Lee. xheartblue@etang.com
**************************************************************************/
/*************************************************************
注意事项:
本库的旋转角度使用 角度 来表示
*************************************************************/
#ifndef _X_MATH_LIB_H_
#define _X_MATH_LIB_H_ "XMathLib.h"
#ifdef _WIN32
# ifndef _XREALENGINE_NONCLIENT_BUILD
# define _MATH_LIB_EXPORT_ __declspec( dllexport )
# else
# define _MATH_LIB_EXPORT_ __declspec( dllimport )
# endif
#else
# define _MATH_LIB_EXPORT_
#endif
//目前不需要导出任何函数
#undef _MATH_LIB_EXPORT_
#define _MATH_LIB_EXPORT_
#define __FORCE_INLINE__ __inline
#define IN_MATHLIB_NAMESPACE
#include <math.h>
#include <memory.h>
namespace XMathLib
{
class XMatrix;
class XMatrix3x3;
class XVector;
class XVector2D;
class XVector3D;
class XQuaternion;
/*
Here declare the globle useful thing
*/
const double XM_PI = 3.141592653589;
void _MATH_LIB_EXPORT_ XM_Perspective(XMatrix& mOut,float fov_angle,float aspect,float Znear,float Zfar);
void _MATH_LIB_EXPORT_ XM_Ortho3D(XMatrix& mOut,float Znear ,float Zfar ,float top,float bottom ,float left ,float right);
void _MATH_LIB_EXPORT_ XM_LookAt(XMatrix& mOut,XVector& eyeAt,XVector eyeTarget,XVector& upDir);
void _MATH_LIB_EXPORT_ XM_Transform(XMatrix& mOut,float tx,float ty,float tz);
void _MATH_LIB_EXPORT_ XM_Scale(XMatrix& mOut,float sx,float sy,float sz);
void _MATH_LIB_EXPORT_ XM_RotateX(XMatrix& mOut,float angle);
void _MATH_LIB_EXPORT_ XM_RotateY(XMatrix& mOut,float angle);
void _MATH_LIB_EXPORT_ XM_RotateZ(XMatrix& mOut,float angle);
void _MATH_LIB_EXPORT_ XM_RotatePV(XMatrix& mOut,XVector& v , float angle);
void _MATH_LIB_EXPORT_ XM_Rotate(XMatrix& mOut,XVector& v , float angle);
void _MATH_LIB_EXPORT_ XM_Mul(XQuaternion& qA,XQuaternion& qB,XQuaternion& qOut);
void _MATH_LIB_EXPORT_ XM_Rotate(XQuaternion& q,XVector& v,XVector& vOut);
void _MATH_LIB_EXPORT_ XM_Add(XQuaternion& qA,XQuaternion& qB,XQuaternion& qOut);
void _MATH_LIB_EXPORT_ XM_Inverse(XQuaternion& qA ,XQuaternion& qOut);
void _MATH_LIB_EXPORT_ XM_Slerp(float t,XQuaternion& q1,XQuaternion& q2,XQuaternion& qOut);
//-------------------------------------------------------------
//数学函数的包含
//-------------------------------------------------------------
#include "XMathFunc.inl"
//-------------------------------------------------------------
// 2D Vector 类
//-------------------------------------------------------------
#include "XVector2D.inl"
//-------------------------------------------------------------
// 3D Vector 类
//-------------------------------------------------------------
#include "XVector3D.inl"
//-------------------------------------------------------------
// 4D Vector 类
//-------------------------------------------------------------
#include "XVector.inl"
//-----------------------------------------------------
//3 X 3 的矩阵
//-----------------------------------------------------
#include "XMatrix3x3.inl"
//-----------------------------------------------------
// 4 X 4的矩阵。本数学库的核心部分。
//-----------------------------------------------------
#include "XMatrix.inl"
//-----------------------------------------------------
//向量的常用操作
//-----------------------------------------------------
#include "XVectorFunc.inl"
//-----------------------------------------------------
//向量的常用操作
//-----------------------------------------------------
#include "XMatrixFunc.inl"
//-----------------------------------------------------
//四元数操作
//-----------------------------------------------------
#include "XQuaternion.inl"
typedef XVector3D XPoint3;
typedef XVector3D XPoint;
typedef XVector XPoint4;
typedef XVector2D XPoint2;
typedef XVector2D XVertex2;
typedef XVector3D XVertex3;
typedef XVector3D XVertex;
typedef XVector3D XDirection;
};
#undef IN_MATHLIB_NAMESPACE
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -