#include <QtGui>
#include "container.h"
#include "dimension.h"
+#include "geometry.h"
#include "mathconstants.h"
#include "painter.h"
/*virtual*/ bool Line::Collided(Vector point)
{
+/*
+what we can do here is set ignoreClicks to true to keep other objects that are
+selected from deselecting themselves. Will that fuck up something else? Not sure
+yet... :-/
+*/
+ // Someone told us to fuck off, so we'll fuck off. :-)
+ if (ignoreClicks)
+ return false;
+
// We can assume this, since this is a mouse down event here.
objectWasDragged = false;
HitTest(point);
Vector lineSegment = endpoint - position;
Vector v1 = point - position;
Vector v2 = point - endpoint;
- double t = Vector::Parameter(position, endpoint, point);
+// double t = Vector::Parameter(position, endpoint, point);
+ double t = Geometry::ParameterOfLineAndPoint(position, endpoint, point);
double distance;
// Geometric interpretation:
}
-/*virtual*/ void Line::Rotate(Vector point, double angle)
+/*virtual*/ void Line::Rotate(Point point, double angle)
+{
+ Point l1 = Geometry::RotatePointAroundPoint(position, point, angle);
+ Point l2 = Geometry::RotatePointAroundPoint(endpoint, point, angle);
+ position = l1;
+ endpoint = l2;
+}
+
+
+/*virtual*/ void Line::Scale(Point point, double amount)
+{
+}
+
+
+/*virtual*/ void Line::Mirror(Point p1, Point p2)
+{
+ Point l1 = Geometry::MirrorPointAroundLine(position, p1, p2);
+ Point l2 = Geometry::MirrorPointAroundLine(endpoint, p1, p2);
+ position = l1;
+ endpoint = l2;
+}
+
+
+/*virtual*/ void Line::Save(void)
{
+ Object::Save();
+ oldEndpoint = endpoint;
}
-/*virtual*/ void Line::Scale(Vector point, double amount)
+/*virtual*/ void Line::Restore(void)
{
+ Object::Restore();
+ endpoint = oldEndpoint;
}