From 32e3a6340ca186c48dee8a73eb4ef11111ac7dd7 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Thu, 27 Apr 2017 16:37:10 +0300 Subject: [PATCH] Fixed issue #671. Weird behaviour of the passmark. --HG-- branch : release --- src/libs/vlayout/vabstractpiece.cpp | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/src/libs/vlayout/vabstractpiece.cpp b/src/libs/vlayout/vabstractpiece.cpp index 74021f732..c49a1781c 100644 --- a/src/libs/vlayout/vabstractpiece.cpp +++ b/src/libs/vlayout/vabstractpiece.cpp @@ -957,18 +957,15 @@ bool VAbstractPiece::IsEkvPointOnLine(const QPointF &iPoint, const QPointF &prev //--------------------------------------------------------------------------------------------------------------------- bool VAbstractPiece::IsEkvPointOnLine(const VSAPoint &iPoint, const VSAPoint &prevPoint, const VSAPoint &nextPoint) { - // See bug #646 - bool ekvPointOnLine = false; + // See bug #671 + const qreal tmpWidth = 10; + const QLineF bigLine1 = ParallelLine(prevPoint, iPoint, tmpWidth ); + const QLineF bigLine2 = ParallelLine(iPoint, nextPoint, tmpWidth ); - if (VFuzzyComparePossibleNulls(prevPoint.GetSAAfter(), iPoint.GetSABefore()) - && VFuzzyComparePossibleNulls(iPoint.GetSAAfter(), nextPoint.GetSABefore())) - { - if (VFuzzyComparePossibleNulls(prevPoint.GetSAAfter(), nextPoint.GetSABefore())) - { - ekvPointOnLine = true; - } - } - return (VGObject::IsPointOnLineviaPDP(iPoint, prevPoint, nextPoint) && ekvPointOnLine); + return (VGObject::IsPointOnLineviaPDP(iPoint, prevPoint, nextPoint) + && VGObject::IsPointOnLineviaPDP(bigLine1.p2(), bigLine1.p1(), bigLine2.p2()) + && VGObject::IsPointOnLineviaPDP(bigLine2.p1(), bigLine1.p1(), bigLine2.p2()) + && qAbs(prevPoint.GetSAAfter(tmpWidth) - nextPoint.GetSABefore(tmpWidth)) < VGObject::accuracyPointOnLine); } //---------------------------------------------------------------------------------------------------------------------