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

📄 xmatrix3x3.inl

📁 类似于MatLab的东东,当然肯定没那么好,但基本的数学运算还是有的
💻 INL
字号:
#ifndef __XMATRIX_3X3_INLINE_INCLUDE__ 
#define __XMATRIX_3X3_INLINE_INCLUDE__ 

#ifndef IN_MATHLIB_NAMESPACE
#error   You cann't include this file out the XMathLib  namespace
#endif



    class  _MATH_LIB_EXPORT_ XMatrix3x3
    {

    public:
        XMatrix3x3()
        {
            memset((void*) data,0,sizeof(float)*9);
        }
        XMatrix3x3( float  i )
        {
            memset((void*) data,0,sizeof(float)*9);
            for(int  c = 0 ; c < 3 ; c++)
            {
                m[c][c] = i;
            }
        }

        XMatrix3x3( float _data[9] )
        {
            for(int  c = 0 ; c < 9 ; c++)
            {
                data[c] = _data[c];
            }
        }

        XMatrix3x3(XVector3D vec[3],bool isVertical)
        {
            if(isVertical)
            {
                m[0][0] = vec[0].x;
                m[1][0] = vec[0].y;
                m[2][0] = vec[0].z;


                m[0][1] = vec[1].x;
                m[1][1] = vec[1].y;
                m[2][1] = vec[1].z;


                m[0][2] = vec[2].x;
                m[1][2] = vec[2].y;
                m[2][2] = vec[2].z;
            }
            else
            {
                m[0][0] = vec[0].x;
                m[0][1] = vec[0].y;
                m[0][2] = vec[0].z;

                m[1][0] = vec[1].x;
                m[1][1] = vec[1].y;
                m[1][2] = vec[1].z;

                m[2][0] = vec[2].x;
                m[2][1] = vec[2].y;
                m[2][2] = vec[2].z;
            }
        }

        void LoadIdentity()
        {
            memset((void*) data,0,sizeof(float)*9);
            for(int  c = 0 ; c < 3 ; c++)
            {
                m[c][c] = 1;
            }
        }


        void Scale(float sx,float sy,float sz)
        {
            m[0][0] *= sx ; m[0][1] *= sx ; m[0][2] *= sx ;
            m[1][0] *= sy ; m[1][1] *= sy ; m[1][2] *= sy ;
            m[2][0] *= sz ; m[2][1] *= sz ; m[2][2] *= sz ;
        }

       void  From(XMatrix& _m);

    public:
        union 
        {
            struct{
                float m00,m01,m02;
                float m10,m11,m12;
                float m20,m21,m22;
            };
            float data[9];
            float m[3][3];
        };
    };


#endif

⌨️ 快捷键说明

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