|
@@ -415,6 +415,7 @@ inline void Mat3::setRows(const Vec3& a, const Vec3& b, const Vec3& c)
|
|
|
(*this)(2, 2) = c.z();
|
|
(*this)(2, 2) = c.z();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// setColumns
|
|
// setColumns
|
|
|
inline void Mat3::setColumns(const Vec3& a, const Vec3& b, const Vec3& c)
|
|
inline void Mat3::setColumns(const Vec3& a, const Vec3& b, const Vec3& c)
|
|
|
{
|
|
{
|
|
@@ -429,6 +430,7 @@ inline void Mat3::setColumns(const Vec3& a, const Vec3& b, const Vec3& c)
|
|
|
(*this)(2, 2) = c.z();
|
|
(*this)(2, 2) = c.z();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// getRows
|
|
// getRows
|
|
|
inline void Mat3::getRows(Vec3& a, Vec3& b, Vec3& c) const
|
|
inline void Mat3::getRows(Vec3& a, Vec3& b, Vec3& c) const
|
|
|
{
|
|
{
|
|
@@ -443,6 +445,7 @@ inline void Mat3::getRows(Vec3& a, Vec3& b, Vec3& c) const
|
|
|
c.z() = (*this)(2, 2);
|
|
c.z() = (*this)(2, 2);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// getColumns
|
|
// getColumns
|
|
|
inline void Mat3::getColumns(Vec3& a, Vec3& b, Vec3& c) const
|
|
inline void Mat3::getColumns(Vec3& a, Vec3& b, Vec3& c) const
|
|
|
{
|
|
{
|
|
@@ -457,6 +460,7 @@ inline void Mat3::getColumns(Vec3& a, Vec3& b, Vec3& c) const
|
|
|
c.z() = (*this)(2, 2);
|
|
c.z() = (*this)(2, 2);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// setRow
|
|
// setRow
|
|
|
inline void Mat3::setRow(const size_t i, const Vec3& v)
|
|
inline void Mat3::setRow(const size_t i, const Vec3& v)
|
|
|
{
|
|
{
|
|
@@ -471,6 +475,7 @@ inline Vec3 Mat3::getRow(const size_t i) const
|
|
|
return Vec3((*this)(i, 0), (*this)(i, 1), (*this)(i, 2));
|
|
return Vec3((*this)(i, 0), (*this)(i, 1), (*this)(i, 2));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// setColumn
|
|
// setColumn
|
|
|
inline void Mat3::setColumn(const size_t i, const Vec3& v)
|
|
inline void Mat3::setColumn(const size_t i, const Vec3& v)
|
|
|
{
|
|
{
|
|
@@ -479,48 +484,56 @@ inline void Mat3::setColumn(const size_t i, const Vec3& v)
|
|
|
(*this)(2, i) = v.z();
|
|
(*this)(2, i) = v.z();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// getColumn
|
|
// getColumn
|
|
|
inline Vec3 Mat3::getColumn(const size_t i) const
|
|
inline Vec3 Mat3::getColumn(const size_t i) const
|
|
|
{
|
|
{
|
|
|
return Vec3((*this)(0,i), (*this)(1,i), (*this)(2,i));
|
|
return Vec3((*this)(0,i), (*this)(1,i), (*this)(2,i));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// getXAxis
|
|
// getXAxis
|
|
|
inline Vec3 Mat3::getXAxis() const
|
|
inline Vec3 Mat3::getXAxis() const
|
|
|
{
|
|
{
|
|
|
return getColumn(0);
|
|
return getColumn(0);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// getYAxis
|
|
// getYAxis
|
|
|
inline Vec3 Mat3::getYAxis() const
|
|
inline Vec3 Mat3::getYAxis() const
|
|
|
{
|
|
{
|
|
|
return getColumn(1);
|
|
return getColumn(1);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// getZAxis
|
|
// getZAxis
|
|
|
inline Vec3 Mat3::getZAxis() const
|
|
inline Vec3 Mat3::getZAxis() const
|
|
|
{
|
|
{
|
|
|
return getColumn(2);
|
|
return getColumn(2);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// setXAxis
|
|
// setXAxis
|
|
|
inline void Mat3::setXAxis(const Vec3& v3)
|
|
inline void Mat3::setXAxis(const Vec3& v3)
|
|
|
{
|
|
{
|
|
|
setColumn(0, v3);
|
|
setColumn(0, v3);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// setYAxis
|
|
// setYAxis
|
|
|
inline void Mat3::setYAxis(const Vec3& v3)
|
|
inline void Mat3::setYAxis(const Vec3& v3)
|
|
|
{
|
|
{
|
|
|
setColumn(1, v3);
|
|
setColumn(1, v3);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// setZAxis
|
|
// setZAxis
|
|
|
inline void Mat3::setZAxis(const Vec3& v3)
|
|
inline void Mat3::setZAxis(const Vec3& v3)
|
|
|
{
|
|
{
|
|
|
setColumn(2, v3);
|
|
setColumn(2, v3);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// setRotationX
|
|
// setRotationX
|
|
|
inline void Mat3::setRotationX(const float rad)
|
|
inline void Mat3::setRotationX(const float rad)
|
|
|
{
|
|
{
|
|
@@ -538,6 +551,7 @@ inline void Mat3::setRotationX(const float rad)
|
|
|
(*this)(2, 2) = costheta;
|
|
(*this)(2, 2) = costheta;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// setRotationY
|
|
// setRotationY
|
|
|
inline void Mat3::setRotationY(const float rad)
|
|
inline void Mat3::setRotationY(const float rad)
|
|
|
{
|
|
{
|
|
@@ -555,6 +569,7 @@ inline void Mat3::setRotationY(const float rad)
|
|
|
(*this)(2, 2) = costheta;
|
|
(*this)(2, 2) = costheta;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// loadRotationZ
|
|
// loadRotationZ
|
|
|
inline void Mat3::setRotationZ(const float rad)
|
|
inline void Mat3::setRotationZ(const float rad)
|
|
|
{
|
|
{
|
|
@@ -572,6 +587,7 @@ inline void Mat3::setRotationZ(const float rad)
|
|
|
(*this)(2, 2) = 1.0;
|
|
(*this)(2, 2) = 1.0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// rotateXAxis
|
|
// rotateXAxis
|
|
|
/*
|
|
/*
|
|
|
* the slow code is in comments and above the comments the optimized one
|
|
* the slow code is in comments and above the comments the optimized one
|
|
@@ -620,6 +636,7 @@ inline void Mat3::rotateXAxis(const float rad)
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// rotateYAxis
|
|
// rotateYAxis
|
|
|
inline void Mat3::rotateYAxis(const float rad)
|
|
inline void Mat3::rotateYAxis(const float rad)
|
|
|
{
|
|
{
|
|
@@ -699,6 +716,7 @@ inline void Mat3::rotateZAxis(const float rad)
|
|
|
//setColumns(xAxis, yAxis, zAxis);
|
|
//setColumns(xAxis, yAxis, zAxis);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// transpose
|
|
// transpose
|
|
|
inline void Mat3::transpose()
|
|
inline void Mat3::transpose()
|
|
|
{
|
|
{
|
|
@@ -713,6 +731,7 @@ inline void Mat3::transpose()
|
|
|
(*this)(2, 1) = temp;
|
|
(*this)(2, 1) = temp;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// transposed
|
|
// transposed
|
|
|
inline Mat3 Mat3::getTransposed() const
|
|
inline Mat3 Mat3::getTransposed() const
|
|
|
{
|
|
{
|
|
@@ -729,6 +748,7 @@ inline Mat3 Mat3::getTransposed() const
|
|
|
return m3;
|
|
return m3;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// reorthogonalize
|
|
// reorthogonalize
|
|
|
inline void Mat3::reorthogonalize()
|
|
inline void Mat3::reorthogonalize()
|
|
|
{
|
|
{
|
|
@@ -755,6 +775,7 @@ inline void Mat3::reorthogonalize()
|
|
|
setColumns(xAxis, yAxis, zAxis);
|
|
setColumns(xAxis, yAxis, zAxis);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// Determinant
|
|
// Determinant
|
|
|
inline float Mat3::getDet() const
|
|
inline float Mat3::getDet() const
|
|
|
{
|
|
{
|
|
@@ -770,6 +791,7 @@ inline float Mat3::getDet() const
|
|
|
((*this)(0, 1) * (*this)(2, 1) - (*this)(1, 1) * (*this)(2, 0));
|
|
((*this)(0, 1) * (*this)(2, 1) - (*this)(1, 1) * (*this)(2, 0));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// getInverse
|
|
// getInverse
|
|
|
// using Gramer's method (Inv(A) = (1/getDet(A)) * Adj(A))
|
|
// using Gramer's method (Inv(A) = (1/getDet(A)) * Adj(A))
|
|
|
inline Mat3 Mat3::getInverse() const
|
|
inline Mat3 Mat3::getInverse() const
|
|
@@ -812,12 +834,14 @@ inline Mat3 Mat3::getInverse() const
|
|
|
return r;
|
|
return r;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// setIdentity
|
|
// setIdentity
|
|
|
inline void Mat3::setIdentity()
|
|
inline void Mat3::setIdentity()
|
|
|
{
|
|
{
|
|
|
(*this) = getIdentity();
|
|
(*this) = getIdentity();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// invert
|
|
// invert
|
|
|
// see above
|
|
// see above
|
|
|
inline void Mat3::invert()
|
|
inline void Mat3::invert()
|
|
@@ -825,6 +849,7 @@ inline void Mat3::invert()
|
|
|
(*this) = getInverse();
|
|
(*this) = getInverse();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// getZero
|
|
// getZero
|
|
|
inline const Mat3& Mat3::getZero()
|
|
inline const Mat3& Mat3::getZero()
|
|
|
{
|
|
{
|
|
@@ -832,6 +857,7 @@ inline const Mat3& Mat3::getZero()
|
|
|
return zero;
|
|
return zero;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// getIdentity
|
|
// getIdentity
|
|
|
inline const Mat3& Mat3::getIdentity()
|
|
inline const Mat3& Mat3::getIdentity()
|
|
|
{
|
|
{
|