From 2a8607afc204cc84fc3a64508199e8b3a05ed06c Mon Sep 17 00:00:00 2001 From: ParkSuMin Date: Tue, 9 Dec 2025 14:18:50 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20P2P?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit При сдвиге точек двух линий в одну без наложения P2P-ограничения, эти точки ведут себя как P2P --- Canvas.cpp | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/Canvas.cpp b/Canvas.cpp index 225f200..b57d5d4 100644 --- a/Canvas.cpp +++ b/Canvas.cpp @@ -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 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(); - if (!mode){ - return (tag_0 != tag_1 && *p1 == *p2); + int tag_0 = p1->get_tag(); + int tag_1 = p2->get_tag(); + + if (!mode) { + 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; - } - return false; + + 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)