Исправление P2P

При сдвиге точек двух линий в одну без наложения P2P-ограничения, эти точки ведут себя как P2P
This commit is contained in:
2025-12-09 14:18:50 +03:00
parent e8413969c0
commit 2a8607afc2

View File

@@ -4,17 +4,17 @@ static double dist_P2P(QPointF p1, QPointF p2) {
return sqrt(pow(p2.x() - p1.x(), 2) + pow(p2.y() - p1.y(), 2));
}
void Canvas::changeMode(Mode _mode)
{
mode = _mode;
}
template <typename T, typename A, typename B>
T makeOrderedPair(A* obj1, B* obj2)
{
return (obj1->get_tag() < obj2->get_tag()) ? std::make_pair(obj1, obj2) : std::make_pair(obj2, obj1);
}
void Canvas::changeMode(Mode _mode)
{
mode = _mode;
}
// TODO
Line* Canvas::findAt(QPointF& pos)
{
@@ -43,21 +43,24 @@ Point* Canvas::findPointAt(QPointF pos, qreal tolerance)
bool Canvas::areCoincident(Point* p1, Point* p2, bool mode)
{
int tag_0 = p1->get_tag(), tag_1 = p2->get_tag();
int tag_0 = p1->get_tag();
int tag_1 = p2->get_tag();
if (!mode) {
return (tag_0 != tag_1 && *p1 == *p2);
return tag_0 != tag_1 && *p1 == *p2;
}
else {
for (PointPair pair : P2Ppairs) {
int pair_tag_0 = pair.first->get_tag();
int pair_tag_1 = pair.second->get_tag();
if (pair_tag_0 == tag_0 && pair_tag_1 == tag_1 ||
pair_tag_0 == tag_1 && pair_tag_1 == tag_0)
return true;
bool isSamePair = (pair_tag_0 == tag_0 && pair_tag_1 == tag_1) ||
(pair_tag_0 == tag_1 && pair_tag_1 == tag_0);
if (isSamePair) return true;
}
return false;
}
}
bool Canvas::areAlreadyParallel(Line* l1, Line* l2)