mirror of
https://github.com/g-truc/glm.git
synced 2024-11-10 04:31:47 +00:00
Added missing none squared products
This commit is contained in:
parent
8df8569563
commit
25b4a14df2
@ -531,6 +531,40 @@ namespace detail
|
|||||||
m1[0][1] * m2[1][0] + m1[1][1] * m2[1][1]);
|
m1[0][1] * m2[1][0] + m1[1][1] * m2[1][1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
GLM_FUNC_QUALIFIER tmat3x2<T> operator*
|
||||||
|
(
|
||||||
|
tmat2x2<T> const & m1,
|
||||||
|
tmat3x2<T> const & m2
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return tmat3x2<T>(
|
||||||
|
m1[0][0] * m2[0][0] + m1[1][0] * m2[0][1],
|
||||||
|
m1[0][1] * m2[0][0] + m1[1][1] * m2[0][1],
|
||||||
|
m1[0][0] * m2[1][0] + m1[1][0] * m2[1][1],
|
||||||
|
m1[0][1] * m2[1][0] + m1[1][1] * m2[1][1],
|
||||||
|
m1[0][0] * m2[2][0] + m1[1][0] * m2[2][1],
|
||||||
|
m1[0][1] * m2[2][0] + m1[1][1] * m2[2][1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
GLM_FUNC_QUALIFIER tmat4x2<T> operator*
|
||||||
|
(
|
||||||
|
tmat2x2<T> const & m1,
|
||||||
|
tmat4x2<T> const & m2
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return tmat4x2<T>(
|
||||||
|
m1[0][0] * m2[0][0] + m1[1][0] * m2[0][1],
|
||||||
|
m1[0][1] * m2[0][0] + m1[1][1] * m2[0][1],
|
||||||
|
m1[0][0] * m2[1][0] + m1[1][0] * m2[1][1],
|
||||||
|
m1[0][1] * m2[1][0] + m1[1][1] * m2[1][1],
|
||||||
|
m1[0][0] * m2[2][0] + m1[1][0] * m2[2][1],
|
||||||
|
m1[0][1] * m2[2][0] + m1[1][1] * m2[2][1],
|
||||||
|
m1[0][0] * m2[3][0] + m1[1][0] * m2[3][1],
|
||||||
|
m1[0][1] * m2[3][0] + m1[1][1] * m2[3][1]);
|
||||||
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
GLM_FUNC_QUALIFIER tmat2x2<T> operator/
|
GLM_FUNC_QUALIFIER tmat2x2<T> operator/
|
||||||
(
|
(
|
||||||
|
@ -462,6 +462,22 @@ namespace detail
|
|||||||
v.x * m[1][0] + v.y * m[1][1] + v.z * m[1][2]);
|
v.x * m[1][0] + v.y * m[1][1] + v.z * m[1][2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
GLM_FUNC_QUALIFIER tmat2x3<T> operator*
|
||||||
|
(
|
||||||
|
tmat2x3<T> const & m1,
|
||||||
|
tmat2x2<T> const & m2
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return tmat2x3<T>(
|
||||||
|
m1[0][0] * m2[0][0] + m1[1][0] * m2[0][1],
|
||||||
|
m1[0][1] * m2[0][0] + m1[1][1] * m2[0][1],
|
||||||
|
m1[0][2] * m2[0][0] + m1[1][2] * m2[0][1],
|
||||||
|
m1[0][0] * m2[1][0] + m1[1][0] * m2[1][1],
|
||||||
|
m1[0][1] * m2[1][0] + m1[1][1] * m2[1][1],
|
||||||
|
m1[0][2] * m2[1][0] + m1[1][2] * m2[1][1]);
|
||||||
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
GLM_FUNC_QUALIFIER tmat3x3<T> operator*
|
GLM_FUNC_QUALIFIER tmat3x3<T> operator*
|
||||||
(
|
(
|
||||||
@ -496,6 +512,28 @@ namespace detail
|
|||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
GLM_FUNC_QUALIFIER tmat4x3<T> operator*
|
||||||
|
(
|
||||||
|
tmat2x3<T> const & m1,
|
||||||
|
tmat4x2<T> const & m2
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return tmat4x3<T>(
|
||||||
|
m1[0][0] * m2[0][0] + m1[1][0] * m2[0][1],
|
||||||
|
m1[0][1] * m2[0][0] + m1[1][1] * m2[0][1],
|
||||||
|
m1[0][2] * m2[0][0] + m1[1][2] * m2[0][1],
|
||||||
|
m1[0][0] * m2[1][0] + m1[1][0] * m2[1][1],
|
||||||
|
m1[0][1] * m2[1][0] + m1[1][1] * m2[1][1],
|
||||||
|
m1[0][2] * m2[1][0] + m1[1][2] * m2[1][1],
|
||||||
|
m1[0][0] * m2[2][0] + m1[1][0] * m2[2][1],
|
||||||
|
m1[0][1] * m2[2][0] + m1[1][1] * m2[2][1],
|
||||||
|
m1[0][2] * m2[2][0] + m1[1][2] * m2[2][1],
|
||||||
|
m1[0][0] * m2[3][0] + m1[1][0] * m2[3][1],
|
||||||
|
m1[0][1] * m2[3][0] + m1[1][1] * m2[3][1],
|
||||||
|
m1[0][2] * m2[3][0] + m1[1][2] * m2[3][1]);
|
||||||
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
GLM_FUNC_QUALIFIER tmat2x3<T> operator/
|
GLM_FUNC_QUALIFIER tmat2x3<T> operator/
|
||||||
(
|
(
|
||||||
|
@ -524,6 +524,46 @@ namespace detail
|
|||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
GLM_FUNC_QUALIFIER tmat2x4<T> operator*
|
||||||
|
(
|
||||||
|
tmat2x4<T> const & m1,
|
||||||
|
tmat2x2<T> const & m2
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return tmat2x4<T>(
|
||||||
|
m1[0][0] * m2[0][0] + m1[1][0] * m2[0][1],
|
||||||
|
m1[0][1] * m2[0][0] + m1[1][1] * m2[0][1],
|
||||||
|
m1[0][2] * m2[0][0] + m1[1][2] * m2[0][1],
|
||||||
|
m1[0][3] * m2[0][0] + m1[1][3] * m2[0][1],
|
||||||
|
m1[0][0] * m2[1][0] + m1[1][0] * m2[1][1],
|
||||||
|
m1[0][1] * m2[1][0] + m1[1][1] * m2[1][1],
|
||||||
|
m1[0][2] * m2[1][0] + m1[1][2] * m2[1][1],
|
||||||
|
m1[0][3] * m2[1][0] + m1[1][3] * m2[1][1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
GLM_FUNC_QUALIFIER tmat3x4<T> operator*
|
||||||
|
(
|
||||||
|
tmat2x4<T> const & m1,
|
||||||
|
tmat3x2<T> const & m2
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return tmat3x4<T>(
|
||||||
|
m1[0][0] * m2[0][0] + m1[1][0] * m2[0][1],
|
||||||
|
m1[0][1] * m2[0][0] + m1[1][1] * m2[0][1],
|
||||||
|
m1[0][2] * m2[0][0] + m1[1][2] * m2[0][1],
|
||||||
|
m1[0][3] * m2[0][0] + m1[1][3] * m2[0][1],
|
||||||
|
m1[0][0] * m2[1][0] + m1[1][0] * m2[1][1],
|
||||||
|
m1[0][1] * m2[1][0] + m1[1][1] * m2[1][1],
|
||||||
|
m1[0][2] * m2[1][0] + m1[1][2] * m2[1][1],
|
||||||
|
m1[0][3] * m2[1][0] + m1[1][3] * m2[1][1],
|
||||||
|
m1[0][0] * m2[2][0] + m1[1][0] * m2[2][1],
|
||||||
|
m1[0][1] * m2[2][0] + m1[1][1] * m2[2][1],
|
||||||
|
m1[0][2] * m2[2][0] + m1[1][2] * m2[2][1],
|
||||||
|
m1[0][3] * m2[2][0] + m1[1][3] * m2[2][1]);
|
||||||
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
GLM_FUNC_QUALIFIER tmat2x4<T> operator/
|
GLM_FUNC_QUALIFIER tmat2x4<T> operator/
|
||||||
(
|
(
|
||||||
|
@ -529,6 +529,40 @@ namespace detail
|
|||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
GLM_FUNC_QUALIFIER tmat3x2<T> operator*
|
||||||
|
(
|
||||||
|
tmat3x2<T> const & m1,
|
||||||
|
tmat3x3<T> const & m2
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return tmat3x2<T>(
|
||||||
|
m1[0][0] * m2[0][0] + m1[1][0] * m2[0][1] + m1[2][0] * m2[0][2],
|
||||||
|
m1[0][1] * m2[0][0] + m1[1][1] * m2[0][1] + m1[2][1] * m2[0][2],
|
||||||
|
m1[0][0] * m2[1][0] + m1[1][0] * m2[1][1] + m1[2][0] * m2[1][2],
|
||||||
|
m1[0][1] * m2[1][0] + m1[1][1] * m2[1][1] + m1[2][1] * m2[1][2],
|
||||||
|
m1[0][0] * m2[2][0] + m1[1][0] * m2[2][1] + m1[2][0] * m2[2][2],
|
||||||
|
m1[0][1] * m2[2][0] + m1[1][1] * m2[2][1] + m1[2][1] * m2[2][2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
GLM_FUNC_QUALIFIER tmat4x2<T> operator*
|
||||||
|
(
|
||||||
|
tmat3x2<T> const & m1,
|
||||||
|
tmat4x3<T> const & m2
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return tmat4x2<T>(
|
||||||
|
m1[0][0] * m2[0][0] + m1[1][0] * m2[0][1] + m1[2][0] * m2[0][2],
|
||||||
|
m1[0][1] * m2[0][0] + m1[1][1] * m2[0][1] + m1[2][1] * m2[0][2],
|
||||||
|
m1[0][0] * m2[1][0] + m1[1][0] * m2[1][1] + m1[2][0] * m2[1][2],
|
||||||
|
m1[0][1] * m2[1][0] + m1[1][1] * m2[1][1] + m1[2][1] * m2[1][2],
|
||||||
|
m1[0][0] * m2[2][0] + m1[1][0] * m2[2][1] + m1[2][0] * m2[2][2],
|
||||||
|
m1[0][1] * m2[2][0] + m1[1][1] * m2[2][1] + m1[2][1] * m2[2][2],
|
||||||
|
m1[0][0] * m2[3][0] + m1[1][0] * m2[3][1] + m1[2][0] * m2[3][2],
|
||||||
|
m1[0][1] * m2[3][0] + m1[1][1] * m2[3][1] + m1[2][1] * m2[3][2]);
|
||||||
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
GLM_FUNC_QUALIFIER tmat3x2<T> operator/
|
GLM_FUNC_QUALIFIER tmat3x2<T> operator/
|
||||||
(
|
(
|
||||||
|
@ -627,6 +627,43 @@ namespace detail
|
|||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
GLM_FUNC_QUALIFIER tmat2x3<T> operator*
|
||||||
|
(
|
||||||
|
tmat3x3<T> const & m1,
|
||||||
|
tmat2x3<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[0][1] * m2[0][0] + m1[1][1] * m2[0][1] + m1[2][1] * m2[0][2],
|
||||||
|
m1[0][2] * m2[0][0] + m1[1][2] * m2[0][1] + m1[2][2] * m2[0][2],
|
||||||
|
m1[0][0] * m2[1][0] + m1[1][0] * m2[1][1] + m1[2][0] * m2[1][2],
|
||||||
|
m1[0][1] * m2[1][0] + m1[1][1] * m2[1][1] + m1[2][1] * m2[1][2],
|
||||||
|
m1[0][2] * m2[1][0] + m1[1][2] * m2[1][1] + m1[2][2] * m2[1][2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
GLM_FUNC_QUALIFIER tmat4x3<T> operator*
|
||||||
|
(
|
||||||
|
tmat3x3<T> const & m1,
|
||||||
|
tmat4x3<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[0][1] * m2[0][0] + m1[1][1] * m2[0][1] + m1[2][1] * m2[0][2],
|
||||||
|
m1[0][2] * m2[0][0] + m1[1][2] * m2[0][1] + m1[2][2] * m2[0][2],
|
||||||
|
m1[0][0] * m2[1][0] + m1[1][0] * m2[1][1] + m1[2][0] * m2[1][2],
|
||||||
|
m1[0][1] * m2[1][0] + m1[1][1] * m2[1][1] + m1[2][1] * m2[1][2],
|
||||||
|
m1[0][2] * m2[1][0] + m1[1][2] * m2[1][1] + m1[2][2] * m2[1][2],
|
||||||
|
m1[0][0] * m2[2][0] + m1[1][0] * m2[2][1] + m1[2][0] * m2[2][2],
|
||||||
|
m1[0][1] * m2[2][0] + m1[1][1] * m2[2][1] + m1[2][1] * m2[2][2],
|
||||||
|
m1[0][2] * m2[2][0] + m1[1][2] * m2[2][1] + m1[2][2] * m2[2][2],
|
||||||
|
m1[0][0] * m2[3][0] + m1[1][0] * m2[3][1] + m1[2][0] * m2[3][2],
|
||||||
|
m1[0][1] * m2[3][0] + m1[1][1] * m2[3][1] + m1[2][1] * m2[3][2],
|
||||||
|
m1[0][2] * m2[3][0] + m1[1][2] * m2[3][1] + m1[2][2] * m2[3][2]);
|
||||||
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
GLM_FUNC_QUALIFIER tmat3x3<T> operator/
|
GLM_FUNC_QUALIFIER tmat3x3<T> operator/
|
||||||
|
@ -561,6 +561,46 @@ namespace detail
|
|||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
GLM_FUNC_QUALIFIER tmat2x4<T> operator*
|
||||||
|
(
|
||||||
|
tmat3x4<T> const & m1,
|
||||||
|
tmat2x3<T> const & m2
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return tmat2x4<T>(
|
||||||
|
m1[0][0] * m2[0][0] + m1[1][0] * m2[0][1] + m1[2][0] * m2[0][2],
|
||||||
|
m1[0][1] * m2[0][0] + m1[1][1] * m2[0][1] + m1[2][1] * m2[0][2],
|
||||||
|
m1[0][2] * m2[0][0] + m1[1][2] * m2[0][1] + m1[2][2] * m2[0][2],
|
||||||
|
m1[0][3] * m2[0][0] + m1[1][3] * m2[0][1] + m1[2][3] * m2[0][2],
|
||||||
|
m1[0][0] * m2[1][0] + m1[1][0] * m2[1][1] + m1[2][0] * m2[1][2],
|
||||||
|
m1[0][1] * m2[1][0] + m1[1][1] * m2[1][1] + m1[2][1] * m2[1][2],
|
||||||
|
m1[0][2] * m2[1][0] + m1[1][2] * m2[1][1] + m1[2][2] * m2[1][2],
|
||||||
|
m1[0][3] * m2[1][0] + m1[1][3] * m2[1][1] + m1[2][3] * m2[1][2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
GLM_FUNC_QUALIFIER tmat3x4<T> operator*
|
||||||
|
(
|
||||||
|
tmat3x4<T> const & m1,
|
||||||
|
tmat3x3<T> const & m2
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return tmat3x4<T>(
|
||||||
|
m1[0][0] * m2[0][0] + m1[1][0] * m2[0][1] + m1[2][0] * m2[0][2],
|
||||||
|
m1[0][1] * m2[0][0] + m1[1][1] * m2[0][1] + m1[2][1] * m2[0][2],
|
||||||
|
m1[0][2] * m2[0][0] + m1[1][2] * m2[0][1] + m1[2][2] * m2[0][2],
|
||||||
|
m1[0][3] * m2[0][0] + m1[1][3] * m2[0][1] + m1[2][3] * m2[0][2],
|
||||||
|
m1[0][0] * m2[1][0] + m1[1][0] * m2[1][1] + m1[2][0] * m2[1][2],
|
||||||
|
m1[0][1] * m2[1][0] + m1[1][1] * m2[1][1] + m1[2][1] * m2[1][2],
|
||||||
|
m1[0][2] * m2[1][0] + m1[1][2] * m2[1][1] + m1[2][2] * m2[1][2],
|
||||||
|
m1[0][3] * m2[1][0] + m1[1][3] * m2[1][1] + m1[2][3] * m2[1][2],
|
||||||
|
m1[0][0] * m2[2][0] + m1[1][0] * m2[2][1] + m1[2][0] * m2[2][2],
|
||||||
|
m1[0][1] * m2[2][0] + m1[1][1] * m2[2][1] + m1[2][1] * m2[2][2],
|
||||||
|
m1[0][2] * m2[2][0] + m1[1][2] * m2[2][1] + m1[2][2] * m2[2][2],
|
||||||
|
m1[0][3] * m2[2][0] + m1[1][3] * m2[2][1] + m1[2][3] * m2[2][2]);
|
||||||
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
GLM_FUNC_QUALIFIER tmat3x4<T> operator/
|
GLM_FUNC_QUALIFIER tmat3x4<T> operator/
|
||||||
(
|
(
|
||||||
|
@ -573,6 +573,40 @@ namespace detail
|
|||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
GLM_FUNC_QUALIFIER tmat3x2<T> operator*
|
||||||
|
(
|
||||||
|
tmat4x2<T> const & m1,
|
||||||
|
tmat3x4<T> const & m2
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return tmat3x2<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][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][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]);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
GLM_FUNC_QUALIFIER tmat4x2<T> operator*
|
||||||
|
(
|
||||||
|
tmat4x2<T> const & m1,
|
||||||
|
tmat4x4<T> const & m2
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return tmat4x2<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][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][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][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]);
|
||||||
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
GLM_FUNC_QUALIFIER tmat4x2<T> operator/
|
GLM_FUNC_QUALIFIER tmat4x2<T> operator/
|
||||||
(
|
(
|
||||||
|
@ -531,6 +531,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*
|
||||||
(
|
(
|
||||||
@ -577,6 +593,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/
|
||||||
(
|
(
|
||||||
|
@ -688,6 +688,46 @@ namespace detail
|
|||||||
m[3][0] * v.x + m[3][1] * v.y + m[3][2] * v.z + m[3][3] * v.w);
|
m[3][0] * v.x + m[3][1] * v.y + m[3][2] * v.z + m[3][3] * v.w);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
GLM_FUNC_QUALIFIER tmat2x4<T> operator*
|
||||||
|
(
|
||||||
|
tmat4x4<T> const & m1,
|
||||||
|
tmat2x4<T> const & m2
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return tmat2x4<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][3] * m2[0][0] + m1[1][3] * m2[0][1] + m1[2][3] * m2[0][2] + m1[3][3] * 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][3] * m2[1][0] + m1[1][3] * m2[1][1] + m1[2][3] * m2[1][2] + m1[3][3] * m2[1][3]);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
GLM_FUNC_QUALIFIER tmat3x4<T> operator*
|
||||||
|
(
|
||||||
|
tmat4x4<T> const & m1,
|
||||||
|
tmat3x4<T> const & m2
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return tmat3x4<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][3] * m2[0][0] + m1[1][3] * m2[0][1] + m1[2][3] * m2[0][2] + m1[3][3] * 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][3] * m2[1][0] + m1[1][3] * m2[1][1] + m1[2][3] * m2[1][2] + m1[3][3] * 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][3] * m2[2][0] + m1[1][3] * m2[2][1] + m1[2][3] * m2[2][2] + m1[3][3] * m2[2][3]);
|
||||||
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
GLM_FUNC_QUALIFIER tmat4x4<T> operator*
|
GLM_FUNC_QUALIFIER tmat4x4<T> operator*
|
||||||
(
|
(
|
||||||
|
@ -40,6 +40,7 @@ http://glm.g-truc.net/glm-0.9.2.pdf
|
|||||||
GLM 0.9.2.7: 2011-1X-XX
|
GLM 0.9.2.7: 2011-1X-XX
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
- Added more swizzling constructors
|
- Added more swizzling constructors
|
||||||
|
- Added missing none-squared matrix products
|
||||||
|
|
||||||
================================================================================
|
================================================================================
|
||||||
GLM 0.9.2.6: 2011-10-01
|
GLM 0.9.2.6: 2011-10-01
|
||||||
|
Loading…
Reference in New Issue
Block a user