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

📄 xmatrixfunc.inl

📁 XMathLib是一个通用的3D图形数学库。 其中包含两个部分: XMathLib和XGeomLib。分别处理数学和几何运算。 数学部分包含向量、矩阵、四元数的运算。以及其它的运算。 几何部分
💻 INL
📖 第 1 页 / 共 2 页
字号:
            v.z * m.m[0][2] +
            v.w * m.m[0][3] ; 

        vOut.y =  v.x * m.m[1][0] +
            v.y * m.m[1][1] +
            v.z * m.m[1][2] +
            v.w * m.m[1][3] ; 

        vOut.z =  v.x * m.m[2][0] +
            v.y * m.m[2][1] +
            v.z * m.m[2][2] +
            v.w * m.m[2][3] ; 

        vOut.w =  v.x * m.m[3][0] +
            v.y * m.m[3][1] +
            v.z * m.m[3][2] +
            v.w * m.m[3][3] ; 
    }

    //---------------------------------------------------------------------------------
    //一个矩阵乘向量
    //This function is tested by Stanly Lee at 2003-11
    //---------------------------------------------------------------------------------
    __FORCE_INLINE__ void _MATH_LIB_EXPORT_ XMatrix_Mul(XMatrix& m,XVector3D& v,XVector3D& vOut)
    {
        vOut.x =  v.x * m.m[0][0] +
                  v.y * m.m[0][1] +
                  v.z * m.m[0][2];

        vOut.y =  v.x * m.m[1][0] +
                  v.y * m.m[1][1] +
                  v.z * m.m[1][2];

        vOut.z =  v.x * m.m[2][0] +
                  v.y * m.m[2][1] +
                  v.z * m.m[2][2];

    }

    //-----------------------------------------------------------------------
    //matrix * scalar
    //-----------------------------------------------------------------------
    __FORCE_INLINE__ XMatrix _MATH_LIB_EXPORT_  operator *(XMatrix& m1,float s)
    {
        XMatrix mOut;
        mOut.m00 = m1.m00 * s; mOut.m01 = m1.m01 * s; mOut.m02 = m1.m02 * s;mOut.m03 = m1.m03 * s;
        mOut.m10 = m1.m10 * s; mOut.m11 = m1.m11 * s; mOut.m12 = m1.m12 * s;mOut.m13 = m1.m13 * s;
        mOut.m20 = m1.m20 * s; mOut.m21 = m1.m21 * s; mOut.m22 = m1.m22 * s;mOut.m23 = m1.m23 * s;
        mOut.m30 = m1.m30 * s; mOut.m31 = m1.m31 * s; mOut.m32 = m1.m32 * s;mOut.m33 = m1.m33 * s;
        return mOut;
    }

    __FORCE_INLINE__ XMatrix _MATH_LIB_EXPORT_  operator *(float s,XMatrix& m1)
    {
        XMatrix mOut;
        mOut.m00 = m1.m00 * s; mOut.m01 = m1.m01 * s; mOut.m02 = m1.m02 * s;mOut.m03 = m1.m03 * s;
        mOut.m10 = m1.m10 * s; mOut.m11 = m1.m11 * s; mOut.m12 = m1.m12 * s;mOut.m13 = m1.m13 * s;
        mOut.m20 = m1.m20 * s; mOut.m21 = m1.m21 * s; mOut.m22 = m1.m22 * s;mOut.m23 = m1.m23 * s;
        mOut.m30 = m1.m30 * s; mOut.m31 = m1.m31 * s; mOut.m32 = m1.m32 * s;mOut.m33 = m1.m33 * s;
        return mOut;
    }

    __FORCE_INLINE__ XMatrix3x3 _MATH_LIB_EXPORT_ operator *(XMatrix3x3& m1,float s)
    {
        XMatrix3x3 mOut;
        mOut.m00 = m1.m00 * s; mOut.m01 = m1.m01 * s; mOut.m02 = m1.m02 * s;
        mOut.m10 = m1.m10 * s; mOut.m11 = m1.m11 * s; mOut.m12 = m1.m12 * s;
        mOut.m20 = m1.m20 * s; mOut.m21 = m1.m21 * s; mOut.m22 = m1.m22 * s;
        return mOut;
    }

    __FORCE_INLINE__ XMatrix3x3 _MATH_LIB_EXPORT_  operator *(float s,XMatrix3x3& m1)
    {
        XMatrix3x3 mOut;
        mOut.m00 = m1.m00 * s; mOut.m01 = m1.m01 * s; mOut.m02 = m1.m02 * s;
        mOut.m10 = m1.m10 * s; mOut.m11 = m1.m11 * s; mOut.m12 = m1.m12 * s;
        mOut.m20 = m1.m20 * s; mOut.m21 = m1.m21 * s; mOut.m22 = m1.m22 * s;
        return mOut;
    }

    //---------------------------------------------------------------------------------
    //matrix +- matrix
    //---------------------------------------------------------------------------------
    __FORCE_INLINE__ XMatrix3x3 _MATH_LIB_EXPORT_  operator -(XMatrix3x3& m1,XMatrix3x3& m2)
    {
        XMatrix3x3 mOut;
        mOut.m00 = m1.m00 - m2.m00 ;   mOut.m01 = m1.m01 - m2.m01;    mOut.m02 = m1.m02 - m2.m02;
        mOut.m10 = m1.m10 - m2.m10 ;   mOut.m11 = m1.m11 - m2.m11;    mOut.m12 = m1.m12 - m2.m12;
        mOut.m20 = m1.m20 - m2.m20 ;   mOut.m21 = m1.m21 - m2.m21;    mOut.m22 = m1.m22 - m2.m22;
        return mOut;
    }
    __FORCE_INLINE__ XMatrix3x3 _MATH_LIB_EXPORT_  operator +(XMatrix3x3& m1,XMatrix3x3& m2)
    {
        XMatrix3x3 mOut;
        mOut.m00 = m1.m00 + m2.m00;    mOut.m01 = m1.m01 + m2.m01;    mOut.m02 = m1.m02 + m2.m02;
        mOut.m10 = m1.m10 + m2.m10;    mOut.m11 = m1.m11 + m2.m11;    mOut.m12 = m1.m12 + m2.m12;
        mOut.m20 = m1.m20 + m2.m20;    mOut.m21 = m1.m21 + m2.m21;    mOut.m22 = m1.m22 + m2.m22;
        return mOut;
    }
    __FORCE_INLINE__ XMatrix _MATH_LIB_EXPORT_  operator -(XMatrix& m1,XMatrix& m2)
    {
        XMatrix mOut;
        mOut.m00 = m1.m00 - m2.m00;    mOut.m01 = m1.m01 - m2.m01;    mOut.m02 = m1.m02 - m2.m02;   mOut.m03 = m1.m03 - m2.m03;
        mOut.m10 = m1.m10 - m2.m10;    mOut.m11 = m1.m11 - m2.m11;    mOut.m12 = m1.m12 - m2.m12;   mOut.m13 = m1.m13 - m2.m13;
        mOut.m20 = m1.m20 - m2.m20;    mOut.m21 = m1.m21 - m2.m21;    mOut.m22 = m1.m22 - m2.m22;   mOut.m23 = m1.m23 - m2.m23;
        mOut.m30 = m1.m30 - m2.m30;    mOut.m31 = m1.m31 - m2.m31;    mOut.m32 = m1.m32 - m2.m32;   mOut.m33 = m1.m33 - m2.m33;
        return mOut;
    }
    __FORCE_INLINE__ XMatrix _MATH_LIB_EXPORT_  operator +(XMatrix& m1,XMatrix& m2)
    {
        XMatrix mOut;
        mOut.m00 = m1.m00 + m2.m00;    mOut.m01 = m1.m01 + m2.m01;    mOut.m02 = m1.m02 + m2.m02;   mOut.m03 = m1.m03 + m2.m03;
        mOut.m10 = m1.m10 + m2.m10;    mOut.m11 = m1.m11 + m2.m11;    mOut.m12 = m1.m12 + m2.m12;   mOut.m13 = m1.m13 + m2.m13;
        mOut.m20 = m1.m20 + m2.m20;    mOut.m21 = m1.m21 + m2.m21;    mOut.m22 = m1.m22 + m2.m22;   mOut.m23 = m1.m23 + m2.m23;
        mOut.m30 = m1.m30 + m2.m30;    mOut.m31 = m1.m31 + m2.m31;    mOut.m32 = m1.m32 + m2.m32;   mOut.m33 = m1.m33 + m2.m33;
        return mOut;
    }


    //---------------------------------------------------------------------------------
    //Matrix x Matrix
    //---------------------------------------------------------------------------------
    __FORCE_INLINE__ XMatrix _MATH_LIB_EXPORT_  operator *(XMatrix& m1,XMatrix& m2)
    {
        XMatrix mOut;
        XMatrix_Mul(m1,m2,mOut);
        return mOut;
    }
    //---------------------------------------------------------------------------------
    //Matrix3 x Matrix3
    //---------------------------------------------------------------------------------
    __FORCE_INLINE__ XMatrix3x3 _MATH_LIB_EXPORT_  operator *(XMatrix3x3& m1,XMatrix3x3& m2)
    {
        XMatrix3x3 mOut;
        XMatrix_Mul(m1,m2,mOut);
        return mOut;
    }

    //---------------------------------------------------------------------------------
    //Matrix x Vec3
    //---------------------------------------------------------------------------------
    __FORCE_INLINE__ XVector3D _MATH_LIB_EXPORT_  operator *(XMatrix& m,XVector3D& v)
    {
        XVector3D vOut;
        XMatrix_Mul(m, v,vOut);
        return vOut;
    }
    //---------------------------------------------------------------------------------
    //Matrix3 x Vec3
    //---------------------------------------------------------------------------------
    __FORCE_INLINE__ XVector3D _MATH_LIB_EXPORT_  operator *(XMatrix3x3& m,XVector3D& v)
    {
        XVector3D vOut;
        XMatrix_Mul(m, v,vOut);
        return vOut;
    }
    //---------------------------------------------------------------------------------
    //Matrix x vec
    //---------------------------------------------------------------------------------
    __FORCE_INLINE__ XVector _MATH_LIB_EXPORT_  operator *(XMatrix& m,XVector& v)
    {
        XVector vOut;
        XMatrix_Mul(m, v,vOut);
        return vOut;
    }


    //---------------------------------------------------------------------------------
    //Matrix x Vec3
    //---------------------------------------------------------------------------------
    __FORCE_INLINE__ XVector3D _MATH_LIB_EXPORT_  operator *(XVector3D& v,XMatrix& m)
    {
        XVector3D vOut;
        XMatrix_Mul(v,m,vOut);
        return vOut;
    }
    //---------------------------------------------------------------------------------
    //Matrix3 x Vec3
    //---------------------------------------------------------------------------------
    __FORCE_INLINE__ XVector3D _MATH_LIB_EXPORT_  operator *(XVector3D& v,XMatrix3x3& m)
    {
        XVector3D vOut;
        XMatrix_Mul( v,m,vOut);
        return vOut;
    }
    //---------------------------------------------------------------------------------
    //Matrix x vec
    //---------------------------------------------------------------------------------
    __FORCE_INLINE__ XVector _MATH_LIB_EXPORT_  operator *(XVector& v,XMatrix& m)
    {
        XVector vOut;
        XMatrix_Mul(v,m, vOut);
        return vOut;
    }

#endif

⌨️ 快捷键说明

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