|
|
@@ -396,31 +396,28 @@ namespace detail
|
|
|
m[0] * s,
|
|
|
m[1] * s);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
template <typename T>
|
|
|
- inline typename tmat2x3<T>::row_type operator*
|
|
|
+ inline typename tmat2x3<T>::col_type operator*
|
|
|
(
|
|
|
tmat2x3<T> const & m,
|
|
|
- typename tmat2x3<T>::col_type const & v
|
|
|
- )
|
|
|
+ typename tmat2x3<T>::row_type const & v)
|
|
|
{
|
|
|
- return detail::tvec3<T>(
|
|
|
+ return typename tmat2x3<T>::col_type(
|
|
|
m[0][0] * v.x + m[1][0] * v.y,
|
|
|
m[0][1] * v.x + m[1][1] * v.y,
|
|
|
- m[0][2] * v.x + m[1][2] * v.y,
|
|
|
- m[0][3] * v.x + m[1][3] * v.y);
|
|
|
+ m[0][2] * v.x + m[1][2] * v.y);
|
|
|
}
|
|
|
|
|
|
template <typename T>
|
|
|
- inline typename tmat2x3<T>::col_type operator*
|
|
|
+ inline typename tmat2x3<T>::row_type operator*
|
|
|
(
|
|
|
- typename tmat2x3<T>::row_type const & v,
|
|
|
- tmat2x3<T> const & m
|
|
|
- )
|
|
|
+ typename tmat2x3<T>::col_type const & v,
|
|
|
+ tmat2x3<T> const & m)
|
|
|
{
|
|
|
- return detail::tvec2<T>(
|
|
|
- m[0][0] * v.x + m[1][0] * v.y + m[2][0] * v.z + m[3][0] * v.w,
|
|
|
- m[0][1] * v.x + m[1][1] * v.y + m[2][1] * v.z + m[3][1] * v.w);
|
|
|
+ return typename tmat2x3<T>::row_type(
|
|
|
+ v.x * m[0][0] + v.y * m[0][1] + v.z * m[0][2],
|
|
|
+ v.x * m[1][0] + v.y * m[1][1] + v.z * m[1][2]);
|
|
|
}
|
|
|
|
|
|
template <typename T>
|