diff options
author | Aaron Franke <arnfranke@yahoo.com> | 2023-09-07 09:43:22 -0500 |
---|---|---|
committer | Aaron Franke <arnfranke@yahoo.com> | 2023-09-13 17:20:30 -0500 |
commit | 56806ffeed8f52781b460e328b347323b4dbaec0 (patch) | |
tree | fbfaf77038aba9dac18b8db786b486a30c664175 /core/math/basis.cpp | |
parent | 3ed4497113fa10611b90290ce22a751fb9d26e2e (diff) | |
download | redot-engine-56806ffeed8f52781b460e328b347323b4dbaec0.tar.gz |
Add `is_conformal` method to Basis and Transform2D
Diffstat (limited to 'core/math/basis.cpp')
-rw-r--r-- | core/math/basis.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/core/math/basis.cpp b/core/math/basis.cpp index 6b0ecadc7f..9796ac59c2 100644 --- a/core/math/basis.cpp +++ b/core/math/basis.cpp @@ -96,6 +96,14 @@ bool Basis::is_orthogonal() const { return m.is_equal_approx(identity); } +bool Basis::is_conformal() const { + const Vector3 x = get_column(0); + const Vector3 y = get_column(1); + const Vector3 z = get_column(2); + const real_t x_len_sq = x.length_squared(); + return Math::is_equal_approx(x_len_sq, y.length_squared()) && Math::is_equal_approx(x_len_sq, z.length_squared()) && Math::is_zero_approx(x.dot(y)) && Math::is_zero_approx(x.dot(z)) && Math::is_zero_approx(y.dot(z)); +} + bool Basis::is_diagonal() const { return ( Math::is_zero_approx(rows[0][1]) && Math::is_zero_approx(rows[0][2]) && |