|
@@ -29,11 +29,11 @@
|
|
|
namespace glm{
|
|
namespace glm{
|
|
|
namespace detail
|
|
namespace detail
|
|
|
{
|
|
{
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER GLM_CONSTEXPR typename tmat3x3<T>::size_type tmat3x3<T>::length() const
|
|
|
|
|
- {
|
|
|
|
|
- return 3;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER GLM_CONSTEXPR typename tmat3x3<T>::size_type tmat3x3<T>::length() const
|
|
|
|
|
+ {
|
|
|
|
|
+ return 3;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
template <typename T>
|
|
template <typename T>
|
|
|
GLM_FUNC_QUALIFIER typename tmat3x3<T>::size_type tmat3x3<T>::col_size()
|
|
GLM_FUNC_QUALIFIER typename tmat3x3<T>::size_type tmat3x3<T>::col_size()
|
|
@@ -72,74 +72,74 @@ namespace detail
|
|
|
return this->value[i];
|
|
return this->value[i];
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- //////////////////////////////////////////////////////////////
|
|
|
|
|
- // Constructors
|
|
|
|
|
|
|
+ //////////////////////////////////////////////////////////////
|
|
|
|
|
+ // Constructors
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3()
|
|
|
|
|
- {
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3()
|
|
|
|
|
+ {
|
|
|
value_type const Zero(0);
|
|
value_type const Zero(0);
|
|
|
value_type const One(1);
|
|
value_type const One(1);
|
|
|
- this->value[0] = col_type(One, Zero, Zero);
|
|
|
|
|
- this->value[1] = col_type(Zero, One, Zero);
|
|
|
|
|
- this->value[2] = col_type(Zero, Zero, One);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ this->value[0] = col_type(One, Zero, Zero);
|
|
|
|
|
+ this->value[1] = col_type(Zero, One, Zero);
|
|
|
|
|
+ this->value[2] = col_type(Zero, Zero, One);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
(
|
|
(
|
|
|
tmat3x3<T> const & m
|
|
tmat3x3<T> const & m
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- this->value[0] = m.value[0];
|
|
|
|
|
- this->value[1] = m.value[1];
|
|
|
|
|
- this->value[2] = m.value[2];
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ this->value[0] = m.value[0];
|
|
|
|
|
+ this->value[1] = m.value[1];
|
|
|
|
|
+ this->value[2] = m.value[2];
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
(
|
|
(
|
|
|
ctor
|
|
ctor
|
|
|
)
|
|
)
|
|
|
- {}
|
|
|
|
|
|
|
+ {}
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
(
|
|
(
|
|
|
value_type const & s
|
|
value_type const & s
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
|
|
+ {
|
|
|
value_type const Zero(0);
|
|
value_type const Zero(0);
|
|
|
- this->value[0] = col_type(s, Zero, Zero);
|
|
|
|
|
- this->value[1] = col_type(Zero, s, Zero);
|
|
|
|
|
- this->value[2] = col_type(Zero, Zero, s);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
|
|
- (
|
|
|
|
|
- value_type const & x0, value_type const & y0, value_type const & z0,
|
|
|
|
|
- value_type const & x1, value_type const & y1, value_type const & z1,
|
|
|
|
|
- value_type const & x2, value_type const & y2, value_type const & z2
|
|
|
|
|
- )
|
|
|
|
|
- {
|
|
|
|
|
- this->value[0] = col_type(x0, y0, z0);
|
|
|
|
|
- this->value[1] = col_type(x1, y1, z1);
|
|
|
|
|
- this->value[2] = col_type(x2, y2, z2);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
|
|
- (
|
|
|
|
|
- col_type const & v0,
|
|
|
|
|
- col_type const & v1,
|
|
|
|
|
- col_type const & v2
|
|
|
|
|
- )
|
|
|
|
|
- {
|
|
|
|
|
- this->value[0] = v0;
|
|
|
|
|
- this->value[1] = v1;
|
|
|
|
|
- this->value[2] = v2;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ this->value[0] = col_type(s, Zero, Zero);
|
|
|
|
|
+ this->value[1] = col_type(Zero, s, Zero);
|
|
|
|
|
+ this->value[2] = col_type(Zero, Zero, s);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
|
|
+ (
|
|
|
|
|
+ value_type const & x0, value_type const & y0, value_type const & z0,
|
|
|
|
|
+ value_type const & x1, value_type const & y1, value_type const & z1,
|
|
|
|
|
+ value_type const & x2, value_type const & y2, value_type const & z2
|
|
|
|
|
+ )
|
|
|
|
|
+ {
|
|
|
|
|
+ this->value[0] = col_type(x0, y0, z0);
|
|
|
|
|
+ this->value[1] = col_type(x1, y1, z1);
|
|
|
|
|
+ this->value[2] = col_type(x2, y2, z2);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
|
|
+ (
|
|
|
|
|
+ col_type const & v0,
|
|
|
|
|
+ col_type const & v1,
|
|
|
|
|
+ col_type const & v2
|
|
|
|
|
+ )
|
|
|
|
|
+ {
|
|
|
|
|
+ this->value[0] = v0;
|
|
|
|
|
+ this->value[1] = v1;
|
|
|
|
|
+ this->value[2] = v2;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
//////////////////////////////////////
|
|
//////////////////////////////////////
|
|
|
// Convertion constructors
|
|
// Convertion constructors
|
|
@@ -151,9 +151,9 @@ namespace detail
|
|
|
)
|
|
)
|
|
|
{
|
|
{
|
|
|
value_type const Zero(0);
|
|
value_type const Zero(0);
|
|
|
- this->value[0] = tvec3<T>(value_type(s), Zero, Zero);
|
|
|
|
|
- this->value[1] = tvec3<T>(Zero, value_type(s), Zero);
|
|
|
|
|
- this->value[2] = tvec3<T>(Zero, Zero, value_type(s));
|
|
|
|
|
|
|
+ this->value[0] = tvec3<T>(value_type(s), Zero, Zero);
|
|
|
|
|
+ this->value[1] = tvec3<T>(Zero, value_type(s), Zero);
|
|
|
|
|
+ this->value[2] = tvec3<T>(Zero, Zero, value_type(s));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
template <typename T>
|
|
template <typename T>
|
|
@@ -168,9 +168,9 @@ namespace detail
|
|
|
X3 const & x3, Y3 const & y3, Z3 const & z3
|
|
X3 const & x3, Y3 const & y3, Z3 const & z3
|
|
|
)
|
|
)
|
|
|
{
|
|
{
|
|
|
- this->value[0] = col_type(value_type(x1), value_type(y1), value_type(z1));
|
|
|
|
|
- this->value[1] = col_type(value_type(x2), value_type(y2), value_type(z2));
|
|
|
|
|
- this->value[2] = col_type(value_type(x3), value_type(y3), value_type(z3));
|
|
|
|
|
|
|
+ this->value[0] = col_type(value_type(x1), value_type(y1), value_type(z1));
|
|
|
|
|
+ this->value[1] = col_type(value_type(x2), value_type(y2), value_type(z2));
|
|
|
|
|
+ this->value[2] = col_type(value_type(x3), value_type(y3), value_type(z3));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
template <typename T>
|
|
template <typename T>
|
|
@@ -182,443 +182,443 @@ namespace detail
|
|
|
tvec3<V3> const & v3
|
|
tvec3<V3> const & v3
|
|
|
)
|
|
)
|
|
|
{
|
|
{
|
|
|
- this->value[0] = col_type(v1);
|
|
|
|
|
- this->value[1] = col_type(v2);
|
|
|
|
|
- this->value[2] = col_type(v3);
|
|
|
|
|
|
|
+ this->value[0] = col_type(v1);
|
|
|
|
|
+ this->value[1] = col_type(v2);
|
|
|
|
|
+ this->value[2] = col_type(v3);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- //////////////////////////////////////////////////////////////
|
|
|
|
|
- // Conversions
|
|
|
|
|
|
|
+ //////////////////////////////////////////////////////////////
|
|
|
|
|
+ // Conversions
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- template <typename U>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ template <typename U>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
(
|
|
(
|
|
|
tmat3x3<U> const & m
|
|
tmat3x3<U> const & m
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- this->value[0] = col_type(m[0]);
|
|
|
|
|
- this->value[1] = col_type(m[1]);
|
|
|
|
|
- this->value[2] = col_type(m[2]);
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ this->value[0] = col_type(m[0]);
|
|
|
|
|
+ this->value[1] = col_type(m[1]);
|
|
|
|
|
+ this->value[2] = col_type(m[2]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
(
|
|
(
|
|
|
tmat2x2<T> const & m
|
|
tmat2x2<T> const & m
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- this->value[0] = col_type(m[0], value_type(0));
|
|
|
|
|
- this->value[1] = col_type(m[1], value_type(0));
|
|
|
|
|
- this->value[2] = col_type(detail::tvec2<T>(0), value_type(1));
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ this->value[0] = col_type(m[0], value_type(0));
|
|
|
|
|
+ this->value[1] = col_type(m[1], value_type(0));
|
|
|
|
|
+ this->value[2] = col_type(detail::tvec2<T>(0), value_type(1));
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
(
|
|
(
|
|
|
tmat4x4<T> const & m
|
|
tmat4x4<T> const & m
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- this->value[0] = col_type(m[0]);
|
|
|
|
|
- this->value[1] = col_type(m[1]);
|
|
|
|
|
- this->value[2] = col_type(m[2]);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ this->value[0] = col_type(m[0]);
|
|
|
|
|
+ this->value[1] = col_type(m[1]);
|
|
|
|
|
+ this->value[2] = col_type(m[2]);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
template <typename T>
|
|
template <typename T>
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
(
|
|
(
|
|
|
tmat2x3<T> const & m
|
|
tmat2x3<T> const & m
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- this->value[0] = m[0];
|
|
|
|
|
- this->value[1] = m[1];
|
|
|
|
|
- this->value[2] = col_type(detail::tvec2<T>(0), value_type(1));
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ this->value[0] = m[0];
|
|
|
|
|
+ this->value[1] = m[1];
|
|
|
|
|
+ this->value[2] = col_type(detail::tvec2<T>(0), value_type(1));
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
(
|
|
(
|
|
|
tmat3x2<T> const & m
|
|
tmat3x2<T> const & m
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- this->value[0] = col_type(m[0], value_type(0));
|
|
|
|
|
- this->value[1] = col_type(m[1], value_type(0));
|
|
|
|
|
- this->value[2] = col_type(m[2], value_type(1));
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ this->value[0] = col_type(m[0], value_type(0));
|
|
|
|
|
+ this->value[1] = col_type(m[1], value_type(0));
|
|
|
|
|
+ this->value[2] = col_type(m[2], value_type(1));
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
(
|
|
(
|
|
|
tmat2x4<T> const & m
|
|
tmat2x4<T> const & m
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- this->value[0] = col_type(m[0]);
|
|
|
|
|
- this->value[1] = col_type(m[1]);
|
|
|
|
|
- this->value[2] = col_type(detail::tvec2<T>(0), value_type(1));
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ this->value[0] = col_type(m[0]);
|
|
|
|
|
+ this->value[1] = col_type(m[1]);
|
|
|
|
|
+ this->value[2] = col_type(detail::tvec2<T>(0), value_type(1));
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
(
|
|
(
|
|
|
tmat4x2<T> const & m
|
|
tmat4x2<T> const & m
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- this->value[0] = col_type(m[0], value_type(0));
|
|
|
|
|
- this->value[1] = col_type(m[1], value_type(0));
|
|
|
|
|
- this->value[2] = col_type(m[2], value_type(1));
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ this->value[0] = col_type(m[0], value_type(0));
|
|
|
|
|
+ this->value[1] = col_type(m[1], value_type(0));
|
|
|
|
|
+ this->value[2] = col_type(m[2], value_type(1));
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
(
|
|
(
|
|
|
tmat3x4<T> const & m
|
|
tmat3x4<T> const & m
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- this->value[0] = col_type(m[0]);
|
|
|
|
|
- this->value[1] = col_type(m[1]);
|
|
|
|
|
- this->value[2] = col_type(m[2]);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ this->value[0] = col_type(m[0]);
|
|
|
|
|
+ this->value[1] = col_type(m[1]);
|
|
|
|
|
+ this->value[2] = col_type(m[2]);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T>::tmat3x3
|
|
|
(
|
|
(
|
|
|
tmat4x3<T> const & m
|
|
tmat4x3<T> const & m
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- this->value[0] = m[0];
|
|
|
|
|
- this->value[1] = m[1];
|
|
|
|
|
- this->value[2] = m[2];
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ this->value[0] = m[0];
|
|
|
|
|
+ this->value[1] = m[1];
|
|
|
|
|
+ this->value[2] = m[2];
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- //////////////////////////////////////////////////////////////
|
|
|
|
|
- // Operators
|
|
|
|
|
|
|
+ //////////////////////////////////////////////////////////////
|
|
|
|
|
+ // Operators
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T> & tmat3x3<T>::operator=
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T> & tmat3x3<T>::operator=
|
|
|
(
|
|
(
|
|
|
tmat3x3<T> const & m
|
|
tmat3x3<T> const & m
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- this->value[0] = m[0];
|
|
|
|
|
- this->value[1] = m[1];
|
|
|
|
|
- this->value[2] = m[2];
|
|
|
|
|
- return *this;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ this->value[0] = m[0];
|
|
|
|
|
+ this->value[1] = m[1];
|
|
|
|
|
+ this->value[2] = m[2];
|
|
|
|
|
+ return *this;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- template <typename U>
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ template <typename U>
|
|
|
GLM_FUNC_QUALIFIER tmat3x3<T> & tmat3x3<T>::operator=
|
|
GLM_FUNC_QUALIFIER tmat3x3<T> & tmat3x3<T>::operator=
|
|
|
(
|
|
(
|
|
|
tmat3x3<U> const & m
|
|
tmat3x3<U> const & m
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- this->value[0] = m[0];
|
|
|
|
|
- this->value[1] = m[1];
|
|
|
|
|
- this->value[2] = m[2];
|
|
|
|
|
- return *this;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ this->value[0] = m[0];
|
|
|
|
|
+ this->value[1] = m[1];
|
|
|
|
|
+ this->value[2] = m[2];
|
|
|
|
|
+ return *this;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
template <typename U>
|
|
template <typename U>
|
|
|
GLM_FUNC_QUALIFIER tmat3x3<T> & tmat3x3<T>::operator+=
|
|
GLM_FUNC_QUALIFIER tmat3x3<T> & tmat3x3<T>::operator+=
|
|
|
(
|
|
(
|
|
|
U const & s
|
|
U const & s
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- this->value[0] += s;
|
|
|
|
|
- this->value[1] += s;
|
|
|
|
|
- this->value[2] += s;
|
|
|
|
|
- return *this;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ this->value[0] += s;
|
|
|
|
|
+ this->value[1] += s;
|
|
|
|
|
+ this->value[2] += s;
|
|
|
|
|
+ return *this;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
template <typename U>
|
|
template <typename U>
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T> & tmat3x3<T>::operator+=
|
|
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T> & tmat3x3<T>::operator+=
|
|
|
(
|
|
(
|
|
|
tmat3x3<U> const & m
|
|
tmat3x3<U> const & m
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- this->value[0] += m[0];
|
|
|
|
|
- this->value[1] += m[1];
|
|
|
|
|
- this->value[2] += m[2];
|
|
|
|
|
- return *this;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ this->value[0] += m[0];
|
|
|
|
|
+ this->value[1] += m[1];
|
|
|
|
|
+ this->value[2] += m[2];
|
|
|
|
|
+ return *this;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
template <typename U>
|
|
template <typename U>
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T> & tmat3x3<T>::operator-=
|
|
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T> & tmat3x3<T>::operator-=
|
|
|
(
|
|
(
|
|
|
U const & s
|
|
U const & s
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- this->value[0] -= s;
|
|
|
|
|
- this->value[1] -= s;
|
|
|
|
|
- this->value[2] -= s;
|
|
|
|
|
- return *this;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ this->value[0] -= s;
|
|
|
|
|
+ this->value[1] -= s;
|
|
|
|
|
+ this->value[2] -= s;
|
|
|
|
|
+ return *this;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
template <typename U>
|
|
template <typename U>
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T> & tmat3x3<T>::operator-=
|
|
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T> & tmat3x3<T>::operator-=
|
|
|
(
|
|
(
|
|
|
tmat3x3<U> const & m
|
|
tmat3x3<U> const & m
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- this->value[0] -= m[0];
|
|
|
|
|
- this->value[1] -= m[1];
|
|
|
|
|
- this->value[2] -= m[2];
|
|
|
|
|
- return *this;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ this->value[0] -= m[0];
|
|
|
|
|
+ this->value[1] -= m[1];
|
|
|
|
|
+ this->value[2] -= m[2];
|
|
|
|
|
+ return *this;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
template <typename U>
|
|
template <typename U>
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T> & tmat3x3<T>::operator*=
|
|
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T> & tmat3x3<T>::operator*=
|
|
|
(
|
|
(
|
|
|
U const & s
|
|
U const & s
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- this->value[0] *= s;
|
|
|
|
|
- this->value[1] *= s;
|
|
|
|
|
- this->value[2] *= s;
|
|
|
|
|
- return *this;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ this->value[0] *= s;
|
|
|
|
|
+ this->value[1] *= s;
|
|
|
|
|
+ this->value[2] *= s;
|
|
|
|
|
+ return *this;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
template <typename U>
|
|
template <typename U>
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T> & tmat3x3<T>::operator*=
|
|
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T> & tmat3x3<T>::operator*=
|
|
|
(
|
|
(
|
|
|
tmat3x3<U> const & m
|
|
tmat3x3<U> const & m
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- return (*this = *this * m);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ return (*this = *this * m);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
template <typename U>
|
|
template <typename U>
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T> & tmat3x3<T>::operator/=
|
|
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T> & tmat3x3<T>::operator/=
|
|
|
(
|
|
(
|
|
|
U const & s
|
|
U const & s
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- this->value[0] /= s;
|
|
|
|
|
- this->value[1] /= s;
|
|
|
|
|
- this->value[2] /= s;
|
|
|
|
|
- return *this;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ this->value[0] /= s;
|
|
|
|
|
+ this->value[1] /= s;
|
|
|
|
|
+ this->value[2] /= s;
|
|
|
|
|
+ return *this;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
template <typename U>
|
|
template <typename U>
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T> & tmat3x3<T>::operator/=
|
|
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T> & tmat3x3<T>::operator/=
|
|
|
(
|
|
(
|
|
|
tmat3x3<U> const & m
|
|
tmat3x3<U> const & m
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- return (*this = *this / m);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T> & tmat3x3<T>::operator++ ()
|
|
|
|
|
- {
|
|
|
|
|
- ++this->value[0];
|
|
|
|
|
- ++this->value[1];
|
|
|
|
|
- ++this->value[2];
|
|
|
|
|
- return *this;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T> & tmat3x3<T>::operator-- ()
|
|
|
|
|
- {
|
|
|
|
|
- --this->value[0];
|
|
|
|
|
- --this->value[1];
|
|
|
|
|
- --this->value[2];
|
|
|
|
|
- return *this;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T> tmat3x3<T>::_inverse() const
|
|
|
|
|
- {
|
|
|
|
|
- T S00 = value[0][0];
|
|
|
|
|
- T S01 = value[0][1];
|
|
|
|
|
- T S02 = value[0][2];
|
|
|
|
|
-
|
|
|
|
|
- T S10 = value[1][0];
|
|
|
|
|
- T S11 = value[1][1];
|
|
|
|
|
- T S12 = value[1][2];
|
|
|
|
|
-
|
|
|
|
|
- T S20 = value[2][0];
|
|
|
|
|
- T S21 = value[2][1];
|
|
|
|
|
- T S22 = value[2][2];
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ return (*this = *this / m);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T> & tmat3x3<T>::operator++ ()
|
|
|
|
|
+ {
|
|
|
|
|
+ ++this->value[0];
|
|
|
|
|
+ ++this->value[1];
|
|
|
|
|
+ ++this->value[2];
|
|
|
|
|
+ return *this;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T> & tmat3x3<T>::operator-- ()
|
|
|
|
|
+ {
|
|
|
|
|
+ --this->value[0];
|
|
|
|
|
+ --this->value[1];
|
|
|
|
|
+ --this->value[2];
|
|
|
|
|
+ return *this;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T> tmat3x3<T>::_inverse() const
|
|
|
|
|
+ {
|
|
|
|
|
+ T S00 = value[0][0];
|
|
|
|
|
+ T S01 = value[0][1];
|
|
|
|
|
+ T S02 = value[0][2];
|
|
|
|
|
+
|
|
|
|
|
+ T S10 = value[1][0];
|
|
|
|
|
+ T S11 = value[1][1];
|
|
|
|
|
+ T S12 = value[1][2];
|
|
|
|
|
+
|
|
|
|
|
+ T S20 = value[2][0];
|
|
|
|
|
+ T S21 = value[2][1];
|
|
|
|
|
+ T S22 = value[2][2];
|
|
|
/*
|
|
/*
|
|
|
- tmat3x3<T> Inverse(
|
|
|
|
|
- + (S11 * S22 - S21 * S12),
|
|
|
|
|
- - (S10 * S22 - S20 * S12),
|
|
|
|
|
- + (S10 * S21 - S20 * S11),
|
|
|
|
|
- - (S01 * S22 - S21 * S02),
|
|
|
|
|
- + (S00 * S22 - S20 * S02),
|
|
|
|
|
- - (S00 * S21 - S20 * S01),
|
|
|
|
|
- + (S01 * S12 - S11 * S02),
|
|
|
|
|
- - (S00 * S12 - S10 * S02),
|
|
|
|
|
- + (S00 * S11 - S10 * S01));
|
|
|
|
|
|
|
+ tmat3x3<T> Inverse(
|
|
|
|
|
+ + (S11 * S22 - S21 * S12),
|
|
|
|
|
+ - (S10 * S22 - S20 * S12),
|
|
|
|
|
+ + (S10 * S21 - S20 * S11),
|
|
|
|
|
+ - (S01 * S22 - S21 * S02),
|
|
|
|
|
+ + (S00 * S22 - S20 * S02),
|
|
|
|
|
+ - (S00 * S21 - S20 * S01),
|
|
|
|
|
+ + (S01 * S12 - S11 * S02),
|
|
|
|
|
+ - (S00 * S12 - S10 * S02),
|
|
|
|
|
+ + (S00 * S11 - S10 * S01));
|
|
|
*/
|
|
*/
|
|
|
- tmat3x3<T> Inverse(
|
|
|
|
|
- S11 * S22 - S21 * S12,
|
|
|
|
|
- S12 * S20 - S22 * S10,
|
|
|
|
|
- S10 * S21 - S20 * S11,
|
|
|
|
|
- S02 * S21 - S01 * S22,
|
|
|
|
|
- S00 * S22 - S02 * S20,
|
|
|
|
|
- S01 * S20 - S00 * S21,
|
|
|
|
|
- S12 * S01 - S11 * S02,
|
|
|
|
|
- S10 * S02 - S12 * S00,
|
|
|
|
|
- S11 * S00 - S10 * S01);
|
|
|
|
|
-
|
|
|
|
|
- T Determinant = S00 * (S11 * S22 - S21 * S12)
|
|
|
|
|
- - S10 * (S01 * S22 - S21 * S02)
|
|
|
|
|
- + S20 * (S01 * S12 - S11 * S02);
|
|
|
|
|
-
|
|
|
|
|
- Inverse /= Determinant;
|
|
|
|
|
- return Inverse;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
+ tmat3x3<T> Inverse(
|
|
|
|
|
+ S11 * S22 - S21 * S12,
|
|
|
|
|
+ S12 * S20 - S22 * S10,
|
|
|
|
|
+ S10 * S21 - S20 * S11,
|
|
|
|
|
+ S02 * S21 - S01 * S22,
|
|
|
|
|
+ S00 * S22 - S02 * S20,
|
|
|
|
|
+ S01 * S20 - S00 * S21,
|
|
|
|
|
+ S12 * S01 - S11 * S02,
|
|
|
|
|
+ S10 * S02 - S12 * S00,
|
|
|
|
|
+ S11 * S00 - S10 * S01);
|
|
|
|
|
+
|
|
|
|
|
+ T Determinant = S00 * (S11 * S22 - S21 * S12)
|
|
|
|
|
+ - S10 * (S01 * S22 - S21 * S02)
|
|
|
|
|
+ + S20 * (S01 * S12 - S11 * S02);
|
|
|
|
|
+
|
|
|
|
|
+ Inverse /= Determinant;
|
|
|
|
|
+ return Inverse;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //////////////////////////////////////////////////////////////
|
|
|
// Binary operators
|
|
// Binary operators
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T> operator+
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T> operator+
|
|
|
(
|
|
(
|
|
|
tmat3x3<T> const & m,
|
|
tmat3x3<T> const & m,
|
|
|
typename tmat3x3<T>::value_type const & s
|
|
typename tmat3x3<T>::value_type const & s
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- return tmat3x3<T>(
|
|
|
|
|
- m[0] + s,
|
|
|
|
|
- m[1] + s,
|
|
|
|
|
- m[2] + s);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ return tmat3x3<T>(
|
|
|
|
|
+ m[0] + s,
|
|
|
|
|
+ m[1] + s,
|
|
|
|
|
+ m[2] + s);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T> operator+
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T> operator+
|
|
|
(
|
|
(
|
|
|
typename tmat3x3<T>::value_type const & s,
|
|
typename tmat3x3<T>::value_type const & s,
|
|
|
tmat3x3<T> const & m
|
|
tmat3x3<T> const & m
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- return tmat3x3<T>(
|
|
|
|
|
- m[0] + s,
|
|
|
|
|
- m[1] + s,
|
|
|
|
|
- m[2] + s);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ return tmat3x3<T>(
|
|
|
|
|
+ m[0] + s,
|
|
|
|
|
+ m[1] + s,
|
|
|
|
|
+ m[2] + s);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T> operator+
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T> operator+
|
|
|
(
|
|
(
|
|
|
tmat3x3<T> const & m1,
|
|
tmat3x3<T> const & m1,
|
|
|
tmat3x3<T> const & m2
|
|
tmat3x3<T> const & m2
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- return tmat3x3<T>(
|
|
|
|
|
- m1[0] + m2[0],
|
|
|
|
|
- m1[1] + m2[1],
|
|
|
|
|
- m1[2] + m2[2]);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ return tmat3x3<T>(
|
|
|
|
|
+ m1[0] + m2[0],
|
|
|
|
|
+ m1[1] + m2[1],
|
|
|
|
|
+ m1[2] + m2[2]);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T> operator-
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T> operator-
|
|
|
(
|
|
(
|
|
|
tmat3x3<T> const & m,
|
|
tmat3x3<T> const & m,
|
|
|
typename tmat3x3<T>::value_type const & s
|
|
typename tmat3x3<T>::value_type const & s
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- return tmat3x3<T>(
|
|
|
|
|
- m[0] - s,
|
|
|
|
|
- m[1] - s,
|
|
|
|
|
- m[2] - s);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ return tmat3x3<T>(
|
|
|
|
|
+ m[0] - s,
|
|
|
|
|
+ m[1] - s,
|
|
|
|
|
+ m[2] - s);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T> operator-
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T> operator-
|
|
|
(
|
|
(
|
|
|
typename tmat3x3<T>::value_type const & s,
|
|
typename tmat3x3<T>::value_type const & s,
|
|
|
tmat3x3<T> const & m
|
|
tmat3x3<T> const & m
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- return tmat3x3<T>(
|
|
|
|
|
- s - m[0],
|
|
|
|
|
- s - m[1],
|
|
|
|
|
- s - m[2]);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ return tmat3x3<T>(
|
|
|
|
|
+ s - m[0],
|
|
|
|
|
+ s - m[1],
|
|
|
|
|
+ s - m[2]);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T> operator-
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T> operator-
|
|
|
(
|
|
(
|
|
|
tmat3x3<T> const & m1,
|
|
tmat3x3<T> const & m1,
|
|
|
tmat3x3<T> const & m2
|
|
tmat3x3<T> const & m2
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- return tmat3x3<T>(
|
|
|
|
|
- m1[0] - m2[0],
|
|
|
|
|
- m1[1] - m2[1],
|
|
|
|
|
- m1[2] - m2[2]);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ return tmat3x3<T>(
|
|
|
|
|
+ m1[0] - m2[0],
|
|
|
|
|
+ m1[1] - m2[1],
|
|
|
|
|
+ m1[2] - m2[2]);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T> operator*
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T> operator*
|
|
|
(
|
|
(
|
|
|
tmat3x3<T> const & m,
|
|
tmat3x3<T> const & m,
|
|
|
typename tmat3x3<T>::value_type const & s
|
|
typename tmat3x3<T>::value_type const & s
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- return tmat3x3<T>(
|
|
|
|
|
- m[0] * s,
|
|
|
|
|
- m[1] * s,
|
|
|
|
|
- m[2] * s);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ return tmat3x3<T>(
|
|
|
|
|
+ m[0] * s,
|
|
|
|
|
+ m[1] * s,
|
|
|
|
|
+ m[2] * s);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T> operator*
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T> operator*
|
|
|
(
|
|
(
|
|
|
typename tmat3x3<T>::value_type const & s,
|
|
typename tmat3x3<T>::value_type const & s,
|
|
|
tmat3x3<T> const & m
|
|
tmat3x3<T> const & m
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- return tmat3x3<T>(
|
|
|
|
|
- m[0] * s,
|
|
|
|
|
- m[1] * s,
|
|
|
|
|
- m[2] * s);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ return tmat3x3<T>(
|
|
|
|
|
+ m[0] * s,
|
|
|
|
|
+ m[1] * s,
|
|
|
|
|
+ m[2] * s);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER typename tmat3x3<T>::col_type operator*
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER typename tmat3x3<T>::col_type operator*
|
|
|
(
|
|
(
|
|
|
tmat3x3<T> const & m,
|
|
tmat3x3<T> const & m,
|
|
|
typename tmat3x3<T>::row_type const & v
|
|
typename tmat3x3<T>::row_type const & v
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- return typename tmat3x3<T>::col_type(
|
|
|
|
|
- m[0][0] * v.x + m[1][0] * v.y + m[2][0] * v.z,
|
|
|
|
|
- m[0][1] * v.x + m[1][1] * v.y + m[2][1] * v.z,
|
|
|
|
|
- m[0][2] * v.x + m[1][2] * v.y + m[2][2] * v.z);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ return typename tmat3x3<T>::col_type(
|
|
|
|
|
+ m[0][0] * v.x + m[1][0] * v.y + m[2][0] * v.z,
|
|
|
|
|
+ m[0][1] * v.x + m[1][1] * v.y + m[2][1] * v.z,
|
|
|
|
|
+ m[0][2] * v.x + m[1][2] * v.y + m[2][2] * v.z);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER typename tmat3x3<T>::row_type operator*
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER typename tmat3x3<T>::row_type operator*
|
|
|
(
|
|
(
|
|
|
typename tmat3x3<T>::col_type const & v,
|
|
typename tmat3x3<T>::col_type const & v,
|
|
|
tmat3x3<T> const & m
|
|
tmat3x3<T> const & m
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- return typename tmat3x3<T>::row_type(
|
|
|
|
|
- m[0][0] * v.x + m[0][1] * v.y + m[0][2] * v.z,
|
|
|
|
|
- m[1][0] * v.x + m[1][1] * v.y + m[1][2] * v.z,
|
|
|
|
|
- m[2][0] * v.x + m[2][1] * v.y + m[2][2] * v.z);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ return typename tmat3x3<T>::row_type(
|
|
|
|
|
+ m[0][0] * v.x + m[0][1] * v.y + m[0][2] * v.z,
|
|
|
|
|
+ m[1][0] * v.x + m[1][1] * v.y + m[1][2] * v.z,
|
|
|
|
|
+ m[2][0] * v.x + m[2][1] * v.y + m[2][2] * v.z);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T> operator*
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T> operator*
|
|
|
(
|
|
(
|
|
|
tmat3x3<T> const & m1,
|
|
tmat3x3<T> const & m1,
|
|
|
tmat3x3<T> const & m2
|
|
tmat3x3<T> const & m2
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
|
|
+ {
|
|
|
typename tmat3x3<T>::value_type const SrcA00 = m1[0][0];
|
|
typename tmat3x3<T>::value_type const SrcA00 = m1[0][0];
|
|
|
typename tmat3x3<T>::value_type const SrcA01 = m1[0][1];
|
|
typename tmat3x3<T>::value_type const SrcA01 = m1[0][1];
|
|
|
typename tmat3x3<T>::value_type const SrcA02 = m1[0][2];
|
|
typename tmat3x3<T>::value_type const SrcA02 = m1[0][2];
|
|
@@ -650,7 +650,7 @@ namespace detail
|
|
|
Result[2][1] = SrcA01 * SrcB20 + SrcA11 * SrcB21 + SrcA21 * SrcB22;
|
|
Result[2][1] = SrcA01 * SrcB20 + SrcA11 * SrcB21 + SrcA21 * SrcB22;
|
|
|
Result[2][2] = SrcA02 * SrcB20 + SrcA12 * SrcB21 + SrcA22 * SrcB22;
|
|
Result[2][2] = SrcA02 * SrcB20 + SrcA12 * SrcB21 + SrcA22 * SrcB22;
|
|
|
return Result;
|
|
return Result;
|
|
|
- }
|
|
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
template <typename T>
|
|
template <typename T>
|
|
|
GLM_FUNC_QUALIFIER tmat2x3<T> operator*
|
|
GLM_FUNC_QUALIFIER tmat2x3<T> operator*
|
|
@@ -690,31 +690,31 @@ namespace detail
|
|
|
m1[0][2] * m2[3][0] + m1[1][2] * m2[3][1] + m1[2][2] * m2[3][2]);
|
|
m1[0][2] * m2[3][0] + m1[1][2] * m2[3][1] + m1[2][2] * m2[3][2]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T> operator/
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T> operator/
|
|
|
(
|
|
(
|
|
|
tmat3x3<T> const & m,
|
|
tmat3x3<T> const & m,
|
|
|
typename tmat3x3<T>::value_type const & s
|
|
typename tmat3x3<T>::value_type const & s
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- return tmat3x3<T>(
|
|
|
|
|
- m[0] / s,
|
|
|
|
|
- m[1] / s,
|
|
|
|
|
- m[2] / s);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ return tmat3x3<T>(
|
|
|
|
|
+ m[0] / s,
|
|
|
|
|
+ m[1] / s,
|
|
|
|
|
+ m[2] / s);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T> operator/
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T> operator/
|
|
|
(
|
|
(
|
|
|
typename tmat3x3<T>::value_type const & s,
|
|
typename tmat3x3<T>::value_type const & s,
|
|
|
tmat3x3<T> const & m
|
|
tmat3x3<T> const & m
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- return tmat3x3<T>(
|
|
|
|
|
- s / m[0],
|
|
|
|
|
- s / m[1],
|
|
|
|
|
- s / m[2]);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ return tmat3x3<T>(
|
|
|
|
|
+ s / m[0],
|
|
|
|
|
+ s / m[1],
|
|
|
|
|
+ s / m[2]);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
template <typename T>
|
|
template <typename T>
|
|
|
GLM_FUNC_QUALIFIER typename tmat3x3<T>::col_type operator/
|
|
GLM_FUNC_QUALIFIER typename tmat3x3<T>::col_type operator/
|
|
@@ -747,43 +747,43 @@ namespace detail
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Unary constant operators
|
|
// Unary constant operators
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T> const operator-
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T> const operator-
|
|
|
(
|
|
(
|
|
|
tmat3x3<T> const & m
|
|
tmat3x3<T> const & m
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- return tmat3x3<T>(
|
|
|
|
|
- -m[0],
|
|
|
|
|
- -m[1],
|
|
|
|
|
- -m[2]);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ return tmat3x3<T>(
|
|
|
|
|
+ -m[0],
|
|
|
|
|
+ -m[1],
|
|
|
|
|
+ -m[2]);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T> const operator++
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T> const operator++
|
|
|
(
|
|
(
|
|
|
tmat3x3<T> const & m,
|
|
tmat3x3<T> const & m,
|
|
|
int
|
|
int
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- return tmat3x3<T>(
|
|
|
|
|
- m[0] + T(1),
|
|
|
|
|
- m[1] + T(1),
|
|
|
|
|
- m[2] + T(1));
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ return tmat3x3<T>(
|
|
|
|
|
+ m[0] + T(1),
|
|
|
|
|
+ m[1] + T(1),
|
|
|
|
|
+ m[2] + T(1));
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template <typename T>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tmat3x3<T> const operator--
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tmat3x3<T> const operator--
|
|
|
(
|
|
(
|
|
|
tmat3x3<T> const & m,
|
|
tmat3x3<T> const & m,
|
|
|
int
|
|
int
|
|
|
)
|
|
)
|
|
|
- {
|
|
|
|
|
- return tmat3x3<T>(
|
|
|
|
|
- m[0] - T(1),
|
|
|
|
|
- m[1] - T(1),
|
|
|
|
|
- m[2] - T(1));
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ return tmat3x3<T>(
|
|
|
|
|
+ m[0] - T(1),
|
|
|
|
|
+ m[1] - T(1),
|
|
|
|
|
+ m[2] - T(1));
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
//////////////////////////////////////
|
|
//////////////////////////////////////
|
|
|
// Boolean operators
|
|
// Boolean operators
|