|
@@ -556,6 +556,22 @@ namespace detail
|
|
|
v.x * m[3][0] + v.y * m[3][1] + v.z * m[3][2]);
|
|
v.x * m[3][0] + v.y * m[3][1] + v.z * m[3][2]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat2x3<T> operator*
|
|
|
|
|
+ (
|
|
|
|
|
+ tmat4x3<T> const & m1,
|
|
|
|
|
+ tmat2x4<T> const & m2
|
|
|
|
|
+ )
|
|
|
|
|
+ {
|
|
|
|
|
+ return tmat2x3<T>(
|
|
|
|
|
+ m1[0][0] * m2[0][0] + m1[1][0] * m2[0][1] + m1[2][0] * m2[0][2] + m1[3][0] * m2[0][3],
|
|
|
|
|
+ m1[0][1] * m2[0][0] + m1[1][1] * m2[0][1] + m1[2][1] * m2[0][2] + m1[3][1] * m2[0][3],
|
|
|
|
|
+ m1[0][2] * m2[0][0] + m1[1][2] * m2[0][1] + m1[2][2] * m2[0][2] + m1[3][2] * m2[0][3],
|
|
|
|
|
+ m1[0][0] * m2[1][0] + m1[1][0] * m2[1][1] + m1[2][0] * m2[1][2] + m1[3][0] * m2[1][3],
|
|
|
|
|
+ m1[0][1] * m2[1][0] + m1[1][1] * m2[1][1] + m1[2][1] * m2[1][2] + m1[3][1] * m2[1][3],
|
|
|
|
|
+ m1[0][2] * m2[1][0] + m1[1][2] * m2[1][1] + m1[2][2] * m2[1][2] + m1[3][2] * m2[1][3]);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
template <typename T>
|
|
template <typename T>
|
|
|
GLM_FUNC_QUALIFIER tmat3x3<T> operator*
|
|
GLM_FUNC_QUALIFIER tmat3x3<T> operator*
|
|
|
(
|
|
(
|
|
@@ -602,6 +618,28 @@ namespace detail
|
|
|
return Result;
|
|
return Result;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat4x3<T> operator*
|
|
|
|
|
+ (
|
|
|
|
|
+ tmat4x3<T> const & m1,
|
|
|
|
|
+ tmat4x4<T> const & m2
|
|
|
|
|
+ )
|
|
|
|
|
+ {
|
|
|
|
|
+ return tmat4x3<T>(
|
|
|
|
|
+ m1[0][0] * m2[0][0] + m1[1][0] * m2[0][1] + m1[2][0] * m2[0][2] + m1[3][0] * m2[0][3],
|
|
|
|
|
+ m1[0][1] * m2[0][0] + m1[1][1] * m2[0][1] + m1[2][1] * m2[0][2] + m1[3][1] * m2[0][3],
|
|
|
|
|
+ m1[0][2] * m2[0][0] + m1[1][2] * m2[0][1] + m1[2][2] * m2[0][2] + m1[3][2] * m2[0][3],
|
|
|
|
|
+ m1[0][0] * m2[1][0] + m1[1][0] * m2[1][1] + m1[2][0] * m2[1][2] + m1[3][0] * m2[1][3],
|
|
|
|
|
+ m1[0][1] * m2[1][0] + m1[1][1] * m2[1][1] + m1[2][1] * m2[1][2] + m1[3][1] * m2[1][3],
|
|
|
|
|
+ m1[0][2] * m2[1][0] + m1[1][2] * m2[1][1] + m1[2][2] * m2[1][2] + m1[3][2] * m2[1][3],
|
|
|
|
|
+ m1[0][0] * m2[2][0] + m1[1][0] * m2[2][1] + m1[2][0] * m2[2][2] + m1[3][0] * m2[2][3],
|
|
|
|
|
+ m1[0][1] * m2[2][0] + m1[1][1] * m2[2][1] + m1[2][1] * m2[2][2] + m1[3][1] * m2[2][3],
|
|
|
|
|
+ m1[0][2] * m2[2][0] + m1[1][2] * m2[2][1] + m1[2][2] * m2[2][2] + m1[3][2] * m2[2][3],
|
|
|
|
|
+ m1[0][0] * m2[3][0] + m1[1][0] * m2[3][1] + m1[2][0] * m2[3][2] + m1[3][0] * m2[3][3],
|
|
|
|
|
+ m1[0][1] * m2[3][0] + m1[1][1] * m2[3][1] + m1[2][1] * m2[3][2] + m1[3][1] * m2[3][3],
|
|
|
|
|
+ m1[0][2] * m2[3][0] + m1[1][2] * m2[3][1] + m1[2][2] * m2[3][2] + m1[3][2] * m2[3][3]);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
template <typename T>
|
|
template <typename T>
|
|
|
GLM_FUNC_QUALIFIER tmat4x3<T> operator/
|
|
GLM_FUNC_QUALIFIER tmat4x3<T> operator/
|
|
|
(
|
|
(
|