Unfinished Work
This commit is contained in:
@@ -2,6 +2,9 @@
|
||||
#include <J3ML/LinearAlgebra/Vector4.h>
|
||||
|
||||
namespace J3ML::LinearAlgebra {
|
||||
|
||||
|
||||
|
||||
const Matrix4x4 Matrix4x4::Zero = Matrix4x4(0.f);
|
||||
const Matrix4x4 Matrix4x4::Identity = Matrix4x4({1,0,0,0}, {0,1,0,0}, {0,0,1,0}, {0,0,0,1});
|
||||
const Matrix4x4 Matrix4x4::NaN = Matrix4x4(NAN);
|
||||
@@ -594,7 +597,41 @@ namespace J3ML::LinearAlgebra {
|
||||
At(3, 3) = data[15];
|
||||
}
|
||||
|
||||
void Matrix4x4::IsColOrthogonal() {
|
||||
|
||||
bool Matrix4x4::ContainsProjection(float epsilon) const {
|
||||
return GetRow(3).Equals(0.f, 0.f, 0.f, 1.f, epsilon) == false;
|
||||
}
|
||||
|
||||
Vector4 Matrix4x4::Mul(const Vector4 &rhs) const {
|
||||
return *this * rhs;
|
||||
}
|
||||
|
||||
Vector3 Matrix4x4::Mul(const Vector3 &rhs) const {
|
||||
return *this * rhs;
|
||||
}
|
||||
|
||||
Vector2 Matrix4x4::Mul(const Vector2 &rhs) const {
|
||||
return *this * rhs;
|
||||
}
|
||||
|
||||
Vector4 Matrix4x4::operator[](int row) const {
|
||||
return GetRow(row);
|
||||
}
|
||||
|
||||
bool Matrix4x4::HasUniformScale(float epsilon) const {
|
||||
Vector3 scale = ExtractScale();
|
||||
return Math::EqualAbs(scale.x, scale.y, epsilon) && Math::EqualAbs(scale.x, scale.z, epsilon);
|
||||
}
|
||||
|
||||
Vector3 Matrix4x4::ExtractScale() const {
|
||||
return {GetColumn3(0).Length(), GetColumn3(1).Length(), GetColumn3(2).Length()};
|
||||
}
|
||||
|
||||
bool Matrix4x4::IsColOrthogonal(float epsilon) const {
|
||||
return IsColOrthogonal3(epsilon);
|
||||
}
|
||||
|
||||
bool Matrix4x4::IsRowOrthogonal(float epsilon) const {
|
||||
return IsRowOrthogonal3(epsilon);
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user