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

📄 xmathlib.h

📁 类似于MatLab的东东,当然肯定没那么好,但基本的数学运算还是有的
💻 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 + -