From 87f6a22451870cf5993212d1e90327280b2e14ae Mon Sep 17 00:00:00 2001 From: Maximilian Albert Date: Mon, 26 Jan 2009 14:41:05 +0000 Subject: display guide anchor on canvas; anchor and angle can be edited by mouse (bzr r7180) --- src/2geom/point.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/2geom/point.cpp') diff --git a/src/2geom/point.cpp b/src/2geom/point.cpp index 5dd7b52f2..b8a858f8d 100644 --- a/src/2geom/point.cpp +++ b/src/2geom/point.cpp @@ -2,7 +2,7 @@ #include #include <2geom/coord.h> #include <2geom/isnan.h> //temporary fix for isnan() -#include <2geom/matrix.h> +#include <2geom/transforms.h> namespace Geom { @@ -150,6 +150,18 @@ Point &Point::operator*=(Matrix const &m) return *this; } +Point constrain_angle(Point const &ref, Point const &pt, unsigned int n, Point const &dir) +{ + // for special cases we could perhaps use faster routines + if (n == 0.0) { + return pt; + } + Point diff(pt - ref); + double angle = -angle_between(diff, dir); + double k = round(angle * (double)n / (2.0*M_PI)); + return ref + dir * Rotate(k * 2.0 * M_PI / (double)n) * L2(diff); +} + } //Namespace Geom /* -- cgit v1.2.3