summaryrefslogtreecommitdiffstats
path: root/core/math/transform_2d.cpp
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2023-09-26 13:44:41 +0200
committerRémi Verschelde <rverschelde@gmail.com>2023-09-26 13:44:41 +0200
commit3ec673085b161c6d0b134df11d2a63874066553d (patch)
tree2c27048e3c890ddf945b54d932c59ab856cdea10 /core/math/transform_2d.cpp
parent1e4165ac603946afaf77c92c1a3d515432d3c747 (diff)
parent56806ffeed8f52781b460e328b347323b4dbaec0 (diff)
downloadredot-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/transform_2d.cpp')
-rw-r--r--core/math/transform_2d.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/core/math/transform_2d.cpp b/core/math/transform_2d.cpp
index a0187e00b1..bc4682fd90 100644
--- a/core/math/transform_2d.cpp
+++ b/core/math/transform_2d.cpp
@@ -164,6 +164,18 @@ Transform2D Transform2D::orthonormalized() const {
return ortho;
}
+bool Transform2D::is_conformal() const {
+ // Non-flipped case.
+ if (Math::is_equal_approx(columns[0][0], columns[1][1]) && Math::is_equal_approx(columns[0][1], -columns[1][0])) {
+ return true;
+ }
+ // Flipped case.
+ if (Math::is_equal_approx(columns[0][0], -columns[1][1]) && Math::is_equal_approx(columns[0][1], columns[1][0])) {
+ return true;
+ }
+ return false;
+}
+
bool Transform2D::is_equal_approx(const Transform2D &p_transform) const {
return columns[0].is_equal_approx(p_transform.columns[0]) && columns[1].is_equal_approx(p_transform.columns[1]) && columns[2].is_equal_approx(p_transform.columns[2]);
}