summaryrefslogtreecommitdiffstats
path: root/src/2geom/affine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/2geom/affine.cpp')
-rw-r--r--src/2geom/affine.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/2geom/affine.cpp b/src/2geom/affine.cpp
index 2a1f18d77..c31b9ba90 100644
--- a/src/2geom/affine.cpp
+++ b/src/2geom/affine.cpp
@@ -410,6 +410,9 @@ Affine &Affine::operator*=(Affine const &o) {
}
//TODO: What's this!?!
+/** Given a matrix m such that unit_circle = m*x, this returns the
+ * quadratic form x*A*x = 1.
+ * @relates Affine */
Affine elliptic_quadratic_form(Affine const &m) {
double od = m[0] * m[1] + m[2] * m[3];
Affine ret (m[0]*m[0] + m[1]*m[1], od,
@@ -469,6 +472,15 @@ Eigen::Eigen(double m[2][2]) {
vectors[i] = Point(0,0);
}
+/** @brief Nearness predicate for affine transforms
+ * @returns True if all entries of matrices are within eps of each other */
+bool are_near(Affine const &a, Affine const &b, Coord eps)
+{
+ return are_near(a[0], b[0], eps) && are_near(a[1], b[1], eps) &&
+ are_near(a[2], b[2], eps) && are_near(a[3], b[3], eps) &&
+ are_near(a[4], b[4], eps) && are_near(a[5], b[5], eps);
+}
+
} //namespace Geom
/*