diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2023-09-26 13:44:41 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2023-09-26 13:44:41 +0200 |
commit | 3ec673085b161c6d0b134df11d2a63874066553d (patch) | |
tree | 2c27048e3c890ddf945b54d932c59ab856cdea10 /core/math/basis.cpp | |
parent | 1e4165ac603946afaf77c92c1a3d515432d3c747 (diff) | |
parent | 56806ffeed8f52781b460e328b347323b4dbaec0 (diff) | |
download | redot-engine-3ec673085b161c6d0b134df11d2a63874066553d.tar.gz |
Merge pull request #79523 from aaronfranke/is-conformal
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]) && |