From 816f9f02a3bae8a4902e5497c4daf6dd38cb9ccf Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Sat, 24 Jul 2021 16:36:17 +0300 Subject: [PATCH] When we search point of intersection curve and axis select the base point only at the end. --- src/libs/vgeometry/vabstractcurve.cpp | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/libs/vgeometry/vabstractcurve.cpp b/src/libs/vgeometry/vabstractcurve.cpp index bf257d271..2369243de 100644 --- a/src/libs/vgeometry/vabstractcurve.cpp +++ b/src/libs/vgeometry/vabstractcurve.cpp @@ -464,12 +464,6 @@ bool VAbstractCurve::CurveIntersectAxis(const QPointF &point, qreal angle, const { SCASSERT(intersectionPoint != nullptr) - if (VAbstractCurve::IsPointOnCurve(curvePoints, point)) - { - *intersectionPoint = point; - return true; - } - // Normalize an angle { QLineF line(QPointF(10,10), QPointF(100, 10)); @@ -487,7 +481,7 @@ bool VAbstractCurve::CurveIntersectAxis(const QPointF &point, qreal angle, const axis = QLineF(point, VGObject::BuildRay(point, angle + 180, rec)); points += VAbstractCurve::CurveIntersectLine(curvePoints, axis); - if (points.size() > 0) + if (not points.isEmpty()) { if (points.size() == 1) { @@ -522,11 +516,26 @@ bool VAbstractCurve::CurveIntersectAxis(const QPointF &point, qreal angle, const *intersectionPoint = points.at(forward.first()); return true; } - else if (not backward.isEmpty()) + + if (not backward.isEmpty()) { *intersectionPoint = points.at(backward.first()); return true; } + + if (VAbstractCurve::IsPointOnCurve(curvePoints, point)) + { + *intersectionPoint = point; + return true; + } + } + else + { + if (VAbstractCurve::IsPointOnCurve(curvePoints, point)) + { + *intersectionPoint = point; + return true; + } } return false;