summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libnr/nr-matrix.cpp20
-rw-r--r--src/libnr/nr-matrix.h10
2 files changed, 30 insertions, 0 deletions
diff --git a/src/libnr/nr-matrix.cpp b/src/libnr/nr-matrix.cpp
index 24fa2e206..12a2f2fcb 100644
--- a/src/libnr/nr-matrix.cpp
+++ b/src/libnr/nr-matrix.cpp
@@ -522,6 +522,26 @@ bool Matrix::is_translation(Coord const eps) const {
}
+/**
+ *
+ */
+bool Matrix::is_scale(Coord const eps) const {
+ return ( (fabs(_c[0] - 1.0) > eps || fabs(_c[3] - 1.0) > eps) &&
+ fabs(_c[1]) < eps &&
+ fabs(_c[2]) < eps );
+}
+
+
+/**
+ *
+ */
+bool Matrix::is_rotation(Coord const eps) const {
+ return ( fabs(_c[1]) > eps &&
+ fabs(_c[2]) > eps &&
+ fabs(_c[1] + _c[2]) < 2 * eps);
+}
+
+
diff --git a/src/libnr/nr-matrix.h b/src/libnr/nr-matrix.h
index 47196137e..767c2105b 100644
--- a/src/libnr/nr-matrix.h
+++ b/src/libnr/nr-matrix.h
@@ -248,6 +248,16 @@ class Matrix {
*/
bool is_translation(Coord const eps = 1e-6) const;
+ /**
+ *
+ */
+ bool is_scale(Coord const eps = 1e-6) const;
+
+ /**
+ *
+ */
+ bool is_rotation(Coord const eps = 1e-6) const;
+
/**
*