📄 xmatrixfunc.inl
字号:
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 + -