Vector current(point2 - point1);
Vector v = current.Unit() * length;
Vector v2 = point1 + v;
- painter->DrawLine((int)point1.x, (int)point1.y, (int)v2.x, (int)v2.y);
+// painter->DrawLine((int)point1.x, (int)point1.y, (int)v2.x, (int)v2.y);
+ painter->DrawLine(point1, v2);
if (current.Magnitude() > length)
{
painter->SetPen(QPen(QColor(128, 0, 0), 1.0, Qt::DashLine));
- painter->DrawLine((int)v2.x, (int)v2.y, (int)point2.x, (int)point2.y);
+// painter->DrawLine((int)v2.x, (int)v2.y, (int)point2.x, (int)point2.y);
+ painter->DrawLine(v2, point2);
}
}
+// Problem: when drawing at large zoom levels, this throws away precision thus
+// causing the line to rendered too short. !!! FIX !!! [DONE]
else
- painter->DrawLine((int)position.x, (int)position.y, (int)endpoint.x, (int)endpoint.y);
+// painter->DrawLine((int)position.x, (int)position.y, (int)endpoint.x, (int)endpoint.y);
+ painter->DrawLine(position, endpoint);
}
/*virtual*/ Vector Line::Center(void)
// simplifies the calculation of the determinant.
//How do we determine distance here? Especially if zoomed in or out???
-#warning "!!! Distances tested for may not be valid if zoomed in or out !!!"
- if (v1.Magnitude() < 8.0)
+//#warning "!!! Distances tested for may not be valid if zoomed in or out !!!"
+// [FIXED]
+ if ((v1.Magnitude() * Painter::zoom) < 8.0)
hitPoint1 = true;
- else if (v2.Magnitude() < 8.0)
+ else if ((v2.Magnitude() * Painter::zoom) < 8.0)
hitPoint2 = true;
- else if (distance < 5.0)
+ else if ((distance * Painter::zoom) < 5.0)
hitLine = true;
return StateChanged();
t(d1x) - s(d2x) = p2x - p0x
t(d1y) - s(d2y) = p2y - p0y
-Determinant D is ad - bc where the matrix look like:
+Determinant D is ad - bc where the matrix looks like:
a b
c d