summaryrefslogtreecommitdiffstats
path: root/core/math/basis.cpp
diff options
context:
space:
mode:
authorAaron Franke <arnfranke@yahoo.com>2023-09-07 09:43:22 -0500
committerAaron Franke <arnfranke@yahoo.com>2023-09-13 17:20:30 -0500
commit56806ffeed8f52781b460e328b347323b4dbaec0 (patch)
treefbfaf77038aba9dac18b8db786b486a30c664175 /core/math/basis.cpp
parent3ed4497113fa10611b90290ce22a751fb9d26e2e (diff)
downloadredot-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.cpp8
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]) &&