From 3fe7709c4009342482128ce8b26439728ffe72c1 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Thu, 13 Sep 2018 16:46:04 +0300 Subject: [PATCH] Fixed issue #883. Fix right angle seam allowance angle type. --HG-- branch : release --- src/app/share/collection/TestPuzzle.val | 113 +- .../collection/bugs/Issue_#883_case1.val | 143 + .../collection/bugs/Issue_#883_case1.vit | 24 + src/app/share/collection/test/seamtest1.val | 373 +- src/app/share/collection/test/seamtest4.val | 69 + src/libs/vlayout/vabstractpiece.cpp | 463 +- src/libs/vlayout/vabstractpiece.h | 36 +- src/libs/vpatterndb/vpiece.cpp | 2 +- src/test/ValentinaTest/tst_vabstractpiece.cpp | 7343 +++++++++-------- src/test/ValentinaTest/tst_vabstractpiece.h | 34 +- 10 files changed, 5018 insertions(+), 3582 deletions(-) create mode 100644 src/app/share/collection/bugs/Issue_#883_case1.val create mode 100644 src/app/share/collection/bugs/Issue_#883_case1.vit create mode 100644 src/app/share/collection/test/seamtest4.val diff --git a/src/app/share/collection/TestPuzzle.val b/src/app/share/collection/TestPuzzle.val index 475f7f9c4..b808975c2 100644 --- a/src/app/share/collection/TestPuzzle.val +++ b/src/app/share/collection/TestPuzzle.val @@ -1,73 +1,72 @@ - + - - 0.2.4 + + 0.7.10 cm - - ../../../../../patterns/Susan.vit + + Susan.vit + - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + +
- - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + +
+
diff --git a/src/app/share/collection/bugs/Issue_#883_case1.val b/src/app/share/collection/bugs/Issue_#883_case1.val new file mode 100644 index 000000000..d353e2fba --- /dev/null +++ b/src/app/share/collection/bugs/Issue_#883_case1.val @@ -0,0 +1,143 @@ + + + + 0.7.10 + cm + + + Issue_#883_case1.vit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
diff --git a/src/app/share/collection/bugs/Issue_#883_case1.vit b/src/app/share/collection/bugs/Issue_#883_case1.vit new file mode 100644 index 000000000..471a90938 --- /dev/null +++ b/src/app/share/collection/bugs/Issue_#883_case1.vit @@ -0,0 +1,24 @@ + + + + 0.5.0 + false + + cm + 998 + + + 1800-01-01 + unknown + + + + + + + + + + + + diff --git a/src/app/share/collection/test/seamtest1.val b/src/app/share/collection/test/seamtest1.val index d36f80aba..b4f1792f6 100644 --- a/src/app/share/collection/test/seamtest1.val +++ b/src/app/share/collection/test/seamtest1.val @@ -1,81 +1,82 @@ - + - - 0.4.0 + + 0.7.10 cm - + merki27.vit + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -83,23 +84,23 @@ - - - - - - - - - + + + + + + + + + - - - - - + + + + + - + @@ -111,30 +112,168 @@ - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- + + + + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
@@ -142,17 +281,17 @@
- - - - - - - - - - - + + + + + + + + + + + diff --git a/src/app/share/collection/test/seamtest4.val b/src/app/share/collection/test/seamtest4.val new file mode 100644 index 000000000..6dd90ddb6 --- /dev/null +++ b/src/app/share/collection/test/seamtest4.val @@ -0,0 +1,69 @@ + + + + 0.7.10 + cm + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
diff --git a/src/libs/vlayout/vabstractpiece.cpp b/src/libs/vlayout/vabstractpiece.cpp index 80e2d3ec8..f7bb36c5b 100644 --- a/src/libs/vlayout/vabstractpiece.cpp +++ b/src/libs/vlayout/vabstractpiece.cpp @@ -36,7 +36,45 @@ #include #include -const qreal maxL = 2.4; +const qreal maxL = 2.5; + +namespace +{ +// Do we create a point outside of a path? +bool IsOutsidePoint(QPointF p1, QPointF p2, QPointF px) +{ + QLineF line(p1, p2); + QLineF ext(p1, px); + return VFuzzyComparePossibleNulls(line.angle(), ext.angle()); +} + +//--------------------------------------------------------------------------------------------------------------------- +// Because artificial loop can lead to wrong clipping we must rollback current seam allowance points +QVector RollbackSeamAllowance(QVector points, const QLineF &cuttingEdge, bool *success) +{ + *success = false; + QVector clipped; + clipped.reserve(points.count()+1); + for (int i = points.count()-1; i > 0; --i) + { + QLineF segment(points.at(i), points.at(i-1)); + QPointF crosPoint; + const QLineF::IntersectType type = cuttingEdge.intersect(segment, &crosPoint); + if (type != QLineF::NoIntersection + && VGObject::IsPointOnLineSegment(crosPoint, segment.p1(), segment.p2())) + { + clipped.append(crosPoint); + for (int j=i-1; j>=0; --j) + { + clipped.append(points.at(j)); + } + points = VGObject::GetReversePoints(clipped); + *success = true; + } + } + return points; +} +} //--------------------------------------------------------------------------------------------------------------------- VAbstractPiece::VAbstractPiece() @@ -158,7 +196,7 @@ void VAbstractPiece::SetSAWidth(qreal value) } //--------------------------------------------------------------------------------------------------------------------- -QVector VAbstractPiece::Equidistant(const QVector &points, qreal width) +QVector VAbstractPiece::Equidistant(QVector points, qreal width) { if (width < 0) { @@ -166,29 +204,29 @@ QVector VAbstractPiece::Equidistant(const QVector &points, qr return QVector(); } - QVector p = CorrectEquidistantPoints(points); - if ( p.size() < 3 ) + points = CorrectEquidistantPoints(points); + if ( points.size() < 3 ) { qDebug()<<"Not enough points for building the equidistant."; return QVector(); } - if (p.last().toPoint() != p.first().toPoint()) + if (points.last().toPoint() != points.first().toPoint()) { - p.append(p.at(0));// Should be always closed + points.append(points.at(0));// Should be always closed } QVector ekvPoints; - for (qint32 i = 0; i < p.size(); ++i ) + for (qint32 i = 0; i < points.size(); ++i ) { if ( i == 0) {//first point - ekvPoints << EkvPoint(p.at(p.size()-2), p.at(p.size()-1), - p.at(1), p.at(0), width); + ekvPoints = EkvPoint(ekvPoints, points.at(points.size()-2), points.at(points.size()-1), points.at(1), + points.at(0), width); continue; } - if (i == p.size()-1) + if (i == points.size()-1) {//last point if (not ekvPoints.isEmpty()) { @@ -197,8 +235,7 @@ QVector VAbstractPiece::Equidistant(const QVector &points, qr continue; } //points in the middle of polyline - ekvPoints << EkvPoint(p.at(i-1), p.at(i), - p.at(i+1), p.at(i), width); + ekvPoints = EkvPoint(ekvPoints, points.at(i-1), points.at(i), points.at(i+1), points.at(i), width); } const bool removeFirstAndLast = false; @@ -414,7 +451,7 @@ qreal VAbstractPiece::MaxLocalSA(const VSAPoint &p, qreal width) * @param width global seam allowance width. * @return seam aloowance points. */ -QVector VAbstractPiece::EkvPoint(const VSAPoint &p1Line1, const VSAPoint &p2Line1, +QVector VAbstractPiece::EkvPoint(QVector points, const VSAPoint &p1Line1, const VSAPoint &p2Line1, const VSAPoint &p1Line2, const VSAPoint &p2Line2, qreal width) { if (width < 0) @@ -422,7 +459,6 @@ QVector VAbstractPiece::EkvPoint(const VSAPoint &p1Line1, const VSAPoin return QVector(); } - QVector points; if (p2Line1 != p2Line2) { qDebug()<<"Last points of two lines must be equal."; @@ -431,22 +467,31 @@ QVector VAbstractPiece::EkvPoint(const VSAPoint &p1Line1, const VSAPoin const QLineF bigLine1 = ParallelLine(p1Line1, p2Line1, width ); const QLineF bigLine2 = ParallelLine(p2Line2, p1Line2, width ); - QPointF CrosPoint; - const QLineF::IntersectType type = bigLine1.intersect( bigLine2, &CrosPoint ); + QPointF crosPoint; + const QLineF::IntersectType type = bigLine1.intersect( bigLine2, &crosPoint ); switch (type) {// There are at least three big cases case (QLineF::BoundedIntersection): // The easiest, real intersection - points.append(CrosPoint); + points.append(crosPoint); return points; case (QLineF::UnboundedIntersection): { // Most common case + /* Case when a path has point on line (both segments lie on the same line) and seam allowance creates + * prong. */ + if (VGObject::IsPointOnLineSegment(p2Line1, p1Line1, p1Line2)) + { + points.append(bigLine1.p2()); + points.append(bigLine2.p1()); + return points; + } + const qreal localWidth = MaxLocalSA(p2Line1, width); - QLineF line( p2Line1, CrosPoint ); + QLineF line( p2Line1, crosPoint ); // Checking two subcases const QLineF b1 = BisectorLine(p1Line1, p2Line1, p1Line2); - const QLineF b2 = BisectorLine(bigLine1.p1(), CrosPoint, bigLine2.p2()); + const QLineF b2 = BisectorLine(bigLine1.p1(), crosPoint, bigLine2.p2()); const qreal angle = AngleBetweenBisectors(b1, b2); @@ -459,22 +504,22 @@ QT_WARNING_DISABLE_GCC("-Wswitch-default") switch (p2Line1.GetAngleType()) { case PieceNodeAngle::ByLength: - return AngleByLength(p2Line1, bigLine1.p1(), CrosPoint, bigLine2.p2(), localWidth); + return AngleByLength(points, p2Line1, bigLine1, crosPoint, bigLine2, p2Line1, width); case PieceNodeAngle::ByPointsIntersection: - return AngleByIntersection(p1Line1, p2Line1, p1Line2, bigLine1.p1(), CrosPoint, bigLine2.p2(), - localWidth); + return AngleByIntersection(points, p1Line1, p2Line1, p1Line2, bigLine1, crosPoint, bigLine2, + p2Line1, width); case PieceNodeAngle::ByFirstEdgeSymmetry: - return AngleByFirstSymmetry(p1Line1, p2Line1, bigLine1.p1(), CrosPoint, bigLine2.p2(), - localWidth); + return AngleByFirstSymmetry(points, p1Line1, p2Line1, bigLine1, crosPoint, bigLine2, + p2Line1, width); case PieceNodeAngle::BySecondEdgeSymmetry: - return AngleBySecondSymmetry(p2Line1, p1Line2, bigLine1.p1(), CrosPoint,bigLine2.p2(), - localWidth); + return AngleBySecondSymmetry(points, p2Line1, p1Line2, bigLine1, crosPoint, bigLine2, + p2Line1, width); case PieceNodeAngle::ByFirstEdgeRightAngle: - return AngleByFirstRightAngle(p1Line1, p2Line1, bigLine1.p1(), CrosPoint, bigLine2.p2(), - p2Line1.GetSABefore(width), localWidth); + return AngleByFirstRightAngle(points, p1Line1, p2Line1, bigLine1, crosPoint, bigLine2, + p2Line1, width); case PieceNodeAngle::BySecondEdgeRightAngle: - return AngleBySecondRightAngle(p2Line1, p1Line2, bigLine1.p1(), CrosPoint, bigLine2.p2(), - p2Line1.GetSAAfter(width), localWidth); + return AngleBySecondRightAngle(points, p2Line1, p1Line2, bigLine1, crosPoint, bigLine2, + p2Line1, width); } QT_WARNING_POP } @@ -497,21 +542,21 @@ QT_WARNING_POP { if (line.length() < QLineF(p2Line1, px).length()) { - points.append(CrosPoint); + points.append(crosPoint); return points; } } } else { // New subcase. This is not a dart. An angle is acute and bisector watch inside. - const qreal result1 = PointPosition(CrosPoint, QLineF(p1Line1, p2Line1)); - const qreal result2 = PointPosition(CrosPoint, QLineF(p2Line2, p1Line2)); + const qreal result1 = PointPosition(crosPoint, QLineF(p1Line1, p2Line1)); + const qreal result2 = PointPosition(crosPoint, QLineF(p2Line2, p1Line2)); if ((result1 < 0 || qFuzzyIsNull(result1)) && (result2 < 0 || qFuzzyIsNull(result2))) {// The cross point is still outside of a piece if (line.length() >= localWidth) { - points.append(CrosPoint); + points.append(crosPoint); return points; } else @@ -533,8 +578,9 @@ QT_WARNING_POP break; } case (QLineF::NoIntersection): - /*If we have correct lines this means lines lie on a line.*/ + /*If we have correct lines this means lines lie on a line or parallel.*/ points.append(bigLine1.p2()); + points.append(bigLine2.p1()); // Second point for parallel line return points; default: break; @@ -543,193 +589,294 @@ QT_WARNING_POP } //--------------------------------------------------------------------------------------------------------------------- -QVector VAbstractPiece::AngleByLength(const QPointF &p2, const QPointF &sp1, const QPointF &sp2, - const QPointF &sp3, qreal width) +QVector VAbstractPiece::AngleByLength(QVector points, QPointF p2, const QLineF &bigLine1, QPointF sp2, + const QLineF &bigLine2, const VSAPoint &p, qreal width) { - QVector points; + const QPointF sp1 = bigLine1.p1(); + const QPointF sp3 = bigLine2.p2(); + const qreal localWidth = MaxLocalSA(p, width); - QLineF line(p2, sp2); - const qreal length = line.length(); - if (length > width*maxL) - { // Cutting too long a cut angle - line.setLength(width); - QLineF cutLine(line.p2(), sp2); // Cut line is a perpendicular - cutLine.setLength(length); // Decided take this length + if (IsOutsidePoint(bigLine1.p1(), bigLine1.p2(), sp2) && IsOutsidePoint(bigLine2.p2(), bigLine2.p1(), sp2) ) + { + QLineF line(p2, sp2); + const qreal length = line.length(); + if (length > localWidth*maxL) + { // Cutting too long acut angle + line.setLength(localWidth); + QLineF cutLine(line.p2(), sp2); // Cut line is a perpendicular + cutLine.setLength(length); // Decided take this length - // We do not check intersection type because intersection must alwayse exist - QPointF px; - cutLine.setAngle(cutLine.angle()+90); - QLineF::IntersectType type = QLineF(sp1, sp2).intersect(cutLine, &px); - if (type == QLineF::NoIntersection) - { - qDebug()<<"Couldn't find intersection with cut line."; + // We do not check intersection type because intersection must alwayse exist + QPointF px; + cutLine.setAngle(cutLine.angle()+90); + QLineF::IntersectType type = QLineF(sp1, sp2).intersect(cutLine, &px); + if (type == QLineF::NoIntersection) + { + qDebug()<<"Couldn't find intersection with cut line."; + } + points.append(px); + + cutLine.setAngle(cutLine.angle()-180); + type = QLineF(sp2, sp3).intersect(cutLine, &px); + if (type == QLineF::NoIntersection) + { + qDebug()<<"Couldn't find intersection with cut line."; + } + points.append(px); } - points.append(px); - - cutLine.setAngle(cutLine.angle()-180); - type = QLineF(sp2, sp3).intersect(cutLine, &px); - if (type == QLineF::NoIntersection) - { - qDebug()<<"Couldn't find intersection with cut line."; + else + {// The point just fine + points.append(sp2); } - points.append(px); } else - { // The point just fine - points.append(sp2); + { + if (not IsOutsidePoint(bigLine1.p1(), bigLine1.p2(), sp2)) + { + bool success = false; + points = RollbackSeamAllowance(points, bigLine2, &success); + if (not success) + { + // Cannot find clipping point. + // Show at least something. + points.append(sp2); + } + } + else + { + // Need to create artificial loop + QLineF loop1(sp2, sp1); + loop1.setLength(loop1.length()*0.1); + + points.append(loop1.p2()); // Nedd for the main path rule + + loop1.setAngle(loop1.angle() + 180); + loop1.setLength(localWidth * 3.); + points.append(loop1.p2()); + points.append(bigLine2.p1()); + } } return points; } //--------------------------------------------------------------------------------------------------------------------- -QVector VAbstractPiece::AngleByIntersection(const QPointF &p1, const QPointF &p2, const QPointF &p3, - const QPointF &sp1, const QPointF &sp2, const QPointF &sp3, - qreal width) +QVector VAbstractPiece::AngleByIntersection(const QVector &points, QPointF p1, QPointF p2, QPointF p3, + const QLineF &bigLine1, QPointF sp2, const QLineF &bigLine2, + const VSAPoint &p, qreal width) { - QVector points; + const qreal localWidth = MaxLocalSA(p, width); + QVector pointsIntr = points; + // First point QLineF edge2(p2, p3); - QLineF sEdge1(sp1, sp2); QPointF px; - QLineF::IntersectType type = edge2.intersect(sEdge1, &px); + QLineF::IntersectType type = edge2.intersect(bigLine1, &px); if (type == QLineF::NoIntersection) { - return AngleByLength(p2, sp1, sp2, sp3, width); + return AngleByLength(points, p2, bigLine1, sp2, bigLine2, p, width); } - if (QLineF(p2, px).length() > width*maxL) + if (IsOutsidePoint(bigLine1.p1(), bigLine1.p2(), px)) { - return AngleByLength(p2, sp1, sp2, sp3, width); + if (QLineF(p2, px).length() > localWidth*maxL) + { + return AngleByLength(points, p2, bigLine1, sp2, bigLine2, p, width); + } + pointsIntr.append(px); + } + else + {// Because artificial loop can lead to wrong clipping we must rollback current seam allowance points + bool success = false; + pointsIntr = RollbackSeamAllowance(pointsIntr, edge2, &success); + if (not success) + { + // Cannot find clipping point. + // Show at least something. + pointsIntr.append(px); + } } - points.append(px); + // Second point QLineF edge1(p1, p2); - QLineF sEdge2(sp2, sp3); - type = edge1.intersect(sEdge2, &px); + type = edge1.intersect(bigLine2, &px); if (type == QLineF::NoIntersection) { - return AngleByLength(p2, sp1, sp2, sp3, width); + return AngleByLength(points, p2, bigLine1, sp2, bigLine2, p, width); } - if (QLineF(p2, px).length() > width*maxL) + if (IsOutsidePoint(bigLine2.p2(), bigLine2.p1(), px)) { - return AngleByLength(p2, sp1, sp2, sp3, width); + pointsIntr.append(px); + } + else + { + QLineF allowance(p2, px); + pointsIntr.append(allowance.p2()); + allowance.setLength(allowance.length() + localWidth * 3.); + pointsIntr.append(allowance.p2()); + pointsIntr.append(bigLine2.p2()); } - points.append(px); - return points; + return pointsIntr; } //--------------------------------------------------------------------------------------------------------------------- -QVector VAbstractPiece::AngleByFirstSymmetry(const QPointF &p1, const QPointF &p2, - const QPointF &sp1, const QPointF &sp2, const QPointF &sp3, - qreal width) +QVector VAbstractPiece::AngleByFirstSymmetry(const QVector &points, QPointF p1, QPointF p2, + const QLineF &bigLine1, QPointF sp2, const QLineF &bigLine2, + const VSAPoint &p, qreal width) { - QVector points; + const qreal localWidth = MaxLocalSA(p, width); + QVector pointsIntr = points; - QLineF sEdge2(sp2, sp3); - QPointF fp1 = VPointF::FlipPF(sEdge2, p1); - QPointF fp2 = VPointF::FlipPF(sEdge2, p2); - QLineF fEdge(fp1, fp2); + QLineF sEdge(VPointF::FlipPF(bigLine2, p1), VPointF::FlipPF(bigLine2, p2)); QPointF px; - QLineF sEdge1(sp1, sp2); - QLineF::IntersectType type = fEdge.intersect(sEdge1, &px); + QLineF::IntersectType type = sEdge.intersect(bigLine1, &px); if (type == QLineF::NoIntersection) { - return AngleByLength(p2, sp1, sp2, sp3, width); + return AngleByLength(points, p2, bigLine1, sp2, bigLine2, p, width); } - if (QLineF(p2, px).length() > width*maxL) + if (IsOutsidePoint(bigLine1.p1(), bigLine1.p2(), px)) { - return AngleByLength(p2, sp1, sp2, sp3, width); + if (QLineF(p2, px).length() > localWidth*maxL) + { + return AngleByLength(points, p2, bigLine1, sp2, bigLine2, p, width); + } + pointsIntr.append(px); + } + else + {// Because artificial loop can lead to wrong clipping we must rollback current seam allowance points + bool success = false; + pointsIntr = RollbackSeamAllowance(pointsIntr, bigLine2, &success); + if (not success) + { + // Cannot find clipping point. + // Show at least something. + pointsIntr.append(px); + } } - points.append(px); - type = fEdge.intersect(sEdge2, &px); + type = sEdge.intersect(bigLine2, &px); if (type == QLineF::NoIntersection) { - return AngleByLength(p2, sp1, sp2, sp3, width); + return AngleByLength(points, p2, bigLine1, sp2, bigLine2, p, width); } - if (QLineF(p2, px).length() > width*maxL) + if (IsOutsidePoint(bigLine2.p2(), bigLine2.p1(), px)) { - return AngleByLength(p2, sp1, sp2, sp3, width); + if (QLineF(p2, px).length() > localWidth*maxL) + { + return AngleByLength(points, p2, bigLine1, sp2, bigLine2, p, width); + } + pointsIntr.append(px); + } + else + { + QLineF allowance(px, p2); + allowance.setAngle(allowance.angle() + 90); + pointsIntr.append(allowance.p2()); + pointsIntr.append(bigLine2.p1()); } - points.append(px); - return points; + return pointsIntr; } //--------------------------------------------------------------------------------------------------------------------- -QVector VAbstractPiece::AngleBySecondSymmetry(const QPointF &p2, const QPointF &p3, - const QPointF &sp1, const QPointF &sp2, const QPointF &sp3, - qreal width) +QVector VAbstractPiece::AngleBySecondSymmetry(const QVector &points, QPointF p2, QPointF p3, + const QLineF &bigLine1, QPointF sp2, const QLineF &bigLine2, + const VSAPoint &p, qreal width) { - QVector points; + const qreal localWidth = MaxLocalSA(p, width); + QVector pointsIntr = points; - QLineF sEdge1(sp1, sp2); - QPointF fp2 = VPointF::FlipPF(sEdge1, p2); - QPointF fp3 = VPointF::FlipPF(sEdge1, p3); - QLineF fEdge(fp2, fp3); + QLineF sEdge(VPointF::FlipPF(bigLine1, p2), VPointF::FlipPF(bigLine1, p3)); QPointF px; - QLineF::IntersectType type = fEdge.intersect(sEdge1, &px); + QLineF::IntersectType type = sEdge.intersect(bigLine1, &px); if (type == QLineF::NoIntersection) { - return AngleByLength(p2, sp1, sp2, sp3, width); + return AngleByLength(points, p2, bigLine1, sp2, bigLine2, p, width); } - if (QLineF(p2, px).length() > width*maxL) + if (IsOutsidePoint(bigLine1.p1(), bigLine1.p2(), px)) { - return AngleByLength(p2, sp1, sp2, sp3, width); + if (QLineF(p2, px).length() > localWidth*maxL) + { + return AngleByLength(points, p2, bigLine1, sp2, bigLine2, p, width); + } + pointsIntr.append(px); + } + else + {// Because artificial loop can lead to wrong clipping we must rollback current seam allowance points + bool success = false; + pointsIntr = RollbackSeamAllowance(pointsIntr, bigLine2, &success); + if (not success) + { + // Cannot find clipping point. + // Show at least something. + pointsIntr.append(px); + } } - points.append(px); - QLineF sEdge2(sp2, sp3); - type = fEdge.intersect(sEdge2, &px); + type = sEdge.intersect(bigLine2, &px); if (type == QLineF::NoIntersection) { - return AngleByLength(p2, sp1, sp2, sp3, width); + return AngleByLength(points, p2, bigLine1, sp2, bigLine2, p, width); } - if (QLineF(p2, px).length() > width*maxL) + if (IsOutsidePoint(bigLine2.p2(), bigLine2.p1(), px)) { - return AngleByLength(p2, sp1, sp2, sp3, width); + if (QLineF(p2, px).length() > localWidth*maxL) + { + return AngleByLength(points, p2, bigLine1, sp2, bigLine2, p, width); + } + pointsIntr.append(px); + } + else + { + QLineF allowance(p2, px); + allowance.setLength(p.GetSAAfter(width)*0.98); + pointsIntr.append(allowance.p2()); + allowance.setLength(allowance.length() + localWidth * 3.); + pointsIntr.append(allowance.p2()); + pointsIntr.append(bigLine2.p2()); } - points.append(px); - return points; + return pointsIntr; } //--------------------------------------------------------------------------------------------------------------------- -QVector VAbstractPiece::AngleByFirstRightAngle(QPointF p1, QPointF p2, QPointF sp1, QPointF sp2, QPointF sp3, - qreal width, qreal localWidth) +QVector VAbstractPiece::AngleByFirstRightAngle(const QVector &points, QPointF p1, QPointF p2, + const QLineF &bigLine1, QPointF sp2, const QLineF &bigLine2, + const VSAPoint &p, qreal width) { + const qreal localWidth = MaxLocalSA(p, width); + QVector pointsRA = points; QLineF edge(p1, p2); QPointF px; - QLineF::IntersectType type = edge.intersect(QLineF(sp2, sp3), &px); + QLineF::IntersectType type = edge.intersect(bigLine2, &px); if (type == QLineF::NoIntersection) { - return AngleByLength(p2, sp1, sp2, sp3, localWidth); + return AngleByLength(points, p2, bigLine1, sp2, bigLine2, p, width); } QLineF seam(px, p1); seam.setAngle(seam.angle()-90); - seam.setLength(width); + seam.setLength(p.GetSABefore(width)); - QLineF spLine1(sp2, sp1); - QLineF spLine2(sp2, sp3); + pointsRA.append(seam.p2()); - QVector points; - points.append(seam.p2()); - - if (spLine1.angleTo(spLine2) <= 90) + if (IsOutsidePoint(bigLine2.p2(), bigLine2.p1(), seam.p1())) { - points.append(seam.p1()); + if (QLineF(p2, px).length() > localWidth*maxL) + { + return AngleByLength(points, p2, bigLine1, sp2, bigLine2, p, width); + } + pointsRA.append(seam.p1()); } else { @@ -740,50 +887,58 @@ QVector VAbstractPiece::AngleByFirstRightAngle(QPointF p1, QPointF p2, QLineF tmp(seam.p2(), seam.p1()); tmp.setLength(tmp.length()+length); - points.append(tmp.p2()); - points.append(loopLine.p2()); + pointsRA.append(tmp.p2()); + pointsRA.append(loopLine.p2()); } - return points; + return pointsRA; } //--------------------------------------------------------------------------------------------------------------------- -QVector VAbstractPiece::AngleBySecondRightAngle(QPointF p2, QPointF p3, QPointF sp1, QPointF sp2, QPointF sp3, - qreal width, qreal localWidth) +QVector VAbstractPiece::AngleBySecondRightAngle(QVector points, QPointF p2, QPointF p3, + const QLineF &bigLine1, QPointF sp2, const QLineF &bigLine2, + const VSAPoint &p, qreal width) { + const qreal localWidth = MaxLocalSA(p, width); QLineF edge(p2, p3); QPointF px; - QLineF::IntersectType type = edge.intersect(QLineF(sp1, sp2), &px); + QLineF::IntersectType type = edge.intersect(bigLine1, &px); if (type == QLineF::NoIntersection) { - return AngleByLength(p2, sp1, sp2, sp3, localWidth); + return AngleByLength(points, p2, bigLine1, sp2, bigLine2, p, width); } - QLineF seam(px, p2); - seam.setAngle(seam.angle()+90); - seam.setLength(width); - QLineF spLine1(sp2, sp1); - QLineF spLine2(sp2, sp3); - QVector points; - if (spLine1.angleTo(spLine2) <= 90) + if (IsOutsidePoint(bigLine1.p1(), bigLine1.p2(), px)) { - points.append(seam.p1()); + if (QLineF(p2, px).length() > localWidth*maxL) + { + return AngleByLength(points, p2, bigLine1, sp2, bigLine2, p, width); + } + points.append(px); } else { - QLineF loopLine(px, sp2); - const qreal length = loopLine.length()*0.98; - loopLine.setLength(length); - points.append(loopLine.p2()); - - QLineF tmp(seam.p2(), seam.p1()); - tmp.setLength(tmp.length() + length); - points.append(tmp.p2()); + // Because artificial loop can lead to wrong clipping we must rollback current seam allowance points + bool success = false; + points = RollbackSeamAllowance(points, edge, &success); + if (not success) + { + // Cannot find clipping point. + // Show at least something. + points.append(px); + } + else + { + px = points.last(); + } } + QLineF seam(px, p3); + seam.setAngle(seam.angle()+90); + seam.setLength(p.GetSAAfter(width)); points.append(seam.p2()); return points; diff --git a/src/libs/vlayout/vabstractpiece.h b/src/libs/vlayout/vabstractpiece.h index 7af95250b..515d1b51c 100644 --- a/src/libs/vlayout/vabstractpiece.h +++ b/src/libs/vlayout/vabstractpiece.h @@ -181,10 +181,10 @@ public: qreal GetMy() const; void SetMy(qreal value); - static QVector Equidistant(const QVector &points, qreal width); + static QVector Equidistant(QVector points, qreal width); static qreal SumTrapezoids(const QVector &points); static QVector CheckLoops(const QVector &points); - static QVector EkvPoint(const VSAPoint &p1Line1, const VSAPoint &p2Line1, + static QVector EkvPoint(QVector points, const VSAPoint &p1Line1, const VSAPoint &p2Line1, const VSAPoint &p1Line2, const VSAPoint &p2Line2, qreal width); static QLineF ParallelLine(const VSAPoint &p1, const VSAPoint &p2, qreal width); @@ -209,21 +209,23 @@ private: static bool Crossing(const QVector &sub1, const QVector &sub2); static QVector SubPath(const QVector &path, int startIndex, int endIndex); static Q_DECL_CONSTEXPR qreal PointPosition(const QPointF &p, const QLineF &line); - static QVector AngleByLength(const QPointF &p2, const QPointF &sp1, const QPointF &sp2, const QPointF &sp3, - qreal width); - static QVector AngleByIntersection(const QPointF &p1, const QPointF &p2, const QPointF &p3, - const QPointF &sp1, const QPointF &sp2, const QPointF &sp3, - qreal width); - static QVector AngleByFirstSymmetry(const QPointF &p1, const QPointF &p2, - const QPointF &sp1, const QPointF &sp2, const QPointF &sp3, - qreal width); - static QVector AngleBySecondSymmetry(const QPointF &p2, const QPointF &p3, - const QPointF &sp1, const QPointF &sp2, const QPointF &sp3, - qreal width); - static QVector AngleByFirstRightAngle(QPointF p1, QPointF p2, QPointF sp1, QPointF sp2, QPointF sp3, - qreal width, qreal localWidth); - static QVector AngleBySecondRightAngle(QPointF p2, QPointF p3, QPointF sp1, QPointF sp2, QPointF sp3, - qreal width, qreal localWidth); + static QVector AngleByLength(QVector points, QPointF p2, const QLineF &bigLine1, QPointF sp2, + const QLineF &bigLine2, const VSAPoint &p, qreal width); + static QVector AngleByIntersection(const QVector &points, QPointF p1, QPointF p2, QPointF p3, + const QLineF &bigLine1, QPointF sp2, const QLineF &bigLine2, + const VSAPoint &p, qreal width); + static QVector AngleByFirstSymmetry(const QVector &points, QPointF p1, QPointF p2, + const QLineF &bigLine1, QPointF sp2, const QLineF &bigLine2, + const VSAPoint &p, qreal width); + static QVector AngleBySecondSymmetry(const QVector &points, QPointF p2, QPointF p3, + const QLineF &bigLine1, QPointF sp2, const QLineF &bigLine2, + const VSAPoint &p, qreal width); + static QVector AngleByFirstRightAngle(const QVector &points, QPointF p1, QPointF p2, + const QLineF &bigLine1, QPointF sp2, const QLineF &bigLine2, + const VSAPoint &p, qreal width); + static QVector AngleBySecondRightAngle(QVector points, QPointF p2, QPointF p3, + const QLineF &bigLine1, QPointF sp2, const QLineF &bigLine2, + const VSAPoint &p, qreal width); static QLineF ParallelLine(const QPointF &p1, const QPointF &p2, qreal width); static QPointF SingleParallelPoint(const QPointF &p1, const QPointF &p2, qreal angle, qreal width); static QLineF BisectorLine(const QPointF &p1, const QPointF &p2, const QPointF &p3); diff --git a/src/libs/vpatterndb/vpiece.cpp b/src/libs/vpatterndb/vpiece.cpp index 233dacae7..7faa32b21 100644 --- a/src/libs/vpatterndb/vpiece.cpp +++ b/src/libs/vpatterndb/vpiece.cpp @@ -1117,7 +1117,7 @@ bool VPiece::GetSeamPassmarkSAPoint(const VSAPoint &previousSAPoint, const VSAPo } else { - ekvPoints = EkvPoint(previousSAPoint, passmarkSAPoint, nextSAPoint, passmarkSAPoint, width); + ekvPoints = EkvPoint(ekvPoints, previousSAPoint, passmarkSAPoint, nextSAPoint, passmarkSAPoint, width); } if (ekvPoints.isEmpty()) diff --git a/src/test/ValentinaTest/tst_vabstractpiece.cpp b/src/test/ValentinaTest/tst_vabstractpiece.cpp index 468b3533f..96e4f93f5 100644 --- a/src/test/ValentinaTest/tst_vabstractpiece.cpp +++ b/src/test/ValentinaTest/tst_vabstractpiece.cpp @@ -47,9 +47,34 @@ void TST_VAbstractPiece::EquidistantRemoveLoop_data() QTest::addColumn>("ekvOrig"); // See file src/app/share/collection/test/seamtest1.val - QTest::newRow("Seam test 1") << InputPointsCase1() - << 37.795275590551185 // seam allowance width - << OutputPointsCase1(); + QTest::newRow("Seam test 1. Piece. By angle.") << InputPointsSeamTest1PieceByAngle() + << 37.795275590551185 // seam allowance width + << OutputPointsSeamTest1PieceByAngle(); + + // See file src/app/share/collection/test/seamtest1.val + QTest::newRow("Seam test 1. Piece. By intersection.") << InputPointsSeamTest1PieceByIntersection() + << 37.795275590551185 // seam allowance width + << OutputPointsSeamTest1PieceByIntersection(); + + // See file src/app/share/collection/test/seamtest1.val + QTest::newRow("Seam test 1. Piece. By first edge symmetry.") << InputPointsSeamTest1PieceByFirstEdgeSymmerty() + << 37.795275590551185 // seam allowance width + << OutputPointsSeamTest1PieceByFirstEdgeSymmerty(); + + // See file src/app/share/collection/test/seamtest1.val + QTest::newRow("Seam test 1. Piece. By second edge symmetry.") << InputPointsSeamTest1PieceBySecondEdgeSymmerty() + << 37.795275590551185 // seam allowance width + << OutputPointsSeamTest1PieceBySecondEdgeSymmerty(); + + // See file src/app/share/collection/test/seamtest1.val + QTest::newRow("Seam test 1. Piece. By first right angle.") << InputPointsSeamTest1PieceByFirstRightAngle() + << 37.795275590551185 // seam allowance width + << OutputPointsSeamTest1PieceByFirstRightAngle(); + + // See file src/app/share/collection/test/seamtest1.val + QTest::newRow("Seam test 1. Piece. By second right angle.") << InputPointsSeamTest1PieceBySecondRightAngle() + << 37.795275590551185 // seam allowance width + << OutputPointsSeamTest1PieceBySecondRightAngle(); // See file src/app/share/collection/test/seamtest2.val QTest::newRow("Seam test 2") << InputPointsCase2() @@ -64,13 +89,14 @@ void TST_VAbstractPiece::EquidistantRemoveLoop_data() // These are two real cases where equdistant has loop. // See issue #298. Segmented Curve isn't selected in Seam Allowance tool. // https://bitbucket.org/dismine/valentina/issue/298/segmented-curve-isnt-selected-in-seam + // See file src/app/share/collection/TestPuzzle.val // Code should clean loops in path. QTest::newRow("Issue 298. Case1") << InputPointsIssue298Case1() - << 75.5906 // seam allowance width + << 75.59055118110237 // seam allowance width << OutputPointsIssue298Case1(); QTest::newRow("Issue 298. Case2") << InputPointsIssue298Case2() - << 37.7953 // seam allowance width + << 37.795275590551185 // seam allowance width << OutputPointsIssue298Case2(); // See issue #548. Bug Detail tool. Case when seam allowance is wrong. @@ -93,8 +119,9 @@ void TST_VAbstractPiece::EquidistantRemoveLoop_data() << OutputPointsIssue548Case3(); #endif + // See file src/app/share/collection/bugs/Issue_#646.val QTest::newRow("Issue 646.") << InputPointsIssue646() - << 37.795275590551185 // seam allowance width (1.0 cm + << 37.795275590551185 // seam allowance width (1.0 cm) << OutputPointsIssue646(); } @@ -112,524 +139,1932 @@ void TST_VAbstractPiece::EquidistantRemoveLoop() const } //--------------------------------------------------------------------------------------------------------------------- -QVector TST_VAbstractPiece::InputPointsCase1() const +QVector TST_VAbstractPiece::InputPointsSeamTest1PieceByAngle() const { - QVector points; VSAPoint p = VSAPoint(30.0, 894.8030236220472); - p.SetSAAfter(0); p.SetSABefore(75.59055118110237); + p.SetSAAfter(0.0); points.append(p); p = VSAPoint(30.0, 39.999874015748034); - //////p.SetSAAfter(-1); - p.SetSABefore(0); + p.SetSABefore(0.0); points.append(p); p = VSAPoint(30.0, 39.999874015748034); - //////p.SetSAAfter(-1); - p.SetSABefore(0); + p.SetSABefore(0.0); points.append(p); - p = VSAPoint(47.64159471849116, 39.94788491648882); - //////p.SetSAAfter(-1); - //////p.SetSABefore(-1); + points.append(VSAPoint(47.53637144700478, 39.80977598775412)); + points.append(VSAPoint(85.4092492068762, 37.36146293134895)); + points.append(VSAPoint(125.57923134501877, 32.13056337758208)); + points.append(VSAPoint(156.5108311435474, 26.074993549693005)); + points.append(VSAPoint(177.21129897469388, 21.059222548891512)); + points.append(VSAPoint(197.8216319874312, 15.159776113211533)); + points.append(VSAPoint(218.19418331220902, 8.334870062533497)); + points.append(VSAPoint(238.18130607947683, 0.5427202167378373)); + points.append(VSAPoint(257.6353534196842, -8.258457604295018)); + points.append(VSAPoint(276.4086784632808, -18.110447580684635)); + points.append(VSAPoint(294.3536343407161, -29.055033892550586)); + points.append(VSAPoint(311.32257418243984, -41.13400072001244)); + points.append(VSAPoint(327.16785111890135, -54.389132243189756)); + + p = VSAPoint(334.5669291338582, -61.522435695538036); + p.SetSAAfter(0.3779527559055119); points.append(p); - p = VSAPoint(76.58589406160007, 39.22029871626823); - //////p.SetSAAfter(-1); - //////p.SetSABefore(-1); + p = VSAPoint(334.5669291338582, -61.522435695538036); + p.SetSAAfter(0.3779527559055119); points.append(p); - p = VSAPoint(96.8510955083063, 38.214779786537555); - //////p.SetSAAfter(-1); - //////p.SetSABefore(-1); + p = VSAPoint(519.4465667350105, -36.01405338211433); + p.SetSABefore(0.3779527559055119); points.append(p); - p = VSAPoint(117.72526111352542, 36.63514697516433); - //////p.SetSAAfter(-1); - //////p.SetSABefore(-1); + points.append(VSAPoint(460.3937007874016, 342.36207874015753)); + + p = VSAPoint(620.5290071875436, -5.506318761785565); + p.SetSAAfter(0.0); points.append(p); - p = VSAPoint(139.00155591749595, 34.36192982961571); - //////p.SetSAAfter(-1); - //////p.SetSABefore(-1); + p = VSAPoint(944.294593326342, 136.63905516701556); + p.SetSABefore(0.0); + p.SetSAAfter(188.9763779527559); points.append(p); - p = VSAPoint(160.47314496045635, 31.27565789735886); - //////p.SetSAAfter(-1); - //////p.SetSABefore(-1); + p = VSAPoint(944.294593326342, 136.63905516701556); + p.SetSABefore(0.0); + p.SetSAAfter(188.9763779527559); points.append(p); - p = VSAPoint(181.9331932826451, 27.25686072586095); - //////p.SetSAAfter(-1); - //////p.SetSABefore(-1); + p = VSAPoint(930.9115139455133, 164.2021651072791); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); - p = VSAPoint(203.17486592430072, 22.18606786258914); - //////p.SetSAAfter(-1); - //////p.SetSABefore(-1); + p = VSAPoint(907.1077633892038, 216.20756088951924); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); - p = VSAPoint(223.99132792566166, 15.943808855010598); - //////p.SetSAAfter(-1); - //////p.SetSABefore(-1); + p = VSAPoint(886.6420235246574, 264.5706340127217); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); - p = VSAPoint(239.1756066691363, 10.378329140641144); - //////p.SetSAAfter(-1); - //////p.SetSABefore(-1); + p = VSAPoint(869.2733175133691, 309.4054580978941); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); - p = VSAPoint(249.07102191481937, 6.266596479372291); - //////p.SetSAAfter(-1); - //////p.SetSABefore(-1); + p = VSAPoint(854.760668516834, 350.82610676604384); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); - p = VSAPoint(258.7437898355629, 1.7947951524770347); - //////p.SetSAAfter(-1); - //////p.SetSABefore(-1); + p = VSAPoint(842.8630996965472, 388.9466536381784); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); - p = VSAPoint(268.16805606139667, -3.0520086466112275); - //////p.SetSAAfter(-1); - //////p.SetSABefore(-1); + p = VSAPoint(833.3396342140039, 423.88117233530534); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); - p = VSAPoint(277.3179662223507, -8.2887487244591); - //////p.SetSAAfter(-1); - //////p.SetSABefore(-1); + p = VSAPoint(825.9492952306991, 455.74373647843197); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); - p = VSAPoint(286.16766594845456, -13.93035888763319); - //////p.SetSAAfter(-1); - //////p.SetSABefore(-1); + p = VSAPoint(820.451105908128, 484.6484196885659); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); - p = VSAPoint(294.69130086973814, -19.991772942700095); - //////p.SetSAAfter(-1); - //////p.SetSABefore(-1); + p = VSAPoint(816.6040894077855, 510.7092955867147); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); - p = VSAPoint(302.86301661623133, -26.48792469622643); - //////p.SetSAAfter(-1); - //////p.SetSABefore(-1); + p = VSAPoint(814.1672688911669, 534.0404377938855); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); - p = VSAPoint(310.6569588179638, -33.433747954778795); - //////p.SetSAAfter(-1); - //////p.SetSABefore(-1); + p = VSAPoint(812.8996675197673, 554.7559199310863); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); - p = VSAPoint(318.04727310496537, -40.84417652492378); - //////p.SetSAAfter(-1); - //////p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(325.00810510726603, -48.73414421322801); - //////p.SetSAAfter(-1); - //////p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(331.51360045489537, -57.118584826258086); - //////p.SetSAAfter(-1); - //////p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(334.56692913385825, -61.522435695538036); - p.SetSAAfter(0); - //////p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(334.56692913385825, -61.522435695538036); - p.SetSAAfter(0); - //////p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(519.4465667350105, -36.01405338211436); - //////p.SetSAAfter(-1); - p.SetSABefore(0); - points.append(p); - - p = VSAPoint(460.3937007874016, 342.36207874015753); - //////p.SetSAAfter(-1); - //////p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(620.5290071875437, -5.50631876178551); - p.SetSAAfter(0); - //////p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(944.2945933263424, 136.63905516701567); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(0); - points.append(p); - - p = VSAPoint(944.2945933263424, 136.63905516701567); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(0); - points.append(p); - - p = VSAPoint(937.525981220313, 150.5000566598672); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(924.7444201119979, 177.43472401968558); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(912.8425448338431, 203.43742191080565); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(901.7902332810357, 228.52240953585334); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(891.5573633487625, 252.7039460974546); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(882.1138129322104, 275.99629079823535); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(869.2733175133695, 309.4054580978942); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(854.7606685168345, 350.82610676604395); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(842.8630996965477, 388.94665363817853); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(833.3396342140044, 423.88117233530545); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(825.9492952306994, 455.7437364784321); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(820.4511059081283, 484.6484196885659); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(816.6040894077858, 510.7092955867147); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(814.1672688911672, 534.0404377938855); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(812.8996675197675, 554.7559199310863); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(812.5603084550817, 572.9698156193242); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(812.9082148586052, 588.7961984796068); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); + p = VSAPoint(812.5925673946043, 581.4656260538284); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); p = VSAPoint(814.1809574610598, 608.5715133604979); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); p = VSAPoint(815.1968503937007, 618.5825511811024); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); - p = VSAPoint(815.1968503937007, 618.5825511811024); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); + p = VSAPoint(816.3634787672067, 628.380932746632); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); - p = VSAPoint(815.7375399808675, 623.4475087782134); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); + p = VSAPoint(820.4053369940075, 649.1688436779486); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); - p = VSAPoint(817.2456173381056, 633.4974833757362); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); + p = VSAPoint(826.5040284899703, 671.0654086429722); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); - p = VSAPoint(819.2665464515061, 643.8914388413946); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); + p = VSAPoint(834.6667882477791, 693.7142683899226); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); - p = VSAPoint(821.8012316951542, 654.584830268716); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); + p = VSAPoint(844.9008512601183, 716.7590636670197); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); - p = VSAPoint(824.8505774431355, 665.5331127512278); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); + p = VSAPoint(857.2134525196718, 739.8434352224829); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); - p = VSAPoint(828.4154880695357, 676.6917413824576); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); + p = VSAPoint(871.6118270191237, 762.6110238045324); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); - p = VSAPoint(832.4968679484402, 688.0161712559327); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); + p = VSAPoint(888.1032097511581, 784.7054701613878); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); - p = VSAPoint(837.0956214539344, 699.4618574651809); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); + p = VSAPoint(906.6948357084594, 805.7704150412691); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); - p = VSAPoint(842.212652960104, 710.9842551037295); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); + p = VSAPoint(927.3939398837115, 825.4494991923958); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); - p = VSAPoint(847.8488668410344, 722.5388192651058); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(854.0051674708111, 734.0810050428374); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(860.6824592235198, 745.5662675304518); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(867.8816464732456, 756.9500618214765); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(875.6036335940746, 768.187843009439); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(883.8493249600917, 779.2350661878667); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(892.6196249453828, 790.0471864502871); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(901.9154379240335, 800.5796588902277); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(911.7376682701291, 810.7879386012161); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(922.0872203577552, 820.6274806767794); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(932.9649985609971, 830.0537402104453); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(944.3719072539405, 839.0221722957415); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); - points.append(p); - - p = VSAPoint(956.3088508106711, 847.4882320261951); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); + p = VSAPoint(950.2077572695983, 843.3863633629879); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); p = VSAPoint(968.776733605274, 855.4073744953336); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); p = VSAPoint(981.7764600118351, 862.7350547966848); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); p = VSAPoint(995.3089344044396, 869.4267280237759); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); p = VSAPoint(1009.3750611571733, 875.4378492701345); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); p = VSAPoint(1023.9757446441214, 880.7238736292878); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); p = VSAPoint(1039.1118892393697, 885.2402561947638); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); p = VSAPoint(1054.784399317004, 888.9424520600894); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); p = VSAPoint(1070.994179251109, 891.7859163187926); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); p = VSAPoint(1087.7421334157707, 893.7261040644007); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); p = VSAPoint(1105.0291661850742, 894.7184703904409); - p.SetSAAfter(188.97637795275591); - p.SetSABefore(188.97637795275591); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); points.append(p); p = VSAPoint(1113.8976377952758, 894.8030236220472); - p.SetSAAfter(0); - p.SetSABefore(188.97637795275591); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(0.0); points.append(p); p = VSAPoint(1113.8976377952758, 894.8030236220472); - p.SetSAAfter(0); - p.SetSABefore(188.97637795275591); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(0.0); points.append(p); return points; } //--------------------------------------------------------------------------------------------------------------------- -QVector TST_VAbstractPiece::OutputPointsCase1() const +QVector TST_VAbstractPiece::OutputPointsSeamTest1PieceByAngle() const { QVector points; points += QPointF(30.0, 970.3935748031496); - points += QPointF(30.0, 2.204434307474013); - points += QPointF(47.110950439162494, 2.154008996440882); - points += QPointF(75.17428353484098, 1.4485680510386028); - points += QPointF(94.48820285018608, 0.4902498458165696); - points += QPointF(114.29080866669788, -1.0082936883322242); - points += QPointF(134.30369213200785, -3.146524533710341); - points += QPointF(154.30324182399514, -6.0212092507409025); - points += QPointF(174.06202812984606, -9.721413151776975); - points += QPointF(193.35089649585723, -14.32603434620921); - points += QPointF(212.04908234619523, -19.93308318294329); - points += QPointF(225.4146962614004, -24.83196935145066); - points += QPointF(233.88383173589082, -28.35105572413872); - points += QPointF(242.16354279128632, -32.17883523742874); - points += QPointF(250.12919225691988, -36.27548734456109); - points += QPointF(257.76141086050376, -40.64361165848513); - points += QPointF(265.0438386703493, -45.28609897626606); - points += QPointF(271.9635110924753, -50.20688688697322); - points += QPointF(278.5110730948284, -55.4119084151831); - points += QPointF(284.68071875165725, -60.91018735939974); - points += QPointF(290.46975730117975, -66.71498198586181); - points += QPointF(295.87773947883056, -72.84482460043537); - points += QPointF(301.0311752209645, -79.48669791277798); - points += QPointF(292.5914051639158, -67.31392104851938); - points += QPointF(556.8930273120665, -30.847456102511416); - points += QPointF(539.6101141051189, 79.89131577778163); - points += QPointF(585.9167315845334, -20.702420721823447); - points += QPointF(1117.4712505569892, 212.6701769158142); - points += QPointF(1107.8013393916237, 232.47256047676322); - points += QPointF(1096.0328222042483, 257.2724337531229); - points += QPointF(1085.2347243947604, 280.86364678273935); - points += QPointF(1075.284743777034, 303.4467181585846); - points += QPointF(1066.1500107021461, 325.033221582634); - points += QPointF(1057.8916931702825, 345.40221101096097); - points += QPointF(1046.6844069650929, 374.5619971088514); - points += QPointF(1034.1843603449327, 410.2384638595294); - points += QPointF(1024.281900134066, 441.9665592645446); - points += QPointF(1016.6128103198599, 470.0987514791772); - points += QPointF(1010.8915481272591, 494.7652903217387); - points += QPointF(1006.8300406648394, 516.1171535751373); - points += QPointF(1004.140951447517, 534.3338730421456); - points += QPointF(1002.5429209641061, 549.6340874837038); - points += QPointF(1001.7684597861733, 562.2905401031172); - points += QPointF(1001.5753826870504, 572.6532694631434); - points += QPointF(1001.7511114738644, 580.6472328726268); - points += QPointF(1002.5434394846042, 592.958077085046); - points += QPointF(1003.1165308093626, 598.6055609315013); - points += QPointF(1003.5253444923072, 601.4269775229475); - points += QPointF(1004.0349710465857, 604.0480668398186); - points += QPointF(1004.8346806929111, 607.4219012430418); - points += QPointF(1005.9446128953437, 611.4069696127774); - points += QPointF(1007.3734895026099, 615.879537116226); - points += QPointF(1009.1216689960736, 620.7301358517914); - points += QPointF(1011.1831553003773, 625.860901250618); - points += QPointF(1013.5469326629959, 631.1835932583286); - points += QPointF(1016.1978697144372, 636.6181674061058); - points += QPointF(1019.1173567112357, 642.0917891993197); - points += QPointF(1022.283791807397, 647.5382096308747); - points += QPointF(1025.6730034935645, 652.8974380139866); - points += QPointF(1029.258679857382, 658.1156604426072); - points += QPointF(1033.0128662502555, 663.1453581470851); - points += QPointF(1036.906587776057, 667.9455799725583); - points += QPointF(1040.910648783598, 672.4823173517011); - points += QPointF(1044.9966554234593, 676.7289189086724); - points += QPointF(1049.138296281844, 680.666466074281); - points += QPointF(1053.3128972071952, 684.2840128781046); - points += QPointF(1057.5032369521043, 687.5785757108713); - points += QPointF(1061.6995688685456, 690.5547476668297); - points += QPointF(1065.9017414956827, 693.2238137995831); - points += QPointF(1070.1212524492987, 695.6022659553563); - points += QPointF(1074.3830151134682, 697.7096649640421); + points += QPointF(30.0, 2.2023778242823937); + points += QPointF(46.111397855976776, 2.027726815668483); + points += QPointF(81.74605442368645, -0.2758951981748612); + points += QPointF(119.50208828052781, -5.192452541281906); + points += QPointF(148.42595722778273, -10.854963023883784); + points += QPointF(167.5566961450379, -15.490385095876569); + points += QPointF(186.61281642420556, -20.94495784777482); + points += QPointF(205.31950565747624, -27.21179180985321); + points += QPointF(223.51736443487215, -34.306381867523655); + points += QPointF(241.0503469884652, -42.23845350735769); + points += QPointF(257.76798751706616, -51.01164773556077); + points += QPointF(273.5285590176657, -60.62398316233916); + points += QPointF(284.94491218126115, -68.7504632158891); + points += QPointF(556.951317720607, -31.220946854728947); + points += QPointF(539.6101141051189, 79.89131577778124); + points += QPointF(585.9167315845332, -20.7024207218235); + points += QPointF(1117.4559101159903, 212.6634418802967); + points += QPointF(1101.8482040478996, 244.8082798528157); + points += QPointF(1080.077560308019, 292.3718325563429); + points += QPointF(1061.8089025447719, 335.54292908714797); + points += QPointF(1046.6013689355652, 374.7989965048928); + points += QPointF(1034.1843603449322, 410.2384638595293); + points += QPointF(1024.2819001340656, 441.96655926454446); + points += QPointF(1016.6128103198596, 470.0987514791764); + points += QPointF(1010.891548127259, 494.7652903217379); + points += QPointF(1006.8300406648392, 516.1171535751373); + points += QPointF(1004.1409514475167, 534.3338730421456); + points += QPointF(1002.5429209641059, 549.6340874837038); + points += QPointF(1001.8096437359794, 561.6175009318105); + points += QPointF(1001.632561636562, 577.0190278199144); + points += QPointF(1002.5982079396683, 593.4977885619218); + points += QPointF(1003.0419281414149, 597.870394747796); + points += QPointF(1003.1926540422378, 599.1363247745379); + points += QPointF(1004.4715714217981, 605.7139974891637); + points += QPointF(1006.6672239434022, 613.5972045855956); + points += QPointF(1010.1411052399322, 623.2360341722922); + points += QPointF(1014.8474980040493, 633.8337662374475); + points += QPointF(1020.6660121283516, 644.7426504865729); + points += QPointF(1027.4243046890665, 655.4292751847524); + points += QPointF(1034.913026324476, 665.4623428264111); + points += QPointF(1042.9029269068749, 674.5151720813944); + points += QPointF(1051.171411576988, 682.3761985416603); + points += QPointF(1060.1878101895825, 689.4651444417038); + points += QPointF(1066.6143341082677, 693.625487703081); + points += QPointF(1070.1212524493003, 695.6022659553572); + points += QPointF(1074.3830151134664, 697.7096649640414); points += QPointF(1078.7265805419665, 699.565875909043); points += QPointF(1083.206554246492, 701.1878034134409); - points += QPointF(1087.8919933013688, 702.5858632116882); + points += QPointF(1087.891993301369, 702.5858632116882); points += QPointF(1092.8646688655851, 703.7605199081748); points += QPointF(1098.2162239125396, 704.699271425244); points += QPointF(1104.0444208482252, 705.3744462055462); - points += QPointF(1111.3488014116317, 705.7937559506274); - points += QPointF(1290.2705536650083, 707.499620616225); - points += QPointF(1302.4161318705774, 881.6558256043734); + points += QPointF(1111.3488014116294, 705.7937559506272); + points += QPointF(1290.2705536650083, 707.4996206162249); + points += QPointF(1302.416131870577, 881.6558256043734); + points += QPointF(30.0, 970.3935748031496); + + return points; +} + +//--------------------------------------------------------------------------------------------------------------------- +QVector TST_VAbstractPiece::InputPointsSeamTest1PieceByIntersection() const +{ + QVector points; + + VSAPoint p = VSAPoint(30.0, 894.8030236220472); + p.SetSABefore(75.59055118110237); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(30.0, 39.999874015748034); + p.SetSABefore(0.0); + points.append(p); + + p = VSAPoint(30.0, 39.999874015748034); + p.SetSABefore(0.0); + points.append(p); + + points.append(VSAPoint(47.53637144700478, 39.80977598775412)); + points.append(VSAPoint(85.4092492068762, 37.36146293134895)); + points.append(VSAPoint(125.57923134501877, 32.13056337758208)); + points.append(VSAPoint(156.5108311435474, 26.074993549693005)); + points.append(VSAPoint(177.21129897469388, 21.059222548891512)); + points.append(VSAPoint(197.8216319874312, 15.159776113211533)); + points.append(VSAPoint(218.19418331220902, 8.334870062533497)); + points.append(VSAPoint(238.18130607947683, 0.5427202167378373)); + points.append(VSAPoint(257.6353534196842, -8.258457604295018)); + points.append(VSAPoint(276.4086784632808, -18.110447580684635)); + points.append(VSAPoint(294.3536343407161, -29.055033892550586)); + points.append(VSAPoint(311.32257418243984, -41.13400072001244)); + points.append(VSAPoint(327.16785111890135, -54.389132243189756)); + + p = VSAPoint(334.5669291338582, -61.522435695538036); + p.SetSAAfter(0.3779527559055119); + p.SetAngleType(PieceNodeAngle::ByPointsIntersection); + points.append(p); + + p = VSAPoint(334.5669291338582, -61.522435695538036); + p.SetSAAfter(0.3779527559055119); + p.SetAngleType(PieceNodeAngle::ByPointsIntersection); + points.append(p); + + p = VSAPoint(519.4465667350105, -36.01405338211433); + p.SetSABefore(0.3779527559055119); + points.append(p); + + points.append(VSAPoint(460.3937007874016, 342.36207874015753)); + + p = VSAPoint(620.5290071875436, -5.506318761785565); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(944.294593326342, 136.63905516701556); + p.SetSABefore(0.0); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(944.294593326342, 136.63905516701556); + p.SetSABefore(0.0); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(930.9115139455133, 164.2021651072791); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(907.1077633892038, 216.20756088951924); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(886.6420235246574, 264.5706340127217); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(869.2733175133691, 309.4054580978941); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(854.760668516834, 350.82610676604384); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(842.8630996965472, 388.9466536381784); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(833.3396342140039, 423.88117233530534); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(825.9492952306991, 455.74373647843197); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(820.451105908128, 484.6484196885659); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(816.6040894077855, 510.7092955867147); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(814.1672688911669, 534.0404377938855); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(812.8996675197673, 554.7559199310863); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(812.5925673946043, 581.4656260538284); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(814.1809574610598, 608.5715133604979); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(815.1968503937007, 618.5825511811024); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(816.3634787672067, 628.380932746632); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(820.4053369940075, 649.1688436779486); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(826.5040284899703, 671.0654086429722); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(834.6667882477791, 693.7142683899226); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(844.9008512601183, 716.7590636670197); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(857.2134525196718, 739.8434352224829); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(871.6118270191237, 762.6110238045324); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(888.1032097511581, 784.7054701613878); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(906.6948357084594, 805.7704150412691); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(927.3939398837115, 825.4494991923958); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(950.2077572695983, 843.3863633629879); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(968.776733605274, 855.4073744953336); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(981.7764600118351, 862.7350547966848); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(995.3089344044396, 869.4267280237759); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1009.3750611571733, 875.4378492701345); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1023.9757446441214, 880.7238736292878); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1039.1118892393697, 885.2402561947638); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1054.784399317004, 888.9424520600894); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1070.994179251109, 891.7859163187926); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1087.7421334157707, 893.7261040644007); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1105.0291661850742, 894.7184703904409); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1113.8976377952758, 894.8030236220472); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(1113.8976377952758, 894.8030236220472); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(0.0); + points.append(p); + + return points; +} + +//--------------------------------------------------------------------------------------------------------------------- +QVector TST_VAbstractPiece::OutputPointsSeamTest1PieceByIntersection() const +{ + QVector points; + + points += QPointF(30.0, 970.3935748031496); + points += QPointF(30.0, 2.2023778242823937); + points += QPointF(46.111397855976776, 2.027726815668483); + points += QPointF(81.74605442368645, -0.2758951981748612); + points += QPointF(119.50208828052781, -5.192452541281906); + points += QPointF(148.42595722778273, -10.854963023883784); + points += QPointF(167.5566961450379, -15.490385095876569); + points += QPointF(186.61281642420556, -20.94495784777482); + points += QPointF(205.31950565747624, -27.21179180985321); + points += QPointF(223.51736443487215, -34.306381867523655); + points += QPointF(241.0503469884652, -42.23845350735769); + points += QPointF(257.76798751706616, -51.01164773556077); + points += QPointF(273.5285590176657, -60.62398316233916); + points += QPointF(284.4959443876259, -68.4308753608727); + points += QPointF(334.91313141686754, -61.856202407499914); + points += QPointF(556.951317720607, -31.220946854728947); + points += QPointF(539.6101141051189, 79.89131577778124); + points += QPointF(585.9167315845332, -20.7024207218235); + points += QPointF(1117.4559101159903, 212.6634418802967); + points += QPointF(1101.8482040478996, 244.8082798528157); + points += QPointF(1080.077560308019, 292.3718325563429); + points += QPointF(1061.8089025447719, 335.54292908714797); + points += QPointF(1046.6013689355652, 374.7989965048928); + points += QPointF(1034.1843603449322, 410.2384638595293); + points += QPointF(1024.2819001340656, 441.96655926454446); + points += QPointF(1016.6128103198596, 470.0987514791764); + points += QPointF(1010.891548127259, 494.7652903217379); + points += QPointF(1006.8300406648392, 516.1171535751373); + points += QPointF(1004.1409514475167, 534.3338730421456); + points += QPointF(1002.5429209641059, 549.6340874837038); + points += QPointF(1001.8096437359794, 561.6175009318105); + points += QPointF(1001.632561636562, 577.0190278199144); + points += QPointF(1002.5982079396683, 593.4977885619218); + points += QPointF(1003.0419281414149, 597.870394747796); + points += QPointF(1003.1926540422378, 599.1363247745379); + points += QPointF(1004.4715714217981, 605.7139974891637); + points += QPointF(1006.6672239434022, 613.5972045855956); + points += QPointF(1010.1411052399322, 623.2360341722922); + points += QPointF(1014.8474980040493, 633.8337662374475); + points += QPointF(1020.6660121283516, 644.7426504865729); + points += QPointF(1027.4243046890665, 655.4292751847524); + points += QPointF(1034.913026324476, 665.4623428264111); + points += QPointF(1042.9029269068749, 674.5151720813944); + points += QPointF(1051.171411576988, 682.3761985416603); + points += QPointF(1060.1878101895825, 689.4651444417038); + points += QPointF(1066.6143341082677, 693.625487703081); + points += QPointF(1070.1212524493003, 695.6022659553572); + points += QPointF(1074.3830151134664, 697.7096649640414); + points += QPointF(1078.7265805419665, 699.565875909043); + points += QPointF(1083.206554246492, 701.1878034134409); + points += QPointF(1087.891993301369, 702.5858632116882); + points += QPointF(1092.8646688655851, 703.7605199081748); + points += QPointF(1098.2162239125396, 704.699271425244); + points += QPointF(1104.0444208482252, 705.3744462055462); + points += QPointF(1111.3488014116294, 705.7937559506272); + points += QPointF(1290.2705536650083, 707.4996206162249); + points += QPointF(1302.416131870577, 881.6558256043734); + points += QPointF(30.0, 970.3935748031496); + + return points; +} + +//--------------------------------------------------------------------------------------------------------------------- +QVector TST_VAbstractPiece::InputPointsSeamTest1PieceByFirstEdgeSymmerty() const +{ + QVector points; + + VSAPoint p = VSAPoint(30.0, 894.8030236220472); + p.SetSABefore(75.59055118110237); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(30.0, 39.999874015748034); + p.SetSABefore(0.0); + points.append(p); + + p = VSAPoint(30.0, 39.999874015748034); + p.SetSABefore(0.0); + points.append(p); + + points.append(VSAPoint(47.53637144700478, 39.80977598775412)); + points.append(VSAPoint(85.4092492068762, 37.36146293134895)); + points.append(VSAPoint(125.57923134501877, 32.13056337758208)); + points.append(VSAPoint(156.5108311435474, 26.074993549693005)); + points.append(VSAPoint(177.21129897469388, 21.059222548891512)); + points.append(VSAPoint(197.8216319874312, 15.159776113211533)); + points.append(VSAPoint(218.19418331220902, 8.334870062533497)); + points.append(VSAPoint(238.18130607947683, 0.5427202167378373)); + points.append(VSAPoint(257.6353534196842, -8.258457604295018)); + points.append(VSAPoint(276.4086784632808, -18.110447580684635)); + points.append(VSAPoint(294.3536343407161, -29.055033892550586)); + points.append(VSAPoint(311.32257418243984, -41.13400072001244)); + points.append(VSAPoint(327.16785111890135, -54.389132243189756)); + + p = VSAPoint(334.5669291338582, -61.522435695538036); + p.SetSAAfter(0.3779527559055119); + p.SetAngleType(PieceNodeAngle::ByFirstEdgeSymmetry); + points.append(p); + + p = VSAPoint(334.5669291338582, -61.522435695538036); + p.SetSAAfter(0.3779527559055119); + p.SetAngleType(PieceNodeAngle::ByFirstEdgeSymmetry); + points.append(p); + + p = VSAPoint(519.4465667350105, -36.01405338211433); + p.SetSABefore(0.3779527559055119); + points.append(p); + + points.append(VSAPoint(460.3937007874016, 342.36207874015753)); + + p = VSAPoint(620.5290071875436, -5.506318761785565); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(944.294593326342, 136.63905516701556); + p.SetSABefore(0.0); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(944.294593326342, 136.63905516701556); + p.SetSABefore(0.0); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(930.9115139455133, 164.2021651072791); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(907.1077633892038, 216.20756088951924); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(886.6420235246574, 264.5706340127217); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(869.2733175133691, 309.4054580978941); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(854.760668516834, 350.82610676604384); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(842.8630996965472, 388.9466536381784); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(833.3396342140039, 423.88117233530534); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(825.9492952306991, 455.74373647843197); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(820.451105908128, 484.6484196885659); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(816.6040894077855, 510.7092955867147); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(814.1672688911669, 534.0404377938855); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(812.8996675197673, 554.7559199310863); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(812.5925673946043, 581.4656260538284); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(814.1809574610598, 608.5715133604979); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(815.1968503937007, 618.5825511811024); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(816.3634787672067, 628.380932746632); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(820.4053369940075, 649.1688436779486); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(826.5040284899703, 671.0654086429722); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(834.6667882477791, 693.7142683899226); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(844.9008512601183, 716.7590636670197); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(857.2134525196718, 739.8434352224829); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(871.6118270191237, 762.6110238045324); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(888.1032097511581, 784.7054701613878); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(906.6948357084594, 805.7704150412691); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(927.3939398837115, 825.4494991923958); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(950.2077572695983, 843.3863633629879); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(968.776733605274, 855.4073744953336); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(981.7764600118351, 862.7350547966848); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(995.3089344044396, 869.4267280237759); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1009.3750611571733, 875.4378492701345); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1023.9757446441214, 880.7238736292878); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1039.1118892393697, 885.2402561947638); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1054.784399317004, 888.9424520600894); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1070.994179251109, 891.7859163187926); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1087.7421334157707, 893.7261040644007); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1105.0291661850742, 894.7184703904409); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1113.8976377952758, 894.8030236220472); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(1113.8976377952758, 894.8030236220472); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(0.0); + points.append(p); + + return points; +} + +//--------------------------------------------------------------------------------------------------------------------- +QVector TST_VAbstractPiece::OutputPointsSeamTest1PieceByFirstEdgeSymmerty() const +{ + QVector points; + + points += QPointF(30.0, 970.3935748031496); + points += QPointF(30.0, 2.2023778242823937); + points += QPointF(46.111397855976776, 2.027726815668483); + points += QPointF(81.74605442368645, -0.2758951981748612); + points += QPointF(119.50208828052781, -5.192452541281906); + points += QPointF(148.42595722778273, -10.854963023883784); + points += QPointF(167.5566961450379, -15.490385095876569); + points += QPointF(186.61281642420556, -20.94495784777482); + points += QPointF(205.31950565747624, -27.21179180985321); + points += QPointF(223.51736443487215, -34.306381867523655); + points += QPointF(241.0503469884652, -42.23845350735769); + points += QPointF(257.76798751706616, -51.01164773556077); + points += QPointF(273.5285590176657, -60.62398316233916); + points += QPointF(288.203122586733, -71.06974867341756); + points += QPointF(301.89505943185964, -82.52353546533966); + points += QPointF(315.2716370538558, -95.41962699710956); + points += QPointF(334.9131314168676, -61.85620240749991); + points += QPointF(556.951317720607, -31.220946854728947); + points += QPointF(539.6101141051189, 79.89131577778124); + points += QPointF(585.9167315845332, -20.7024207218235); + points += QPointF(1117.4559101159903, 212.6634418802967); + points += QPointF(1101.8482040478996, 244.8082798528157); + points += QPointF(1080.077560308019, 292.3718325563429); + points += QPointF(1061.8089025447719, 335.54292908714797); + points += QPointF(1046.6013689355652, 374.7989965048928); + points += QPointF(1034.1843603449322, 410.2384638595293); + points += QPointF(1024.2819001340656, 441.96655926454446); + points += QPointF(1016.6128103198596, 470.0987514791764); + points += QPointF(1010.891548127259, 494.7652903217379); + points += QPointF(1006.8300406648392, 516.1171535751373); + points += QPointF(1004.1409514475167, 534.3338730421456); + points += QPointF(1002.5429209641059, 549.6340874837038); + points += QPointF(1001.8096437359794, 561.6175009318105); + points += QPointF(1001.632561636562, 577.0190278199144); + points += QPointF(1002.5982079396683, 593.4977885619218); + points += QPointF(1003.0419281414149, 597.870394747796); + points += QPointF(1003.1926540422378, 599.1363247745379); + points += QPointF(1004.4715714217981, 605.7139974891637); + points += QPointF(1006.6672239434022, 613.5972045855956); + points += QPointF(1010.1411052399322, 623.2360341722922); + points += QPointF(1014.8474980040493, 633.8337662374475); + points += QPointF(1020.6660121283516, 644.7426504865729); + points += QPointF(1027.4243046890665, 655.4292751847524); + points += QPointF(1034.913026324476, 665.4623428264111); + points += QPointF(1042.9029269068749, 674.5151720813944); + points += QPointF(1051.171411576988, 682.3761985416603); + points += QPointF(1060.1878101895825, 689.4651444417038); + points += QPointF(1066.6143341082677, 693.625487703081); + points += QPointF(1070.1212524493003, 695.6022659553572); + points += QPointF(1074.3830151134664, 697.7096649640414); + points += QPointF(1078.7265805419665, 699.565875909043); + points += QPointF(1083.206554246492, 701.1878034134409); + points += QPointF(1087.891993301369, 702.5858632116882); + points += QPointF(1092.8646688655851, 703.7605199081748); + points += QPointF(1098.2162239125396, 704.699271425244); + points += QPointF(1104.0444208482252, 705.3744462055462); + points += QPointF(1111.3488014116294, 705.7937559506272); + points += QPointF(1290.2705536650083, 707.4996206162249); + points += QPointF(1302.416131870577, 881.6558256043734); + points += QPointF(30.0, 970.3935748031496); + + return points; +} + +//--------------------------------------------------------------------------------------------------------------------- +QVector TST_VAbstractPiece::InputPointsSeamTest1PieceBySecondEdgeSymmerty() const +{ + QVector points; + + VSAPoint p = VSAPoint(30.0, 894.8030236220472); + p.SetSABefore(75.59055118110237); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(30.0, 39.999874015748034); + p.SetSABefore(0.0); + points.append(p); + + p = VSAPoint(30.0, 39.999874015748034); + p.SetSABefore(0.0); + points.append(p); + + points.append(VSAPoint(47.53637144700478, 39.80977598775412)); + points.append(VSAPoint(85.4092492068762, 37.36146293134895)); + points.append(VSAPoint(125.57923134501877, 32.13056337758208)); + points.append(VSAPoint(156.5108311435474, 26.074993549693005)); + points.append(VSAPoint(177.21129897469388, 21.059222548891512)); + points.append(VSAPoint(197.8216319874312, 15.159776113211533)); + points.append(VSAPoint(218.19418331220902, 8.334870062533497)); + points.append(VSAPoint(238.18130607947683, 0.5427202167378373)); + points.append(VSAPoint(257.6353534196842, -8.258457604295018)); + points.append(VSAPoint(276.4086784632808, -18.110447580684635)); + points.append(VSAPoint(294.3536343407161, -29.055033892550586)); + points.append(VSAPoint(311.32257418243984, -41.13400072001244)); + points.append(VSAPoint(327.16785111890135, -54.389132243189756)); + + p = VSAPoint(334.5669291338582, -61.522435695538036); + p.SetSAAfter(0.3779527559055119); + p.SetAngleType(PieceNodeAngle::BySecondEdgeSymmetry); + points.append(p); + + p = VSAPoint(334.5669291338582, -61.522435695538036); + p.SetSAAfter(0.3779527559055119); + p.SetAngleType(PieceNodeAngle::BySecondEdgeSymmetry); + points.append(p); + + p = VSAPoint(519.4465667350105, -36.01405338211433); + p.SetSABefore(0.3779527559055119); + points.append(p); + + points.append(VSAPoint(460.3937007874016, 342.36207874015753)); + + p = VSAPoint(620.5290071875436, -5.506318761785565); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(944.294593326342, 136.63905516701556); + p.SetSABefore(0.0); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(944.294593326342, 136.63905516701556); + p.SetSABefore(0.0); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(930.9115139455133, 164.2021651072791); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(907.1077633892038, 216.20756088951924); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(886.6420235246574, 264.5706340127217); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(869.2733175133691, 309.4054580978941); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(854.760668516834, 350.82610676604384); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(842.8630996965472, 388.9466536381784); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(833.3396342140039, 423.88117233530534); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(825.9492952306991, 455.74373647843197); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(820.451105908128, 484.6484196885659); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(816.6040894077855, 510.7092955867147); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(814.1672688911669, 534.0404377938855); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(812.8996675197673, 554.7559199310863); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(812.5925673946043, 581.4656260538284); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(814.1809574610598, 608.5715133604979); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(815.1968503937007, 618.5825511811024); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(816.3634787672067, 628.380932746632); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(820.4053369940075, 649.1688436779486); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(826.5040284899703, 671.0654086429722); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(834.6667882477791, 693.7142683899226); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(844.9008512601183, 716.7590636670197); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(857.2134525196718, 739.8434352224829); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(871.6118270191237, 762.6110238045324); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(888.1032097511581, 784.7054701613878); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(906.6948357084594, 805.7704150412691); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(927.3939398837115, 825.4494991923958); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(950.2077572695983, 843.3863633629879); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(968.776733605274, 855.4073744953336); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(981.7764600118351, 862.7350547966848); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(995.3089344044396, 869.4267280237759); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1009.3750611571733, 875.4378492701345); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1023.9757446441214, 880.7238736292878); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1039.1118892393697, 885.2402561947638); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1054.784399317004, 888.9424520600894); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1070.994179251109, 891.7859163187926); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1087.7421334157707, 893.7261040644007); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1105.0291661850742, 894.7184703904409); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1113.8976377952758, 894.8030236220472); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(1113.8976377952758, 894.8030236220472); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(0.0); + points.append(p); + + return points; +} + +//--------------------------------------------------------------------------------------------------------------------- +QVector TST_VAbstractPiece::OutputPointsSeamTest1PieceBySecondEdgeSymmerty() const +{ + QVector points; + + points += QPointF(30.0, 970.3935748031496); + points += QPointF(30.0, 2.2023778242823937); + points += QPointF(46.111397855976776, 2.027726815668483); + points += QPointF(81.74605442368645, -0.2758951981748612); + points += QPointF(119.50208828052781, -5.192452541281906); + points += QPointF(148.42595722778273, -10.854963023883784); + points += QPointF(167.5566961450379, -15.490385095876569); + points += QPointF(186.61281642420556, -20.94495784777482); + points += QPointF(205.31950565747624, -27.21179180985321); + points += QPointF(223.51736443487215, -34.306381867523655); + points += QPointF(241.0503469884652, -42.23845350735769); + points += QPointF(257.76798751706616, -51.01164773556077); + points += QPointF(273.5285590176657, -60.62398316233916); + points += QPointF(284.94491218126115, -68.7504632158891); + points += QPointF(286.89008170747013, -68.48208250840415); + points += QPointF(556.951317720607, -31.220946854728947); + points += QPointF(539.6101141051189, 79.89131577778124); + points += QPointF(585.9167315845332, -20.7024207218235); + points += QPointF(1117.4559101159903, 212.6634418802967); + points += QPointF(1101.8482040478996, 244.8082798528157); + points += QPointF(1080.077560308019, 292.3718325563429); + points += QPointF(1061.8089025447719, 335.54292908714797); + points += QPointF(1046.6013689355652, 374.7989965048928); + points += QPointF(1034.1843603449322, 410.2384638595293); + points += QPointF(1024.2819001340656, 441.96655926454446); + points += QPointF(1016.6128103198596, 470.0987514791764); + points += QPointF(1010.891548127259, 494.7652903217379); + points += QPointF(1006.8300406648392, 516.1171535751373); + points += QPointF(1004.1409514475167, 534.3338730421456); + points += QPointF(1002.5429209641059, 549.6340874837038); + points += QPointF(1001.8096437359794, 561.6175009318105); + points += QPointF(1001.632561636562, 577.0190278199144); + points += QPointF(1002.5982079396683, 593.4977885619218); + points += QPointF(1003.0419281414149, 597.870394747796); + points += QPointF(1003.1926540422378, 599.1363247745379); + points += QPointF(1004.4715714217981, 605.7139974891637); + points += QPointF(1006.6672239434022, 613.5972045855956); + points += QPointF(1010.1411052399322, 623.2360341722922); + points += QPointF(1014.8474980040493, 633.8337662374475); + points += QPointF(1020.6660121283516, 644.7426504865729); + points += QPointF(1027.4243046890665, 655.4292751847524); + points += QPointF(1034.913026324476, 665.4623428264111); + points += QPointF(1042.9029269068749, 674.5151720813944); + points += QPointF(1051.171411576988, 682.3761985416603); + points += QPointF(1060.1878101895825, 689.4651444417038); + points += QPointF(1066.6143341082677, 693.625487703081); + points += QPointF(1070.1212524493003, 695.6022659553572); + points += QPointF(1074.3830151134664, 697.7096649640414); + points += QPointF(1078.7265805419665, 699.565875909043); + points += QPointF(1083.206554246492, 701.1878034134409); + points += QPointF(1087.891993301369, 702.5858632116882); + points += QPointF(1092.8646688655851, 703.7605199081748); + points += QPointF(1098.2162239125396, 704.699271425244); + points += QPointF(1104.0444208482252, 705.3744462055462); + points += QPointF(1111.3488014116294, 705.7937559506272); + points += QPointF(1290.2705536650083, 707.4996206162249); + points += QPointF(1302.416131870577, 881.6558256043734); + points += QPointF(30.0, 970.3935748031496); + + return points; +} + +//--------------------------------------------------------------------------------------------------------------------- +QVector TST_VAbstractPiece::InputPointsSeamTest1PieceByFirstRightAngle() const +{ + QVector points; + + VSAPoint p = VSAPoint(30.0, 894.8030236220472); + p.SetSABefore(75.59055118110237); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(30.0, 39.999874015748034); + p.SetSABefore(0.0); + points.append(p); + + p = VSAPoint(30.0, 39.999874015748034); + p.SetSABefore(0.0); + points.append(p); + + points.append(VSAPoint(47.53637144700478, 39.80977598775412)); + points.append(VSAPoint(85.4092492068762, 37.36146293134895)); + points.append(VSAPoint(125.57923134501877, 32.13056337758208)); + points.append(VSAPoint(156.5108311435474, 26.074993549693005)); + points.append(VSAPoint(177.21129897469388, 21.059222548891512)); + points.append(VSAPoint(197.8216319874312, 15.159776113211533)); + points.append(VSAPoint(218.19418331220902, 8.334870062533497)); + points.append(VSAPoint(238.18130607947683, 0.5427202167378373)); + points.append(VSAPoint(257.6353534196842, -8.258457604295018)); + points.append(VSAPoint(276.4086784632808, -18.110447580684635)); + points.append(VSAPoint(294.3536343407161, -29.055033892550586)); + points.append(VSAPoint(311.32257418243984, -41.13400072001244)); + points.append(VSAPoint(327.16785111890135, -54.389132243189756)); + + p = VSAPoint(334.5669291338582, -61.522435695538036); + p.SetSAAfter(0.3779527559055119); + p.SetAngleType(PieceNodeAngle::ByFirstEdgeRightAngle); + points.append(p); + + p = VSAPoint(334.5669291338582, -61.522435695538036); + p.SetSAAfter(0.3779527559055119); + p.SetAngleType(PieceNodeAngle::ByFirstEdgeRightAngle); + points.append(p); + + p = VSAPoint(519.4465667350105, -36.01405338211433); + p.SetSABefore(0.3779527559055119); + points.append(p); + + points.append(VSAPoint(460.3937007874016, 342.36207874015753)); + + p = VSAPoint(620.5290071875436, -5.506318761785565); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(944.294593326342, 136.63905516701556); + p.SetSABefore(0.0); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(944.294593326342, 136.63905516701556); + p.SetSABefore(0.0); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(930.9115139455133, 164.2021651072791); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(907.1077633892038, 216.20756088951924); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(886.6420235246574, 264.5706340127217); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(869.2733175133691, 309.4054580978941); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(854.760668516834, 350.82610676604384); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(842.8630996965472, 388.9466536381784); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(833.3396342140039, 423.88117233530534); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(825.9492952306991, 455.74373647843197); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(820.451105908128, 484.6484196885659); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(816.6040894077855, 510.7092955867147); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(814.1672688911669, 534.0404377938855); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(812.8996675197673, 554.7559199310863); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(812.5925673946043, 581.4656260538284); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(814.1809574610598, 608.5715133604979); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(815.1968503937007, 618.5825511811024); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(816.3634787672067, 628.380932746632); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(820.4053369940075, 649.1688436779486); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(826.5040284899703, 671.0654086429722); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(834.6667882477791, 693.7142683899226); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(844.9008512601183, 716.7590636670197); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(857.2134525196718, 739.8434352224829); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(871.6118270191237, 762.6110238045324); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(888.1032097511581, 784.7054701613878); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(906.6948357084594, 805.7704150412691); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(927.3939398837115, 825.4494991923958); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(950.2077572695983, 843.3863633629879); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(968.776733605274, 855.4073744953336); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(981.7764600118351, 862.7350547966848); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(995.3089344044396, 869.4267280237759); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1009.3750611571733, 875.4378492701345); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1023.9757446441214, 880.7238736292878); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1039.1118892393697, 885.2402561947638); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1054.784399317004, 888.9424520600894); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1070.994179251109, 891.7859163187926); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1087.7421334157707, 893.7261040644007); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1105.0291661850742, 894.7184703904409); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1113.8976377952758, 894.8030236220472); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(1113.8976377952758, 894.8030236220472); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(0.0); + points.append(p); + + return points; +} + +//--------------------------------------------------------------------------------------------------------------------- +QVector TST_VAbstractPiece::OutputPointsSeamTest1PieceByFirstRightAngle() const +{ + QVector points; + + points += QPointF(30.0, 970.3935748031496); + points += QPointF(30.0, 2.2023778242823937); + points += QPointF(46.111397855976776, 2.027726815668483); + points += QPointF(81.74605442368645, -0.2758951981748612); + points += QPointF(119.50208828052781, -5.192452541281906); + points += QPointF(148.42595722778273, -10.854963023883784); + points += QPointF(167.5566961450379, -15.490385095876569); + points += QPointF(186.61281642420556, -20.94495784777482); + points += QPointF(205.31950565747624, -27.21179180985321); + points += QPointF(223.51736443487215, -34.306381867523655); + points += QPointF(241.0503469884652, -42.23845350735769); + points += QPointF(257.76798751706616, -51.01164773556077); + points += QPointF(273.5285590176657, -60.62398316233916); + points += QPointF(288.203122586733, -71.06974867341756); + points += QPointF(301.89505943185964, -82.52353546533966); + points += QPointF(308.6809861986896, -89.06571203590164); + points += QPointF(334.91313141686754, -61.856202407499914); + points += QPointF(556.951317720607, -31.220946854728947); + points += QPointF(539.6101141051189, 79.89131577778124); + points += QPointF(585.9167315845332, -20.7024207218235); + points += QPointF(1117.4559101159903, 212.6634418802967); + points += QPointF(1101.8482040478996, 244.8082798528157); + points += QPointF(1080.077560308019, 292.3718325563429); + points += QPointF(1061.8089025447719, 335.54292908714797); + points += QPointF(1046.6013689355652, 374.7989965048928); + points += QPointF(1034.1843603449322, 410.2384638595293); + points += QPointF(1024.2819001340656, 441.96655926454446); + points += QPointF(1016.6128103198596, 470.0987514791764); + points += QPointF(1010.891548127259, 494.7652903217379); + points += QPointF(1006.8300406648392, 516.1171535751373); + points += QPointF(1004.1409514475167, 534.3338730421456); + points += QPointF(1002.5429209641059, 549.6340874837038); + points += QPointF(1001.8096437359794, 561.6175009318105); + points += QPointF(1001.632561636562, 577.0190278199144); + points += QPointF(1002.5982079396683, 593.4977885619218); + points += QPointF(1003.0419281414149, 597.870394747796); + points += QPointF(1003.1926540422378, 599.1363247745379); + points += QPointF(1004.4715714217981, 605.7139974891637); + points += QPointF(1006.6672239434022, 613.5972045855956); + points += QPointF(1010.1411052399322, 623.2360341722922); + points += QPointF(1014.8474980040493, 633.8337662374475); + points += QPointF(1020.6660121283516, 644.7426504865729); + points += QPointF(1027.4243046890665, 655.4292751847524); + points += QPointF(1034.913026324476, 665.4623428264111); + points += QPointF(1042.9029269068749, 674.5151720813944); + points += QPointF(1051.171411576988, 682.3761985416603); + points += QPointF(1060.1878101895825, 689.4651444417038); + points += QPointF(1066.6143341082677, 693.625487703081); + points += QPointF(1070.1212524493003, 695.6022659553572); + points += QPointF(1074.3830151134664, 697.7096649640414); + points += QPointF(1078.7265805419665, 699.565875909043); + points += QPointF(1083.206554246492, 701.1878034134409); + points += QPointF(1087.891993301369, 702.5858632116882); + points += QPointF(1092.8646688655851, 703.7605199081748); + points += QPointF(1098.2162239125396, 704.699271425244); + points += QPointF(1104.0444208482252, 705.3744462055462); + points += QPointF(1111.3488014116294, 705.7937559506272); + points += QPointF(1290.2705536650083, 707.4996206162249); + points += QPointF(1302.416131870577, 881.6558256043734); + points += QPointF(30.0, 970.3935748031496); + + return points; +} + +//--------------------------------------------------------------------------------------------------------------------- +QVector TST_VAbstractPiece::InputPointsSeamTest1PieceBySecondRightAngle() const +{ + QVector points; + + VSAPoint p = VSAPoint(30.0, 894.8030236220472); + p.SetSABefore(75.59055118110237); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(30.0, 39.999874015748034); + p.SetSABefore(0.0); + points.append(p); + + p = VSAPoint(30.0, 39.999874015748034); + p.SetSABefore(0.0); + points.append(p); + + points.append(VSAPoint(47.53637144700478, 39.80977598775412)); + points.append(VSAPoint(85.4092492068762, 37.36146293134895)); + points.append(VSAPoint(125.57923134501877, 32.13056337758208)); + points.append(VSAPoint(156.5108311435474, 26.074993549693005)); + points.append(VSAPoint(177.21129897469388, 21.059222548891512)); + points.append(VSAPoint(197.8216319874312, 15.159776113211533)); + points.append(VSAPoint(218.19418331220902, 8.334870062533497)); + points.append(VSAPoint(238.18130607947683, 0.5427202167378373)); + points.append(VSAPoint(257.6353534196842, -8.258457604295018)); + points.append(VSAPoint(276.4086784632808, -18.110447580684635)); + points.append(VSAPoint(294.3536343407161, -29.055033892550586)); + points.append(VSAPoint(311.32257418243984, -41.13400072001244)); + points.append(VSAPoint(327.16785111890135, -54.389132243189756)); + + p = VSAPoint(334.5669291338582, -61.522435695538036); + p.SetSAAfter(0.3779527559055119); + p.SetAngleType(PieceNodeAngle::BySecondEdgeRightAngle); + points.append(p); + + p = VSAPoint(334.5669291338582, -61.522435695538036); + p.SetSAAfter(0.3779527559055119); + p.SetAngleType(PieceNodeAngle::BySecondEdgeRightAngle); + points.append(p); + + p = VSAPoint(519.4465667350105, -36.01405338211433); + p.SetSABefore(0.3779527559055119); + points.append(p); + + points.append(VSAPoint(460.3937007874016, 342.36207874015753)); + + p = VSAPoint(620.5290071875436, -5.506318761785565); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(944.294593326342, 136.63905516701556); + p.SetSABefore(0.0); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(944.294593326342, 136.63905516701556); + p.SetSABefore(0.0); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(930.9115139455133, 164.2021651072791); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(907.1077633892038, 216.20756088951924); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(886.6420235246574, 264.5706340127217); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(869.2733175133691, 309.4054580978941); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(854.760668516834, 350.82610676604384); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(842.8630996965472, 388.9466536381784); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(833.3396342140039, 423.88117233530534); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(825.9492952306991, 455.74373647843197); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(820.451105908128, 484.6484196885659); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(816.6040894077855, 510.7092955867147); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(814.1672688911669, 534.0404377938855); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(812.8996675197673, 554.7559199310863); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(812.5925673946043, 581.4656260538284); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(814.1809574610598, 608.5715133604979); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(815.1968503937007, 618.5825511811024); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(816.3634787672067, 628.380932746632); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(820.4053369940075, 649.1688436779486); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(826.5040284899703, 671.0654086429722); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(834.6667882477791, 693.7142683899226); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(844.9008512601183, 716.7590636670197); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(857.2134525196718, 739.8434352224829); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(871.6118270191237, 762.6110238045324); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(888.1032097511581, 784.7054701613878); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(906.6948357084594, 805.7704150412691); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(927.3939398837115, 825.4494991923958); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(950.2077572695983, 843.3863633629879); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(968.776733605274, 855.4073744953336); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(981.7764600118351, 862.7350547966848); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(995.3089344044396, 869.4267280237759); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1009.3750611571733, 875.4378492701345); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1023.9757446441214, 880.7238736292878); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1039.1118892393697, 885.2402561947638); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1054.784399317004, 888.9424520600894); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1070.994179251109, 891.7859163187926); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1087.7421334157707, 893.7261040644007); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1105.0291661850742, 894.7184703904409); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(188.9763779527559); + points.append(p); + + p = VSAPoint(1113.8976377952758, 894.8030236220472); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(1113.8976377952758, 894.8030236220472); + p.SetSABefore(188.9763779527559); + p.SetSAAfter(0.0); + points.append(p); + + return points; +} + +//--------------------------------------------------------------------------------------------------------------------- +QVector TST_VAbstractPiece::OutputPointsSeamTest1PieceBySecondRightAngle() const +{ + QVector points; + + points += QPointF(30.0, 970.3935748031496); + points += QPointF(30.0, 2.2023778242823937); + points += QPointF(46.111397855976776, 2.027726815668483); + points += QPointF(81.74605442368645, -0.2758951981748612); + points += QPointF(119.50208828052781, -5.192452541281906); + points += QPointF(148.42595722778273, -10.854963023883784); + points += QPointF(167.5566961450379, -15.490385095876569); + points += QPointF(186.61281642420556, -20.94495784777482); + points += QPointF(205.31950565747624, -27.21179180985321); + points += QPointF(223.51736443487215, -34.306381867523655); + points += QPointF(241.0503469884652, -42.23845350735769); + points += QPointF(257.76798751706616, -51.01164773556077); + points += QPointF(273.5285590176657, -60.62398316233916); + points += QPointF(284.4959443876259, -68.4308753608727); + points += QPointF(556.951317720607, -31.220946854728947); + points += QPointF(539.6101141051189, 79.89131577778124); + points += QPointF(585.9167315845332, -20.7024207218235); + points += QPointF(1117.4559101159903, 212.6634418802967); + points += QPointF(1101.8482040478996, 244.8082798528157); + points += QPointF(1080.077560308019, 292.3718325563429); + points += QPointF(1061.8089025447719, 335.54292908714797); + points += QPointF(1046.6013689355652, 374.7989965048928); + points += QPointF(1034.1843603449322, 410.2384638595293); + points += QPointF(1024.2819001340656, 441.96655926454446); + points += QPointF(1016.6128103198596, 470.0987514791764); + points += QPointF(1010.891548127259, 494.7652903217379); + points += QPointF(1006.8300406648392, 516.1171535751373); + points += QPointF(1004.1409514475167, 534.3338730421456); + points += QPointF(1002.5429209641059, 549.6340874837038); + points += QPointF(1001.8096437359794, 561.6175009318105); + points += QPointF(1001.632561636562, 577.0190278199144); + points += QPointF(1002.5982079396683, 593.4977885619218); + points += QPointF(1003.0419281414149, 597.870394747796); + points += QPointF(1003.1926540422378, 599.1363247745379); + points += QPointF(1004.4715714217981, 605.7139974891637); + points += QPointF(1006.6672239434022, 613.5972045855956); + points += QPointF(1010.1411052399322, 623.2360341722922); + points += QPointF(1014.8474980040493, 633.8337662374475); + points += QPointF(1020.6660121283516, 644.7426504865729); + points += QPointF(1027.4243046890665, 655.4292751847524); + points += QPointF(1034.913026324476, 665.4623428264111); + points += QPointF(1042.9029269068749, 674.5151720813944); + points += QPointF(1051.171411576988, 682.3761985416603); + points += QPointF(1060.1878101895825, 689.4651444417038); + points += QPointF(1066.6143341082677, 693.625487703081); + points += QPointF(1070.1212524493003, 695.6022659553572); + points += QPointF(1074.3830151134664, 697.7096649640414); + points += QPointF(1078.7265805419665, 699.565875909043); + points += QPointF(1083.206554246492, 701.1878034134409); + points += QPointF(1087.891993301369, 702.5858632116882); + points += QPointF(1092.8646688655851, 703.7605199081748); + points += QPointF(1098.2162239125396, 704.699271425244); + points += QPointF(1104.0444208482252, 705.3744462055462); + points += QPointF(1111.3488014116294, 705.7937559506272); + points += QPointF(1290.2705536650083, 707.4996206162249); + points += QPointF(1302.416131870577, 881.6558256043734); points += QPointF(30.0, 970.3935748031496); return points; @@ -641,365 +2076,252 @@ QVector TST_VAbstractPiece::InputPointsCase2() const QVector points; - VSAPoint p = VSAPoint(30.0, 39.999874015748034); - ////p.SetSAAfter(-1); - ////p.SetSABefore(-1); - points.append(p); +// VSAPoint p = VSAPoint(927.3939398837115, 825.4494991923958); +// p.SetSABefore(188.9763779527559); +// p.SetSAAfter(188.9763779527559); +// points.append(p); - p = VSAPoint(407.9527559055118, 39.999874015748034); - ////p.SetSAAfter(-1); - ////p.SetSABefore(-1); - points.append(p); + points.append(VSAPoint(30.0, 39.999874015748034)); + points.append(VSAPoint(407.9527559055118, 39.999874015748034)); + points.append(VSAPoint(407.9527559055118, 228.97625196850396)); + points.append(VSAPoint(407.9527559055118, 228.97625196850396)); - p = VSAPoint(407.9527559055118, 228.97625196850396); - ////p.SetSAAfter(-1); - ////p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(407.9527559055118, 228.97625196850396); - ////p.SetSAAfter(-1); - ////p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(403.3769166670402, 231.4465511704684); - p.SetSAAfter(37.803178025111038); - p.SetSABefore(37.803178025111038); + VSAPoint p = VSAPoint(403.3769166670402, 231.4465511704684); + p.SetSABefore(37.80317793023137); + p.SetSAAfter(37.80317793023137); points.append(p); p = VSAPoint(394.1607984354165, 235.58132461572228); - p.SetSAAfter(37.818528535007879); - p.SetSABefore(37.818528535007879); + p.SetSABefore(37.8185282558241); + p.SetSAAfter(37.8185282558241); points.append(p); p = VSAPoint(384.8923171505302, 238.7905285112787); - p.SetSAAfter(37.833434086432739); - p.SetSABefore(37.833434086432739); + p.SetSABefore(37.83343362828719); + p.SetSAAfter(37.83343362828719); points.append(p); p = VSAPoint(375.59921131499664, 241.12018552459608); - p.SetSAAfter(37.847993627262561); - p.SetSABefore(37.847993627262561); + p.SetSABefore(37.84799299430957); + p.SetSAAfter(37.84799299430957); points.append(p); p = VSAPoint(366.3092194314313, 242.61631832313287); - p.SetSAAfter(37.862293350550544); - p.SetSABefore(37.862293350550544); + p.SetSABefore(37.86229254590959); + p.SetSAAfter(37.86229254590959); points.append(p); p = VSAPoint(357.0500800024495, 243.3249495743475); - p.SetSAAfter(37.876405426208798); - p.SetSABefore(37.876405426208798); + p.SetSABefore(37.87640445213285); + p.SetSAAfter(37.87640445213285); points.append(p); - p = VSAPoint(347.8495315306667, 243.2921019456984); - p.SetSAAfter(37.890387402651413); - p.SetSABefore(37.890387402651413); + p = VSAPoint(343.267372346902, 243.09606124484026); + p.SetSABefore(37.897352390596396); + p.SetSAAfter(37.897352390596396); points.append(p); - p = VSAPoint(338.73531251869827, 242.56379810464406); - p.SetSAAfter(37.904282247411182); - p.SetSABefore(37.904282247411182); + p = VSAPoint(325.2670702478247, 240.34058647283786); + p.SetSABefore(37.92502540251962); + p.SetSAAfter(37.92502540251962); points.append(p); - p = VSAPoint(329.7351614691596, 241.18606071864286); - p.SetSAAfter(37.91811891950119); - p.SetSABefore(37.91811891950119); + p = VSAPoint(307.8894710141585, 235.26351352579883); + p.SetSABefore(37.952537472540754); + p.SetSAAfter(37.952537472540754); points.append(p); - p = VSAPoint(320.876816884666, 239.20491245515328); - p.SetSAAfter(37.931913327979281); - p.SetSABefore(37.931913327979281); + p = VSAPoint(291.35648266682676, 228.23302374339065); + p.SetSABefore(37.97983930259204); + p.SetSAAfter(37.97983930259204); points.append(p); - p = VSAPoint(312.18801726783295, 236.6663759816338); - p.SetSAAfter(37.945669528152067); - p.SetSABefore(37.945669528152067); + p = VSAPoint(275.89001322675244, 219.61729846528084); + p.SetSABefore(38.00674385290581); + p.SetSAAfter(38.00674385290581); points.append(p); - p = VSAPoint(303.6965011212758, 233.61647396554275); - p.SetSAAfter(37.959381027682795); - p.SetSABefore(37.959381027682795); + p = VSAPoint(261.71197071485875, 209.784519031137); + p.SetSABefore(38.032964089440014); + p.SetSAAfter(38.032964089440014); points.append(p); - p = VSAPoint(295.43000694760997, 230.10122907433865); - p.SetSAAfter(37.973032106608528); - p.SetSABefore(37.973032106608528); + p = VSAPoint(249.04426315206877, 199.10286678062653); + p.SetSABefore(38.058145046329095); + p.SetSAAfter(38.058145046329095); points.append(p); - p = VSAPoint(287.41627324945074, 226.16666397547993); - p.SetSAAfter(37.986599088053786); - p.SetSABefore(37.986599088053786); + p = VSAPoint(238.10879855930557, 187.94052305341705); + p.SetSABefore(38.081891784254736); + p.SetSAAfter(38.081891784254736); points.append(p); - p = VSAPoint(279.6830385294136, 221.85880133642502); - p.SetSAAfter(38.000051524725791); - p.SetSABefore(38.000051524725791); + p = VSAPoint(229.12748495749224, 176.66566918917607); + p.SetSABefore(38.10379739397839); + p.SetSAAfter(38.10379739397839); points.append(p); - p = VSAPoint(272.2580412901139, 217.2236638246324); - p.SetSAAfter(38.013353288194111); - p.SetSABefore(38.013353288194111); + p = VSAPoint(222.32223036755198, 165.64648652757114); + p.SetSABefore(38.12347885155327); + p.SetSAAfter(38.12347885155327); points.append(p); - p = VSAPoint(265.16902003416703, 212.3072741075605); - p.SetSAAfter(38.026463563868212); - p.SetSABefore(38.026463563868212); + p = VSAPoint(217.91494281040778, 155.2511564082697); + p.SetSABefore(38.140637376066095); + p.SetSAAfter(38.140637376066095); points.append(p); - p = VSAPoint(258.44371326418843, 207.15565485266765); - p.SetSAAfter(38.03933776597485); - p.SetSABefore(38.03933776597485); - points.append(p); - - p = VSAPoint(252.1098594827934, 201.81482872741242); - p.SetSAAfter(38.051928395587325); - p.SetSABefore(38.051928395587325); - points.append(p); - - p = VSAPoint(246.19519719259745, 196.33081839925325); - p.SetSAAfter(38.064185872874937); - p.SetSABefore(38.064185872874937); - points.append(p); - - p = VSAPoint(240.72746489621585, 190.74964653564848); - p.SetSAAfter(38.076059384395691); - p.SetSABefore(38.076059384395691); - points.append(p); - - p = VSAPoint(235.73440109626404, 185.11733580405664); - p.SetSAAfter(38.087497800100167); - p.SetSABefore(38.087497800100167); - points.append(p); - - p = VSAPoint(231.24374429535737, 179.47990887193612); - p.SetSAAfter(38.098450736467157); - p.SetSABefore(38.098450736467157); - points.append(p); - - p = VSAPoint(227.2832329961113, 173.88338840674544); - p.SetSAAfter(38.108869877607624); - p.SetSABefore(38.108869877607624); - points.append(p); - - p = VSAPoint(223.88060570114112, 168.37379707594295); - p.SetSAAfter(38.118710724548052); - p.SetSABefore(38.118710724548052); - points.append(p); - - p = VSAPoint(221.06360091306237, 162.99715754698713); - p.SetSAAfter(38.127935039089436); - p.SetSABefore(38.127935039089436); - points.append(p); - - p = VSAPoint(218.8599571344903, 157.79949248733644); - p.SetSAAfter(38.136514404353001); - p.SetSABefore(38.136514404353001); - points.append(p); - - p = VSAPoint(217.2974128680403, 152.82682456444928); - p.SetSAAfter(38.144435562325597); - p.SetSABefore(38.144435562325597); - points.append(p); - - p = VSAPoint(216.40370661632784, 148.12517644578412); - p.SetSAAfter(38.15170849722444); - p.SetSABefore(38.15170849722444); - points.append(p); - - p = VSAPoint(216.20657688196826, 143.7405707987994); - p.SetSAAfter(38.158378424653918); - p.SetSABefore(38.158378424653918); + p = VSAPoint(216.12753030698286, 145.84786017093933); + p.SetSABefore(38.15518307122048); + p.SetSAAfter(38.15518307122048); points.append(p); p = VSAPoint(216.7337621675769, 139.71903029095353); - p.SetSAAfter(38.164542166418755); - p.SetSABefore(38.164542166418755); + p.SetSABefore(38.16454227070837); + p.SetSAAfter(38.16454227070837); points.append(p); - p = VSAPoint(218.01300097576927, 136.10657758970495); - p.SetSAAfter(38.17036598425517); - p.SetSABefore(38.17036598425517); + p = VSAPoint(218.01300097576924, 136.10657758970495); + p.SetSABefore(38.17036601862179); + p.SetSAAfter(38.17036601862179); points.append(p); - p = VSAPoint(218.97637795275608, 134.48806299212646); - p.SetSAAfter(38.173228346456696); + p = VSAPoint(218.97637795275605, 134.48806299212646); p.SetSABefore(38.173228346456696); + p.SetSAAfter(38.173228346456696); points.append(p); - p = VSAPoint(218.97637795275608, 134.48806299212646); - p.SetSAAfter(38.173228346456696); + p = VSAPoint(218.97637795275605, 134.48806299212646); p.SetSABefore(38.173228346456696); + p.SetSAAfter(38.173228346456696); points.append(p); - p = VSAPoint(218.97637795275608, 134.48806299212646); - p.SetSAAfter(38.173228346456696); + p = VSAPoint(218.97637795275605, 134.48806299212646); p.SetSABefore(38.173228346456696); + p.SetSAAfter(38.173228346456696); points.append(p); p = VSAPoint(217.1202289172026, 137.73030103616844); - p.SetSAAfter(38.167995197589178); - p.SetSABefore(38.167995197589178); + p.SetSABefore(38.16799523335242); + p.SetSAAfter(38.16799523335242); points.append(p); p = VSAPoint(212.6973363405255, 143.4397404435662); - p.SetSAAfter(38.157878743288215); - p.SetSABefore(38.157878743288215); + p.SetSABefore(38.15787884818713); + p.SetSAAfter(38.15787884818713); points.append(p); p = VSAPoint(207.48487786706698, 148.24866810991395); - p.SetSAAfter(38.147944713012919); - p.SetSABefore(38.147944713012919); + p.SetSABefore(38.14794488580081); + p.SetSAAfter(38.14794488580081); points.append(p); p = VSAPoint(201.55301739671896, 152.18989767496004); - p.SetSAAfter(38.137968823998783); - p.SetSABefore(38.137968823998783); + p.SetSABefore(38.13796906496172); + p.SetSAAfter(38.13796906496172); points.append(p); p = VSAPoint(194.9719188293733, 155.29624277845284); - p.SetSAAfter(38.127775030254007); - p.SetSABefore(38.127775030254007); + p.SetSABefore(38.12777534088115); + p.SetSAAfter(38.12777534088115); points.append(p); p = VSAPoint(187.81174606492203, 157.6005170601407); - p.SetSAAfter(38.117238836985599); - p.SetSABefore(38.117238836985599); + p.SetSABefore(38.1172392196169); + p.SetSAAfter(38.1172392196169); points.append(p); p = VSAPoint(180.14266300325704, 159.13553415977202); - p.SetSAAfter(38.106283289982827); - p.SetSABefore(38.106283289982827); + p.SetSABefore(38.10628374748414); + p.SetSAAfter(38.10628374748414); points.append(p); p = VSAPoint(172.0348335442702, 159.93410771709506); - p.SetSAAfter(38.094871286509886); - p.SetSABefore(38.094871286509886); + p.SetSABefore(38.09487182200063); + p.SetSAAfter(38.09487182200063); points.append(p); - p = VSAPoint(163.55842158785353, 160.02905137185826); - p.SetSAAfter(38.082997200945435); - p.SetSABefore(38.082997200945435); + p = VSAPoint(159.23684047277425, 159.9047174285684); + p.SetSABefore(38.07694509829885); + p.SetSAAfter(38.07694509829885); points.append(p); - p = VSAPoint(154.78359103389897, 159.4531787638099); - p.SetSAAfter(38.070679409075119); - p.SetSABefore(38.070679409075119); + p = VSAPoint(141.23066996957303, 157.47696696634546); + p.SetSABefore(38.051494892780326); + p.SetSAAfter(38.051494892780326); points.append(p); - p = VSAPoint(145.78050578229832, 158.23930353269841); - p.SetSAAfter(38.057954219352141); - p.SetSABefore(38.057954219352141); + p = VSAPoint(122.73246407513939, 152.69408785036); + p.SetSABefore(38.02473158624051); + p.SetSAAfter(38.02473158624051); points.append(p); - p = VSAPoint(136.61932973294367, 156.42023931827214); - p.SetSAAfter(38.044871166362007); - p.SetSABefore(38.044871166362007); + p = VSAPoint(104.30353398860882, 145.81858919859886); + p.SetSABefore(37.99717939647611); + p.SetSAAfter(37.99717939647611); points.append(p); - p = VSAPoint(127.37022678572683, 154.0287997602794); - p.SetSAAfter(38.031489421641503); - p.SetSABefore(38.031489421641503); + p = VSAPoint(86.50519090911675, 137.11298012904894); + p.SetSABefore(37.969426027228295); + p.SetSAAfter(37.969426027228295); points.append(p); - p = VSAPoint(118.10336084053982, 151.09779849846862); - p.SetSAAfter(38.017875048227786); - p.SetSABefore(38.017875048227786); + p = VSAPoint(69.89874603579864, 126.83976975969698); + p.SetSABefore(37.94207342582994); + p.SetSAAfter(37.94207342582994); points.append(p); - p = VSAPoint(108.88889579727454, 147.66004917258803); - p.SetSAAfter(38.00409885919936); - p.SetSABefore(38.00409885919936); + p = VSAPoint(55.045510567789904, 115.26146720852991); + p.SetSABefore(37.91569349681988); + p.SetSAAfter(37.91569349681988); points.append(p); - p = VSAPoint(99.79699555582292, 143.7483654223861); - p.SetSAAfter(37.990234686678903); - p.SetSABefore(37.990234686678903); + p = VSAPoint(42.506795704226036, 102.64058159353453); + p.SetSABefore(37.890773443464376); + p.SetSAAfter(37.890773443464376); points.append(p); - p = VSAPoint(90.8978240160769, 139.3955608876111); - p.SetSAAfter(37.976357907221328); - p.SetSABefore(37.976357907221328); + p = VSAPoint(35.06235294654161, 92.63041313458488); + p.SetSABefore(37.87329933285639); + p.SetSAAfter(37.87329933285639); points.append(p); - p = VSAPoint(82.26154507792839, 134.63444920801146); - p.SetSAAfter(37.962544096747962); - p.SetSABefore(37.962544096747962); - points.append(p); - - p = VSAPoint(73.95832264126932, 129.49784402333552); - p.SetSAAfter(37.94886770258455); - p.SetSABefore(37.94886770258455); - points.append(p); - - p = VSAPoint(66.05832060599164, 124.01855897333157); - p.SetSAAfter(37.935400622146403); - p.SetSABefore(37.935400622146403); - points.append(p); - - p = VSAPoint(58.63170287198729, 118.22940769774803); - p.SetSAAfter(37.922210567500777); - p.SetSABefore(37.922210567500777); - points.append(p); - - p = VSAPoint(51.74863333914817, 112.16320383633325); - p.SetSAAfter(37.90935907207141); - p.SetSABefore(37.90935907207141); - points.append(p); - - p = VSAPoint(45.47927590736623, 105.85276102883554); - p.SetSAAfter(37.896898960241472); - p.SetSABefore(37.896898960241472); - points.append(p); - - p = VSAPoint(39.8937944765334, 99.33089291500332); - p.SetSAAfter(37.884871055952601); - p.SetSABefore(37.884871055952601); - points.append(p); - - p = VSAPoint(35.062352946541615, 92.63041313458488); - p.SetSAAfter(37.873299866072891); - p.SetSABefore(37.873299866072891); - points.append(p); - - p = VSAPoint(31.055115217282804, 85.78413532732864); - p.SetSAAfter(37.86218797621639); - p.SetSABefore(37.86218797621639); + p = VSAPoint(31.055115217282797, 85.78413532732864); + p.SetSABefore(37.86218751893835); + p.SetSAAfter(37.86218751893835); points.append(p); p = VSAPoint(27.94224518864889, 78.82487313298289); - p.SetSAAfter(37.851509027526909); - p.SetSABefore(37.851509027526909); + p.SetSABefore(37.851508643228605); + p.SetSAAfter(37.851508643228605); points.append(p); p = VSAPoint(25.793906760531815, 71.78544019129603); - p.SetSAAfter(37.841199561247805); - p.SetSABefore(37.841199561247805); + p.SetSABefore(37.84119924740421); + p.SetSAAfter(37.84119924740421); points.append(p); p = VSAPoint(24.68026383282351, 64.69865014201642); - p.SetSAAfter(37.831150915024352); - p.SetSABefore(37.831150915024352); + p.SetSABefore(37.83115066985303); + p.SetSAAfter(37.83115066985303); points.append(p); p = VSAPoint(24.671480305415898, 57.597316624892386); - p.SetSAAfter(37.821203708860601); - p.SetSABefore(37.821203708860601); + p.SetSABefore(37.8212035316683); + p.SetSAAfter(37.8212035316683); points.append(p); p = VSAPoint(25.837720078200917, 50.514253279672296); - p.SetSAAfter(37.811148513024627); - p.SetSABefore(37.811148513024627); + p.SetSABefore(37.81114840454936); + p.SetSAAfter(37.81114840454936); points.append(p); p = VSAPoint(28.2491470510705, 43.48227374610451); - p.SetSAAfter(37.800735391906976); - p.SetSABefore(37.800735391906976); + p.SetSABefore(37.80073535459479); + p.SetSAAfter(37.80073535459479); points.append(p); - p = VSAPoint(30.0, 39.999874015748034); - ////p.SetSAAfter(-1); - ////p.SetSABefore(-1); - points.append(p); + points.append(VSAPoint(30.0, 39.999874015748034)); return points; } @@ -1009,61 +2331,53 @@ QVector TST_VAbstractPiece::OutputPointsCase2() const { QVector points; - points += QPointF(6.735602739585184, 2.204598425196849); - points += QPointF(445.748031496063, 2.204598425196849); - points += QPointF(445.748031496063, 251.48446223243934); - points += QPointF(420.1672505436216, 265.34467354701); - points += QPointF(408.16868834563587, 270.74969811280204); - points += QPointF(395.75743565485675, 275.06821746196044); - points += QPointF(383.28015968092507, 278.216263983686); - points += QPointF(370.8288026520235, 280.2409452967658); - points += QPointF(358.4874104434599, 281.2043381226534); - points += QPointF(346.3281093878975, 281.1794055890767); - points += QPointF(334.4094715702431, 280.2452307190486); - points += QPointF(322.77695514341303, 278.48262025768446); - points += QPointF(311.46472096401544, 275.97070996938834); - points += QPointF(300.4980766475991, 272.78475431818316); - points += QPointF(289.8959627998986, 268.994968265893); - points += QPointF(279.67312801429796, 264.6661417252929); - points += QPointF(269.84184205634284, 259.8577269753623); - points += QPointF(260.4131332789275, 254.62414553625888); - points += QPointF(251.39760921382512, 249.0151257350064); - points += QPointF(242.80594716150756, 243.07593816151942); - points += QPointF(234.64914462550888, 236.84743207794344); - points += QPointF(226.93861367892654, 230.36578881474733); - points += QPointF(219.6862008839008, 223.6618981488572); - points += QPointF(212.90422632696564, 216.76022967199233); - points += QPointF(206.60567695694368, 209.67701009653408); - points += QPointF(200.8047886617048, 202.41742546763192); - points += QPointF(195.51846445950318, 194.97144814919497); - points += QPointF(195.49646472111115, 194.93594659378365); - points += QPointF(185.71068181674897, 196.88038239808796); - points += QPointF(174.06579870156523, 198.0108674081686); - points += QPointF(162.4698365016369, 198.12450807507133); - points += QPointF(150.93599464376967, 197.35134057907845); - points += QPointF(139.4731688630524, 195.78946993073865); - points += QPointF(128.09385198069478, 193.51339391764853); - points += QPointF(116.81695231109029, 190.58079085562875); - points += QPointF(105.66811291289228, 187.03735678012447); - points += QPointF(94.6789709925457, 182.91996300992662); - points += QPointF(83.88608373098256, 178.2585220934185); - points += QPointF(73.32986575781915, 173.07687844159756); - points += QPointF(63.05370660182625, 167.39293026852914); - points += QPointF(53.10337911388009, 161.21809122399117); - points += QPointF(43.52687054865665, 154.55612780781823); - points += QPointF(34.37485617471233, 147.40137397927876); - points += QPointF(25.702201154685437, 139.73635741878132); - points += QPointF(17.571137619050678, 131.52904674063026); - points += QPointF(10.057109595108484, 122.7304016692299); - points += QPointF(3.2585649313074336, 113.27395345986065); - points += QPointF(-2.688329688884947, 103.08109119247632); - points += QPointF(-7.591302782642628, 92.07847647311537); - points += QPointF(-11.187498579572614, 80.23547322967522); - points += QPointF(-13.151329717912063, 67.62324223181253); - points += QPointF(-13.149175120030888, 54.474729701833986); - points += QPointF(-10.94337542157982, 41.194055939258014); - points += QPointF(-6.654890183208465, 28.745230608885407); - points += QPointF(6.735602739585184, 2.204598425196849); + points += QPointF(6.735602489575015, 2.204598425196849); + points += QPointF(445.74803149606305, 2.204598425196849); + points += QPointF(445.748031496063, 251.4844627007215); + points += QPointF(421.3353745697487, 264.71175899157447); + points += QPointF(418.8511557813181, 265.9375381882219); + points += QPointF(409.64132100578746, 270.0863170137037); + points += QPointF(406.534680371908, 271.3182540481497); + points += QPointF(397.2710759906872, 274.5415428980511); + points += QPointF(394.0919849710222, 275.48841417378816); + points += QPointF(384.8024194256035, 277.83219356243256); + points += QPointF(381.6170070948525, 278.48670406257685); + points += QPointF(372.3292888267279, 279.99695450428766); + points += QPointF(369.1984911888747, 280.3682097399039); + points += QPointF(358.2408334277008, 281.22358539078493); + points += QPointF(340.1284056058474, 280.95032539874563); + points += QPointF(317.1003672226287, 277.46101449907337); + points += QPointF(295.1519528906243, 271.0847085461394); + points += QPointF(274.68871290802866, 262.4196148903778); + points += QPointF(255.81310453620574, 251.94235440791147); + points += QPointF(238.61081765006833, 240.0508703303418); + points += QPointF(223.16837814314113, 227.06961282699527); + points += QPointF(209.5774971397173, 213.23886816257252); + points += QPointF(197.93811921404816, 198.6726417606856); + points += QPointF(195.59837660985662, 194.8969375402249); + points += QPointF(195.2927772651506, 194.97641969682226); + points += QPointF(187.62154404176044, 196.50069439568804); + points += QPointF(183.8778341349861, 197.05831567247884); + points += QPointF(173.80935665477787, 198.03576335366748); + points += QPointF(156.58462346404755, 197.97207956246808); + points += QPointF(133.84749301666088, 194.8740254865072); + points += QPointF(111.24564892141993, 188.99632536164253); + points += QPointF(89.23016638120879, 180.74760051351964); + points += QPointF(68.08422273452526, 170.36786581256206); + points += QPointF(48.14786227034436, 157.9960303610079); + points += QPointF(29.800888286137585, 143.65294976668383); + points += QPointF(13.683525778751441, 127.38445078151254); + points += QPointF(3.3994938238576147, 113.51550175712616); + points += QPointF(-1.6212069307357524, 104.9101180366734); + points += QPointF(-3.5070767733614048, 101.24376431773773); + points += QPointF(-7.59130229548195, 92.07847667888365); + points += QPointF(-11.18749819246625, 80.23547351371789); + points += QPointF(-13.151329445248951, 67.6232425750484); + points += QPointF(-13.149174973239838, 54.47473007846592); + points += QPointF(-10.943375405772395, 41.194056317965945); + points += QPointF(-7.507583651313517, 31.220471153284027); + points += QPointF(-5.523329117990919, 26.502419601905103); + points += QPointF(6.735602489575015, 2.204598425196849); return points; } @@ -1073,670 +2387,324 @@ QVector TST_VAbstractPiece::InputPointsCase3() const { QVector points; - VSAPoint p = VSAPoint(30.0, 39.999874015748034); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); +// p = VSAPoint(25.837720078200917, 50.514253279672296); +// p.SetSABefore(37.81114840454936); +// p.SetSAAfter(37.81114840454936); +// points.append(p); + + points.append(VSAPoint(30.0, 39.999874015748034)); + points.append(VSAPoint(407.9527559055118, 39.999874015748034)); + points.append(VSAPoint(407.9527559055118, 228.97625196850396)); + points.append(VSAPoint(407.9527559055118, 228.97625196850396)); + + VSAPoint p = VSAPoint(404.6723012992244, 235.65623431697782); + p.SetSABefore(36.977845511186636); + p.SetSAAfter(36.977845511186636); points.append(p); - p = VSAPoint(407.9527559055118, 39.999874015748034); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); + p = VSAPoint(397.22283300301126, 246.53269098046195); + p.SetSABefore(35.52982410231174); + p.SetSAAfter(35.52982410231174); points.append(p); - p = VSAPoint(407.9527559055118, 228.97625196850396); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); + p = VSAPoint(388.92062499630856, 254.5956376373514); + p.SetSABefore(34.258630321759945); + p.SetSAAfter(34.258630321759945); points.append(p); - p = VSAPoint(407.9527559055118, 228.97625196850396); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); + p = VSAPoint(380.0029341567567, 260.0302961027146); + p.SetSABefore(33.111548444754845); + p.SetSAAfter(33.111548444754845); points.append(p); - p = VSAPoint(406.33770829042953, 232.38064611626584); - p.SetSAAfter(37.381380099110068); - p.SetSABefore(37.381380099110068); + p = VSAPoint(370.70701736199624, 263.02188819161995); + p.SetSABefore(32.03891394371319); + p.SetSAAfter(32.03891394371319); points.append(p); - p = VSAPoint(402.870644734503, 238.5569810399819); - p.SetSAAfter(36.603370955765051); - p.SetSABefore(36.603370955765051); + p = VSAPoint(361.27013148966773, 263.75563571913585); + p.SetSABefore(30.99923856743404); + p.SetSAAfter(30.99923856743404); points.append(p); - p = VSAPoint(399.14591058639644, 243.99520937172397); - p.SetSAAfter(35.879339211886929); - p.SetSABefore(35.879339211886929); + p = VSAPoint(351.9295334174118, 262.41676050033084); + p.SetSABefore(29.962781670363757); + p.SetSAAfter(29.962781670363757); points.append(p); - p = VSAPoint(395.19316295581496, 248.71848383837556); - p.SetSAAfter(35.202813177025682); - p.SetSABefore(35.202813177025682); + p = VSAPoint(342.92248002286897, 259.19048435027327); + p.SetSABefore(28.91189499226486); + p.SetSAAfter(28.91189499226486); points.append(p); - p = VSAPoint(391.04205895246355, 252.7499571668203); - p.SetSAAfter(34.56719781657663); - p.SetSABefore(34.56719781657663); + p = VSAPoint(334.48622818367966, 254.26202908403155); + p.SetSABefore(27.838718909311048); + p.SetSAAfter(27.838718909311048); points.append(p); - p = VSAPoint(386.72225568604733, 256.1127820839417); - p.SetSAAfter(33.965870279175178); - p.SetSABefore(33.965870279175178); + p = VSAPoint(326.8580347774845, 247.81661651667417); + p.SetSABefore(26.741788760884347); + p.SetSAAfter(26.741788760884347); points.append(p); - p = VSAPoint(382.2634102662714, 258.8301113166233); - p.SetSAAfter(33.392312673818843); - p.SetSABefore(33.392312673818843); + p = VSAPoint(320.27515668192393, 240.0394684632695); + p.SetSABefore(25.622615764841164); + p.SetSAAfter(25.622615764841164); points.append(p); - p = VSAPoint(377.6951798028408, 260.9250975917487); - p.SetSAAfter(32.840273714828662); - p.SetSABefore(32.840273714828662); + p = VSAPoint(314.97485077463864, 231.11580673888602); + p.SetSABefore(24.482580077336745); + p.SetSAAfter(24.482580077336745); points.append(p); - p = VSAPoint(373.0472214054606, 262.4208936362013); - p.SetSAAfter(32.303940879158468); - p.SetSABefore(32.303940879158468); + p = VSAPoint(311.19437393326905, 221.2308531585922); + p.SetSABefore(23.320121181910643); + p.SetSAAfter(23.320121181910643); points.append(p); - p = VSAPoint(368.34919218383584, 263.34065217686486); - p.SetSAAfter(31.778098176885351); - p.SetSABefore(31.778098176885351); + p = VSAPoint(309.1709830354557, 210.56982953745637); + p.SetSABefore(22.12821102042642); + p.SetSAAfter(22.12821102042642); points.append(p); - p = VSAPoint(363.6307492476716, 263.7075259406228); - p.SetSAAfter(31.25824538248542); - p.SetSABefore(31.25824538248542); + p = VSAPoint(309.14193495883904, 199.31795769054702); + p.SetSABefore(20.89230212706225); + p.SetSAAfter(20.89230212706225); points.append(p); - p = VSAPoint(358.921549706673, 263.5446676543588); - p.SetSAAfter(30.740662987580134); - p.SetSABefore(30.740662987580134); - points.append(p); - - p = VSAPoint(354.251250670545, 262.87523004495625); - p.SetSAAfter(30.222419479548449); - p.SetSABefore(30.222419479548449); - points.append(p); - - p = VSAPoint(349.6495092489928, 261.72236583929885); - p.SetSAAfter(29.701328542831337); - p.SetSABefore(29.701328542831337); - points.append(p); - - p = VSAPoint(345.1459825517213, 260.1092277642701); - p.SetSAAfter(29.175869934623716); - p.SetSABefore(29.175869934623716); - points.append(p); - - p = VSAPoint(340.7703276884358, 258.0589685467535); - p.SetSAAfter(28.645088729374258); - p.SetSABefore(28.645088729374258); - points.append(p); - - p = VSAPoint(336.5522017688411, 255.59474091363262); - p.SetSAAfter(28.108485094878901); - p.SetSABefore(28.108485094878901); - points.append(p); - - p = VSAPoint(332.52126190264244, 252.73969759179104); - p.SetSAAfter(27.565902911541084); - p.SetSABefore(27.565902911541084); - points.append(p); - - p = VSAPoint(328.7071651995449, 249.51699130811238); - p.SetSAAfter(27.017421899167815); - p.SetSABefore(27.017421899167815); - points.append(p); - - p = VSAPoint(325.1395687692534, 245.94977478948007); - p.SetSAAfter(26.463255170503039); - p.SetSABefore(26.463255170503039); - points.append(p); - - p = VSAPoint(321.84812972147313, 242.06120076277773); - p.SetSAAfter(25.903652411137717); - p.SetSABefore(25.903652411137717); - points.append(p); - - p = VSAPoint(318.86250516590917, 237.87442195488893); - p.SetSAAfter(25.338808050829666); - p.SetSABefore(25.338808050829666); - points.append(p); - - p = VSAPoint(316.2123522122665, 233.4125910926972); - p.SetSAAfter(24.768773642603289); - p.SetSABefore(24.768773642603289); - points.append(p); - - p = VSAPoint(313.9273279702502, 228.69886090308609); - p.SetSAAfter(24.19337403613525); - p.SetSABefore(24.19337403613525); - points.append(p); - - p = VSAPoint(312.03708954956545, 223.75638411293914); - p.SetSAAfter(23.612127698143627); - p.SetSABefore(23.612127698143627); - points.append(p); - - p = VSAPoint(310.57129405991714, 218.60831344913998); - p.SetSAAfter(23.024172586797707); - p.SetSABefore(23.024172586797707); - points.append(p); - - p = VSAPoint(309.55959861101053, 213.27780163857204); - p.SetSAAfter(22.42820018785644); - p.SetSABefore(22.42820018785644); - points.append(p); - - p = VSAPoint(309.03166031255046, 207.788001408119); - p.SetSAAfter(21.822401444747854); - p.SetSABefore(21.822401444747854); - points.append(p); - - p = VSAPoint(309.01713627424215, 202.1620654846643); - p.SetSAAfter(21.204429040574471); - p.SetSABefore(21.204429040574471); - points.append(p); - - p = VSAPoint(309.5456836057906, 196.42314659509157); - p.SetSAAfter(20.57138043760828); - p.SetSABefore(20.57138043760828); - points.append(p); - - p = VSAPoint(310.64695941690104, 190.59439746628436); - p.SetSAAfter(19.919804940549692); - p.SetSABefore(19.919804940549692); - points.append(p); - - p = VSAPoint(312.35062081727835, 184.6989708251262); - p.SetSAAfter(19.24573577317911); - p.SetSABefore(19.24573577317911); + p = VSAPoint(311.34448658105987, 187.66045943293258); + p.SetSABefore(19.58918900085386); + p.SetSAAfter(19.58918900085386); points.append(p); p = VSAPoint(313.4645669291343, 181.73215748031558); - p.SetSAAfter(18.897637795275593); p.SetSABefore(18.897637795275593); + p.SetSAAfter(18.897637795275593); points.append(p); p = VSAPoint(313.4645669291343, 181.73215748031558); - p.SetSAAfter(18.897637795275593); p.SetSABefore(18.897637795275593); + p.SetSAAfter(18.897637795275593); points.append(p); p = VSAPoint(313.4645669291343, 181.73215748031558); - p.SetSAAfter(18.897637795275593); p.SetSABefore(18.897637795275593); - points.append(p); - - p = VSAPoint(313.4645669291343, 181.73215748031558); p.SetSAAfter(18.897637795275593); - p.SetSABefore(18.897637795275593); points.append(p); - p = VSAPoint(313.4645669291343, 181.73215748031558); - p.SetSAAfter(18.897637795275593); - p.SetSABefore(18.897637795275593); + p = VSAPoint(316.591345021592, 173.28443556543095); + p.SetSABefore(19.976796375788812); + p.SetSAAfter(19.976796375788812); points.append(p); - p = VSAPoint(313.4645669291343, 181.73215748031558); - p.SetSAAfter(18.897637795275593); - p.SetSABefore(18.897637795275593); + p = VSAPoint(320.1426384331089, 158.63568876958243); + p.SetSABefore(21.782587487730186); + p.SetSAAfter(21.782587487730186); points.append(p); - p = VSAPoint(313.4645669291343, 181.73215748031558); - p.SetSAAfter(18.897637795275593); - p.SetSABefore(18.897637795275593); + p = VSAPoint(320.76512297484294, 146.51286504020334); + p.SetSABefore(23.23684508842329); + p.SetSAAfter(23.23684508842329); points.append(p); - p = VSAPoint(315.0998723566189, 177.44976641127198); - p.SetSAAfter(19.446824166328746); - p.SetSABefore(19.446824166328746); + p = VSAPoint(318.80758360045513, 136.72694951703215); + p.SetSABefore(24.432447936360937); + p.SetSAAfter(24.432447936360937); points.append(p); - p = VSAPoint(317.6731184586346, 169.45847196043132); - p.SetSAAfter(20.452631980165769); - p.SetSABefore(20.452631980165769); + p = VSAPoint(314.618805263607, 129.08892733980727); + p.SetSABefore(25.476072862288163); + p.SetSAAfter(25.476072862288163); points.append(p); - p = VSAPoint(319.4487651643931, 162.13409856250706); - p.SetSAAfter(21.355546141728666); - p.SetSABefore(21.355546141728666); + p = VSAPoint(308.54757291795954, 123.40978364826717); + p.SetSABefore(26.47203809949214); + p.SetSAAfter(26.47203809949214); points.append(p); - p = VSAPoint(320.470410593102, 155.4530193599665); - p.SetSAAfter(22.165276674578177); - p.SetSABefore(22.165276674578177); + p = VSAPoint(300.9426715171743, 119.50050358215026); + p.SetSABefore(27.49645076170011); + p.SetSAAfter(27.49645076170011); points.append(p); - p = VSAPoint(320.78165286396893, 149.39160749527696); - p.SetSAAfter(22.892420458564697); - p.SetSABefore(22.892420458564697); - points.append(p); - - p = VSAPoint(320.4260900962016, 143.92623611090573); - p.SetSAAfter(23.548583135932272); - p.SetSABefore(23.548583135932272); - points.append(p); - - p = VSAPoint(319.44732040900783, 139.03327834932014); - p.SetSAAfter(24.146396878545747); - p.SetSABefore(24.146396878545747); - points.append(p); - - p = VSAPoint(317.88894192159495, 134.68910735298743); - p.SetSAAfter(24.699324443869902); - p.SetSABefore(24.699324443869902); - points.append(p); - - p = VSAPoint(315.79455275317093, 130.870096264375); - p.SetSAAfter(25.221147659605332); - p.SetSABefore(25.221147659605332); - points.append(p); - - p = VSAPoint(313.2077510229431, 127.55261822595011); - p.SetSAAfter(25.725143604791594); - p.SetSABefore(25.725143604791594); - points.append(p); - - p = VSAPoint(310.1721348501194, 124.71304638018006); - p.SetSAAfter(26.223136485113741); - p.SetSABefore(26.223136485113741); - points.append(p); - - p = VSAPoint(306.73130235390744, 122.32775386953216); - p.SetSAAfter(26.724730852906816); - p.SetSABefore(26.724730852906816); - points.append(p); - - p = VSAPoint(302.9288516535148, 120.3731138364737); - p.SetSAAfter(27.236947738833074); - p.SetSABefore(27.236947738833074); - points.append(p); - - p = VSAPoint(298.80838086814924, 118.82549942347202); - p.SetSAAfter(27.764271724915222); - p.SetSABefore(27.764271724915222); - points.append(p); - - p = VSAPoint(294.41348811701835, 117.66128377299438); - p.SetSAAfter(28.308962477298437); - p.SetSABefore(28.308962477298437); - points.append(p); - - p = VSAPoint(289.7877715193297, 116.85684002750813); - p.SetSAAfter(28.871463995346204); - p.SetSABefore(28.871463995346204); + p = VSAPoint(292.1528860149125, 117.172072281195); + p.SetSABefore(28.585809818498724); + p.SetSAAfter(28.585809818498724); points.append(p); p = VSAPoint(282.5270013648352, 116.23547488513984); - p.SetSAAfter(29.744519639698659); - p.SetSABefore(29.744519639698659); + p.SetSABefore(29.74446055333082); + p.SetSAAfter(29.74446055333082); points.append(p); p = VSAPoint(272.4138025206039, 116.50169653372318); - p.SetSAAfter(30.956550523683344); - p.SetSABefore(30.956550523683344); + p.SetSABefore(30.95646646201516); + p.SetSAAfter(30.95646646201516); points.append(p); p = VSAPoint(262.16207443587984, 117.7817223666835); - p.SetSAAfter(32.194294958045219); - p.SetSABefore(32.194294958045219); + p.SetSABefore(32.19418539121919); + p.SetSAAfter(32.19418539121919); points.append(p); p = VSAPoint(252.12060206432426, 119.88653752375922); - p.SetSAAfter(33.423457501774081); - p.SetSABefore(33.423457501774081); + p.SetSABefore(33.42332260663002); + p.SetSAAfter(33.42332260663002); points.append(p); - p = VSAPoint(242.63817035959835, 122.62712714468876); - p.SetSAAfter(34.605995611034089); - p.SetSABefore(34.605995611034089); - points.append(p); - - p = VSAPoint(234.06356427536352, 125.81447636921058); - p.SetSAAfter(35.70195258686585); - p.SetSABefore(35.70195258686585); + p = VSAPoint(238.08031279315054, 124.1327387135843); + p.SetSABefore(35.18062492767001); + p.SetSAAfter(35.18062492767001); points.append(p); p = VSAPoint(226.74556876528095, 129.25957033706317); - p.SetSAAfter(36.670979260736637); - p.SetSABefore(36.670979260736637); + p.SetSABefore(36.67100242816486); + p.SetSAAfter(36.67100242816486); points.append(p); - p = VSAPoint(221.03296878301197, 132.77339418798488); - p.SetSAAfter(37.474483357433364); - p.SetSABefore(37.474483357433364); + p = VSAPoint(221.03296878301194, 132.77339418798488); + p.SetSABefore(37.47448996772893); + p.SetSAAfter(37.47448996772893); points.append(p); - p = VSAPoint(218.97637795275608, 134.48806299212646); - p.SetSAAfter(37.795275590551185); - p.SetSABefore(37.795275590551185); - points.append(p); - - p = VSAPoint(218.97637795275608, 134.48806299212646); - p.SetSAAfter(37.795275590551185); - p.SetSABefore(37.795275590551185); - points.append(p); - - p = VSAPoint(218.97637795275608, 134.48806299212646); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(218.97637795275608, 134.48806299212646); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(218.97637795275608, 134.48806299212646); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(218.97637795275608, 134.48806299212646); - p.SetSAAfter(37.795275590551185); - p.SetSABefore(37.795275590551185); - points.append(p); - - p = VSAPoint(218.97637795275608, 134.48806299212646); - p.SetSAAfter(37.795275590551185); - p.SetSABefore(37.795275590551185); - points.append(p); - - p = VSAPoint(214.11186185064025, 138.80795875858354); - p.SetSAAfter(36.653502722568419); - p.SetSABefore(36.653502722568419); - points.append(p); - - p = VSAPoint(205.18536816471078, 146.02812964687715); - p.SetSAAfter(34.638570080274732); - p.SetSABefore(34.638570080274732); - points.append(p); - - p = VSAPoint(197.17461091794695, 151.63888788459965); - p.SetSAAfter(32.922124316374287); - p.SetSABefore(32.922124316374287); - points.append(p); - - p = VSAPoint(190.02702368501878, 155.74482471949955); - p.SetSAAfter(31.475467886854414); - p.SetSABefore(31.475467886854414); - points.append(p); - - p = VSAPoint(183.69004004059613, 158.45053139932526); - p.SetSAAfter(30.266183845834068); - p.SetSABefore(30.266183845834068); - points.append(p); - - p = VSAPoint(178.11109355934906, 159.86059917182507); - p.SetSAAfter(29.256280085066027); - p.SetSABefore(29.256280085066027); - points.append(p); - - p = VSAPoint(173.23761781594754, 160.07961928474754); - p.SetSAAfter(28.400113855274189); - p.SetSABefore(28.400113855274189); - points.append(p); - - p = VSAPoint(169.01704638506152, 159.21218298584108); - p.SetSAAfter(27.643914239586497); - p.SetSABefore(27.643914239586497); - points.append(p); - - p = VSAPoint(165.396812841361, 157.36288152285397); - p.SetSAAfter(26.930461655777069); - p.SetSABefore(26.930461655777069); - points.append(p); - - p = VSAPoint(162.32435075951594, 154.63630614353477); - p.SetSAAfter(26.20953145720112); - p.SetSABefore(26.20953145720112); - points.append(p); - - p = VSAPoint(159.7470937141963, 151.13704809563185); - p.SetSAAfter(25.44681460859611); - p.SetSABefore(25.44681460859611); - points.append(p); - - p = VSAPoint(157.61247528007215, 146.96969862689363); - p.SetSAAfter(24.625073374270738); - p.SetSABefore(24.625073374270738); - points.append(p); - - p = VSAPoint(155.86792903181333, 142.23884898506853); - p.SetSAAfter(23.740148635253075); - p.SetSABefore(23.740148635253075); - points.append(p); - - p = VSAPoint(154.46088854408993, 137.049090417905); - p.SetSAAfter(22.796456338245449); - p.SetSABefore(22.796456338245449); - points.append(p); + points.append(VSAPoint(218.97637795275605, 134.48806299212646)); + points.append(VSAPoint(218.97637795275605, 134.48806299212646)); + points.append(VSAPoint(218.97637795275605, 134.48806299212646)); - p = VSAPoint(152.84240084594785, 128.65747053734566); - p.SetSAAfter(21.296571460906105); - p.SetSABefore(21.296571460906105); + p = VSAPoint(209.4131100947178, 142.83347127134166); + p.SetSABefore(35.567798456628196); + p.SetSAAfter(35.567798456628196); points.append(p); - p = VSAPoint(150.86615884353574, 110.74781740906135); - p.SetSAAfter(18.134320368513631); - p.SetSABefore(18.134320368513631); + p = VSAPoint(197.1746109179469, 151.63888788459965); + p.SetSABefore(32.921869998532244); + p.SetSAAfter(32.921869998532244); points.append(p); - p = VSAPoint(149.37382105332603, 94.00159365355543); - p.SetSAAfter(15.183683963183684); - p.SetSABefore(15.183683963183684); + p = VSAPoint(190.02702368501872, 155.74482471949955); + p.SetSABefore(31.47527442778118); + p.SetSAAfter(31.47527442778118); points.append(p); - p = VSAPoint(147.90386548781373, 84.77492816049366); - p.SetSAAfter(13.543967770207646); - p.SetSABefore(13.543967770207646); + p = VSAPoint(183.69004004059607, 158.45053139932526); + p.SetSABefore(30.26604125961245); + p.SetSAAfter(30.26604125961245); points.append(p); - p = VSAPoint(146.22482573007983, 79.58685396281504); - p.SetSAAfter(12.586956110891197); - p.SetSABefore(12.586956110891197); + p = VSAPoint(178.111093559349, 159.86059917182507); + p.SetSABefore(29.256179984052537); + p.SetSAAfter(29.256179984052537); points.append(p); - p = VSAPoint(144.767673193039, 77.0483056159666); - p.SetSAAfter(12.073257080584666); - p.SetSABefore(12.073257080584666); + p = VSAPoint(173.2376178159475, 160.07961928474754); + p.SetSABefore(28.40004977195057); + p.SetSAAfter(28.40004977195057); points.append(p); - p = VSAPoint(142.9646628872432, 75.4105345645091); - p.SetSAAfter(11.645769545279848); - p.SetSABefore(11.645769545279848); + p = VSAPoint(169.01704638506146, 159.21218298584103); + p.SetSABefore(27.643881968500146); + p.SetSAAfter(27.643881968500146); points.append(p); - p = VSAPoint(140.76322838736246, 74.77813205619103); - p.SetSAAfter(11.243788560650403); - p.SetSABefore(11.243788560650403); + p = VSAPoint(165.39681284136094, 157.3628815228539); + p.SetSABefore(26.930459398621437); + p.SetSAAfter(26.930459398621437); points.append(p); - p = VSAPoint(138.11080326806675, 75.25568933876076); - p.SetSAAfter(10.77079881073082); - p.SetSABefore(10.77079881073082); + p = VSAPoint(162.32435075951588, 154.6363061435347); + p.SetSABefore(26.20955952854878); + p.SetSAAfter(26.20955952854878); points.append(p); - p = VSAPoint(134.95482110402602, 76.94779765996674); - p.SetSAAfter(10.142330100270035); - p.SetSABefore(10.142330100270035); + p = VSAPoint(158.57569564750156, 149.20732231050295); + p.SetSABefore(25.05174589376139); + p.SetSAAfter(25.05174589376139); points.append(p); - p = VSAPoint(131.24271546991025, 79.95904826755734); - p.SetSAAfter(9.3034514353721871); - p.SetSABefore(9.3034514353721871); + p = VSAPoint(155.086603150984, 139.74562302685277); + p.SetSABefore(23.28197087076461); + p.SetSAAfter(23.28197087076461); points.append(p); - p = VSAPoint(126.92191994038947, 84.39403240928104); - p.SetSAAfter(8.216780859744869); - p.SetSABefore(8.216780859744869); + p = VSAPoint(152.8424008459478, 128.6574705373456); + p.SetSABefore(21.29660756707718); + p.SetSAAfter(21.29660756707718); points.append(p); - p = VSAPoint(124.4881889763782, 87.24396850393732); - p.SetSAAfter(7.559055118110237); - p.SetSABefore(7.559055118110237); + p = VSAPoint(150.86615884353571, 110.7478174090613); + p.SetSABefore(18.1344895060695); + p.SetSAAfter(18.1344895060695); points.append(p); - p = VSAPoint(124.4881889763782, 87.24396850393732); - p.SetSAAfter(7.559055118110237); - p.SetSABefore(7.559055118110237); + p = VSAPoint(149.37382105332603, 94.00159365355537); + p.SetSABefore(15.183977229796845); + p.SetSAAfter(15.183977229796845); points.append(p); - p = VSAPoint(124.4881889763782, 87.24396850393732); - //p.SetSAAfter(-1); - p.SetSABefore(7.559055118110237); + p = VSAPoint(147.90386548781373, 84.77492816049363); + p.SetSABefore(13.544330017337995); + p.SetSAAfter(13.544330017337995); points.append(p); - p = VSAPoint(124.4881889763782, 87.24396850393732); - //p.SetSAAfter(-1); - p.SetSABefore(7.559055118110237); + p = VSAPoint(145.57614310058185, 78.10545937151159); + p.SetSABefore(12.304638548569304); + p.SetSAAfter(12.304638548569304); points.append(p); - p = VSAPoint(124.4881889763782, 87.24396850393732); - //p.SetSAAfter(-1); - p.SetSABefore(7.559055118110237); + p = VSAPoint(142.96466288724318, 75.41053456450908); + p.SetSABefore(11.646068510270936); + p.SetSAAfter(11.646068510270936); points.append(p); - p = VSAPoint(124.4881889763782, 87.24396850393732); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); + p = VSAPoint(140.76322838736246, 74.778132056191); + p.SetSABefore(11.244104436407117); + p.SetSAAfter(11.244104436407117); points.append(p); - p = VSAPoint(124.4881889763782, 87.24396850393732); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); + p = VSAPoint(138.11080326806675, 75.25568933876073); + p.SetSABefore(10.771134584490436); + p.SetSAAfter(10.771134584490436); points.append(p); - p = VSAPoint(121.4053345233613, 90.85541892105327); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); + p = VSAPoint(134.95482110402602, 76.94779765996671); + p.SetSABefore(10.142692312810262); + p.SetSAAfter(10.142692312810262); points.append(p); - p = VSAPoint(115.36650087404239, 97.1700051724747); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); + p = VSAPoint(129.24106098216737, 81.80753304891735); + p.SetSABefore(8.826320717353354); + p.SetSAAfter(8.826320717353354); points.append(p); - p = VSAPoint(109.48439793077911, 102.44240810316538); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); + p = VSAPoint(124.48818897637818, 87.24396850393731); + p.SetSABefore(7.559055118110236); points.append(p); - p = VSAPoint(103.76400391356904, 106.72573235606063); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); + p = VSAPoint(124.48818897637818, 87.24396850393731); + p.SetSABefore(7.559055118110236); points.append(p); - p = VSAPoint(98.2102970424097, 110.0730825740958); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); + p = VSAPoint(124.48818897637818, 87.24396850393731); + p.SetSABefore(7.559055118110236); points.append(p); - p = VSAPoint(92.8282555372987, 112.53756340020624); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(87.62285761823352, 114.17227947732721); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(82.59908150521179, 115.03033544839411); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(77.76190541823104, 115.16483595634224); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(73.11630757728881, 114.62888564410696); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(68.66726620238268, 113.47558915462355); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(64.41975951351019, 111.7580511308274); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(60.3787657306689, 109.52937621565376); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(56.54926307385639, 106.84266905203805); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(52.93622976307019, 103.75103428291555); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(49.54464401830785, 100.30757655122164); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(44.854132804201555, 94.62627097468447); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(39.45938535079082, 86.2656734510919); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(35.040036121431584, 77.45366765004954); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(31.635910876104337, 68.61509071504); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(29.28683537478949, 60.17477978954592); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(28.03263537746753, 52.55757201704999); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(27.913136644118886, 46.188304541034846); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(28.62975536807624, 42.54811226326452); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(29.458368599363588, 40.697718569632514); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); - points.append(p); - - p = VSAPoint(30.0, 39.999874015748034); - //p.SetSAAfter(-1); - //p.SetSABefore(-1); - points.append(p); + points.append(VSAPoint(118.34735729968762, 94.27989595731356)); + points.append(VSAPoint(106.58315141316105, 104.8247018186949)); + points.append(VSAPoint(95.47573767084238, 111.51940225476525)); + points.append(VSAPoint(85.06494183271205, 114.78883440900722)); + points.append(VSAPoint(75.39058965875054, 115.05783542490349)); + points.append(VSAPoint(66.49250690893827, 112.7512424459367)); + points.append(VSAPoint(58.410519343255714, 108.29389261558948)); + points.append(VSAPoint(51.184452721683314, 102.11062307734451)); + points.append(VSAPoint(44.85413280420151, 94.62627097468442)); + points.append(VSAPoint(39.45938535079078, 86.26567345109187)); + points.append(VSAPoint(35.04003612143157, 77.45366765004948)); + points.append(VSAPoint(31.63591087610432, 68.61509071503997)); + points.append(VSAPoint(29.286835374789483, 60.17477978954592)); + points.append(VSAPoint(28.032635377467525, 52.55757201704999)); + points.append(VSAPoint(27.913136644118886, 46.188304541034846)); + points.append(VSAPoint(28.968164934724022, 41.49181450498314)); + points.append(VSAPoint(30.0, 39.999874015748034)); return points; } @@ -1746,102 +2714,1277 @@ QVector TST_VAbstractPiece::OutputPointsCase3() const { QVector points; - points += QPointF(11.491153250328935, 2.204598425196849); - points += QPointF(445.748031496063, 2.204598425196849); - points += QPointF(445.748031496063, 239.25772323190495); - points += QPointF(437.3011718875349, 252.9620940028659); - points += QPointF(431.5210396453687, 261.04286502132345); - points += QPointF(425.0742362286929, 268.54423500057675); - points += QPointF(418.11166285006243, 275.22268157509825); - points += QPointF(410.66293904201643, 281.0200956238725); - points += QPointF(402.78657384181963, 285.87157614021027); - points += QPointF(394.5732042205309, 289.71737969963584); - points += QPointF(386.1419584708077, 292.51680859777775); - points += QPointF(377.62937764888807, 294.2596521460023); - points += QPointF(369.17363576502424, 294.9709765895621); - points += QPointF(360.89908762820056, 294.7076951308071); - points += QPointF(352.90578450956633, 293.54885121734077); - points += QPointF(345.2659401705694, 291.58363457828597); - points += QPointF(338.02638381419206, 288.9008829382743); - points += QPointF(331.214452254774, 285.58206377611566); - points += QPointF(324.8447893417784, 281.69791760615396); - points += QPointF(318.92540323684557, 277.307901893045); - points += QPointF(313.4622927999198, 272.4613294067597); - points += QPointF(308.4626029358523, 267.199302528306); - points += QPointF(303.93656720661477, 261.5568795640949); - points += QPointF(299.8985555961715, 255.5651950634023); - points += QPointF(296.3674859139379, 249.25344082283073); - points += QPointF(293.36675891047514, 242.65070430384247); - points += QPointF(290.9237823363554, 235.7876787648548); - points += QPointF(289.0690799250026, 228.6982245333719); - points += QPointF(287.8349531366277, 221.42069049439027); - points += QPointF(287.2536910795491, 213.9988201772971); - points += QPointF(287.3554164994589, 206.48200110960104); - points += QPointF(288.165803158891, 198.9246157503596); - points += QPointF(289.7040578703973, 191.38436170566055); - points += QPointF(291.98164916416846, 183.91963819443603); - points += QPointF(294.9455451728963, 176.72393356713948); - points += QPointF(295.79237435003455, 175.03780734840188); - points += QPointF(296.245263052401, 173.2550222963373); - points += QPointF(297.59693481965496, 166.31235205234043); - points += QPointF(298.2857333094973, 160.53208953533525); - points += QPointF(298.43819035278193, 155.84335424804448); - points += QPointF(298.1940021729857, 152.25436961670644); - points += QPointF(297.7243212024687, 149.73346552056378); - points += QPointF(297.2141642634996, 148.17665975044923); - points += QPointF(296.81807124385705, 147.38451061538373); - points += QPointF(296.30769954702157, 146.83360641173047); - points += QPointF(294.9800374980412, 146.2693748418327); - points += QPointF(293.59863859999393, 145.93124637657365); - points += QPointF(291.70740855306775, 145.66527555041208); - points += QPointF(289.51401190033005, 145.54903057599236); - points += QPointF(285.1770288005626, 145.6959639947203); - points += QPointF(278.3617236899766, 146.6950293230864); - points += QPointF(271.14652259400714, 148.48714038237037); - points += QPointF(263.9194864200908, 150.92917578435245); - points += QPointF(257.2170705229372, 153.76755541765795); - points += QPointF(251.60582957396716, 156.6541701343772); - points += QPointF(247.78435692308207, 159.04593361720316); - points += QPointF(246.25434386618122, 160.2598011722792); - points += QPointF(243.67170607597288, 162.99575598015517); - points += QPointF(232.3489004893592, 169.9758475438662); - points += QPointF(220.7012128062336, 176.43583903855628); - points += QPointF(209.5894888372958, 181.6299305429989); - points += QPointF(198.8701621522812, 185.51474135189684); - points += QPointF(188.2122212804039, 188.0080506184889); - points += QPointF(177.3148127107667, 188.81408257358973); - points += QPointF(166.19194469464537, 187.37324105698534); - points += QPointF(155.57420181410697, 183.17620217869953); - points += QPointF(146.72912660379956, 176.5077748886884); - points += QPointF(140.4165418057526, 168.5601760939351); - points += QPointF(136.398647544906, 160.4725908270882); - points += QPointF(134.00844184248987, 152.736031987575); - points += QPointF(132.67609691771358, 145.39573210082384); - points += QPointF(132.02477039749073, 138.2597894386109); - points += QPointF(131.93387537548404, 132.84913141002448); - points += QPointF(124.89904457045232, 138.11668139199287); - points += QPointF(115.8895831399309, 143.54689645077573); - points += QPointF(106.4111230253516, 147.88716086368487); - points += QPointF(96.50699490577813, 150.99747783054613); - points += QPointF(86.32454442321412, 152.7366302609282); - points += QPointF(76.11298204383012, 153.0205687205323); - points += QPointF(66.1751535607697, 151.8740677833447); - points += QPointF(56.79043276012441, 149.44132674047353); - points += QPointF(48.150859730789605, 145.94779600016403); - points += QPointF(40.340747704632996, 141.64039002708367); - points += QPointF(33.35598458760446, 136.7400113658245); - points += QPointF(27.139387101639755, 131.42053399597268); - points += QPointF(21.454249077112927, 125.64844566928473); - points += QPointF(14.297732218982075, 116.98023078208763); - points += QPointF(6.592092174102573, 105.03828991585031); - points += QPointF(0.43109819620648937, 92.75351406859683); - points += QPointF(-4.287700865002457, 80.50147704363812); - points += QPointF(-7.673598677574605, 68.33582707450634); - points += QPointF(-9.704701735666333, 56.0002075290815); - points += QPointF(-9.95133102840429, 42.85489720779573); - points += QPointF(-7.622895431362345, 31.027194419301413); - points += QPointF(-3.18150493921823, 21.10903158131186); - points += QPointF(11.491153250328935, 2.204598425196849); + points += QPointF(10.185624773347756, 2.204598425196849); + points += QPointF(445.74803149606305, 2.204598425196849); + points += QPointF(445.748031496063, 239.54370877454926); + points += QPointF(434.2772499516588, 257.60252755179886); + points += QPointF(421.70410911168364, 272.23247310841623); + points += QPointF(406.8215280616999, 283.81580578394335); + points += QPointF(390.4268690095888, 291.4924548133903); + points += QPointF(373.43168069161504, 294.97206109652825); + points += QPointF(356.88925393255363, 294.44576261629163); + points += QPointF(341.59261122311955, 290.5110196449043); + points += QPointF(327.9415795488323, 283.8601978892787); + points += QPointF(316.0766275069774, 275.06080862168557); + points += QPointF(306.0568354718494, 264.51533811547125); + points += QPointF(297.96706395968476, 252.511650805464); + points += QPointF(291.95795669012034, 239.28944839897594); + points += QPointF(288.2457014751128, 225.09982730403647); + points += QPointF(287.08291204680114, 210.25330053220583); + points += QPointF(288.70312350739385, 195.14331998915887); + points += QPointF(293.1661864923215, 180.51562637269953); + points += QPointF(295.67056116540294, 175.36866212621038); + points += QPointF(297.03278914138764, 169.78727745627393); + points += QPointF(298.4272653364355, 158.08534773323754); + points += QPointF(297.94225297413215, 150.9565650350354); + points += QPointF(296.9126887137917, 147.81469899066454); + points += QPointF(296.3972469066644, 147.0940064443774); + points += QPointF(294.21114346945865, 146.12370067508155); + points += QPointF(290.48115362247165, 145.59912885424706); + points += QPointF(285.00652997672506, 145.7209025858372); + points += QPointF(278.36163578883384, 146.69497061341855); + points += QPointF(266.15085284299454, 149.72785233297387); + points += QPointF(268.76683081190356, 149.29112994946044); + points += QPointF(264.11356456471754, 150.8634687956155); + points += QPointF(254.1976334991026, 155.20769360077045); + points += QPointF(247.5665032053911, 159.21880811798434); + points += QPointF(240.66667729218545, 164.69290058326322); + points += QPointF(245.03051571796473, 161.55629083592723); + points += QPointF(243.53306498622524, 163.14262925675627); + points += QPointF(226.1305060641393, 173.66370879502696); + points += QPointF(209.78346359977252, 181.5593960732169); + points += QPointF(205.70527201989748, 183.03741399670108); + points += QPointF(202.38658536147173, 184.69191672318945); + points += QPointF(188.21241736536905, 188.00791613383734); + points += QPointF(177.31502181326212, 188.81402560575697); + points += QPointF(166.19214722698052, 187.3732642424327); + points += QPointF(155.57437225205163, 183.1763006101058); + points += QPointF(146.72924182900442, 176.50793105628702); + points += QPointF(140.1685902867883, 168.24813556221721); + points += QPointF(134.85380559162166, 156.67751165744627); + points += QPointF(132.20863928510303, 142.1050670962771); + points += QPointF(131.96761370902018, 132.827500480644); + points += QPointF(129.15133677704625, 135.35186071252022); + points += QPointF(111.11355282491606, 146.22365885487164); + points += QPointF(91.37199519960252, 152.42334659042638); + points += QPointF(71.0892515601446, 152.98732013057335); + points += QPointF(52.404520155294485, 148.14379692629467); + points += QPointF(36.77389835731295, 139.5232504514038); + points += QPointF(24.295634363907766, 128.84573062197663); + points += QPointF(14.420075278530305, 117.169833926539); + points += QPointF(6.592092174103988, 105.03828991585254); + points += QPointF(0.43109819620662115, 92.75351406859714); + points += QPointF(-3.633892542136806, 82.1990453602945); + points += QPointF(-4.775453591602712, 78.74896433599663); + points += QPointF(-7.124529092917548, 70.30865341050259); + points += QPointF(-8.006297887627618, 66.31522508588391); + points += QPointF(-9.70470173566634, 56.00020752908148); + points += QPointF(-9.960881193587724, 42.34587460321338); + points += QPointF(-6.297329478268652, 26.037464411020956); + points += QPointF(10.185624773347756, 2.204598425196849); + + return points; +} + +//--------------------------------------------------------------------------------------------------------------------- +QVector TST_VAbstractPiece::InputPointsIssue627() const +{ + QVector points; + + VSAPoint p = VSAPoint(11565.008125001965, -71.44488549419933); + p.SetSAAfter(0); + points.append(p); + + p = VSAPoint(11774.053467225081, -3376.8303371353477); + p.SetSABefore(0); + points.append(p); + + p = VSAPoint(11774.053467225081, -3376.8303371353477); + p.SetSABefore(0); + points.append(p); + + points.append(VSAPoint(11821.637653562488, -3457.444047544761)); + points.append(VSAPoint(11916.506852253828, -3619.698047174161)); + points.append(VSAPoint(12011.687139013728, -3784.3170132645946)); + points.append(VSAPoint(12107.923065894336, -3952.559914581168)); + points.append(VSAPoint(12205.959184947797, -4125.685719888987)); + points.append(VSAPoint(12306.540048226263, -4304.953397953153)); + points.append(VSAPoint(12463.260680635496, -4586.963758807588)); + points.append(VSAPoint(12688.625497168217, -4997.457976655285)); + points.append(VSAPoint(12937.571227539614, -5455.181123300274)); + points.append(VSAPoint(13363.424703096609, -6243.3010001396)); + + p = VSAPoint(13704.042216387523, -6875.648082494775); + p.SetSAAfter(0); + points.append(p); + + p = VSAPoint(13704.042216387523, -6875.648082494775); + p.SetSAAfter(0); + points.append(p); + + p = VSAPoint(13493.259591532773, -71.4448854942045); + p.SetSABefore(0); + points.append(p); + + p = VSAPoint(13493.259591532773, -71.4448854942045); + p.SetSABefore(0); + points.append(p); + + points.append(VSAPoint(13227.96813484252, -78.38238188976378)); + points.append(VSAPoint(12939.963705708662, -83.80364173228347)); + points.append(VSAPoint(12664.66535433071, -86.51427165354332)); + points.append(VSAPoint(12393.602362204725, -86.51427165354332)); + points.append(VSAPoint(12118.304010826774, -83.80364173228347)); + points.append(VSAPoint(11830.299581692912, -78.38238188976378)); + + p = VSAPoint(11565.008125001965, -71.44488549419933); + p.SetSAAfter(0); + points.append(p); + + return points; +} + +//--------------------------------------------------------------------------------------------------------------------- +QVector TST_VAbstractPiece::OutputPointsIssue627() const +{ + QVector points; + + points += QPointF(11561.41547872419, -14.638641388671703); + points += QPointF(11760.258895120205, -3158.7131695287526); + points += QPointF(11781.963967565265, -3501.9096738073645); + points += QPointF(11867.496139886349, -3648.1946350753437); + points += QPointF(11962.541506347354, -3812.580249902983); + points += QPointF(12058.65110785104, -3980.602304924286); + points += QPointF(12156.571541308, -4153.523816526403); + points += QPointF(12257.041160881332, -4332.593222274458); + points += QPointF(12413.634876614758, -4614.375203387231); + points += QPointF(12638.875580780275, -5024.643354851167); + points += QPointF(12887.730780405262, -5482.200047474014); + points += QPointF(13313.529827372417, -6270.219194236017); + points += QPointF(13707.971545534987, -7002.489438444618); + points += QPointF(13491.504163312642, -14.778496052733317); + points += QPointF(13226.693612049832, -21.703416545128476); + points += QPointF(12939.151113441983, -27.11598122480561); + points += QPointF(12664.386257521342, -29.82135826771654); + points += QPointF(12393.881459014092, -29.82135826771654); + points += QPointF(12119.116603093453, -27.11598122480561); + points += QPointF(11831.5741044856, -21.70341654512845); + points += QPointF(11561.41547872419, -14.638641388671703); + + return points; +} + +//--------------------------------------------------------------------------------------------------------------------- +QVector TST_VAbstractPiece::InputPointsIssue767_Fabric_TopCollar() const +{ + QVector points; + + // VSAPoint p = VSAPoint(-2845.8986453348375, -956.881848270395); + // p.SetSAAfter(43.46456692913386); + // points.append(p); + + points.append(VSAPoint(-2956.503052984476, -931.8887725360864)); + + VSAPoint p = VSAPoint(-2845.8999353737872, -956.8546710275792); + p.SetSAAfter(43.46456692913386); + points.append(p); + + p = VSAPoint(-2845.8999353737872, -956.8546710275792); + p.SetSAAfter(43.46456692913386); + points.append(p); + + p = VSAPoint(-2836.2633663612596, -967.4426562856014); + p.SetSABefore(43.975870702724364); + p.SetSAAfter(43.975870702724364); + points.append(p); + + p = VSAPoint(-2816.781399798798, -990.3120607327689); + p.SetSABefore(45.04880285928504); + p.SetSAAfter(45.04880285928504); + points.append(p); + + p = VSAPoint(-2797.0552023132714, -1015.1078931004015); + p.SetSABefore(46.18040144375942); + p.SetSAAfter(46.18040144375942); + points.append(p); + + p = VSAPoint(-2777.0918442622597, -1041.7127169475177); + p.SetSABefore(47.36830653518281); + p.SetSAAfter(47.36830653518281); + points.append(p); + + p = VSAPoint(-2746.7450331166083, -1084.5654944804478); + p.SetSABefore(49.243630059870085); + p.SetSAAfter(49.243630059870085); + points.append(p); + + p = VSAPoint(-2705.4801979126455, -1147.2198537598051); + p.SetSABefore(51.9229573891882); + p.SetSAAfter(51.9229573891882); + points.append(p); + + p = VSAPoint(-2690.741587315989, -1170.7115882155053); + p.SetSABefore(52.91338582677166); + p.SetSAAfter(52.91338582677166); + points.append(p); + + p = VSAPoint(-2690.741587315989, -1170.7115882155053); + p.SetSABefore(52.91338582677166); + p.SetSAAfter(52.91338582677166); + points.append(p); + + p = VSAPoint(-2690.741587315989, -1170.7115882155053); + p.SetSABefore(52.91338582677166); + p.SetSAAfter(52.91338582677166); + points.append(p); + + p = VSAPoint(-2663.393986883198, -1214.996323019432); + p.SetSABefore(53.464106209918555); + p.SetSAAfter(53.464106209918555); + points.append(p); + + p = VSAPoint(-2620.5429628889106, -1286.9554107314775); + p.SetSABefore(54.35027638570753); + p.SetSAAfter(54.35027638570753); + points.append(p); + + p = VSAPoint(-2555.034059572721, -1400.452077976559); + p.SetSABefore(55.73686065985781); + p.SetSAAfter(55.73686065985781); + points.append(p); + + p = VSAPoint(-2510.4169214986496, -1479.023939177109); + p.SetSABefore(56.69291338582678); + p.SetSAAfter(56.69291338582678); + points.append(p); + + p = VSAPoint(-2510.4169214986496, -1479.023939177109); + p.SetSABefore(56.69291338582678); + p.SetSAAfter(56.69291338582678); + points.append(p); + + p = VSAPoint(-2510.41692149865, -1479.0239391771088); + p.SetSABefore(56.69291338582678); + p.SetSAAfter(56.69291338582678); + points.append(p); + + p = VSAPoint(-2465.770203618369, -1557.5789960796274); + p.SetSABefore(55.73686065985781); + p.SetSAAfter(55.73686065985781); + points.append(p); + + p = VSAPoint(-2401.820804615958, -1671.9616182591394); + p.SetSABefore(54.35027638570753); + p.SetSAAfter(54.35027638570753); + points.append(p); + + p = VSAPoint(-2361.950025594169, -1745.613784160113); + p.SetSABefore(53.464106209918555); + p.SetSAAfter(53.464106209918555); + points.append(p); + + p = VSAPoint(-2337.912872786133, -1791.7791853927329); + p.SetSABefore(52.91338582677166); + p.SetSAAfter(52.91338582677166); + points.append(p); + + p = VSAPoint(-2337.912872786133, -1791.7791853927329); + p.SetSABefore(52.91338582677166); + p.SetSAAfter(52.91338582677166); + points.append(p); + + p = VSAPoint(-2337.912872786133, -1791.7791853927329); + p.SetSABefore(52.91338582677166); + p.SetSAAfter(52.91338582677166); + points.append(p); + + p = VSAPoint(-2325.280421100769, -1816.4674294468161); + p.SetSABefore(51.92295738918819); + p.SetSAAfter(51.92295738918819); + points.append(p); + + p = VSAPoint(-2292.590031111732, -1883.9929339875566); + p.SetSABefore(49.24363005987009); + p.SetSAAfter(49.24363005987009); + points.append(p); + + p = VSAPoint(-2271.318537325938, -1932.0014024188404); + p.SetSABefore(47.36830653518281); + p.SetSAAfter(47.36830653518281); + points.append(p); + + p = VSAPoint(-2258.687165687168, -1962.7715302562779); + p.SetSABefore(46.18040144375943); + p.SetSAAfter(46.18040144375943); + points.append(p); + + p = VSAPoint(-2247.488245160975, -1992.4117115831486); + p.SetSABefore(45.048802859285026); + p.SetSAAfter(45.048802859285026); + points.append(p); + + p = VSAPoint(-2237.8190307443556, -2020.8557438829903); + p.SetSABefore(43.97587070272435); + p.SetSAAfter(43.97587070272435); + points.append(p); + + p = VSAPoint(-2233.6582717055753, -2034.5545386613094); + p.SetSABefore(43.46456692913386); + points.append(p); + + p = VSAPoint(-2233.6582717055753, -2034.5545386613094); + p.SetSABefore(43.46456692913386); + points.append(p); + + points.append(VSAPoint(-2268.843635583417, -2142.3429233856164)); + points.append(VSAPoint(-2142.3122611221115, -2153.915659267329)); + points.append(VSAPoint(-2102.05157470339, -2047.9183817466978)); + points.append(VSAPoint(-1984.1456543967456, -1869.9284917765406)); + + p = VSAPoint(-1957.540323165074, -1829.765289335082); + p.SetSAAfter(22.67716535433071); + points.append(p); + + p = VSAPoint(-2074.675746476508, -1711.446016505495); + p.SetSABefore(22.67716535433071); + p.SetSAAfter(22.67716535433071); + points.append(p); + + p = VSAPoint(-2074.675746476508, -1711.446016505495); + p.SetSABefore(22.67716535433071); + p.SetSAAfter(22.67716535433071); + points.append(p); + + p = VSAPoint(-2104.9501005136362, -1680.2660923950884); + p.SetSABefore(22.67716535433071); + p.SetSAAfter(22.67716535433071); + points.append(p); + + p = VSAPoint(-2157.060300446018, -1624.0358190720049); + p.SetSABefore(22.67716535433071); + p.SetSAAfter(22.67716535433071); + points.append(p); + + p = VSAPoint(-2193.427447844697, -1582.9264609829493); + p.SetSABefore(22.67716535433071); + p.SetSAAfter(22.67716535433071); + points.append(p); + + p = VSAPoint(-2229.9021223993304, -1539.6063550266792); + p.SetSABefore(22.67716535433071); + p.SetSAAfter(22.67716535433071); + points.append(p); + + p = VSAPoint(-2265.283071500467, -1494.9101438927273); + p.SetSABefore(22.67716535433071); + p.SetSAAfter(22.67716535433071); + points.append(p); + + p = VSAPoint(-2298.369042538657, -1449.6724702706276); + p.SetSABefore(22.67716535433071); + p.SetSAAfter(22.67716535433071); + points.append(p); + + p = VSAPoint(-2320.8174013740727, -1415.9196938584569); + p.SetSABefore(22.67716535433071); + p.SetSAAfter(22.67716535433071); + points.append(p); + + p = VSAPoint(-2334.512979024599, -1393.6772377027328); + p.SetSABefore(22.67716535433071); + p.SetSAAfter(22.67716535433071); + points.append(p); + + p = VSAPoint(-2340.8464205786395, -1382.6908795653735); + p.SetSABefore(22.67716535433071); + p.SetSAAfter(22.67716535433071); + points.append(p); + + p = VSAPoint(-2340.8464205786395, -1382.690879565374); + p.SetSABefore(22.67716535433071); + p.SetSAAfter(22.67716535433071); + points.append(p); + + p = VSAPoint(-2340.8464205786395, -1382.690879565374); + p.SetSABefore(22.67716535433071); + p.SetSAAfter(22.67716535433071); + points.append(p); + + p = VSAPoint(-2347.0406240734856, -1371.625420238929); + p.SetSABefore(22.67716535433071); + p.SetSAAfter(22.67716535433071); + points.append(p); + + p = VSAPoint(-2359.1340239739197, -1348.4727663549988); + p.SetSABefore(22.67716535433071); + p.SetSAAfter(22.67716535433071); + points.append(p); + + p = VSAPoint(-2376.632959709957, -1311.9082209860264); + p.SetSABefore(22.67716535433071); + p.SetSAAfter(22.67716535433071); + points.append(p); + + p = VSAPoint(-2398.5505312977116, -1260.3257758135142); + p.SetSABefore(22.67716535433071); + p.SetSAAfter(22.67716535433071); + points.append(p); + + p = VSAPoint(-2418.8279356815838, -1207.049235756178); + p.SetSABefore(22.67716535433071); + p.SetSAAfter(22.67716535433071); + points.append(p); + + p = VSAPoint(-2437.3632941454625, -1153.5377981886413); + p.SetSABefore(22.67716535433071); + p.SetSAAfter(22.67716535433071); + points.append(p); + + p = VSAPoint(-2454.0547279732336, -1101.2506604855253); + p.SetSABefore(22.67716535433071); + p.SetSAAfter(22.67716535433071); + points.append(p); + + p = VSAPoint(-2475.6739880089963, -1027.6984737710059); + p.SetSABefore(22.67716535433071); + p.SetSAAfter(22.67716535433071); + points.append(p); + + p = VSAPoint(-2486.9558756792776, -985.7289230170218); + p.SetSABefore(22.67716535433071); + p.SetSAAfter(22.67716535433071); + points.append(p); + + p = VSAPoint(-2486.9558756792776, -985.7289230170218); + p.SetSABefore(22.67716535433071); + p.SetSAAfter(22.67716535433071); + points.append(p); + + p = VSAPoint(-2528.6142143955344, -824.5310925952923); + p.SetSABefore(22.67716535433071); + points.append(p); + + points.append(VSAPoint(-2576.735791027546, -826.8202720880508)); + points.append(VSAPoint(-2789.994527521454, -836.9651369943699)); + points.append(VSAPoint(-2901.6577688078787, -817.2758948021979)); + + return points; +} + +//--------------------------------------------------------------------------------------------------------------------- +QVector TST_VAbstractPiece::OutputPointsIssue767_Fabric_TopCollar() const +{ + QVector points; + + points += QPointF(-3011.0517548790103, -958.3219444006113); + points += QPointF(-2875.704655596311, -988.873180340486); + points += QPointF(-2868.785856897648, -997.0427375924612); + points += QPointF(-2869.7392507631107, -995.9600609286653); + points += QPointF(-2852.5415024022873, -1017.6725348741263); + points += QPointF(-2834.5617365102394, -1042.0076837341114); + points += QPointF(-2816.318152801347, -1068.2197024431434); + points += QPointF(-2788.3520303679693, -1110.8598835568037); + points += QPointF(-2748.84326164774, -1175.7792341372995); + points += QPointF(-2749.463357194371, -1174.8146939231094); + points += QPointF(-2735.5637236883463, -1198.8327989055008); + points += QPointF(-2709.3979303070278, -1242.234412525294); + points += QPointF(-2667.7155430266657, -1313.9462711856888); + points += QPointF(-2603.3069903890537, -1428.3146296654857); + points += QPointF(-2559.7159427255197, -1507.0184553230588); + points += QPointF(-2514.227494695693, -1585.1196674161204); + points += QPointF(-2449.1583954294993, -1698.6620182726447); + points += QPointF(-2408.901620525935, -1771.183767809588); + points += QPointF(-2384.8455512861474, -1816.21584000147); + points += QPointF(-2371.503784159133, -1840.1189454999956); + points += QPointF(-2372.0148030467776, -1839.0924387985017); + points += QPointF(-2336.479706267199, -1906.2692337682788); + points += QPointF(-2314.171878902582, -1952.123894247254); + points += QPointF(-2300.9973669393667, -1981.2156543505293); + points += QPointF(-2289.299963085879, -2009.1198152343736); + points += QPointF(-2279.45497012318, -2035.0093920383335); + points += QPointF(-2279.8968116139968, -2033.636102295412); + points += QPointF(-2276.4218852914523, -2043.7621246230262); + points += QPointF(-2319.4788717575434, -2175.664782739319); + points += QPointF(-2117.1714492551437, -2194.168101599941); + points += QPointF(-2068.2154029909548, -2065.2779091126845); + points += QPointF(-1952.6366140283867, -1890.801039106245); + points += QPointF(-1917.5866708240478, -1837.8899156844163); + points += QPointF(-2058.482716230266, -1695.5698799023787); + points += QPointF(-2088.4965443596293, -1664.6582745816295); + points += QPointF(-2140.249137288814, -1608.8138823251727); + points += QPointF(-2176.2589010959327, -1568.108510006008); + points += QPointF(-2212.3342540344497, -1525.2626688631194); + points += QPointF(-2247.2342025287544, -1481.1740984291687); + points += QPointF(-2279.7666296737902, -1436.6932724131166); + points += QPointF(-2301.7153187064755, -1403.691786696855); + points += QPointF(-2315.030637739082, -1382.066893805181); + points += QPointF(-2321.1285274245947, -1371.4891377154586); + points += QPointF(-2327.0923575597108, -1360.8352223500915); + points += QPointF(-2338.84998341349, -1338.3254034298122); + points += QPointF(-2355.95941674385, -1302.57473489304); + points += QPointF(-2377.5102970264106, -1251.8552883456102); + points += QPointF(-2397.5120320442174, -1199.3030377360624); + points += QPointF(-2415.8444669892974, -1146.3774388092156); + points += QPointF(-2432.371872429092, -1094.6041320326606); + points += QPointF(-2453.842769979148, -1021.5566982667648); + points += QPointF(-2465.02757138208, -979.9483164185621); + points += QPointF(-2515.136197939205, -786.0519169140614); + points += QPointF(-2578.5317097224242, -789.0676889577924); + points += QPointF(-2787.581316069137, -799.0123226453655); + points += QPointF(-2923.36118702248, -775.0706679591581); + points += QPointF(-3011.0517548790103, -958.3219444006113); + + return points; +} + +//--------------------------------------------------------------------------------------------------------------------- +QVector TST_VAbstractPiece::InputPointsIssue767_SkinFusing_TopCollar_Notch() const +{ + QVector points; + + // VSAPoint p = VSAPoint(-2956.4986596431745, -931.902205605136); + // p.SetSAAfter(0.0); + // p.SetSABefore(0.0); + // points.append(p); + + VSAPoint p = VSAPoint(-2956.503052984476, -931.8887725360864); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2845.8999353737872, -956.8546710275792); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2845.8999353737872, -956.8546710275792); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2836.2633663612596, -967.4426562856014); + p.SetSABefore(0.43513121779510383); + p.SetSAAfter(0.43513121779510383); + points.append(p); + + p = VSAPoint(-2816.781399798798, -990.3120607327689); + p.SetSABefore(1.3482210481660497); + p.SetSAAfter(1.3482210481660497); + points.append(p); + + p = VSAPoint(-2797.0552023132714, -1015.1078931004015); + p.SetSABefore(2.3112373518788916); + p.SetSAAfter(2.3112373518788916); + points.append(p); + + p = VSAPoint(-2777.0918442622597, -1041.7127169475177); + p.SetSABefore(3.3221717821615027); + p.SetSAAfter(3.3221717821615027); + points.append(p); + + p = VSAPoint(-2746.7450331166083, -1084.5654944804478); + p.SetSABefore(4.918115037824846); + p.SetSAAfter(4.918115037824846); + points.append(p); + + p = VSAPoint(-2705.4801979126455, -1147.2198537598051); + p.SetSABefore(7.1982839391629785); + p.SetSAAfter(7.1982839391629785); + points.append(p); + + p = VSAPoint(-2663.393986883198, -1214.996323019432); + p.SetSABefore(9.623062142943597); + p.SetSAAfter(9.623062142943597); + points.append(p); + + p = VSAPoint(-2620.5429628889106, -1286.9554107314775); + p.SetSABefore(12.168538502609866); + p.SetSAAfter(12.168538502609866); + points.append(p); + + p = VSAPoint(-2555.034059572721, -1400.452077976559); + p.SetSABefore(16.151427553679724); + p.SetSAAfter(16.151427553679724); + points.append(p); + + p = VSAPoint(-2510.4169214986496, -1479.023939177109); + p.SetSABefore(18.897637795275593); + p.SetSAAfter(18.897637795275593); + points.append(p); + + p = VSAPoint(-2510.4169214986496, -1479.023939177109); + p.SetSABefore(18.897637795275593); + p.SetSAAfter(18.897637795275593); + points.append(p); + + p = VSAPoint(-2510.41692149865, -1479.0239391771088); + p.SetSABefore(18.897637795275593); + p.SetSAAfter(18.897637795275593); + points.append(p); + + p = VSAPoint(-2465.770203618369, -1557.5789960796274); + p.SetSABefore(16.15142755367971); + p.SetSAAfter(16.15142755367971); + points.append(p); + + p = VSAPoint(-2401.820804615958, -1671.9616182591394); + p.SetSABefore(12.168538502609852); + p.SetSAAfter(12.168538502609852); + points.append(p); + + p = VSAPoint(-2361.950025594169, -1745.613784160113); + p.SetSABefore(9.62306214294358); + p.SetSAAfter(9.62306214294358); + points.append(p); + + p = VSAPoint(-2325.280421100769, -1816.4674294468161); + p.SetSABefore(7.198283939162968); + p.SetSAAfter(7.198283939162968); + points.append(p); + + p = VSAPoint(-2292.590031111732, -1883.9929339875566); + p.SetSABefore(4.918115037824851); + p.SetSAAfter(4.918115037824851); + points.append(p); + + p = VSAPoint(-2271.318537325938, -1932.0014024188404); + p.SetSABefore(3.3221717821615044); + p.SetSAAfter(3.3221717821615044); + points.append(p); + + p = VSAPoint(-2258.687165687168, -1962.7715302562779); + p.SetSABefore(2.3112373518789013); + p.SetSAAfter(2.3112373518789013); + points.append(p); + + p = VSAPoint(-2247.488245160975, -1992.4117115831486); + p.SetSABefore(1.3482210481660388); + p.SetSAAfter(1.3482210481660388); + points.append(p); + + p = VSAPoint(-2237.8190307443556, -2020.8557438829903); + p.SetSABefore(0.4351312177950959); + p.SetSAAfter(0.4351312177950959); + points.append(p); + + p = VSAPoint(-2233.6582717055753, -2034.5545386613094); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2233.6582717055753, -2034.5545386613094); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2268.843635583417, -2142.3429233856164); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2142.3122611221115, -2153.915659267329); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2102.05157470339, -2047.9183817466978); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-1957.540323165074, -1829.765289335082); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2074.675746476508, -1711.446016505495); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2074.675746476508, -1711.446016505495); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2104.9501005136362, -1680.2660923950884); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2157.060300446018, -1624.0358190720049); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2193.427447844697, -1582.9264609829493); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2229.9021223993304, -1539.6063550266792); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2265.283071500467, -1494.9101438927273); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2298.369042538657, -1449.6724702706276); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2320.8174013740727, -1415.9196938584569); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2334.512979024599, -1393.6772377027328); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2340.8464205786395, -1382.6908795653735); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2340.8464205786395, -1382.690879565374); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2340.8464205786395, -1382.690879565374); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2347.0406240734856, -1371.625420238929); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2359.1340239739197, -1348.4727663549988); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2376.632959709957, -1311.9082209860264); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2398.5505312977116, -1260.3257758135142); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2418.8279356815838, -1207.049235756178); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2437.3632941454625, -1153.5377981886413); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2454.0547279732336, -1101.2506604855253); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2475.6739880089963, -1027.6984737710059); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2486.9558756792776, -985.7289230170218); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2486.9558756792776, -985.7289230170218); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2528.6142143955344, -824.5310925952923); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2789.994527521454, -836.9651369943699); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(-2901.6577688078787, -817.2758948021979); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + return points; +} + +//--------------------------------------------------------------------------------------------------------------------- +QVector TST_VAbstractPiece::OutputPointsIssue767_SkinFusing_TopCollar_Notch() const +{ + QVector points; + + points += QPointF(-2956.503052984476, -931.8887725360864); + points += QPointF(-2845.8999353737872, -956.8546710275792); + points += QPointF(-2836.5851689927185, -967.7355423437981); + points += QPointF(-2817.8474487692724, -991.136726507766); + points += QPointF(-2798.925476794025, -1016.4643697746903); + points += QPointF(-2779.83354016522, -1043.5867062304706); + points += QPointF(-2750.887165791067, -1087.2141100776162); + points += QPointF(-2711.65687579555, -1150.9111085764941); + points += QPointF(-2671.760583609897, -1219.7424702384794); + points += QPointF(-2631.217741006335, -1292.785732104274); + points += QPointF(-2569.022589526747, -1408.5260882408015); + points += QPointF(-2526.849928574273, -1488.3554445590923); + points += QPointF(-2479.8121574890624, -1565.559731854928); + points += QPointF(-2412.2945618796525, -1678.145787075361); + points += QPointF(-2370.3106788529753, -1750.3703933828758); + points += QPointF(-2331.6136749119755, -1819.8830711074306); + points += QPointF(-2296.985964337713, -1886.194796550727); + points += QPointF(-2274.3320398964784, -1933.3969433585041); + points += QPointF(-2260.809956115591, -1963.683515123611); + points += QPointF(-2248.7424468838362, -1992.9051810211831); + points += QPointF(-2238.2310088750087, -2020.9957910056432); + points += QPointF(-2233.6582717055753, -2034.5545386613094); + points += QPointF(-2268.843635583417, -2142.3429233856164); + points += QPointF(-2142.3122611221115, -2153.915659267329); + points += QPointF(-2102.05157470339, -2047.9183817466978); + points += QPointF(-1957.540323165074, -1829.765289335082); + points += QPointF(-2074.675746476508, -1711.446016505495); + points += QPointF(-2104.9501005136362, -1680.2660923950884); + points += QPointF(-2157.060300446018, -1624.0358190720049); + points += QPointF(-2193.427447844697, -1582.9264609829493); + points += QPointF(-2229.9021223993304, -1539.6063550266792); + points += QPointF(-2265.283071500467, -1494.9101438927273); + points += QPointF(-2298.369042538657, -1449.6724702706276); + points += QPointF(-2320.8174013740727, -1415.9196938584569); + points += QPointF(-2334.512979024599, -1393.6772377027328); + points += QPointF(-2340.8464205786395, -1382.6908795653735); + points += QPointF(-2347.0406240734856, -1371.625420238929); + points += QPointF(-2359.1340239739197, -1348.4727663549988); + points += QPointF(-2376.632959709957, -1311.9082209860264); + points += QPointF(-2398.5505312977116, -1260.3257758135142); + points += QPointF(-2418.8279356815838, -1207.049235756178); + points += QPointF(-2437.3632941454625, -1153.5377981886413); + points += QPointF(-2454.0547279732336, -1101.2506604855253); + points += QPointF(-2475.6739880089963, -1027.6984737710059); + points += QPointF(-2486.9558756792776, -985.7289230170218); + points += QPointF(-2528.6142143955344, -824.5310925952923); + points += QPointF(-2789.994527521454, -836.9651369943699); + points += QPointF(-2901.6577688078787, -817.2758948021979); + points += QPointF(-2956.503052984476, -931.8887725360864); + + return points; +} + +//--------------------------------------------------------------------------------------------------------------------- +QVector TST_VAbstractPiece::InputPointsIssue880_Piece_Detail() const +{ + QVector points; + + // VSAPoint p = VSAPoint(30.0, 39.999874015748034); + // p.SetAngleType(PieceNodeAngle::ByFirstEdgeRightAngle); + // points.append(p); + + points += VSAPoint(239.15935115817035, 1727.8772840128854); + points += VSAPoint(239.15935115817035, 1727.8772840128854); + points += VSAPoint(229.26906627866828, 1672.003934630032); + points += VSAPoint(210.32230605803002, 1561.0565494697453); + points += VSAPoint(192.34933775540307, 1451.038491596672); + points += VSAPoint(175.3204063396455, 1341.9165954116006); + points += VSAPoint(151.37328308463964, 1179.739848589476); + points += VSAPoint(122.62258120063842, 966.4750391568086); + points += VSAPoint(97.11243630356083, 756.1978956903439); + points += VSAPoint(74.60480814427176, 548.64309339639); + points += VSAPoint(54.861656473636025, 343.5453074812554); + points += VSAPoint(37.64494104251851, 140.6392131512489); + + VSAPoint p = VSAPoint(30.0, 39.999874015748034); + p.SetAngleType(PieceNodeAngle::ByFirstEdgeRightAngle); + points.append(p); + + p = VSAPoint(30.0, 39.999874015748034); + p.SetAngleType(PieceNodeAngle::ByFirstEdgeRightAngle); + points.append(p); + + p = VSAPoint(30.0, 39.999874015748034); + p.SetAngleType(PieceNodeAngle::ByFirstEdgeRightAngle); + points.append(p); + + points.append(VSAPoint(45.17616605845943, 17.610441101076585)); + points.append(VSAPoint(75.44740737398081, -23.822072592206776)); + points.append(VSAPoint(105.6438731200462, -61.349018284438976)); + points.append(VSAPoint(135.79060039912326, -95.09267882253144)); + points.append(VSAPoint(165.91262631367965, -125.1753370533956)); + points.append(VSAPoint(196.03498796618314, -151.71927582394284)); + points.append(VSAPoint(226.1827224591014, -174.84677798108459)); + points.append(VSAPoint(256.3808668949021, -194.68012637173229)); + points.append(VSAPoint(286.65445837605307, -211.3416038427973)); + points.append(VSAPoint(317.0285340050218, -224.9534932411911)); + points.append(VSAPoint(347.52813088427615, -235.63807741382516)); + points.append(VSAPoint(378.17828611628374, -243.51763920761078)); + points.append(VSAPoint(409.00403680351224, -248.71446146945948)); + points.append(VSAPoint(440.0304200484296, -251.35082704628257)); + points.append(VSAPoint(471.2824729535032, -251.54901878499163)); + points.append(VSAPoint(502.78523262120086, -249.43131953249798)); + points.append(VSAPoint(518.6504625195685, -247.45337139417512)); + points.append(VSAPoint(518.6504625195685, -247.45337139417512)); + points.append(VSAPoint(518.6504625195685, -247.45337139417512)); + points.append(VSAPoint(530.2610383503521, -245.74288092468555)); + points.append(VSAPoint(552.1872278041676, -241.18301269150965)); + points.append(VSAPoint(572.6437092641386, -235.3144676119963)); + points.append(VSAPoint(591.7240901252175, -228.20167669358835)); + points.append(VSAPoint(609.5219777823567, -219.9090709437288)); + points.append(VSAPoint(626.130979630509, -210.50108136986046)); + points.append(VSAPoint(641.6447030646272, -200.04213897942634)); + points.append(VSAPoint(656.1567554796634, -188.59667477986926)); + points.append(VSAPoint(669.7607442705705, -176.2291197786322)); + points.append(VSAPoint(682.5502768323008, -163.00390498315804)); + points.append(VSAPoint(694.6189605598073, -148.98546140088973)); + points.append(VSAPoint(706.060402848042, -134.2382200392702)); + points.append(VSAPoint(722.300407627205, -110.96277002193168)); + points.append(VSAPoint(742.5431323074765, -77.86867271190005)); + points.append(VSAPoint(771.5587695889417, -25.219950033288583)); + points.append(VSAPoint(801.3225470991345, 29.88442488061677)); + points.append(VSAPoint(822.7622961453703, 66.90756576711863)); + points.append(VSAPoint(846.3734491821488, 103.62434739887975)); + points.append(VSAPoint(866.0660930267316, 130.61304884599105)); + points.append(VSAPoint(880.202278000172, 148.25843766499418)); + points.append(VSAPoint(895.3025472485346, 165.537297136819)); + points.append(VSAPoint(911.4605081667719, 182.38519625402265)); + points.append(VSAPoint(928.7697681498366, 198.73770400916214)); + points.append(VSAPoint(947.3239345926813, 214.5303893947946)); + + p = VSAPoint(957.1548316121191, 222.1693111391918); + p.SetAngleType(PieceNodeAngle::BySecondEdgeRightAngle); + points.append(p); + + p = VSAPoint(957.1548316121191, 222.1693111391918); + p.SetAngleType(PieceNodeAngle::BySecondEdgeRightAngle); + points.append(p); + + p = VSAPoint(957.1548316121191, 222.1693111391918); + p.SetAngleType(PieceNodeAngle::BySecondEdgeRightAngle); + points.append(p); + + points.append(VSAPoint(952.3136401198107, 240.982134772638)); + points.append(VSAPoint(940.9881447982464, 288.3639167749205)); + points.append(VSAPoint(928.1711209417526, 346.5350481212475)); + points.append(VSAPoint(914.3961310718933, 414.47551510225964)); + points.append(VSAPoint(900.1967377102318, 491.1653040085978)); + points.append(VSAPoint(886.1065033783323, 575.5844011309023)); + points.append(VSAPoint(872.6589905977585, 666.712792759814)); + points.append(VSAPoint(860.3877618900742, 763.5304651859733)); + points.append(VSAPoint(849.8263797768434, 865.017404700021)); + points.append(VSAPoint(841.5084067796297, 970.1535975925977)); + points.append(VSAPoint(837.1624212037573, 1050.8452199630021)); + points.append(VSAPoint(835.1862064061293, 1105.1939935906626)); + points.append(VSAPoint(834.0709728058853, 1159.8813228514407)); + points.append(VSAPoint(833.8834157182207, 1214.7797060316668)); + points.append(VSAPoint(834.6902304583309, 1269.7616414176705)); + points.append(VSAPoint(836.5581123414115, 1324.699627295782)); + points.append(VSAPoint(839.5537566826579, 1379.4661619523315)); + points.append(VSAPoint(843.7438587972656, 1433.933743673649)); + points.append(VSAPoint(849.1951140004301, 1487.9748707460644)); + points.append(VSAPoint(855.9742176073469, 1541.462041455908)); + points.append(VSAPoint(864.1478649332113, 1594.2677540895102)); + points.append(VSAPoint(873.782751293219, 1646.2645069332007)); + points.append(VSAPoint(879.2340548139807, 1671.8780036332896)); + points.append(VSAPoint(879.2340548139807, 1671.8780036332896)); + + return points; +} + +//--------------------------------------------------------------------------------------------------------------------- +QVector TST_VAbstractPiece::OutputPointsIssue880_Piece_Detail() const +{ + QVector points; + + points += QPointF(207.97524435031346, 1768.5451872439698); + points += QPointF(192.0523574292865, 1678.5917597177247); + points += QPointF(173.06637823139368, 1567.4188366954345); + points += QPointF(155.04852197223198, 1457.1320947077754); + points += QPointF(137.95319893013118, 1347.5909857555691); + points += QPointF(113.94865296170948, 1185.0253559450243); + points += QPointF(85.13262246004243, 971.2759567707533); + points += QPointF(59.56333814296166, 760.5113339757822); + points += QPointF(37.00526380453169, 552.491340651304); + points += QPointF(17.2197909125064, 346.95390918468786); + points += QPointF(-0.029116486330288183, 143.66841923390743); + points += QPointF(-12.288070724611142, -17.710595485938104); + points += QPointF(26.31665967166907, -20.64315536140112); + points += QPointF(45.449182757960564, -46.830007644639885); + points += QPointF(76.80902542176231, -85.80275109276256); + points += QPointF(108.32184223768654, -121.07549507561193); + points += QPointF(140.03960977826148, -152.7518093937674); + points += QPointF(172.0109643794434, -180.92508772882493); + points += QPointF(204.27687396752606, -205.6775245587238); + points += QPointF(236.86536116641804, -227.0807873159393); + points += QPointF(269.7862380601783, -245.1992338515816); + points += QPointF(303.02747320804565, -260.09601694470166); + points += QPointF(336.55504181349585, -271.8413567367945); + points += QPointF(370.3174391861959, -280.5210157594255); + points += QPointF(404.25444394855236, -286.242355156443); + points += QPointF(438.30793239230167, -289.13593911030426); + points += QPointF(472.43167053063326, -289.3523422699121); + points += QPointF(506.39354740949744, -287.06933462111243); + points += QPointF(523.3262726926384, -284.95829981953244); + points += QPointF(524.1590713325393, -284.84505611031716); + points += QPointF(535.7696471633229, -283.1345656408276); + points += QPointF(537.9564634081299, -282.7464387285754); + points += QPointF(561.2586117828608, -277.9004199361857); + points += QPointF(584.4735176539314, -271.2405394534338); + points += QPointF(606.3291152578626, -263.09320228624324); + points += QPointF(626.8443757152221, -253.53448553817316); + points += QPointF(646.0388521585816, -242.66198182567126); + points += QPointF(663.9421664899236, -230.592040397069); + points += QPointF(680.6014176242785, -217.45310890781045); + points += QPointF(696.0845837791157, -203.37717044914066); + points += QPointF(710.4796074150597, -188.49177267151234); + points += QPointF(723.8903257348999, -172.9144816918925); + points += QPointF(736.5088929791715, -156.65000627864362); + points += QPointF(753.9481523879648, -131.65576420615508); + points += QPointF(775.2314496504125, -96.86047247508529); + points += QPointF(804.6599580426928, -43.46259731691744); + points += QPointF(834.3104997062314, 11.42928555575623); + points += QPointF(855.028099173095, 47.20538546427957); + points += QPointF(877.5611048277024, 82.24558222378279); + points += QPointF(896.0956388425119, 107.64709808599238); + points += QPointF(909.1935793406782, 123.99650588254744); + points += QPointF(923.186035221142, 140.00772229515948); + points += QPointF(938.0932990305748, 155.55152005811772); + points += QPointF(954.0130809543497, 170.5913517795987); + points += QPointF(967.4782824078412, 182.05248051659785); + points += QPointF(1004.0810458391544, 191.4716400415735); + points += QPointF(988.9976255298626, 250.08566646847305); + points += QPointF(977.8259070734451, 296.82410160649124); + points += QPointF(965.149517480306, 354.35695262370325); + points += QPointF(951.5014069310696, 421.6716303754821); + points += QPointF(937.4212488890727, 497.7174388481253); + points += QPointF(923.444794947317, 581.4548412888578); + points += QPointF(910.1057337999374, 671.8482997696264); + points += QPointF(897.9362480985484, 767.8632391288859); + points += QPointF(887.4670427019098, 868.4644297171681); + points += QPointF(879.2234261603584, 972.6607837009217); + points += QPointF(874.9207445088272, 1052.5483850157796); + points += QPointF(872.9674776789623, 1106.266056241682); + points += QPointF(871.8649319396666, 1160.3312151973862); + points += QPointF(871.6796386709575, 1214.5669734562434); + points += QPointF(872.4760820545193, 1268.8421328907752); + points += QPointF(874.3182959750076, 1323.025174797752); + points += QPointF(877.269773413631, 1376.984247710642); + points += QPointF(881.3933583565541, 1430.5871656635104); + points += QPointF(886.7511179913885, 1483.701422556393); + points += QPointF(893.4041934667935, 1536.1942305045375); + points += QPointF(901.4126286647522, 1587.9325929330282); + points += QPointF(910.8542351538612, 1638.8862690551816); + points += QPointF(925.0965474653889, 1705.8052028484663); + points += QPointF(207.97524435031346, 1768.5451872439698); + + return points; +} + +//--------------------------------------------------------------------------------------------------------------------- +QVector TST_VAbstractPiece::InputPointsIssue880_Piece_Detail_1() const +{ + QVector points; + + // VSAPoint p = VSAPoint(124.48818897637796, 39.999874015748034); + // p.SetAngleType(PieceNodeAngle::ByFirstEdgeRightAngle); + // points.append(p); + + points += VSAPoint(239.15935115817035, 1727.8772840128854); + points += VSAPoint(239.15935115817035, 1727.8772840128854); + points += VSAPoint(228.38870291910868, 1665.145749022502); + points += VSAPoint(208.68143263818018, 1537.8520195183164); + points += VSAPoint(191.107067165158, 1409.242825317507); + points += VSAPoint(175.590132468123, 1280.2974183439387); + points += VSAPoint(162.05515451515572, 1151.9950505214774); + points += VSAPoint(150.42665927433694, 1025.314973773988); + points += VSAPoint(140.62917271374727, 901.2364400253355); + points += VSAPoint(132.58722080146742, 780.7387011993851); + points += VSAPoint(126.22532950557809, 664.801009220002); + points += VSAPoint(121.46802479415996, 554.4026160110516); + points += VSAPoint(118.23983263529368, 450.5227734963987); + points += VSAPoint(116.46527899705998, 354.1407335999088); + points += VSAPoint(116.06888984753957, 266.235748245447); + points += VSAPoint(116.97519115481305, 187.78706935687848); + points += VSAPoint(119.10870888696115, 119.77394885806838); + points += VSAPoint(122.39396901206462, 63.17563867288196); + + VSAPoint p = VSAPoint(124.48818897637796, 39.999874015748034); + p.SetAngleType(PieceNodeAngle::ByFirstEdgeRightAngle); + points.append(p); + + p = VSAPoint(124.48818897637796, 39.999874015748034); + p.SetAngleType(PieceNodeAngle::ByFirstEdgeRightAngle); + points.append(p); + + p = VSAPoint(124.48818897637796, 39.999874015748034); + p.SetAngleType(PieceNodeAngle::ByFirstEdgeRightAngle); + points.append(p); + + points += VSAPoint(131.17745572117823, 59.19926080571054); + points += VSAPoint(145.42358161389507, 95.6473363798392); + points += VSAPoint(160.66298139295492, 129.7789066433697); + points += VSAPoint(176.84250283902833, 161.62100748114375); + points += VSAPoint(193.90899373278594, 191.2006747780029); + points += VSAPoint(211.80930185489825, 218.54494441878893); + points += VSAPoint(230.49027498603584, 243.68085228834343); + points += VSAPoint(249.8987609068692, 266.6354342715081); + points += VSAPoint(269.98160739806895, 287.4357262531245); + points += VSAPoint(290.68566224030565, 306.1087641180344); + points += VSAPoint(311.95777321424987, 322.6815837510794); + points += VSAPoint(333.7447881005721, 337.1812210371011); + points += VSAPoint(355.99355467994303, 349.6347118609412); + points += VSAPoint(378.650920733033, 360.06909210744146); + points += VSAPoint(401.66373404051285, 368.5113976614434); + points += VSAPoint(424.9788423830528, 374.98866440778875); + points += VSAPoint(448.5430935413237, 379.52792823131904); + points += VSAPoint(472.3033352959959, 382.1562250168761); + points += VSAPoint(496.2064154277402, 382.9005906493014); + points += VSAPoint(520.1991817172269, 381.7880610134368); + points += VSAPoint(544.2284819451269, 378.8456719941238); + points += VSAPoint(568.2411638921103, 374.10045947620404); + points += VSAPoint(592.1840753388481, 367.57945934451936); + points += VSAPoint(616.0040640660104, 359.3097074839112); + points += VSAPoint(639.647977854268, 349.31823977922147); + points += VSAPoint(663.0626644842916, 337.6320921152916); + points += VSAPoint(686.1949717367515, 324.27830037696316); + points += VSAPoint(708.9917473923185, 309.2839004490781); + points += VSAPoint(731.399839231663, 292.67592821647787); + points += VSAPoint(753.3660950354556, 274.48141956400417); + points += VSAPoint(774.8373625843669, 254.72741037649877); + points += VSAPoint(795.7604896590673, 233.4409365388032); + + p = VSAPoint(805.9737292499144, 222.1693111391918); + p.SetAngleType(PieceNodeAngle::BySecondEdgeRightAngle); + points.append(p); + + p = VSAPoint(805.9737292499144, 222.1693111391918); + p.SetAngleType(PieceNodeAngle::BySecondEdgeRightAngle); + points.append(p); + + p = VSAPoint(805.9737292499144, 222.1693111391918); + p.SetAngleType(PieceNodeAngle::BySecondEdgeRightAngle); + points.append(p); + + points += VSAPoint(801.1024217701829, 252.56710912274912); + points += VSAPoint(783.4393334619424, 355.5003208404381); + points += VSAPoint(766.2212290655575, 462.42427627224754); + points += VSAPoint(754.024845322645, 544.4163414513537); + points += VSAPoint(741.7977429994414, 634.4390974603281); + points += VSAPoint(730.0853694039338, 731.420313160728); + points += VSAPoint(719.4331718441081, 834.2877574141107); + points += VSAPoint(710.3865976279511, 941.9691990820332); + points += VSAPoint(703.4910940634496, 1053.3924070260528); + points += VSAPoint(700.1562772589527, 1138.828625614281); + points += VSAPoint(698.833185316681, 1196.3413376010737); + points += VSAPoint(698.3546751480656, 1254.1863611415165); + points += VSAPoint(698.7889276666046, 1312.2296673433043); + points += VSAPoint(700.2041237857968, 1370.3372273141313); + points += VSAPoint(702.6684444191402, 1428.3750121616927); + points += VSAPoint(706.2500704801332, 1486.2089929936824); + points += VSAPoint(711.0171828822739, 1543.7051409177961); + points += VSAPoint(717.037962539061, 1600.7294270417278); + points += VSAPoint(724.3805903639925, 1657.1478224731723); + points += VSAPoint(728.6282421890804, 1685.0543048990771); + points += VSAPoint(728.6282421890804, 1685.0543048990771); + + return points; +} + +//--------------------------------------------------------------------------------------------------------------------- +QVector TST_VAbstractPiece::OutputPointsIssue880_Piece_Detail_1() const +{ + QVector points; + + points += QPointF(176.43300321313995, 1809.2444231688892); + points += QPointF(153.78313541824667, 1677.3246962809667); + points += QPointF(133.87793658475465, 1548.7525013540196); + points += QPointF(116.13042064136965, 1418.8761921325834); + points += QPointF(100.47483551040597, 1288.7786029156107); + points += QPointF(86.82794509892291, 1159.4153812471877); + points += QPointF(75.10856636006955, 1031.7452255369717); + points += QPointF(65.2370069141379, 906.7286088476662); + points += QPointF(57.13470030186313, 785.3265367259893); + points += QPointF(50.723988203508114, 668.4991453010994); + points += QPointF(45.92803421919151, 557.203853977457); + points += QPointF(42.670896438097856, 452.3925716567163); + points += QPointF(40.87786536674168, 355.006959561548); + points += QPointF(40.47636977532461, 265.9695473970137); + points += QPointF(41.39833199038787, 186.1652735021885); + points += QPointF(43.58687052785413, 116.39817805128028); + points += QPointF(47.000830659421496, 57.582630079953006); + points += QPointF(65.68957312272546, -149.23704714976648); + points += QPointF(140.97338867071443, -142.43421359312867); + points += QPointF(202.09509240490257, 32.99596074790383); + points += QPointF(215.1760179357478, 66.46292333957582); + points += QPointF(228.91247186136482, 97.22835696106226); + points += QPointF(243.32162407629943, 125.58628332767515); + points += QPointF(258.3193167174947, 151.58030642877873); + points += QPointF(273.82133547133117, 175.26098152608563); + points += QPointF(289.7450120582673, 196.68684969815953); + points += QPointF(306.0113435768183, 215.92517884608725); + points += QPointF(322.54758976689817, 233.05217073860985); + points += QPointF(339.2901947112362, 248.1523672201739); + points += QPointF(356.187735703955, 261.31701737912283); + points += QPointF(373.20345965213, 272.6412775724043); + points += QPointF(390.3168780918559, 282.22031642578816); + points += QPointF(407.5239155726528, 290.1446608341238); + points += QPointF(424.8352834117022, 296.495377493676); + points += QPointF(442.27307072936014, 301.3398413607568); + points += QPointF(459.86592925304035, 304.7288150104031); + points += QPointF(477.6435530680066, 306.6953299983464); + points += QPointF(495.63130278250605, 307.2554863722674); + points += QPointF(513.8457455201286, 306.4108940021393); + points += QPointF(532.2916184779821, 304.1521959323631); + points += QPointF(550.9603800691451, 300.4630103015354); + points += QPointF(569.8302035956763, 295.3236970657534); + points += QPointF(588.8670691430791, 288.71453548788656); + points += QPointF(608.0265381189225, 280.6181087615205); + points += QPointF(627.2558255674835, 271.02087194401406); + points += QPointF(646.49587350226, 259.9139991901456); + points += QPointF(665.6832327130836, 247.2936645466005); + points += QPointF(684.7516535483287, 233.16092151690435); + points += QPointF(703.6333557352625, 217.52132882153552); + points += QPointF(722.2599918458167, 200.3844392540231); + points += QPointF(740.775593812871, 181.5472991146096); + points += QPointF(827.8905206609868, 85.40475654403389); + points += QPointF(902.5287659069734, 97.36568353412399); + points += QPointF(875.7406670161695, 264.52803611283815); + points += QPointF(875.6040535669327, 265.3514075972125); + points += QPointF(858.0066884529067, 367.9016115788377); + points += QPointF(840.9224284397759, 473.9943970664766); + points += QPointF(828.8632024485165, 555.064398169016); + points += QPointF(816.7758887510091, 644.0579522451663); + points += QPointF(805.2076743624673, 739.845495712356); + points += QPointF(794.6970759283694, 841.3455282095892); + points += QPointF(785.7814316001975, 947.4685104254818); + points += QPointF(778.9905248854037, 1057.2015565957809); + points += QPointF(775.7129148747653, 1141.1721677964533); + points += QPointF(774.4165452653767, 1197.5233022801074); + points += QPointF(773.9475654146959, 1254.2162469276998); + points += QPointF(774.3725935699175, 1311.0266010527719); + points += QPointF(775.7556236491987, 1367.8134323501624); + points += QPointF(778.1598154813046, 1424.435109901397); + points += QPointF(781.6473200844314, 1480.7492730591212); + points += QPointF(786.2790701026621, 1536.6128151220523); + points += QPointF(792.1145299697872, 1591.8818919022567); + points += QPointF(799.2334640707138, 1646.5814965577908); + points += QPointF(815.4824145904547, 1753.3348442404624); + points += QPointF(176.43300321313995, 1809.2444231688892); return points; } @@ -2403,15 +4546,15 @@ void TST_VAbstractPiece::BrokenDetailEquidistant_data() const // The test check an open equdistant of correct detail. QVector points;// Input points. - VSAPoint point = VSAPoint(787.5835464566929, 1701.3138897637796); - point.SetSAAfter(-1); - point.SetSABefore(0); - points.append(point); + VSAPoint p = VSAPoint(787.5835464566929, 1701.3138897637796); + p.SetSAAfter(-1); + p.SetSABefore(0); + points.append(p); - point = VSAPoint(863.1740976377953, 1701.3138897637796); - point.SetSAAfter(-1); - point.SetSAAfter(-1); - points.append(point); + p = VSAPoint(863.1740976377953, 1701.3138897637796); + p.SetSAAfter(-1); + p.SetSAAfter(-1); + points.append(p); points.append(VSAPoint(938.7646488188976, 1701.3138897637796)); points.append(VSAPoint(928.6149944255945, 1732.4440762118775)); @@ -2449,10 +4592,10 @@ void TST_VAbstractPiece::BrokenDetailEquidistant_data() const points.append(VSAPoint(798.7585835291225, 1734.548100679404)); points.append(VSAPoint(787.5835464566929, 1701.3138897637796)); - point = VSAPoint(797.0323653543306, 2608.4005039370077); - point.SetSAAfter(0); - point.SetSABefore(-1); - points.append(point); + p = VSAPoint(797.0323653543306, 2608.4005039370077); + p.SetSAAfter(0); + p.SetSABefore(-1); + points.append(p); QVector ekvOrig; ekvOrig.append(QPointF(787.1898456692913, 1663.5186141732283)); @@ -2483,25 +4626,25 @@ void TST_VAbstractPiece::BrokenDetailEquidistant_data() const #endif points.clear(); - point = VSAPoint(97.33089106412862, -223.03306117556497); - point.SetSAAfter(-1); - point.SetSABefore(0); - points.append(point); + p = VSAPoint(97.33089106412862, -223.03306117556497); + p.SetSAAfter(-1); + p.SetSABefore(0); + points.append(p); - point = VSAPoint(990.7494050554426, 2.819093995045); - point.SetSAAfter(-1); - point.SetSABefore(-1); - points.append(point); + p = VSAPoint(990.7494050554426, 2.819093995045); + p.SetSAAfter(-1); + p.SetSABefore(-1); + points.append(p); - point = VSAPoint(908.3966357321774, 379.5839357215547); - point.SetSAAfter(-1); - point.SetSABefore(-1); - points.append(point); + p = VSAPoint(908.3966357321774, 379.5839357215547); + p.SetSAAfter(-1); + p.SetSABefore(-1); + points.append(p); - point = VSAPoint(-135.41154226686143, 697.6417881399819); - point.SetSAAfter(0); - point.SetSABefore(-1); - points.append(point); + p = VSAPoint(-135.41154226686143, 697.6417881399819); + p.SetSAAfter(0); + p.SetSABefore(-1); + points.append(p); ekvOrig.clear(); ekvOrig.append(QPointF(100.10981413873267, -234.02583351343978)); @@ -2513,105 +4656,8 @@ void TST_VAbstractPiece::BrokenDetailEquidistant_data() const // See the file "collection/bugs/Issue_#604.val" (since 0.5.0) QTest::newRow("Issue #604.") << points << 11.338582677165354 << ekvOrig; - points.clear(); - - point = VSAPoint(11565.008125001967, -71.44488549419934); - point.SetSAAfter(0); - points.append(point); - - point = VSAPoint(11774.053467225081, -3376.8303371353477); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(11774.053467225081, -3376.8303371353477); - point.SetSABefore(0); - points.append(point); - - points.append(VSAPoint(11821.637653562488, -3457.444047544761)); - points.append(VSAPoint(11916.506852253828, -3619.698047174161)); - points.append(VSAPoint(12011.687139013728, -3784.3170132645946)); - points.append(VSAPoint(12107.923065894336, -3952.559914581168)); - points.append(VSAPoint(12205.959184947797, -4125.685719888987)); - points.append(VSAPoint(12306.540048226263, -4304.953397953153)); - points.append(VSAPoint(12410.410207781879, -4491.621917538776)); - points.append(VSAPoint(12518.314215666796, -4686.950247410959)); - points.append(VSAPoint(12630.996623933155, -4892.197356334806)); - points.append(VSAPoint(12749.201984633113, -5108.622213075425)); - points.append(VSAPoint(12937.571227539614, -5455.181123300274)); - points.append(VSAPoint(13216.05428816687, -5970.204948863398)); - points.append(VSAPoint(13530.031095467164, -6552.6012034655)); - - point = VSAPoint(13704.042216387523, -6875.648082494774); - point.SetSAAfter(0); - points.append(point); - - point = VSAPoint(13704.042216387523, -6875.648082494774); - point.SetSAAfter(0); - points.append(point); - - point = VSAPoint(13493.259591532773, -71.44488549420451); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(13493.259591532773, -71.44488549420451); - point.SetSABefore(0); - points.append(point); - - points.append(VSAPoint(13458.265794168308, -72.45287893700785)); - points.append(VSAPoint(13303.675181471457, -76.51882381889763)); - points.append(VSAPoint(13154.908187746063, -79.90711122047243)); - points.append(VSAPoint(13010.905973179135, -82.6177411417323)); - points.append(VSAPoint(12870.60969795768, -84.65071358267716)); - points.append(VSAPoint(12732.9605222687, -86.0060285433071)); - points.append(VSAPoint(12596.899606299212, -86.68368602362204)); - points.append(VSAPoint(12461.36811023622, -86.68368602362204)); - points.append(VSAPoint(12325.307194266732, -86.0060285433071)); - points.append(VSAPoint(12187.658018577757, -84.65071358267716)); - points.append(VSAPoint(12047.361743356301, -82.6177411417323)); - points.append(VSAPoint(11903.35952878937, -79.90711122047243)); - points.append(VSAPoint(11754.592535063975, -76.51882381889763)); - points.append(VSAPoint(11600.001922367124, -72.45287893700785)); - - point = VSAPoint(11565.008125001967, -71.44488549419934); - point.SetSAAfter(0); - points.append(point); - - ekvOrig.clear(); - ekvOrig.append(QPointF(11561.414612602906, -14.624946442565701)); - ekvOrig.append(QPointF(11781.95342513335, -3501.7429788659483)); - ekvOrig.append(QPointF(11772.755890703675, -3486.161176715607)); - ekvOrig.append(QPointF(11867.496139886347, -3648.194635075343)); - ekvOrig.append(QPointF(11962.541506347354, -3812.5802499029824)); - ekvOrig.append(QPointF(12058.651107851038, -3980.6023049242845)); - ekvOrig.append(QPointF(12156.571541308, -4153.523816526403)); - ekvOrig.append(QPointF(12257.048738448357, -4332.606727953389)); - ekvOrig.append(QPointF(12360.827974888123, -4519.11184658243)); - ekvOrig.append(QPointF(12468.653939048814, -4714.298901347144)); - ekvOrig.append(QPointF(12581.270838581826, -4919.426688379175)); - ekvOrig.append(QPointF(12699.418991549643, -5135.746802194771)); - ekvOrig.append(QPointF(12887.73123714858, -5482.200849627318)); - ekvOrig.append(QPointF(13166.168107919768, -5997.139252126215)); - ekvOrig.append(QPointF(13480.123425536643, -6579.495645468361)); - ekvOrig.append(QPointF(13707.971545534987, -7002.489438444617)); - ekvOrig.append(QPointF(13491.50417959835, -14.779021766203327)); - ekvOrig.append(QPointF(13456.704320007799, -15.781428847446987)); - ekvOrig.append(QPointF(13302.284438389732, -19.842883268086513)); - ekvOrig.append(QPointF(13153.729251428536, -23.226346601010544)); - ekvOrig.append(QPointF(13009.961769808971, -25.932558019731804)); - ekvOrig.append(QPointF(12869.919891108724, -27.961844111086332)); - ekvOrig.append(QPointF(12732.540250691125, -29.3145051859673)); - ekvOrig.append(QPointF(12596.758426378788, -29.990772637795267)); - ekvOrig.append(QPointF(12461.509290156644, -29.990772637795267)); - ekvOrig.append(QPointF(12325.727465844308, -29.3145051859673)); - ekvOrig.append(QPointF(12188.347825426712, -27.961844111086332)); - ekvOrig.append(QPointF(12048.305946726465, -25.9325580197318)); - ekvOrig.append(QPointF(11904.538465106896, -23.226346601010544)); - ekvOrig.append(QPointF(11755.9832781457, -19.842883268086513)); - ekvOrig.append(QPointF(11601.563396526772, -15.78142884742432)); - ekvOrig.append(QPointF(11561.414612602906, -14.624946442565701)); - // See the file "collection/bugs/Issue_#627.val" - QTest::newRow("Issue #627.") << points << 56.692913385826778 << ekvOrig; + QTest::newRow("Issue #627.") << InputPointsIssue627() << 56.692913385826778 << OutputPointsIssue627(); points.clear(); points.append(VSAPoint(-3139.2651132139254, 2368.0698020087843)); @@ -2673,636 +4719,135 @@ void TST_VAbstractPiece::BrokenDetailEquidistant_data() const // See the file "collection/bugs/Issue_#687.val" QTest::newRow("Issue #687.") << points << 37.795275590551185 << ekvOrig; - points.clear(); - points.append(VSAPoint(-2956.4986596431745, -931.902205605136)); - - point = VSAPoint(-2845.8986453348375, -956.881848270395); - point.SetSAAfter(43.46456692913386); - points.append(point); - - point = VSAPoint(-2845.8986453348375, -956.881848270395); - point.SetSAAfter(43.46456692913386); - points.append(point); - - point = VSAPoint(-2836.260963611866, -967.4683165923368); - point.SetSAAfter(43.97603360000783); - point.SetSABefore(43.97603360000783); - points.append(point); - - point = VSAPoint(-2816.778439161989, -990.3317076365227); - point.SetSAAfter(45.049184926830954); - point.SetSABefore(45.049184926830954); - points.append(point); - - point = VSAPoint(-2787.1311433576584, -1027.9779235071023); - point.SetSAAfter(46.76112870286518); - point.SetSABefore(46.76112870286518); - points.append(point); - - point = VSAPoint(-2746.751847204707, -1084.542680645765); - point.SetSAAfter(49.24403825622278); - point.SetSABefore(49.24403825622278); - points.append(point); - - point = VSAPoint(-2705.497537071667, -1147.1631960355985); - point.SetSAAfter(51.92307240777298); - point.SetSABefore(51.92307240777298); - points.append(point); - - point = VSAPoint(-2690.762883414773, -1170.642333063125); - point.SetSAAfter(52.91338582677166); - point.SetSABefore(52.91338582677166); - points.append(point); - - point = VSAPoint(-2690.762883414773, -1170.642333063125); - point.SetSAAfter(52.91338582677166); - point.SetSABefore(52.91338582677166); - points.append(point); - - point = VSAPoint(-2690.762883414773, -1170.642333063125); - point.SetSAAfter(52.91338582677166); - point.SetSABefore(52.91338582677166); - points.append(point); - - point = VSAPoint(-2663.422466976175, -1214.9038229173848); - point.SetSAAfter(53.46401455483577); - point.SetSABefore(53.46401455483577); - points.append(point); - - point = VSAPoint(-2620.5808909358666, -1286.8289145319047); - point.SetSAAfter(54.350078048241386); - point.SetSABefore(54.350078048241386); - points.append(point); - - point = VSAPoint(-2555.0788677550413, -1400.2850275624346); - point.SetSAAfter(55.736651029960576); - point.SetSABefore(55.736651029960576); - points.append(point); - - point = VSAPoint(-2510.4555036137926, -1478.8463991280223); - point.SetSAAfter(56.69291338582678); - point.SetSABefore(56.69291338582678); - points.append(point); - - point = VSAPoint(-2510.4555036137926, -1478.8463991280223); - point.SetSAAfter(56.69291338582678); - point.SetSABefore(56.69291338582678); - points.append(point); - - point = VSAPoint(-2510.4555036137926, -1478.8463991280225); - point.SetSAAfter(56.69291338582678); - point.SetSABefore(56.69291338582678); - points.append(point); - - point = VSAPoint(-2465.8020785414137, -1557.3906882829588); - point.SetSAAfter(55.736651029960576); - point.SetSABefore(55.736651029960576); - points.append(point); - - point = VSAPoint(-2401.8564705072536, -1671.7312490561126); - point.SetSAAfter(54.35007804824139); - point.SetSABefore(54.35007804824139); - points.append(point); - - point = VSAPoint(-2361.9923364810647, -1745.348300475717); - point.SetSAAfter(53.46401455483577); - point.SetSABefore(53.46401455483577); - points.append(point); - - point = VSAPoint(-2337.960366148942, -1791.489846365627); - point.SetSAAfter(52.91338582677166); - point.SetSABefore(52.91338582677166); - points.append(point); - - point = VSAPoint(-2337.960366148942, -1791.489846365627); - point.SetSAAfter(52.91338582677166); - point.SetSABefore(52.91338582677166); - points.append(point); - - point = VSAPoint(-2337.960366148942, -1791.489846365627); - point.SetSAAfter(52.91338582677166); - point.SetSABefore(52.91338582677166); - points.append(point); - - point = VSAPoint(-2325.3307700973705, -1816.1652024424925); - point.SetSAAfter(51.92307240777299); - point.SetSABefore(51.92307240777299); - points.append(point); - - point = VSAPoint(-2292.647817425233, -1883.6564734104645); - point.SetSAAfter(49.2440382562228); - point.SetSABefore(49.2440382562228); - points.append(point); - - point = VSAPoint(-2264.7195245337134, -1947.2966318336582); - point.SetSAAfter(46.761128702865186); - point.SetSABefore(46.761128702865186); - points.append(point); - - point = VSAPoint(-2247.5514136970696, -1992.0342635119725); - point.SetSAAfter(45.04918492683095); - point.SetSABefore(45.04918492683095); - points.append(point); - - point = VSAPoint(-2237.880805276518, -2020.4733693656342); - point.SetSAAfter(43.976033600007824); - point.SetSABefore(43.976033600007824); - points.append(point); - - point = VSAPoint(-2233.71862201755, -2034.1713418814313); - point.SetSABefore(43.46456692913386); - points.append(point); - - point = VSAPoint(-2233.71862201755, -2034.1713418814313); - point.SetSABefore(43.46456692913386); - points.append(point); - - points.append(VSAPoint(-2268.8646463902414, -2141.9725602580456)); - points.append(VSAPoint(-2142.3438861707664, -2153.5104738154614)); - points.append(VSAPoint(-2102.1087124090764, -2047.5035093977458)); - points.append(VSAPoint(-1984.2738327304821, -1869.448287965361)); - - point = VSAPoint(-1957.6856602021662, -1829.272055600212); - point.SetSAAfter(22.67716535433071); - points.append(point); - - point = VSAPoint(-2074.791337229537, -1711.039758580631); - point.SetSAAfter(22.67716535433071); - point.SetSABefore(22.67716535433071); - points.append(point); - - point = VSAPoint(-2074.791337229537, -1711.039758580631); - point.SetSAAfter(22.67716535433071); - point.SetSABefore(22.67716535433071); - points.append(point); - - point = VSAPoint(-2105.0691172163697, -1679.8718788745382); - point.SetSAAfter(22.67716535433071); - point.SetSABefore(22.67716535433071); - points.append(point); - - point = VSAPoint(-2157.1664430173314, -1623.6842413627824); - point.SetSAAfter(22.67716535433071); - point.SetSABefore(22.67716535433071); - points.append(point); - - point = VSAPoint(-2193.519806327426, -1582.6099746660036); - point.SetSAAfter(22.67716535433071); - point.SetSABefore(22.67716535433071); - points.append(point); - - point = VSAPoint(-2229.9791235350895, -1539.3264424355502); - point.SetSAAfter(22.67716535433071); - point.SetSABefore(22.67716535433071); - points.append(point); - - point = VSAPoint(-2265.345834723823, -1494.6643368578134); - point.SetSAAfter(22.67716535433071); - point.SetSABefore(22.67716535433071); - points.append(point); - - point = VSAPoint(-2298.421379977127, -1449.4543501191831); - point.SetSAAfter(22.67716535433071); - point.SetSABefore(22.67716535433071); - points.append(point); - - point = VSAPoint(-2328.007199378502, -1404.52717440605); - point.SetSAAfter(22.67716535433071); - point.SetSABefore(22.67716535433071); - points.append(point); - - point = VSAPoint(-2340.896596672199, -1382.4929340466704); - point.SetSAAfter(22.67716535433071); - point.SetSABefore(22.67716535433071); - points.append(point); - - point = VSAPoint(-2340.896596672199, -1382.49293404667); - point.SetSAAfter(22.67716535433071); - point.SetSABefore(22.67716535433071); - points.append(point); - - point = VSAPoint(-2340.896596672199, -1382.49293404667); - point.SetSAAfter(22.67716535433071); - point.SetSABefore(22.67716535433071); - points.append(point); - - point = VSAPoint(-2353.229300455175, -1360.1423472934985); - point.SetSAAfter(22.67716535433071); - point.SetSABefore(22.67716535433071); - points.append(point); - - point = VSAPoint(-2376.683944957661, -1311.7310730025702); - point.SetSAAfter(22.67716535433071); - point.SetSABefore(22.67716535433071); - points.append(point); - - point = VSAPoint(-2398.595481020915, -1260.1770316279192); - point.SetSAAfter(22.67716535433071); - point.SetSABefore(22.67716535433071); - points.append(point); - - point = VSAPoint(-2418.863694463742, -1206.9350607893014); - point.SetSAAfter(22.67716535433071); - point.SetSABefore(22.67716535433071); - points.append(point); - - point = VSAPoint(-2437.3883711049484, -1153.4599981064728); - point.SetSAAfter(22.67716535433071); - point.SetSABefore(22.67716535433071); - points.append(point); - - point = VSAPoint(-2454.0692967633395, -1101.206681199188); - point.SetSAAfter(22.67716535433071); - point.SetSABefore(22.67716535433071); - points.append(point); - - point = VSAPoint(-2475.6762194412613, -1027.6925814825058); - point.SetSAAfter(22.67716535433071); - point.SetSABefore(22.67716535433071); - points.append(point); - - point = VSAPoint(-2486.956107269708, -985.7289684721587); - point.SetSAAfter(22.67716535433071); - point.SetSABefore(22.67716535433071); - points.append(point); - - point = VSAPoint(-2486.956107269708, -985.7289684721587); - point.SetSAAfter(22.67716535433071); - point.SetSABefore(22.67716535433071); - points.append(point); - - point = VSAPoint(-2528.5937454925997, -824.6112390511391); - point.SetSABefore(22.67716535433071); - points.append(point); - - points.append(VSAPoint(-2576.717181801796, -826.8905905485153)); - points.append(VSAPoint(-2789.9932374825075, -836.9923142371927)); - points.append(VSAPoint(-2901.656478768932, -817.3030720450208)); - - ekvOrig.clear(); - ekvOrig.append(QPointF(-3011.0459236325178, -958.3296651887044)); - ekvOrig.append(QPointF(-2875.7052973685904, -988.8971158649783)); - ekvOrig.append(QPointF(-2870.260387393261, -995.324820816642)); - ekvOrig.append(QPointF(-2852.6061966162415, -1017.6075332449855)); - ekvOrig.append(QPointF(-2825.503388518729, -1054.6724785426588)); - ekvOrig.append(QPointF(-2788.3093097188694, -1110.9189954407311)); - ekvOrig.append(QPointF(-2750.1189919746207, -1173.6551419899274)); - ekvOrig.append(QPointF(-2709.423307261418, -1242.1469723195428)); - ekvOrig.append(QPointF(-2667.7504092472172, -1313.8247232989397)); - ekvOrig.append(QPointF(-2603.7341468196178, -1427.4682657103372)); - ekvOrig.append(QPointF(-2559.7459842621583, -1506.8561845862187)); - ekvOrig.append(QPointF(-2514.057371190275, -1585.2778062486059)); - ekvOrig.append(QPointF(-2449.1903177064596, -1698.437878533329)); - ekvOrig.append(QPointF(-2408.9405345956425, -1770.924328120598)); - ekvOrig.append(QPointF(-2370.9276285164447, -1840.9406729811838)); - ekvOrig.append(QPointF(-2336.5771598874117, -1905.8588503917545)); - ekvOrig.append(QPointF(-2307.2920458113667, -1966.5997118809223)); - ekvOrig.append(QPointF(-2289.3210139012212, -2008.8538760404763)); - ekvOrig.append(QPointF(-2279.2135095625417, -2035.4250649707842)); - ekvOrig.append(QPointF(-2276.4782220358147, -2043.3925387067675)); - ekvOrig.append(QPointF(-2319.486217821659, -2175.3082938569505)); - ekvOrig.append(QPointF(-2117.1931262791986, -2193.7561770298817)); - ekvOrig.append(QPointF(-2068.2669671953195, -2064.8512135315364)); - ekvOrig.append(QPointF(-1952.7554769180979, -1890.3067659503313)); - ekvOrig.append(QPointF(-1917.7323129703223, -1837.3847845155408)); - ekvOrig.append(QPointF(-2058.602200122849, -1695.1596528078817)); - ekvOrig.append(QPointF(-2088.6195002428954, -1664.259910500151)); - ekvOrig.append(QPointF(-2140.3590128721157, -1608.4581791070227)); - ekvOrig.append(QPointF(-2176.3545492221115, -1567.7882073269216)); - ekvOrig.append(QPointF(-2212.414007045006, -1524.9793775290368)); - ekvOrig.append(QPointF(-2247.2991384140373, -1480.9254248733198)); - ekvOrig.append(QPointF(-2279.789328152741, -1436.5155433136006)); - ekvOrig.append(QPointF(-2308.736909783362, -1392.55755557814)); - ekvOrig.append(QPointF(-2321.178893964517, -1371.2881615367894)); - ekvOrig.append(QPointF(-2333.0835084227488, -1349.7134020279238)); - ekvOrig.append(QPointF(-2356.032179444513, -1302.346476158332)); - ekvOrig.append(QPointF(-2377.555935401122, -1251.704814071218)); - ekvOrig.append(QPointF(-2397.548161559648, -1199.1878260725543)); - ekvOrig.append(QPointF(-2415.869672964287, -1146.299239146947)); - ekvOrig.append(QPointF(-2432.3864079020423, -1094.5602527950712)); - ekvOrig.append(QPointF(-2453.8449306108814, -1021.5510602457688)); - ekvOrig.append(QPointF(-2465.027777517513, -979.948460372355)); - ekvOrig.append(QPointF(-2515.1149256956105, -786.1351719137306)); - ekvOrig.append(QPointF(-2578.505312645544, -789.1376377494045)); - ekvOrig.append(QPointF(-2787.576150708099, -799.040183212032)); - ekvOrig.append(QPointF(-2923.3591732783775, -775.0979728107262)); - ekvOrig.append(QPointF(-3011.0459236325178, -958.3296651887044)); - // See private test cases in file jacket_issue_#767.val, piece "Fabric_TopCollar" - // Curve approximation scale 0.4 - QTest::newRow("Issue #767.") << points << 37.795275590551185 << ekvOrig; - - points.clear(); - point = VSAPoint(-2956.4986596431745, -931.902205605136); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2845.8986453348375, -956.881848270395); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2845.8986453348375, -956.881848270395); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2836.260963611866, -967.4683165923368); - point.SetSAAfter(0.43525524017831524); - point.SetSABefore(0.43525524017831524); - points.append(point); - - point = VSAPoint(-2816.778439161989, -990.3317076365227); - point.SetSAAfter(1.3485009414200446); - point.SetSABefore(1.3485009414200446); - points.append(point); - - point = VSAPoint(-2787.1311433576584, -1027.9779235071023); - point.SetSAAfter(2.805355399084501); - point.SetSABefore(2.805355399084501); - points.append(point); - - point = VSAPoint(-2746.751847204707, -1084.542680645765); - point.SetSAAfter(4.918297366820228); - point.SetSABefore(4.918297366820228); - points.append(point); - - point = VSAPoint(-2705.497537071667, -1147.1631960355985); - point.SetSAAfter(7.198140256849341); - point.SetSABefore(7.198140256849341); - points.append(point); - - point = VSAPoint(-2663.422466976175, -1214.9038229173848); - point.SetSAAfter(9.622568324608272); - point.SetSABefore(9.622568324608272); - points.append(point); - - point = VSAPoint(-2620.5808909358666, -1286.8289145319047); - point.SetSAAfter(12.167801509953053); - point.SetSABefore(12.167801509953053); - points.append(point); - - point = VSAPoint(-2555.0788677550413, -1400.2850275624346); - point.SetSAAfter(16.150757125706626); - point.SetSABefore(16.150757125706626); - points.append(point); - - point = VSAPoint(-2510.4555036137926, -1478.8463991280223); - point.SetSAAfter(18.897637795275593); - point.SetSABefore(18.897637795275593); - points.append(point); - - point = VSAPoint(-2510.4555036137926, -1478.8463991280223); - point.SetSAAfter(18.897637795275593); - point.SetSABefore(18.897637795275593); - points.append(point); - - point = VSAPoint(-2510.4555036137926, -1478.8463991280225); - point.SetSAAfter(18.897637795275593); - point.SetSABefore(18.897637795275593); - points.append(point); - - point = VSAPoint(-2465.8020785414137, -1557.3906882829588); - point.SetSAAfter(16.15075712570663); - point.SetSABefore(16.15075712570663); - points.append(point); - - point = VSAPoint(-2401.8564705072536, -1671.7312490561126); - point.SetSAAfter(12.167801509953058); - point.SetSABefore(12.167801509953058); - points.append(point); - - point = VSAPoint(-2361.9923364810647, -1745.348300475717); - point.SetSAAfter(9.622568324608276); - point.SetSABefore(9.622568324608276); - points.append(point); - - point = VSAPoint(-2325.3307700973705, -1816.1652024424925); - point.SetSAAfter(7.198140256849351); - point.SetSABefore(7.198140256849351); - points.append(point); - - point = VSAPoint(-2292.647817425233, -1883.6564734104645); - point.SetSAAfter(4.918297366820237); - point.SetSABefore(4.918297366820237); - points.append(point); - - point = VSAPoint(-2264.7195245337134, -1947.2966318336582); - point.SetSAAfter(2.805355399084501); - point.SetSABefore(2.805355399084501); - points.append(point); - - point = VSAPoint(-2247.5514136970696, -1992.0342635119725); - point.SetSAAfter(1.3485009414200313); - point.SetSABefore(1.3485009414200313); - points.append(point); - - point = VSAPoint(-2237.880805276518, -2020.4733693656342); - point.SetSAAfter(0.43525524017830364); - point.SetSABefore(0.43525524017830364); - points.append(point); - - point = VSAPoint(-2233.71862201755, -2034.1713418814313); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2233.71862201755, -2034.1713418814313); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2268.8646463902414, -2141.9725602580456); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2142.3438861707664, -2153.5104738154614); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2102.1087124090764, -2047.5035093977458); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-1957.6856602021662, -1829.272055600212); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2074.791337229537, -1711.039758580631); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2074.791337229537, -1711.039758580631); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2105.0691172163697, -1679.8718788745382); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2157.1664430173314, -1623.6842413627824); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2193.519806327426, -1582.6099746660036); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2229.9791235350895, -1539.3264424355502); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2265.345834723823, -1494.6643368578134); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2298.421379977127, -1449.4543501191831); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2328.007199378502, -1404.52717440605); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2340.896596672199, -1382.4929340466704); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2340.896596672199, -1382.49293404667); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2340.896596672199, -1382.49293404667); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2353.229300455175, -1360.1423472934985); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2376.683944957661, -1311.7310730025702); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2398.595481020915, -1260.1770316279192); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2418.863694463742, -1206.9350607893014); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2437.3883711049484, -1153.4599981064728); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2454.0692967633395, -1101.206681199188); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2475.6762194412613, -1027.6925814825058); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2486.956107269708, -985.7289684721587); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2486.956107269708, -985.7289684721587); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2528.5937454925997, -824.6112390511391); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2789.9932374825075, -836.9923142371927); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - point = VSAPoint(-2901.656478768932, -817.3030720450208); - point.SetSAAfter(0.0); - point.SetSABefore(0.0); - points.append(point); - - ekvOrig.clear(); - ekvOrig.append(QPointF(-2956.4986596431745, -931.902205605136)); - ekvOrig.append(QPointF(-2845.8986453348375, -956.881848270395)); - ekvOrig.append(QPointF(-2836.596062852828, -967.7458621971263)); - ekvOrig.append(QPointF(-2817.8467371988295, -991.1540172736422)); - ekvOrig.append(QPointF(-2789.4250765168626, -1029.5919209880126)); - ekvOrig.append(QPointF(-2750.889100543337, -1087.199542098131)); - ekvOrig.append(QPointF(-2711.6736648654487, -1150.8550884073957)); - ekvOrig.append(QPointF(-2671.7881331031967, -1219.6506051948052)); - ekvOrig.append(QPointF(-2631.2544330468827, -1292.6599547989217)); - ekvOrig.append(QPointF(-2569.3251398982766, -1407.8779858979287)); - ekvOrig.append(QPointF(-2526.88572613584, -1488.1830296867358)); - ekvOrig.append(QPointF(-2479.6165486777995, -1565.743514218805)); - ekvOrig.append(QPointF(-2412.3287240613545, -1677.91650873456)); - ekvOrig.append(QPointF(-2370.3519139635614, -1750.1057973020093)); - ekvOrig.append(QPointF(-2331.663467829433, -1819.5815694082025)); - ekvOrig.append(QPointF(-2297.0478073034897, -1885.850981791927)); - ekvOrig.append(QPointF(-2267.2801635224105, -1948.441291248876)); - ekvOrig.append(QPointF(-2248.8046235492425, -1992.5311728610834)); - ekvOrig.append(QPointF(-2238.2907512202123, -2020.619202788688)); - ekvOrig.append(QPointF(-2233.71862201755, -2034.1713418814313)); - ekvOrig.append(QPointF(-2268.8646463902414, -2141.9725602580456)); - ekvOrig.append(QPointF(-2142.3438861707664, -2153.5104738154614)); - ekvOrig.append(QPointF(-2102.1087124090764, -2047.5035093977458)); - ekvOrig.append(QPointF(-1957.6856602021662, -1829.272055600212)); - ekvOrig.append(QPointF(-2074.791337229537, -1711.039758580631)); - ekvOrig.append(QPointF(-2105.0691172163697, -1679.8718788745382)); - ekvOrig.append(QPointF(-2157.1664430173314, -1623.6842413627824)); - ekvOrig.append(QPointF(-2193.519806327426, -1582.6099746660036)); - ekvOrig.append(QPointF(-2229.9791235350895, -1539.3264424355502)); - ekvOrig.append(QPointF(-2265.345834723823, -1494.6643368578134)); - ekvOrig.append(QPointF(-2298.421379977127, -1449.4543501191831)); - ekvOrig.append(QPointF(-2328.007199378502, -1404.52717440605)); - ekvOrig.append(QPointF(-2340.896596672199, -1382.4929340466704)); - ekvOrig.append(QPointF(-2353.229300455175, -1360.1423472934985)); - ekvOrig.append(QPointF(-2376.683944957661, -1311.7310730025702)); - ekvOrig.append(QPointF(-2398.595481020915, -1260.1770316279192)); - ekvOrig.append(QPointF(-2418.863694463742, -1206.9350607893014)); - ekvOrig.append(QPointF(-2437.3883711049484, -1153.4599981064728)); - ekvOrig.append(QPointF(-2454.0692967633395, -1101.206681199188)); - ekvOrig.append(QPointF(-2475.6762194412613, -1027.6925814825058)); - ekvOrig.append(QPointF(-2486.956107269708, -985.7289684721587)); - ekvOrig.append(QPointF(-2528.5937454925997, -824.6112390511391)); - ekvOrig.append(QPointF(-2789.9932374825075, -836.9923142371927)); - ekvOrig.append(QPointF(-2901.656478768932, -817.3030720450208)); - ekvOrig.append(QPointF(-2956.4986596431745, -931.902205605136)); + // Curve approximation scale 0.5 + QTest::newRow("Issue #767.") << InputPointsIssue767_Fabric_TopCollar() << 37.795275590551185 + << OutputPointsIssue767_Fabric_TopCollar(); // See private test cases in file jacket_issue_#767.val, piece "SkinFusing_TopCollar_Notch" - // Curve approximation scale 0.4 - QTest::newRow("Issue #767.") << points << 37.795275590551185 << ekvOrig; + // Curve approximation scale 0.5 + QTest::newRow("Issue #767.") << InputPointsIssue767_SkinFusing_TopCollar_Notch() << 37.795275590551185 + << OutputPointsIssue767_SkinFusing_TopCollar_Notch(); + + points.clear(); + p = VSAPoint(1122.8447244094489, 91.85612598425197); + p.SetAngleType(PieceNodeAngle::ByFirstEdgeSymmetry); + points.append(p); + + points.append(VSAPoint(1122.8447244094489, -664.0493858267716)); + points.append(VSAPoint(1122.8447244094489, -664.0493858267716)); + points.append(VSAPoint(1123.2605071010314, -692.1027566151841)); + points.append(VSAPoint(1125.5521344988651, -746.904953834852)); + points.append(VSAPoint(1129.5018897097445, -800.813185020781)); + points.append(VSAPoint(1135.005387617497, -854.573547056137)); + points.append(VSAPoint(1141.9582431059482, -908.9321368240863)); + points.append(VSAPoint(1150.2560710589246, -964.635051207795)); + points.append(VSAPoint(1164.860792708483, -1051.9409225168733)); + points.append(VSAPoint(1176.2406858386873, -1114.83483747791)); + points.append(VSAPoint(1176.2406858386873, -1114.83483747791)); + points.append(VSAPoint(1179.7035125223924, -1136.9452686438185)); + points.append(VSAPoint(1186.627664934387, -1177.145289266175)); + points.append(VSAPoint(1197.298845134993, -1231.2802973446833)); + points.append(VSAPoint(1213.068331853193, -1298.0112723855073)); + points.append(VSAPoint(1231.8133334949034, -1369.0339174169235)); + points.append(VSAPoint(1242.934050298766, -1410.35475)); + points.append(VSAPoint(1242.934050298766, -1410.35475)); + points.append(VSAPoint(2006.3092913385829, -1344.3643464566928)); + + p = VSAPoint(2006.3092913385829, -664.0493858267716); + p.SetSAAfter(56.69291338582678); + points.append(p); + + p = VSAPoint(2006.3092913385829, 91.85612598425197); + p.SetSABefore(56.69291338582678); + points.append(p); + + ekvOrig.clear(); + ekvOrig.append(QPointF(1085.0494488188979, 129.65140157480317)); + ekvOrig.append(QPointF(1085.0494488188976, -664.0493858267716)); + ekvOrig.append(QPointF(1085.0535993023548, -664.60949305358)); + ekvOrig.append(QPointF(1085.4769360432513, -693.172544862023)); + ekvOrig.append(QPointF(1087.8146106807237, -749.0759201835479)); + ekvOrig.append(QPointF(1091.8475344926537, -804.1192779617469)); + ekvOrig.append(QPointF(1097.4551144472157, -858.8963549321579)); + ekvOrig.append(QPointF(1104.5179360066466, -914.1146778774624)); + ekvOrig.append(QPointF(1112.9230524620698, -970.5378147459013)); + ekvOrig.append(QPointF(1127.6248148552152, -1058.4237879476814)); + ekvOrig.append(QPointF(1138.969731038904, -1121.1243937910851)); + ekvOrig.append(QPointF(1142.3634069799264, -1142.7932918177955)); + ekvOrig.append(QPointF(1142.4567081704688, -1143.360751675907)); + ekvOrig.append(QPointF(1149.4580345095278, -1184.0088261935134)); + ekvOrig.append(QPointF(1160.3539624659516, -1239.2839819734102)); + ekvOrig.append(QPointF(1176.3990996347318, -1307.1814137078704)); + ekvOrig.append(QPointF(1195.269438012279, -1378.6789451473478)); + ekvOrig.append(QPointF(1214.661499217333, -1450.7350183203587)); + ekvOrig.append(QPointF(2044.1045669291343, -1379.0333442132135)); + ekvOrig.append(QPointF(2044.104566929134, -664.0493858267716)); + ekvOrig.append(QPointF(2063.0022047244097, -664.0493858267716)); + ekvOrig.append(QPointF(2063.0022047244097, 129.651401574803)); + ekvOrig.append(QPointF(1085.0494488188979, 129.65140157480317)); + + // See private test cases in file collection/bugs/Issue_#883_case1.val, piece "ledge" + QTest::newRow("Issue #883. Piece 'ledge'") << points << 37.795275590551185 << ekvOrig; + + points.clear(); + p = VSAPoint(1122.8447244094489, 91.85612598425197); + p.SetAngleType(PieceNodeAngle::ByFirstEdgeSymmetry); + points.append(p); + + points.append(VSAPoint(1122.8447244094489, -664.0493858267716)); + points.append(VSAPoint(1122.8447244094489, -664.0493858267716)); + points.append(VSAPoint(1123.2605071010314, -692.1027566151841)); + points.append(VSAPoint(1125.5521344988651, -746.904953834852)); + points.append(VSAPoint(1129.5018897097445, -800.813185020781)); + points.append(VSAPoint(1135.005387617497, -854.573547056137)); + points.append(VSAPoint(1141.9582431059482, -908.9321368240863)); + points.append(VSAPoint(1150.2560710589246, -964.635051207795)); + points.append(VSAPoint(1164.860792708483, -1051.9409225168733)); + points.append(VSAPoint(1176.2406858386873, -1114.83483747791)); + points.append(VSAPoint(1176.2406858386873, -1114.83483747791)); + points.append(VSAPoint(1179.7035125223924, -1136.9452686438185)); + points.append(VSAPoint(1186.627664934387, -1177.145289266175)); + points.append(VSAPoint(1197.298845134993, -1231.2802973446833)); + points.append(VSAPoint(1213.068331853193, -1298.0112723855073)); + points.append(VSAPoint(1231.8133334949034, -1369.0339174169235)); + points.append(VSAPoint(1242.934050298766, -1410.35475)); + points.append(VSAPoint(1242.934050298766, -1410.35475)); + points.append(VSAPoint(2006.3092913385829, -1344.3643464566928)); + + p = VSAPoint(2006.3092913385829, -664.0493858267716); + p.SetSAAfter(56.69291338582678); + points.append(p); + + points.append(VSAPoint(2006.3092913385829, 91.85612598425197)); + + ekvOrig.clear(); + ekvOrig.append(QPointF(1085.0494488188979, 129.65140157480317)); + ekvOrig.append(QPointF(1085.0494488188976, -664.0493858267716)); + ekvOrig.append(QPointF(1085.0535993023548, -664.60949305358)); + ekvOrig.append(QPointF(1085.4769360432513, -693.172544862023)); + ekvOrig.append(QPointF(1087.8146106807237, -749.0759201835479)); + ekvOrig.append(QPointF(1091.8475344926537, -804.1192779617469)); + ekvOrig.append(QPointF(1097.4551144472157, -858.8963549321579)); + ekvOrig.append(QPointF(1104.5179360066466, -914.1146778774624)); + ekvOrig.append(QPointF(1112.9230524620698, -970.5378147459013)); + ekvOrig.append(QPointF(1127.6248148552152, -1058.4237879476814)); + ekvOrig.append(QPointF(1138.969731038904, -1121.1243937910851)); + ekvOrig.append(QPointF(1142.3634069799264, -1142.7932918177955)); + ekvOrig.append(QPointF(1142.4567081704688, -1143.360751675907)); + ekvOrig.append(QPointF(1149.4580345095278, -1184.0088261935134)); + ekvOrig.append(QPointF(1160.3539624659516, -1239.2839819734102)); + ekvOrig.append(QPointF(1176.3990996347318, -1307.1814137078704)); + ekvOrig.append(QPointF(1195.269438012279, -1378.6789451473478)); + ekvOrig.append(QPointF(1214.661499217333, -1450.7350183203587)); + ekvOrig.append(QPointF(2044.1045669291343, -1379.0333442132135)); + ekvOrig.append(QPointF(2044.104566929134, -664.0493858267716)); + ekvOrig.append(QPointF(2063.0022047244097, -664.0493858267716)); + ekvOrig.append(QPointF(2043.1596850393703, 129.651401574803)); + ekvOrig.append(QPointF(1085.0494488188979, 129.65140157480317)); + + // See private test cases in file collection/bugs/Issue_#883_case1.val, piece "prong" + QTest::newRow("Issue #883. Piece 'prong'") << points << 37.795275590551185 << ekvOrig; } //--------------------------------------------------------------------------------------------------------------------- @@ -3325,375 +4870,13 @@ void TST_VAbstractPiece::EquidistantAngleType_data() const QTest::addColumn("width"); QTest::addColumn>("ekvOrig"); - QVector points;// Input points. - - points.append(VSAPoint(239.15935115817035, 1727.8772840128854)); - points.append(VSAPoint(239.15935115817035, 1727.8772840128854)); - points.append(VSAPoint(229.26906627866828, 1672.003934630032)); - points.append(VSAPoint(210.32230605803002, 1561.0565494697453)); - points.append(VSAPoint(192.34933775540307, 1451.038491596672)); - points.append(VSAPoint(175.3204063396455, 1341.9165954116006)); - points.append(VSAPoint(151.37328308463964, 1179.739848589476)); - points.append(VSAPoint(122.62258120063842, 966.4750391568086)); - points.append(VSAPoint(97.11243630356083, 756.1978956903439)); - points.append(VSAPoint(74.60480814427176, 548.64309339639)); - points.append(VSAPoint(54.861656473636025, 343.5453074812554)); - points.append(VSAPoint(37.64494104251851, 140.6392131512489)); - - VSAPoint point = VSAPoint(30.0, 39.999874015748034); - point.SetAngleType(PieceNodeAngle::ByFirstEdgeRightAngle); - points.append(point); - - point = VSAPoint(30.0, 39.999874015748034); - point.SetAngleType(PieceNodeAngle::ByFirstEdgeRightAngle); - points.append(point); - - point = VSAPoint(30.0, 39.999874015748034); - point.SetAngleType(PieceNodeAngle::ByFirstEdgeRightAngle); - points.append(point); - - points.append(VSAPoint(45.17616605845943, 17.610441101076585)); - points.append(VSAPoint(75.44740737398081, -23.822072592206776)); - points.append(VSAPoint(105.6438731200462, -61.349018284438976)); - points.append(VSAPoint(135.79060039912326, -95.09267882253144)); - points.append(VSAPoint(165.91262631367965, -125.1753370533956)); - points.append(VSAPoint(196.03498796618314, -151.71927582394284)); - points.append(VSAPoint(226.1827224591014, -174.84677798108459)); - points.append(VSAPoint(256.3808668949021, -194.68012637173229)); - points.append(VSAPoint(286.65445837605307, -211.3416038427973)); - points.append(VSAPoint(317.0285340050218, -224.9534932411911)); - points.append(VSAPoint(347.52813088427615, -235.63807741382516)); - points.append(VSAPoint(378.17828611628374, -243.51763920761078)); - points.append(VSAPoint(409.00403680351224, -248.71446146945948)); - points.append(VSAPoint(440.0304200484296, -251.35082704628257)); - points.append(VSAPoint(471.2824729535032, -251.54901878499163)); - points.append(VSAPoint(502.78523262120086, -249.43131953249798)); - points.append(VSAPoint(518.6504625195685, -247.45337139417512)); - points.append(VSAPoint(518.6504625195685, -247.45337139417512)); - points.append(VSAPoint(518.6504625195685, -247.45337139417512)); - points.append(VSAPoint(530.2610383503521, -245.74288092468555)); - points.append(VSAPoint(552.1872278041676, -241.18301269150965)); - points.append(VSAPoint(572.6437092641386, -235.3144676119963)); - points.append(VSAPoint(591.7240901252175, -228.20167669358835)); - points.append(VSAPoint(609.5219777823567, -219.9090709437288)); - points.append(VSAPoint(626.130979630509, -210.50108136986046)); - points.append(VSAPoint(641.6447030646272, -200.04213897942634)); - points.append(VSAPoint(656.1567554796634, -188.59667477986926)); - points.append(VSAPoint(669.7607442705705, -176.2291197786322)); - points.append(VSAPoint(682.5502768323008, -163.00390498315804)); - points.append(VSAPoint(694.6189605598073, -148.98546140088973)); - points.append(VSAPoint(706.060402848042, -134.2382200392702)); - points.append(VSAPoint(722.300407627205, -110.96277002193168)); - points.append(VSAPoint(742.5431323074765, -77.86867271190005)); - points.append(VSAPoint(771.5587695889417, -25.219950033288583)); - points.append(VSAPoint(801.3225470991345, 29.88442488061677)); - points.append(VSAPoint(822.7622961453703, 66.90756576711863)); - points.append(VSAPoint(846.3734491821488, 103.62434739887975)); - points.append(VSAPoint(866.0660930267316, 130.61304884599105)); - points.append(VSAPoint(880.202278000172, 148.25843766499418)); - points.append(VSAPoint(895.3025472485346, 165.537297136819)); - points.append(VSAPoint(911.4605081667719, 182.38519625402265)); - points.append(VSAPoint(928.7697681498366, 198.73770400916214)); - points.append(VSAPoint(947.3239345926813, 214.5303893947946)); - - point = VSAPoint(957.1548316121191, 222.1693111391918); - point.SetAngleType(PieceNodeAngle::BySecondEdgeRightAngle); - points.append(point); - - point = VSAPoint(957.1548316121191, 222.1693111391918); - point.SetAngleType(PieceNodeAngle::BySecondEdgeRightAngle); - points.append(point); - - point = VSAPoint(957.1548316121191, 222.1693111391918); - point.SetAngleType(PieceNodeAngle::BySecondEdgeRightAngle); - points.append(point); - - points.append(VSAPoint(952.3136401198107, 240.982134772638)); - points.append(VSAPoint(940.9881447982464, 288.3639167749205)); - points.append(VSAPoint(928.1711209417526, 346.5350481212475)); - points.append(VSAPoint(914.3961310718933, 414.47551510225964)); - points.append(VSAPoint(900.1967377102318, 491.1653040085978)); - points.append(VSAPoint(886.1065033783323, 575.5844011309023)); - points.append(VSAPoint(872.6589905977585, 666.712792759814)); - points.append(VSAPoint(860.3877618900742, 763.5304651859733)); - points.append(VSAPoint(849.8263797768434, 865.017404700021)); - points.append(VSAPoint(841.5084067796297, 970.1535975925977)); - points.append(VSAPoint(837.1624212037573, 1050.8452199630021)); - points.append(VSAPoint(835.1862064061293, 1105.1939935906626)); - points.append(VSAPoint(834.0709728058853, 1159.8813228514407)); - points.append(VSAPoint(833.8834157182207, 1214.7797060316668)); - points.append(VSAPoint(834.6902304583309, 1269.7616414176705)); - points.append(VSAPoint(836.5581123414115, 1324.699627295782)); - points.append(VSAPoint(839.5537566826579, 1379.4661619523315)); - points.append(VSAPoint(843.7438587972656, 1433.933743673649)); - points.append(VSAPoint(849.1951140004301, 1487.9748707460644)); - points.append(VSAPoint(855.9742176073469, 1541.462041455908)); - points.append(VSAPoint(864.1478649332113, 1594.2677540895102)); - points.append(VSAPoint(873.782751293219, 1646.2645069332007)); - points.append(VSAPoint(879.2340548139807, 1671.8780036332896)); - points.append(VSAPoint(879.2340548139807, 1671.8780036332896)); - - QVector ekvOrig; - ekvOrig.append(QPointF(207.97524435031346, 1768.5451872439698)); - ekvOrig.append(QPointF(192.03240642375732, 1678.4790501733535)); - ekvOrig.append(QPointF(173.0434501174838, 1567.284575520683)); - ekvOrig.append(QPointF(155.026805023172, 1456.9991585940363)); - ekvOrig.append(QPointF(137.95319893013118, 1347.5909857555691)); - ekvOrig.append(QPointF(113.94865296170948, 1185.0253559450243)); - ekvOrig.append(QPointF(85.13262246004243, 971.2759567707533)); - ekvOrig.append(QPointF(59.56333814296166, 760.5113339757822)); - ekvOrig.append(QPointF(37.00526380453169, 552.491340651304)); - ekvOrig.append(QPointF(17.2197909125064, 346.95390918468786)); - ekvOrig.append(QPointF(-0.029116486330288183, 143.66841923390743)); - ekvOrig.append(QPointF(-12.288070724611146, -17.710595485938132)); - ekvOrig.append(QPointF(26.31665967166908, -20.64315536140115)); - ekvOrig.append(QPointF(45.449182757960564, -46.830007644639885)); - ekvOrig.append(QPointF(76.80902542176231, -85.80275109276256)); - ekvOrig.append(QPointF(108.32184223768654, -121.07549507561193)); - ekvOrig.append(QPointF(140.03960977826148, -152.7518093937674)); - ekvOrig.append(QPointF(172.0109643794434, -180.92508772882493)); - ekvOrig.append(QPointF(204.27687396752606, -205.6775245587238)); - ekvOrig.append(QPointF(236.86536116641804, -227.0807873159393)); - ekvOrig.append(QPointF(269.7862380601783, -245.1992338515816)); - ekvOrig.append(QPointF(303.02747320804565, -260.09601694470166)); - ekvOrig.append(QPointF(336.55504181349585, -271.8413567367945)); - ekvOrig.append(QPointF(370.3174391861959, -280.5210157594255)); - ekvOrig.append(QPointF(404.25444394855236, -286.242355156443)); - ekvOrig.append(QPointF(438.30793239230167, -289.13593911030426)); - ekvOrig.append(QPointF(472.43167053063326, -289.3523422699121)); - ekvOrig.append(QPointF(506.39354740949744, -287.06933462111243)); - ekvOrig.append(QPointF(523.743301608498, -284.90630803794244)); - ekvOrig.append(QPointF(536.8687596977786, -282.9726424474836)); - ekvOrig.append(QPointF(561.2586117828608, -277.9004199361857)); - ekvOrig.append(QPointF(584.4735176539314, -271.2405394534338)); - ekvOrig.append(QPointF(606.3291152578626, -263.09320228624324)); - ekvOrig.append(QPointF(626.8443757152221, -253.53448553817316)); - ekvOrig.append(QPointF(646.0388521585816, -242.66198182567126)); - ekvOrig.append(QPointF(663.9421664899236, -230.592040397069)); - ekvOrig.append(QPointF(680.6014176242785, -217.45310890781045)); - ekvOrig.append(QPointF(696.0845837791157, -203.37717044914066)); - ekvOrig.append(QPointF(710.4796074150597, -188.49177267151234)); - ekvOrig.append(QPointF(723.8903257348999, -172.9144816918925)); - ekvOrig.append(QPointF(736.5088929791715, -156.65000627864362)); - ekvOrig.append(QPointF(753.9481523879648, -131.65576420615508)); - ekvOrig.append(QPointF(775.2314496504125, -96.86047247508529)); - ekvOrig.append(QPointF(804.7371559219258, -43.32252216724247)); - ekvOrig.append(QPointF(834.3104997062314, 11.42928555575623)); - ekvOrig.append(QPointF(855.028099173095, 47.20538546427957)); - ekvOrig.append(QPointF(877.5611048277024, 82.24558222378279)); - ekvOrig.append(QPointF(896.0956388425119, 107.64709808599238)); - ekvOrig.append(QPointF(909.1935793406782, 123.99650588254744)); - ekvOrig.append(QPointF(923.186035221142, 140.00772229515948)); - ekvOrig.append(QPointF(938.0932990305748, 155.55152005811772)); - ekvOrig.append(QPointF(954.0130809543497, 170.5913517795987)); - ekvOrig.append(QPointF(967.8888653415031, 182.40195496569294)); - ekvOrig.append(QPointF(1004.0222000502486, 191.70031421197467)); - ekvOrig.append(QPointF(988.9976255298626, 250.08566646847305)); - ekvOrig.append(QPointF(977.8259070734451, 296.82410160649124)); - ekvOrig.append(QPointF(965.149517480306, 354.35695262370325)); - ekvOrig.append(QPointF(951.5014069310696, 421.6716303754821)); - ekvOrig.append(QPointF(937.4212488890727, 497.7174388481253)); - ekvOrig.append(QPointF(923.444794947317, 581.4548412888578)); - ekvOrig.append(QPointF(910.1057337999374, 671.8482997696264)); - ekvOrig.append(QPointF(897.9362480985484, 767.8632391288859)); - ekvOrig.append(QPointF(887.4670427019098, 868.4644297171681)); - ekvOrig.append(QPointF(879.2234261603584, 972.6607837009217)); - ekvOrig.append(QPointF(874.9207445088272, 1052.5483850157796)); - ekvOrig.append(QPointF(872.9674776789623, 1106.266056241682)); - ekvOrig.append(QPointF(871.8649319396666, 1160.3312151973862)); - ekvOrig.append(QPointF(871.6796386709575, 1214.5669734562434)); - ekvOrig.append(QPointF(872.4760820545193, 1268.8421328907752)); - ekvOrig.append(QPointF(874.3182959750076, 1323.025174797752)); - ekvOrig.append(QPointF(877.269773413631, 1376.984247710642)); - ekvOrig.append(QPointF(881.3933583565541, 1430.5871656635104)); - ekvOrig.append(QPointF(886.7511179913885, 1483.701422556393)); - ekvOrig.append(QPointF(893.4041934667935, 1536.1942305045375)); - ekvOrig.append(QPointF(901.4126286647522, 1587.9325929330282)); - ekvOrig.append(QPointF(910.8542351538612, 1638.8862690551816)); - ekvOrig.append(QPointF(925.0965474653889, 1705.8052028484663)); - ekvOrig.append(QPointF(207.97524435031346, 1768.5451872439698)); + // See the file "collection/bugs/Issue_#880.val" + QTest::newRow("Issue #880. Piece: Detail.") << InputPointsIssue880_Piece_Detail() << 37.795275590551185 + << OutputPointsIssue880_Piece_Detail(); // See the file "collection/bugs/Issue_#880.val" - QTest::newRow("Issue #880. Piece: Detail.") << points << 37.795275590551185 << ekvOrig; - - points.clear(); - - points.append(VSAPoint(239.15935115817035, 1727.8772840128854)); - points.append(VSAPoint(239.15935115817035, 1727.8772840128854)); - points.append(VSAPoint(228.38870291910868, 1665.145749022502)); - points.append(VSAPoint(208.68143263818018, 1537.8520195183164)); - points.append(VSAPoint(191.107067165158, 1409.242825317507)); - points.append(VSAPoint(175.590132468123, 1280.2974183439387)); - points.append(VSAPoint(162.05515451515572, 1151.9950505214774)); - points.append(VSAPoint(150.42665927433694, 1025.314973773988)); - points.append(VSAPoint(140.62917271374727, 901.2364400253355)); - points.append(VSAPoint(132.58722080146742, 780.7387011993851)); - points.append(VSAPoint(126.22532950557809, 664.801009220002)); - points.append(VSAPoint(121.46802479415996, 554.4026160110516)); - points.append(VSAPoint(118.23983263529368, 450.5227734963987)); - points.append(VSAPoint(116.46527899705998, 354.1407335999088)); - points.append(VSAPoint(116.06888984753957, 266.235748245447)); - points.append(VSAPoint(116.97519115481305, 187.78706935687848)); - points.append(VSAPoint(119.10870888696115, 119.77394885806838)); - points.append(VSAPoint(122.39396901206462, 63.17563867288196)); - - point = VSAPoint(124.48818897637796, 39.999874015748034); - point.SetAngleType(PieceNodeAngle::ByFirstEdgeRightAngle); - points.append(point); - - point = VSAPoint(124.48818897637796, 39.999874015748034); - point.SetAngleType(PieceNodeAngle::ByFirstEdgeRightAngle); - points.append(point); - - point = VSAPoint(124.48818897637796, 39.999874015748034); - point.SetAngleType(PieceNodeAngle::ByFirstEdgeRightAngle); - points.append(point); - - points.append(VSAPoint(131.17745572117823, 59.19926080571054)); - points.append(VSAPoint(145.42358161389507, 95.6473363798392)); - points.append(VSAPoint(160.66298139295492, 129.7789066433697)); - points.append(VSAPoint(176.84250283902833, 161.62100748114375)); - points.append(VSAPoint(193.90899373278594, 191.2006747780029)); - points.append(VSAPoint(211.80930185489825, 218.54494441878893)); - points.append(VSAPoint(230.49027498603584, 243.68085228834343)); - points.append(VSAPoint(249.8987609068692, 266.6354342715081)); - points.append(VSAPoint(269.98160739806895, 287.4357262531245)); - points.append(VSAPoint(290.68566224030565, 306.1087641180344)); - points.append(VSAPoint(311.95777321424987, 322.6815837510794)); - points.append(VSAPoint(333.7447881005721, 337.1812210371011)); - points.append(VSAPoint(355.99355467994303, 349.6347118609412)); - points.append(VSAPoint(378.650920733033, 360.06909210744146)); - points.append(VSAPoint(401.66373404051285, 368.5113976614434)); - points.append(VSAPoint(424.9788423830528, 374.98866440778875)); - points.append(VSAPoint(448.5430935413237, 379.52792823131904)); - points.append(VSAPoint(472.3033352959959, 382.1562250168761)); - points.append(VSAPoint(496.2064154277402, 382.9005906493014)); - points.append(VSAPoint(520.1991817172269, 381.7880610134368)); - points.append(VSAPoint(544.2284819451269, 378.8456719941238)); - points.append(VSAPoint(568.2411638921103, 374.10045947620404)); - points.append(VSAPoint(592.1840753388481, 367.57945934451936)); - points.append(VSAPoint(616.0040640660104, 359.3097074839112)); - points.append(VSAPoint(639.647977854268, 349.31823977922147)); - points.append(VSAPoint(663.0626644842916, 337.6320921152916)); - points.append(VSAPoint(686.1949717367515, 324.27830037696316)); - points.append(VSAPoint(708.9917473923185, 309.2839004490781)); - points.append(VSAPoint(731.399839231663, 292.67592821647787)); - points.append(VSAPoint(753.3660950354556, 274.48141956400417)); - points.append(VSAPoint(774.8373625843669, 254.72741037649877)); - points.append(VSAPoint(795.7604896590673, 233.4409365388032)); - - point = VSAPoint(805.9737292499144, 222.1693111391918); - point.SetAngleType(PieceNodeAngle::BySecondEdgeRightAngle); - points.append(point); - - point = VSAPoint(805.9737292499144, 222.1693111391918); - point.SetAngleType(PieceNodeAngle::BySecondEdgeRightAngle); - points.append(point); - - point = VSAPoint(805.9737292499144, 222.1693111391918); - point.SetAngleType(PieceNodeAngle::BySecondEdgeRightAngle); - points.append(point); - - points.append(VSAPoint(801.1024217701829, 252.56710912274912)); - points.append(VSAPoint(783.4393334619424, 355.5003208404381)); - points.append(VSAPoint(766.2212290655575, 462.42427627224754)); - points.append(VSAPoint(754.024845322645, 544.4163414513537)); - points.append(VSAPoint(741.7977429994414, 634.4390974603281)); - points.append(VSAPoint(730.0853694039338, 731.420313160728)); - points.append(VSAPoint(719.4331718441081, 834.2877574141107)); - points.append(VSAPoint(710.3865976279511, 941.9691990820332)); - points.append(VSAPoint(703.4910940634496, 1053.3924070260528)); - points.append(VSAPoint(700.1562772589527, 1138.828625614281)); - points.append(VSAPoint(698.833185316681, 1196.3413376010737)); - points.append(VSAPoint(698.3546751480656, 1254.1863611415165)); - points.append(VSAPoint(698.7889276666046, 1312.2296673433043)); - points.append(VSAPoint(700.2041237857968, 1370.3372273141313)); - points.append(VSAPoint(702.6684444191402, 1428.3750121616927)); - points.append(VSAPoint(706.2500704801332, 1486.2089929936824)); - points.append(VSAPoint(711.0171828822739, 1543.7051409177961)); - points.append(VSAPoint(717.037962539061, 1600.7294270417278)); - points.append(VSAPoint(724.3805903639925, 1657.1478224731723)); - points.append(VSAPoint(728.6282421890804, 1685.0543048990771)); - points.append(VSAPoint(728.6282421890804, 1685.0543048990771)); - - ekvOrig.clear(); - ekvOrig.append(QPointF(176.43300321313995, 1809.2444231688892)); - ekvOrig.append(QPointF(153.78313541824667, 1677.3246962809667)); - ekvOrig.append(QPointF(133.87793658475465, 1548.7525013540196)); - ekvOrig.append(QPointF(116.13042064136965, 1418.8761921325834)); - ekvOrig.append(QPointF(100.47483551040597, 1288.7786029156107)); - ekvOrig.append(QPointF(86.82794509892291, 1159.4153812471877)); - ekvOrig.append(QPointF(75.10856636006955, 1031.7452255369717)); - ekvOrig.append(QPointF(65.2370069141379, 906.7286088476662)); - ekvOrig.append(QPointF(57.13470030186313, 785.3265367259893)); - ekvOrig.append(QPointF(50.723988203508114, 668.4991453010994)); - ekvOrig.append(QPointF(45.92803421919151, 557.203853977457)); - ekvOrig.append(QPointF(42.670896438097856, 452.3925716567163)); - ekvOrig.append(QPointF(40.87786536674168, 355.006959561548)); - ekvOrig.append(QPointF(40.47636977532461, 265.9695473970137)); - ekvOrig.append(QPointF(41.39833199038787, 186.1652735021885)); - ekvOrig.append(QPointF(43.58687052785413, 116.39817805128028)); - ekvOrig.append(QPointF(47.000830659421496, 57.582630079953006)); - ekvOrig.append(QPointF(65.68957312272546, -149.23704714976648)); - ekvOrig.append(QPointF(140.97338867071443, -142.43421359312867)); - ekvOrig.append(QPointF(202.09509240490257, 32.99596074790383)); - ekvOrig.append(QPointF(215.1760179357478, 66.46292333957582)); - ekvOrig.append(QPointF(228.91247186136482, 97.22835696106226)); - ekvOrig.append(QPointF(243.32162407629943, 125.58628332767515)); - ekvOrig.append(QPointF(258.3193167174947, 151.58030642877873)); - ekvOrig.append(QPointF(273.82133547133117, 175.26098152608563)); - ekvOrig.append(QPointF(289.7450120582673, 196.68684969815953)); - ekvOrig.append(QPointF(306.0113435768183, 215.92517884608725)); - ekvOrig.append(QPointF(322.54758976689817, 233.05217073860985)); - ekvOrig.append(QPointF(339.2901947112362, 248.1523672201739)); - ekvOrig.append(QPointF(356.187735703955, 261.31701737912283)); - ekvOrig.append(QPointF(373.20345965213, 272.6412775724043)); - ekvOrig.append(QPointF(390.3168780918559, 282.22031642578816)); - ekvOrig.append(QPointF(407.5239155726528, 290.1446608341238)); - ekvOrig.append(QPointF(424.8352834117022, 296.495377493676)); - ekvOrig.append(QPointF(442.27307072936014, 301.3398413607568)); - ekvOrig.append(QPointF(459.86592925304035, 304.7288150104031)); - ekvOrig.append(QPointF(477.6435530680066, 306.6953299983464)); - ekvOrig.append(QPointF(495.63130278250605, 307.2554863722674)); - ekvOrig.append(QPointF(513.8457455201286, 306.4108940021393)); - ekvOrig.append(QPointF(532.2916184779821, 304.1521959323631)); - ekvOrig.append(QPointF(550.9603800691451, 300.4630103015354)); - ekvOrig.append(QPointF(569.8302035956763, 295.3236970657534)); - ekvOrig.append(QPointF(588.8670691430791, 288.71453548788656)); - ekvOrig.append(QPointF(608.0265381189225, 280.6181087615205)); - ekvOrig.append(QPointF(627.2558255674835, 271.02087194401406)); - ekvOrig.append(QPointF(646.49587350226, 259.9139991901456)); - ekvOrig.append(QPointF(665.6832327130836, 247.2936645466005)); - ekvOrig.append(QPointF(684.7516535483287, 233.16092151690435)); - ekvOrig.append(QPointF(703.6333557352625, 217.52132882153552)); - ekvOrig.append(QPointF(722.2599918458167, 200.3844392540231)); - ekvOrig.append(QPointF(740.775593812871, 181.5472991146096)); - ekvOrig.append(QPointF(827.8905206609868, 85.40475654403394)); - ekvOrig.append(QPointF(902.5287659069734, 97.36568353412405)); - ekvOrig.append(QPointF(875.674633126301, 264.9400989630364)); - ekvOrig.append(QPointF(858.0066884529067, 367.9016115788377)); - ekvOrig.append(QPointF(840.9224284397759, 473.9943970664766)); - ekvOrig.append(QPointF(828.8632024485165, 555.064398169016)); - ekvOrig.append(QPointF(816.7758887510091, 644.0579522451663)); - ekvOrig.append(QPointF(805.2076743624673, 739.845495712356)); - ekvOrig.append(QPointF(794.6970759283694, 841.3455282095892)); - ekvOrig.append(QPointF(785.7814316001975, 947.4685104254818)); - ekvOrig.append(QPointF(778.9905248854037, 1057.2015565957809)); - ekvOrig.append(QPointF(775.7129148747653, 1141.1721677964533)); - ekvOrig.append(QPointF(774.4165452653767, 1197.5233022801074)); - ekvOrig.append(QPointF(773.9475654146959, 1254.2162469276998)); - ekvOrig.append(QPointF(774.3725935699175, 1311.0266010527719)); - ekvOrig.append(QPointF(775.7556236491987, 1367.8134323501624)); - ekvOrig.append(QPointF(778.1598154813046, 1424.435109901397)); - ekvOrig.append(QPointF(781.6473200844314, 1480.7492730591212)); - ekvOrig.append(QPointF(786.2790701026621, 1536.6128151220523)); - ekvOrig.append(QPointF(792.1145299697872, 1591.8818919022567)); - ekvOrig.append(QPointF(799.2334640707138, 1646.5814965577908)); - ekvOrig.append(QPointF(815.4824145904547, 1753.3348442404624)); - ekvOrig.append(QPointF(176.43300321313995, 1809.2444231688892)); - - // See the file "collection/bugs/Issue_#880.val" - QTest::newRow("Issue #880. Piece: Detail_1.") << points << 75.59055118110237 << ekvOrig; + QTest::newRow("Issue #880. Piece: Detail_1.") << InputPointsIssue880_Piece_Detail_1() << 75.59055118110237 + << OutputPointsIssue880_Piece_Detail_1(); } //--------------------------------------------------------------------------------------------------------------------- @@ -4563,71 +5746,33 @@ QVector TST_VAbstractPiece::InputPointsIssue298Case1() const { QVector points; - points += VSAPoint(35, 39.9999); - points += VSAPoint(412.953, 39.9999); - points += VSAPoint(417.135, 417.929); - points += VSAPoint(417.135, 417.929); - points += VSAPoint(408.797, 405.589); - points += VSAPoint(390.909, 377.669); - points += VSAPoint(362.315, 330.86); - points += VSAPoint(323.075, 264.247); - points += VSAPoint(286.15, 201.448); - points += VSAPoint(262.477, 162.745); - points += VSAPoint(249.22, 142.455); - points += VSAPoint(241.092, 131.261); - points += VSAPoint(236.545, 125.75); - points += VSAPoint(232.808, 122.058); - points += VSAPoint(230.6, 120.629); - points += VSAPoint(229.393, 120.277); - points += VSAPoint(228.421, 120.456); - points += VSAPoint(227.69, 121.185); - points += VSAPoint(227.033, 123.272); - points += VSAPoint(227.112, 128.232); - points += VSAPoint(228.29, 135.699); - points += VSAPoint(230.625, 145.81); - points += VSAPoint(234.173, 158.703); - points += VSAPoint(241.73, 183.168); - points += VSAPoint(248.796, 204.144); - points += VSAPoint(248.796, 204.144); - points += VSAPoint(251.528, 212.406); - points += VSAPoint(255.482, 227.075); - points += VSAPoint(257.717, 239.591); - points += VSAPoint(258.279, 247.554); - points += VSAPoint(258.203, 252.278); - points += VSAPoint(257.756, 256.51); - points += VSAPoint(256.949, 260.264); - points += VSAPoint(255.795, 263.547); - points += VSAPoint(254.308, 266.372); - points += VSAPoint(252.501, 268.749); - points += VSAPoint(250.385, 270.688); - points += VSAPoint(247.974, 272.201); - points += VSAPoint(245.281, 273.296); - points += VSAPoint(242.319, 273.986); - points += VSAPoint(239.1, 274.28); - points += VSAPoint(233.846, 274.05); - points += VSAPoint(226.022, 272.393); - points += VSAPoint(217.402, 269.345); - points += VSAPoint(208.09, 264.991); - points += VSAPoint(198.186, 259.414); - points += VSAPoint(187.795, 252.7); - points += VSAPoint(177.019, 244.933); - points += VSAPoint(165.96, 236.197); - points += VSAPoint(154.721, 226.576); - points += VSAPoint(143.405, 216.157); - points += VSAPoint(132.113, 205.022); - points += VSAPoint(120.95, 193.257); - points += VSAPoint(110.017, 180.946); - points += VSAPoint(99.4167, 168.174); - points += VSAPoint(89.2522, 155.024); - points += VSAPoint(79.626, 141.582); - points += VSAPoint(70.6405, 127.933); - points += VSAPoint(62.3985, 114.16); - points += VSAPoint(55.0025, 100.348); - points += VSAPoint(48.5551, 86.5823); - points += VSAPoint(43.159, 72.9466); - points += VSAPoint(38.9167, 59.5258); - points += VSAPoint(35.9309, 46.4042); - points += VSAPoint(35, 39.9999); + points += VSAPoint(1168.8582803149607, 39.999874015748034); + points += VSAPoint(1168.8582803149607, 39.999874015748034); + points += VSAPoint(1158.4080212626877, 52.34979612030506); + points += VSAPoint(1138.6467679457483, 77.34433043475516); + points += VSAPoint(1120.211621843451, 102.68135735665871); + points += VSAPoint(1103.0570156997037, 128.3485040871826); + points += VSAPoint(1087.1373822584126, 154.33339782749366); + points += VSAPoint(1072.4071542634842, 180.62366577875878); + points += VSAPoint(1058.8207644588258, 207.20693514214486); + points += VSAPoint(1046.3326455883434, 234.07083311881877); + points += VSAPoint(1034.8972303959442, 261.2029869099473); + points += VSAPoint(1024.4689516255348, 288.5910237166974); + points += VSAPoint(1015.0022420210217, 316.22257074023594); + points += VSAPoint(1006.451534326312, 344.08525518172974); + points += VSAPoint(998.7712612853122, 372.16670424234576); + points += VSAPoint(991.9158556419289, 400.4545451232507); + points += VSAPoint(982.9908265175081, 443.2242931323019); + points += VSAPoint(973.6824125433218, 500.88985222984854); + points += VSAPoint(966.8532575499223, 559.1582682295549); + points += VSAPoint(962.1388234885637, 617.9305587407562); + points += VSAPoint(959.1745723104998, 677.107741372787); + points += VSAPoint(957.5959659669836, 736.5908337349825); + points += VSAPoint(957.0384664092692, 796.2808534366778); + points += VSAPoint(957.3056451064515, 885.992413850848); + points += VSAPoint(957.688768266514, 942.023249737111); + points += VSAPoint(957.688768266514, 942.023249737111); + points += VSAPoint(496.34439043247056, 491.011561876428); return points; } @@ -4636,41 +5781,35 @@ QVector TST_VAbstractPiece::InputPointsIssue298Case1() const QVector TST_VAbstractPiece::OutputPointsIssue298Case1() const { QVector points; - points += QPointF(-52.3724798442221, -35.5907); - points += QPointF(487.7117748779425, -35.5907); - points += QPointF(493.3432017362585, 473.32371517914754); - points += QPointF(385.98559977345093, 506.8445742667132); - points += QPointF(345.64704646524604, 447.1446764706891); - points += QPointF(326.82411403464874, 417.76541252489994); - points += QPointF(297.4844355409708, 369.73572061014266); - points += QPointF(280.35686644039447, 340.63425704493835); - points += QPointF(268.2336759982877, 345.56366422433183); - points += QPointF(254.38869069377708, 348.78886336684104); - points += QPointF(240.8928242225697, 350.0214774527481); - points += QPointF(224.29748398011193, 349.2949970081793); - points += QPointF(205.50330859478322, 345.31468660256957); - points += QPointF(188.72568121178054, 339.38217984347546); - points += QPointF(173.487571907339, 332.2573164509149); - points += QPointF(159.09346043909582, 324.15190856941325); - points += QPointF(145.1562378134811, 315.1465661857729); - points += QPointF(131.46917217609203, 305.28136213922494); - points += QPointF(117.9345600633141, 294.589765121662); - points += QPointF(104.5254725457231, 283.11108988305153); - points += QPointF(91.25156649455745, 270.88938370179534); - points += QPointF(78.14294517511125, 257.9630200468154); - points += QPointF(65.25722328495372, 244.3823949426573); - points += QPointF(52.65759889494496, 230.19470850111355); - points += QPointF(40.412239584772514, 215.4406233233806); - points += QPointF(28.600027181043494, 200.15894757848054); - points += QPointF(17.304913602921047, 184.38648111018338); - points += QPointF(6.6105681133211736, 168.14173996194046); - points += QPointF(-3.3897319816688407, 151.43048866270516); - points += QPointF(-12.592267484961765, 134.24479093805914); - points += QPointF(-20.880547263016442, 116.54866956498358); - points += QPointF(-28.111192294561146, 98.27715746242171); - points += QPointF(-34.098213657706594, 79.33681465062016); - points += QPointF(-38.441724866417594, 60.24852451858777); - points += QPointF(-52.3724798442221, -35.5907); + + points += QPointF(1181.3702112033552, -59.406362870594705); + points += QPointF(1269.0394640469171, 38.62919078337234); + points += QPointF(1216.9245192058738, 100.21766491121537); + points += QPointF(1198.8808131327262, 123.03980191699638); + points += QPointF(1182.221067861894, 145.9367408453258); + points += QPointF(1166.7329413673538, 169.11045943642068); + points += QPointF(1152.3625684065119, 192.56656574522466); + points += QPointF(1139.0585460343918, 216.3113654260635); + points += QPointF(1126.7720261028358, 240.35129609014484); + points += QPointF(1115.456677001793, 264.6923827640837); + points += QPointF(1105.0685270464996, 289.3397503891491); + points += QPointF(1095.5657115675733, 314.29722092044074); + points += QPointF(1086.9081516638566, 339.5670119653025); + points += QPointF(1079.05719443133, 365.14954287895875); + points += QPointF(1071.975242726908, 391.04334443729294); + points += QPointF(1065.6650892202777, 417.08128115689766); + points += QPointF(1057.3401968224273, 456.97510616238503); + points += QPointF(1048.5682451589698, 511.3172850182788); + points += QPointF(1042.0910863010336, 566.5823635228949); + points += QPointF(1037.5780007657413, 622.8445512489122); + points += QPointF(1034.7149371280923, 680.0016643255938); + points += QPointF(1033.1771512850767, 737.9466090605974); + points += QPointF(1032.63006888955, 796.5212904492478); + points += QPointF(1032.8954266362925, 885.6214237282716); + points += QPointF(1033.62206579804, 991.8906443458876); + points += QPointF(940.8759712878797, 1031.2978406173477); + points += QPointF(376.98902117953776, 480.04021757016505); + points += QPointF(1181.3702112033552, -59.406362870594705); return points; } @@ -4680,71 +5819,36 @@ QVector TST_VAbstractPiece::InputPointsIssue298Case2() const { QVector points; - points += VSAPoint(35, 39.9999); - points += VSAPoint(35, 39.9999); - points += VSAPoint(35.9309, 46.4042); - points += VSAPoint(38.9167, 59.5258); - points += VSAPoint(43.159, 72.9466); - points += VSAPoint(48.5551, 86.5823); - points += VSAPoint(55.0025, 100.348); - points += VSAPoint(62.3985, 114.16); - points += VSAPoint(70.6405, 127.933); - points += VSAPoint(79.626, 141.582); - points += VSAPoint(89.2522, 155.024); - points += VSAPoint(99.4167, 168.174); - points += VSAPoint(110.017, 180.946); - points += VSAPoint(120.95, 193.257); - points += VSAPoint(132.113, 205.022); - points += VSAPoint(143.405, 216.157); - points += VSAPoint(154.721, 226.576); - points += VSAPoint(165.96, 236.197); - points += VSAPoint(177.019, 244.933); - points += VSAPoint(187.795, 252.7); - points += VSAPoint(198.186, 259.414); - points += VSAPoint(208.09, 264.991); - points += VSAPoint(217.402, 269.345); - points += VSAPoint(226.022, 272.393); - points += VSAPoint(233.846, 274.05); - points += VSAPoint(239.1, 274.28); - points += VSAPoint(242.319, 273.986); - points += VSAPoint(245.281, 273.296); - points += VSAPoint(247.974, 272.201); - points += VSAPoint(250.385, 270.688); - points += VSAPoint(252.501, 268.749); - points += VSAPoint(254.308, 266.372); - points += VSAPoint(255.795, 263.547); - points += VSAPoint(256.949, 260.264); - points += VSAPoint(257.756, 256.51); - points += VSAPoint(258.203, 252.278); - points += VSAPoint(258.279, 247.554); - points += VSAPoint(257.717, 239.591); - points += VSAPoint(255.482, 227.075); - points += VSAPoint(251.528, 212.406); - points += VSAPoint(248.796, 204.144); - points += VSAPoint(248.796, 204.144); - points += VSAPoint(241.73, 183.168); - points += VSAPoint(234.173, 158.703); - points += VSAPoint(230.625, 145.81); - points += VSAPoint(228.29, 135.699); - points += VSAPoint(227.112, 128.232); - points += VSAPoint(227.033, 123.272); - points += VSAPoint(227.69, 121.185); - points += VSAPoint(228.421, 120.456); - points += VSAPoint(229.393, 120.277); - points += VSAPoint(230.6, 120.629); - points += VSAPoint(232.808, 122.058); - points += VSAPoint(236.545, 125.75); - points += VSAPoint(241.092, 131.261); - points += VSAPoint(249.22, 142.455); - points += VSAPoint(262.477, 162.745); - points += VSAPoint(286.15, 201.448); - points += VSAPoint(323.075, 264.247); - points += VSAPoint(362.315, 330.86); - points += VSAPoint(390.909, 377.669); - points += VSAPoint(408.797, 405.589); - points += VSAPoint(417.135, 417.929); - points += VSAPoint(417.135, 417.929); - points += VSAPoint(35, 417.953); + points += VSAPoint(35.0000125984252, 39.999874015748034); + points += VSAPoint(957.688768266514, 942.023249737111); + points += VSAPoint(957.688768266514, 942.023249737111); + points += VSAPoint(957.9428301208773, 1005.4262286032558); + points += VSAPoint(956.808738701602, 1094.3704783643723); + points += VSAPoint(954.7225808350249, 1153.2234318990995); + points += VSAPoint(951.1057634130252, 1211.5904360386712); + points += VSAPoint(945.5937483868565, 1269.3725083924223); + points += VSAPoint(937.8219977077727, 1326.4706665696876); + points += VSAPoint(930.2003883425905, 1368.7591370124287); + points += VSAPoint(924.2779568426622, 1396.7024844774487); + points += VSAPoint(917.5855387770855, 1424.4191758035984); + points += VSAPoint(910.0775668897668, 1451.896838192044); + points += VSAPoint(901.7084739246127, 1479.1230988439531); + points += VSAPoint(892.4326926255303, 1506.0855849604923); + points += VSAPoint(882.2046557364258, 1532.7719237428282); + points += VSAPoint(870.9787960012063, 1559.1697423921285); + points += VSAPoint(858.7095461637784, 1585.266668109559); + points += VSAPoint(845.3513389680488, 1611.0503280962876); + points += VSAPoint(830.8586071579242, 1636.5083495534805); + points += VSAPoint(815.1857834773112, 1661.6283596823046); + points += VSAPoint(798.2873006701168, 1686.397985683927); + points += VSAPoint(780.1175914802475, 1710.8048547595142); + points += VSAPoint(760.6310886516098, 1734.8365941102336); + points += VSAPoint(739.7822249281108, 1758.4808309372515); + points += VSAPoint(717.5254330536571, 1781.725192441735); + points += VSAPoint(693.8151457721555, 1804.5573058248515); + points += VSAPoint(681.3372913240995, 1815.7969526662778); + points += VSAPoint(681.3372913240995, 1815.7969526662778); + points += VSAPoint(35.0000125984252, 39.999874015748034); return points; } @@ -4754,52 +5858,39 @@ QVector TST_VAbstractPiece::OutputPointsIssue298Case2() const { QVector points; - points += QPointF(-2.7952999999999975, 4.838469950598078); - points += QPointF(67.34448942068963, -0.2324858268916558); - points += QPointF(73.11721243320879, 39.48203774070609); - points += QPointF(75.42415682885321, 49.62029267468959); - points += QPointF(78.79409614728041, 60.281321268788744); - points += QPointF(83.27292363150828, 71.59911521750833); - points += QPointF(88.79988374248082, 83.39960453097031); - points += QPointF(95.2926159908344, 95.5247556686474); - points += QPointF(102.65546594334339, 107.82863001903641); - points += QPointF(110.78654319853989, 120.17975944490887); - points += QPointF(119.5782864094781, 132.4565262107595); - points += QPointF(128.91893020761376, 144.54068833830968); - points += QPointF(138.69670055252752, 156.3216457494432); - points += QPointF(148.79638835752286, 167.69430252867102); - points += QPointF(159.09802741244354, 178.55148997659143); - points += QPointF(169.48171675272164, 188.79080814910267); - points += QPointF(179.81876372713828, 198.30845505847407); - points += QPointF(189.9727199683426, 207.00061743916868); - points += QPointF(199.7939139119543, 214.75881893038778); - points += QPointF(209.1143810932559, 221.476716907111); - points += QPointF(216.03386663545683, 225.9476461661168); - points += QPointF(215.3109698947021, 223.26576141899216); - points += QPointF(212.94471478165408, 216.10983179087987); - points += QPointF(205.75950336032207, 194.7799429182702); - points += QPointF(197.88802785264718, 169.29686123304236); - points += QPointF(193.97579117825833, 155.08026950731082); - points += QPointF(191.1640933645057, 142.90507610480435); - points += QPointF(189.3638602852325, 131.49392126360493); - points += QPointF(189.14507682295456, 117.75764312564759); - points += QPointF(194.42693552963567, 100.97950138920423); - points += QPointF(210.03879336533757, 85.41035725481989); - points += QPointF(231.36634627769158, 81.48275234606332); - points += QPointF(246.4916615881645, 85.89378050620131); - points += QPointF(256.60614755001956, 92.43979519799973); - points += QPointF(264.4750900046005, 100.21398185636762); - points += QPointF(270.9888544453203, 108.1087159300009); - points += QPointF(280.35077918473866, 121.00209505562212); - points += QPointF(294.42535276480356, 142.5434013797918); - points += QPointF(318.5638508136392, 182.00744438169633); - points += QPointF(355.64786176301806, 245.0768771131813); - points += QPointF(394.7264228866019, 311.415821866629); - points += QPointF(422.9514429826756, 357.62079373755); - points += QPointF(440.37197676737753, 384.8111617646563); - points += QPointF(488.2841719585649, 455.71983154868764); - points += QPointF(-2.795300000000013, 455.7506738094777); - points += QPointF(-2.7952999999999975, 4.838469950598078); + points += QPointF(-10.830702765714818, 24.587011512350955); + points += QPointF(39.855615789834275, -8.108689868294974); + points += QPointF(995.4203583783104, 926.0543521489114); + points += QPointF(995.7390712145076, 1005.5914525468322); + points += QPointF(994.5954771294847, 1095.2809750974982); + points += QPointF(992.4764226198034, 1155.061981412451); + points += QPointF(988.7898546287646, 1214.554597181484); + points += QPointF(983.1461162030054, 1273.7175168242372); + points += QPointF(975.1622593873819, 1332.3739943859748); + points += QPointF(967.2940111839067, 1376.0309394806493); + points += QPointF(961.2519128953934, 1404.5389014377904); + points += QPointF(961.0174119331466, 1405.5735214303666); + points += QPointF(954.3249938675699, 1433.2902127565162); + points += QPointF(954.0443121744452, 1434.3811384277756); + points += QPointF(946.5363402871264, 1461.8588008162212); + points += QPointF(946.2045616347446, 1463.0019319630142); + points += QPointF(937.6515558315413, 1490.8264962646508); + points += QPointF(927.9590662522897, 1519.0002540634812); + points += QPointF(917.2525136214659, 1546.9351054719114); + points += QPointF(905.4832013554212, 1574.6108628886288); + points += QPointF(892.6034200213376, 1602.0064006098492); + points += QPointF(878.5666407075367, 1629.0998226411741); + points += QPointF(863.3276693496916, 1655.8686930581748); + points += QPointF(846.8427441486504, 1682.2903192093897); + points += QPointF(829.0695617338297, 1708.3420710912978); + points += QPointF(809.967223824731, 1734.001714595386); + points += QPointF(789.4961040754649, 1759.2477332554781); + points += QPointF(767.6176433472375, 1784.0596133526062); + points += QPointF(744.2940893691135, 1808.418070909965); + points += QPointF(720.0315154937306, 1831.7820154759668); + points += QPointF(719.1107590616128, 1832.6395921505045); + points += QPointF(664.9901879624223, 1881.3896483836077); + points += QPointF(-10.830702765714818, 24.587011512350955); return points; } @@ -4933,466 +6024,295 @@ QVector TST_VAbstractPiece::InputPointsIssue646() const { QVector points; - points += VSAPoint(1352.8346456692914, 1173.8581417322835); - - VSAPoint point = VSAPoint(1352.8346456692914, 1362.8345196850394); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(1352.8346456692914, 1362.8345196850394); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(1351.7927746622177, 1365.3174895470343); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(1349.2904293989368, 1370.0604466887874); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(1346.2962576995217, 1374.5430452326066); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(1342.8219234115563, 1378.7733079571037); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(1338.8790903826243, 1382.7592576408904); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(1334.4794224603097, 1386.5089170625781); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(1329.6345834921963, 1390.0303090007792); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(1324.356237325868, 1393.3314562341047); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(1315.7019501937195, 1397.9127915604581); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(1302.6841808427803, 1403.289891141198); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(1288.142331955491, 1407.930421917447); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(1272.169714312523, 1411.8985661180982); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(1254.8596386945478, 1415.2585059720464); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(1236.3054158822356, 1418.074423708184); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(1216.6003566562576, 1420.4105015554055); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(1195.8377717972853, 1422.3309217426045); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(1163.0181823648445, 1424.6044927975377); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(1116.2675882169847, 1426.7215739585208); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(1041.771617936041, 1429.0735145188771); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(963.6986998754783, 1432.082545646023); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(924.3395298428601, 1434.378255703845); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(898.1648782802928, 1436.3169978244687); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(872.1457412334543, 1438.6744512606858); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(846.3754294830155, 1441.5147982413903); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(820.9472538096477, 1444.9022209954755); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(795.9545249940218, 1448.9009017518354); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(771.4905538168089, 1453.5750227393632); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(747.6486510586797, 1458.9887661869527); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(724.5221275003055, 1465.2063143234973); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(702.2042939223572, 1472.2918493778907); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(691.4173228346457, 1476.2203464566928); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(691.4173228346457, 1476.2203464566928); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(691.4173228346457, 1476.2203464566928); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(691.4173228346457, 1476.2203464566928); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(691.4173228346457, 1476.2203464566928); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(691.4173228346457, 1476.2203464566928); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(691.4173228346457, 1476.2203464566928); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(682.8822388593928, 1479.3575289855721); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(665.6479146239083, 1485.1110371155814); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(648.2139215316024, 1490.2399559097548); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(630.5772803437565, 1494.74477312083); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(612.7350118216522, 1498.6259765015448); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(594.6841367265706, 1501.884053804636); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(576.4216758197934, 1504.5194927828425); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(557.9446498626021, 1506.5327811889006); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(539.2500796162778, 1507.9244067755485); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(520.334985842102, 1508.6948572955234); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(501.1963893013563, 1508.844620501563); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(481.8313107553219, 1508.3741841464052); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(462.23677096528036, 1507.2840359827874); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(442.40979069251296, 1505.5746637634468); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(422.3473906983012, 1503.2465552411209); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(402.0465917439264, 1500.300198168548); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(381.50441459067014, 1496.7360802984645); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(360.7178799998137, 1492.554689383609); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(339.6840087326385, 1487.7565131767187); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(318.399821550426, 1482.3420394305313); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(296.8623392144576, 1476.3117558977842); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(275.06858248601475, 1469.6661503312146); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(253.01557212637874, 1462.4057104835604); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(230.70032889683108, 1454.530924107559); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(208.11987355865324, 1446.0422789559484); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(185.27122687312647, 1436.9402627814657); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(162.15140960153235, 1427.2253633368487); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(138.7574425051522, 1416.8980683748348); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(115.08634634526746, 1405.9588656481617); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(91.13514188315949, 1394.4082429095668); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(66.90084988010975, 1382.2466879117876); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(42.38049109739966, 1369.4746884075616); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(30.0, 1362.8345196850394); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - point = VSAPoint(30.0, 1362.8345196850394); - point.SetSAAfter(0); - point.SetSABefore(0); - points.append(point); - - points += VSAPoint(30.0, 1173.8581417322835); - points += VSAPoint(30.0, 39.999874015748034); - points += VSAPoint(30.0, 39.999874015748034); - points += VSAPoint(31.836416744798022, 50.53779899603764); - points += VSAPoint(35.952598805592906, 71.21252386912929); - points += VSAPoint(40.586864315463195, 91.4101105071633); - points += VSAPoint(45.72373012289418, 111.13523876561466); - points += VSAPoint(51.347713076371164, 130.39258849995826); - points += VSAPoint(57.44333002437946, 149.186839565669); - points += VSAPoint(63.995097815404385, 167.52267181822185); - points += VSAPoint(70.98753329793121, 185.40476511309168); - points += VSAPoint(78.4051533204453, 202.83779930575355); - points += VSAPoint(86.23247473143188, 219.82645425168224); - points += VSAPoint(94.4540143793763, 236.37540980635274); - points += VSAPoint(103.05428911276391, 252.48934582523998); - points += VSAPoint(112.01781578007993, 268.17294216381885); - points += VSAPoint(121.32911122980973, 283.43087867756435); - points += VSAPoint(130.97269231043856, 298.2678352219515); - points += VSAPoint(140.93307587045177, 312.688491652455); - points += VSAPoint(151.19477875833468, 326.69752782454987); - points += VSAPoint(161.74231782257255, 340.2996235937111); - points += VSAPoint(172.5602099116507, 353.4994588154136); - points += VSAPoint(183.63297187405442, 366.30171334513216); - points += VSAPoint(194.94512055826902, 378.7110670383419); - points += VSAPoint(206.4811728127799, 390.7321997505177); - points += VSAPoint(218.22564548607224, 402.3697913371344); - points += VSAPoint(230.1630554266314, 413.62852165366695); - points += VSAPoint(242.27791948294265, 424.51307055559033); - points += VSAPoint(254.55475450349132, 435.02811789837943); - points += VSAPoint(273.2244253126398, 450.16283591309366); - points += VSAPoint(298.5641233209854, 469.0320795095655); - points += VSAPoint(324.2730084590162, 486.5075542680491); - points += VSAPoint(350.2272155146146, 502.6266990323438); - points += VSAPoint(376.30287927566314, 517.426952646249); - points += VSAPoint(402.37613453004406, 530.9457539535642); - points += VSAPoint(428.3231160656401, 543.220541798089); - points += VSAPoint(454.0199586703335, 554.2887550236223); - points += VSAPoint(479.34279713200675, 564.1878324739641); - points += VSAPoint(504.1677662385423, 572.9552129929135); - points += VSAPoint(528.3710007778225, 580.62833542427); - points += VSAPoint(551.8286355377302, 587.2446386118332); - points += VSAPoint(574.4168053061474, 592.8415613994023); - points += VSAPoint(596.0116448709566, 597.4565426307768); - points += VSAPoint(616.4892890200404, 601.127021149756); - points += VSAPoint(635.725872541281, 603.8904358001398); - points += VSAPoint(653.5975302225612, 605.7842254257271); - points += VSAPoint(669.9803968517632, 606.8458288703175); - points += VSAPoint(684.7506072167696, 607.1126849777106); - points += VSAPoint(691.417322834647, 606.9290078739997); - points += VSAPoint(691.417322834647, 606.9290078739997); - points += VSAPoint(691.417322834647, 606.9290078739997); - points += VSAPoint(691.417322834647, 606.9290078739997); - points += VSAPoint(691.417322834647, 606.9290078739997); - points += VSAPoint(691.417322834647, 606.9290078739997); - points += VSAPoint(691.417322834647, 606.9290078739997); - points += VSAPoint(698.4117938885747, 606.70357708988); - points += VSAPoint(712.3872092557954, 606.6270580415836); - points += VSAPoint(726.3421370199347, 606.9929810221732); - points += VSAPoint(740.2718488317498, 607.7938249260419); - points += VSAPoint(754.1716163419968, 609.0220686475833); - points += VSAPoint(768.0367112014326, 610.6701910811905); - points += VSAPoint(781.8624050608131, 612.7306711212568); - points += VSAPoint(795.6439695708956, 615.1959876621759); - points += VSAPoint(809.3766763824362, 618.0586195983409); - points += VSAPoint(823.0557971461919, 621.3110458241451); - points += VSAPoint(843.4718370533695, 626.8577230967079); - points += VSAPoint(870.4518221032482, 635.6110880188724); - points += VSAPoint(897.1323526756041, 645.7882501986742); - points += VSAPoint(923.4756019764898, 657.3290407912602); - points += VSAPoint(949.4437432119576, 670.1732909517772); - points += VSAPoint(974.99894958806, 684.2608318353717); - points += VSAPoint(1000.1033943108496, 699.5314945971908); - points += VSAPoint(1024.7192505863786, 715.9251103923807); - points += VSAPoint(1048.8086916206998, 733.381510376089); - points += VSAPoint(1072.333890619865, 751.8405257034619); - points += VSAPoint(1095.257020789927, 771.2419875296464); - points += VSAPoint(1117.5402553369386, 791.5257270097889); - points += VSAPoint(1139.1457674669518, 812.6315752990365); - points += VSAPoint(1160.0357303860196, 834.499363552536); - points += VSAPoint(1180.1723173001938, 857.0689229254342); - points += VSAPoint(1199.517701415527, 880.2800845728775); - points += VSAPoint(1218.0340559380716, 904.072679650013); - points += VSAPoint(1235.6835540738803, 928.3865393119875); - points += VSAPoint(1252.4283690290056, 953.1614947139476); - points += VSAPoint(1268.2306740094996, 978.33737701104); - points += VSAPoint(1283.0526422214152, 1003.8540173584115); - points += VSAPoint(1296.8564468708046, 1029.651246911209); - points += VSAPoint(1309.60426116372, 1055.6688968245794); - points += VSAPoint(1321.258258306214, 1081.846798253669); - points += VSAPoint(1331.780611504339, 1108.1247823536248); - points += VSAPoint(1341.1334939641479, 1134.4426802795938); - points += VSAPoint(1349.2790788916927, 1160.7403231867224); - points += VSAPoint(1352.8346456692914, 1173.8581417322835); + points.append(VSAPoint(1352.8346456692914, 1173.8581417322835)); + + VSAPoint p = VSAPoint(1352.8346456692914, 1362.8345196850394); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(1352.8346456692914, 1362.8345196850394); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(1350.6660166205588, 1367.7550606147208); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(1344.6776732217286, 1376.7202577023593); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(1336.7920071638646, 1384.6921570699324); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(1327.102329227638, 1391.7349409463345); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(1315.7019501937195, 1397.9127915604581); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(1302.6841808427803, 1403.289891141198); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(1288.142331955491, 1407.930421917447); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(1272.169714312523, 1411.8985661180982); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(1245.881900239392, 1416.7944475909562); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(1206.4717817874364, 1421.4666032853988); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(1163.0181823648445, 1424.6044927975377); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(1116.2675882169847, 1426.7215739585208); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(1041.771617936041, 1429.0735145188771); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(963.6986998754783, 1432.082545646023); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(911.2249892802281, 1435.25097171387); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(859.186715186551, 1439.9658785863046); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(808.3303638398154, 1446.7407240944754); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(771.4905538168089, 1453.5750227393632); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(747.6486510586797, 1458.9887661869527); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(724.5221275003055, 1465.2063143234973); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(702.2042939223572, 1472.2918493778907); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(691.4173228346457, 1476.2203464566928); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(691.4173228346457, 1476.2203464566928); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(691.4173228346457, 1476.2203464566928); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(674.314621551016, 1482.390491353628); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(639.4466353664043, 1492.6483289419746); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(603.7620983221955, 1500.410735703404); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(567.2371765086411, 1505.6816136598163); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(529.8480360159926, 1508.4648648331117); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(491.5708429345011, 1508.7643912451913); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(452.3817633544179, 1506.5840949179556); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(412.2569633659944, 1501.9278778733042); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(371.1726090594818, 1494.7996421331377); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(329.10486652513146, 1485.2032897193571); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(286.0299018531947, 1473.1427226538626); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(241.92388113392275, 1458.6218429585542); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(196.762970457567, 1441.644552655333); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(150.52333591437866, 1422.2147537660987); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(103.18114359460913, 1400.3363483127525); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(54.712559588509635, 1376.013238317194); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(30.0, 1362.8345196850394); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + p = VSAPoint(30.0, 1362.8345196850394); + p.SetSABefore(0.0); + p.SetSAAfter(0.0); + points.append(p); + + points.append(VSAPoint(30.0, 1173.8581417322835)); + points.append(VSAPoint(30.0, 39.999874015748034)); + points.append(VSAPoint(30.0, 39.999874015748034)); + points.append(VSAPoint(33.76305151898726, 60.995030973282226)); + points.append(VSAPoint(43.0315825387278, 101.39020424935029)); + points.append(VSAPoint(54.27954844568175, 139.90490371803747)); + points.append(VSAPoint(67.38308402773156, 176.57656822314317)); + points.append(VSAPoint(82.21832407275966, 211.44263660846684)); + points.append(VSAPoint(98.66140336864854, 244.5405477178079)); + points.append(VSAPoint(116.58845670328057, 275.9077403949657)); + points.append(VSAPoint(135.87561886453827, 305.58165348373984)); + points.append(VSAPoint(156.39902464030405, 333.59972582792955)); + points.append(VSAPoint(178.03480881846033, 359.9993962713345)); + points.append(VSAPoint(200.65910618688957, 384.8181036577539)); + points.append(VSAPoint(224.1480515334743, 408.0932868309873)); + points.append(VSAPoint(248.37777964609688, 429.8623846348342)); + points.append(VSAPoint(273.2244253126397, 450.1628359130938)); + points.append(VSAPoint(298.5641233209853, 469.03207950956573)); + points.append(VSAPoint(324.27300845901607, 486.50755426804926)); + points.append(VSAPoint(350.2272155146145, 502.62669903234394)); + points.append(VSAPoint(376.30287927566303, 517.4269526462492)); + points.append(VSAPoint(402.37613453004406, 530.9457539535643)); + points.append(VSAPoint(428.3231160656401, 543.220541798089)); + points.append(VSAPoint(454.0199586703335, 554.2887550236226)); + points.append(VSAPoint(479.34279713200675, 564.1878324739644)); + points.append(VSAPoint(504.1677662385423, 572.9552129929136)); + points.append(VSAPoint(528.3710007778225, 580.6283354242702)); + points.append(VSAPoint(563.3555698213261, 590.2932652501413)); + points.append(VSAPoint(606.5452489509445, 599.5232277128903)); + points.append(VSAPoint(645.018415993426, 605.0500570136577)); + points.append(VSAPoint(677.7841492518301, 607.1732639028387)); + points.append(VSAPoint(691.4173228346472, 606.9290078739998)); + points.append(VSAPoint(691.4173228346472, 606.9290078739998)); + points.append(VSAPoint(691.4173228346472, 606.9290078739998)); + points.append(VSAPoint(705.4040324293001, 606.5537669203095)); + points.append(VSAPoint(733.313887957579, 607.2856128814886)); + points.append(VSAPoint(761.113422978073, 609.7421003245712)); + points.append(VSAPoint(788.7648106968343, 613.8630604047041)); + points.append(VSAPoint(816.2302243199158, 619.5883242770342)); + points.append(VSAPoint(843.4718370533695, 626.8577230967081)); + points.append(VSAPoint(870.4518221032482, 635.6110880188726)); + points.append(VSAPoint(897.1323526756041, 645.7882501986744)); + points.append(VSAPoint(923.4756019764898, 657.3290407912602)); + points.append(VSAPoint(949.4437432119576, 670.1732909517772)); + points.append(VSAPoint(974.99894958806, 684.2608318353717)); + points.append(VSAPoint(1000.1033943108496, 699.5314945971908)); + points.append(VSAPoint(1024.7192505863786, 715.9251103923807)); + points.append(VSAPoint(1048.8086916206998, 733.381510376089)); + points.append(VSAPoint(1072.333890619865, 751.8405257034619)); + points.append(VSAPoint(1095.257020789927, 771.2419875296464)); + points.append(VSAPoint(1117.5402553369386, 791.5257270097891)); + points.append(VSAPoint(1139.1457674669518, 812.6315752990367)); + points.append(VSAPoint(1160.0357303860196, 834.4993635525362)); + points.append(VSAPoint(1180.1723173001938, 857.0689229254342)); + points.append(VSAPoint(1199.517701415527, 880.2800845728777)); + points.append(VSAPoint(1218.0340559380716, 904.0726796500132)); + points.append(VSAPoint(1235.6835540738803, 928.3865393119877)); + points.append(VSAPoint(1252.4283690290056, 953.1614947139476)); + points.append(VSAPoint(1268.2306740094996, 978.3373770110402)); + points.append(VSAPoint(1283.0526422214152, 1003.8540173584116)); + points.append(VSAPoint(1296.8564468708046, 1029.651246911209)); + points.append(VSAPoint(1309.60426116372, 1055.6688968245794)); + points.append(VSAPoint(1321.258258306214, 1081.846798253669)); + points.append(VSAPoint(1331.780611504339, 1108.1247823536248)); + points.append(VSAPoint(1341.1334939641479, 1134.4426802795938)); + points.append(VSAPoint(1349.2790788916927, 1160.7403231867224)); + points.append(VSAPoint(1352.8346456692914, 1173.8581417322835)); return points; } @@ -5404,156 +6324,111 @@ QVector TST_VAbstractPiece::OutputPointsIssue646() const points += QPointF(1391.2089508950362, 1170.962993556315); points += QPointF(1352.8346456692914, 1362.8345196850394); - points += QPointF(1351.7927746622177, 1365.3174895470343); - points += QPointF(1349.2904293989368, 1370.0604466887874); - points += QPointF(1346.2962576995217, 1374.5430452326066); - points += QPointF(1342.8219234115563, 1378.7733079571037); - points += QPointF(1338.8790903826243, 1382.7592576408904); - points += QPointF(1334.4794224603097, 1386.5089170625781); - points += QPointF(1329.6345834921963, 1390.0303090007792); - points += QPointF(1324.356237325868, 1393.3314562341047); + points += QPointF(1350.6660166205588, 1367.7550606147208); + points += QPointF(1344.6776732217286, 1376.7202577023593); + points += QPointF(1336.7920071638646, 1384.6921570699324); + points += QPointF(1327.102329227638, 1391.7349409463345); points += QPointF(1315.7019501937195, 1397.9127915604581); points += QPointF(1302.6841808427803, 1403.289891141198); points += QPointF(1288.142331955491, 1407.930421917447); points += QPointF(1272.169714312523, 1411.8985661180982); - points += QPointF(1254.8596386945478, 1415.2585059720464); - points += QPointF(1236.3054158822356, 1418.074423708184); - points += QPointF(1216.6003566562576, 1420.4105015554055); - points += QPointF(1195.8377717972853, 1422.3309217426045); + points += QPointF(1245.881900239392, 1416.7944475909562); + points += QPointF(1206.4717817874364, 1421.4666032853988); points += QPointF(1163.0181823648445, 1424.6044927975377); points += QPointF(1116.2675882169847, 1426.7215739585208); points += QPointF(1041.771617936041, 1429.0735145188771); points += QPointF(963.6986998754783, 1432.082545646023); - points += QPointF(924.3395298428601, 1434.378255703845); - points += QPointF(898.1648782802928, 1436.3169978244687); - points += QPointF(872.1457412334543, 1438.6744512606858); - points += QPointF(846.3754294830155, 1441.5147982413903); - points += QPointF(820.9472538096477, 1444.9022209954755); - points += QPointF(795.9545249940218, 1448.9009017518354); + points += QPointF(911.2249892802281, 1435.25097171387); + points += QPointF(859.186715186551, 1439.9658785863046); + points += QPointF(808.3303638398154, 1446.7407240944754); points += QPointF(771.4905538168089, 1453.5750227393632); points += QPointF(747.6486510586797, 1458.9887661869527); points += QPointF(724.5221275003055, 1465.2063143234973); points += QPointF(702.2042939223572, 1472.2918493778907); points += QPointF(691.4173228346457, 1476.2203464566928); - points += QPointF(682.8822388593928, 1479.3575289855721); - points += QPointF(665.6479146239083, 1485.1110371155814); - points += QPointF(648.2139215316024, 1490.2399559097548); - points += QPointF(630.5772803437565, 1494.74477312083); - points += QPointF(612.7350118216522, 1498.6259765015448); - points += QPointF(594.6841367265706, 1501.884053804636); - points += QPointF(576.4216758197934, 1504.5194927828425); - points += QPointF(557.9446498626021, 1506.5327811889006); - points += QPointF(539.2500796162778, 1507.9244067755485); - points += QPointF(520.334985842102, 1508.6948572955234); - points += QPointF(501.1963893013563, 1508.844620501563); - points += QPointF(481.8313107553219, 1508.3741841464052); - points += QPointF(462.23677096528036, 1507.2840359827874); - points += QPointF(442.40979069251296, 1505.5746637634468); - points += QPointF(422.3473906983012, 1503.2465552411209); - points += QPointF(402.0465917439264, 1500.300198168548); - points += QPointF(381.50441459067014, 1496.7360802984645); - points += QPointF(360.7178799998137, 1492.554689383609); - points += QPointF(339.6840087326385, 1487.7565131767187); - points += QPointF(318.399821550426, 1482.3420394305313); - points += QPointF(296.8623392144576, 1476.3117558977842); - points += QPointF(275.06858248601475, 1469.6661503312146); - points += QPointF(253.01557212637874, 1462.4057104835604); - points += QPointF(230.70032889683108, 1454.530924107559); - points += QPointF(208.11987355865324, 1446.0422789559484); - points += QPointF(185.27122687312647, 1436.9402627814657); - points += QPointF(162.15140960153235, 1427.2253633368487); - points += QPointF(138.7574425051522, 1416.8980683748348); - points += QPointF(115.08634634526746, 1405.9588656481617); - points += QPointF(91.13514188315949, 1394.4082429095668); - points += QPointF(66.90084988010975, 1382.2466879117876); - points += QPointF(42.38049109739966, 1369.4746884075616); + points += QPointF(674.314621551016, 1482.390491353628); + points += QPointF(639.4466353664043, 1492.6483289419746); + points += QPointF(603.7620983221955, 1500.410735703404); + points += QPointF(567.2371765086411, 1505.6816136598163); + points += QPointF(529.8480360159926, 1508.4648648331117); + points += QPointF(491.5708429345011, 1508.7643912451913); + points += QPointF(452.3817633544179, 1506.5840949179556); + points += QPointF(412.2569633659944, 1501.9278778733042); + points += QPointF(371.1726090594818, 1494.7996421331377); + points += QPointF(329.10486652513146, 1485.2032897193571); + points += QPointF(286.0299018531947, 1473.1427226538626); + points += QPointF(241.92388113392275, 1458.6218429585542); + points += QPointF(196.762970457567, 1441.644552655333); + points += QPointF(150.52333591437866, 1422.2147537660987); + points += QPointF(103.18114359460913, 1400.3363483127525); + points += QPointF(54.712559588509635, 1376.013238317194); points += QPointF(30.0, 1362.8345196850394); points += QPointF(-7.795275590551185, 1173.8581417322835); - points += QPointF(-7.795275590551185, 5.332135175169643); - points += QPointF(61.282362682462484, -0.6418380334156654); - points += QPointF(68.99270783774104, 43.602497599341376); - points += QPointF(72.9132813035755, 63.2947212555562); - points += QPointF(77.3013929112068, 82.41949176853801); - points += QPointF(82.1591612486953, 101.07290945528996); - points += QPointF(87.47127192119272, 119.26236235620561); - points += QPointF(93.22265002333297, 136.995242382529); - points += QPointF(99.39845834352354, 154.27891130896086); - points += QPointF(105.98409057569768, 171.12066698560935); - points += QPointF(112.96515967796651, 187.5277107532596); - points += QPointF(120.3274817141749, 203.50711700306462); - points += QPointF(128.05705569238026, 219.06580572797276); - points += QPointF(136.140040064258, 234.21051878050557); - points += QPointF(144.56272665980467, 248.94780038335693); - points += QPointF(153.31151289915712, 263.28398225332904); - points += QPointF(162.37287314390684, 277.2251735037908); - points += QPointF(171.7333300269448, 290.7772553015979); - points += QPointF(181.37942653744733, 303.94588008167347); - points += QPointF(191.29769954207885, 316.73647497324424); - points += QPointF(201.4746553074722, 329.15424897723653); - points += QPointF(211.8967474561181, 341.2042033492513); - points += QPointF(222.55035765443486, 352.89114459720207); - points += QPointF(233.42177919919385, 364.21969948550475); - points += QPointF(244.49720354953487, 375.1943314526637); - points += QPointF(255.7627097438719, 385.81935788241924); - points += QPointF(267.20425655639707, 396.09896772498274); - points += QPointF(278.75265348524636, 405.99011151219827); - points += QPointF(296.42128624929416, 420.3133300264941); - points += QPointF(320.48452011994203, 438.2320527150828); - points += QPointF(344.87558321732604, 454.8117451133493); - points += QPointF(369.53320753519137, 470.12563295711334); - points += QPointF(394.3361710694346, 484.20351622969935); - points += QPointF(419.16155857757707, 497.07530679920615); - points += QPointF(443.88487919291146, 508.77121504768843); - points += QPointF(468.38014199617356, 519.321880586359); - points += QPointF(492.51986728337727, 528.7584613476223); - points += QPointF(516.1750084818626, 537.1126962804665); - points += QPointF(539.2147513582057, 544.4169583447066); - points += QPointF(561.5061404146093, 550.7043180882887); - points += QPointF(582.9134517220549, 556.0086464028718); - points += QPointF(603.297176144298, 560.3648031296603); - points += QPointF(622.512375480477, 563.8089969972691); - points += QPointF(640.4059816430324, 566.3794874049449); - points += QPointF(656.8122283884328, 568.1179931683923); - points += QPointF(671.5446156432315, 569.0726461855179); - points += QPointF(684.5714272485307, 569.308003986851); - points += QPointF(690.2881064563063, 569.1505016813809); - points += QPointF(697.6994465521921, 568.9116352687084); - points += QPointF(712.7791990595856, 568.829069686213); - points += QPointF(727.9225489586405, 569.2261552050226); - points += QPointF(743.0205601588, 570.0941667183644); - points += QPointF(758.0665280331999, 571.4236936735902); - points += QPointF(773.0540417864709, 573.2052363093372); - points += QPointF(787.9769792031311, 575.4292414839725); - points += QPointF(802.8294963913348, 578.0861355014533); - points += QPointF(817.6060134704758, 581.1663534276446); - points += QPointF(832.3840681765656, 584.6800684918327); - points += QPointF(854.2646050023646, 590.6246236981764); - points += QPointF(883.0268449918112, 599.956221997473); - points += QPointF(911.458987786853, 610.8015283739599); - points += QPointF(939.4455853403952, 623.0622581751827); + points += QPointF(-7.795275590551185, 5.415841095792075); + points += QPointF(61.10102183090257, -0.7096412239110919); + points += QPointF(70.80478764466314, 53.4304855617782); + points += QPointF(79.62189394925582, 91.85820794938732); + points += QPointF(90.24647240417782, 128.2383365484458); + points += QPointF(102.59852571928553, 162.80689648286); + points += QPointF(116.56115662664025, 195.6221419778608); + points += QPointF(132.02082032795917, 226.74055755921066); + points += QPointF(148.86669418977533, 256.2159967948307); + points += QPointF(166.98986206810577, 284.0990676177162); + points += QPointF(186.28241554481536, 310.43680926354347); + points += QPointF(206.63657487261227, 335.2726596298501); + points += QPointF(227.94391425163948, 358.6466726486652); + points += QPointF(250.09474647931083, 380.59592025988565); + points += QPointF(272.9776896673481, 401.15500478550797); + points += QPointF(296.4794106724578, 420.3566124641626); + points += QPointF(320.484520119942, 438.23205271508306); + points += QPointF(344.8755832173259, 454.8117451133494); + points += QPointF(369.5332075351913, 470.1256329571135); + points += QPointF(394.3361710694345, 484.2035162296996); + points += QPointF(419.16155857757695, 497.0753067992062); + points += QPointF(443.88487919288957, 508.7712150476781); + points += QPointF(468.38014199619704, 519.3218805863685); + points += QPointF(492.51986728337727, 528.7584613476225); + points += QPointF(516.1750084818626, 537.1126962804666); + points += QPointF(539.1179506668893, 544.3862697375826); + points += QPointF(572.3449900777376, 553.5656597660253); + points += QPointF(613.1894237885367, 562.2944254702461); + points += QPointF(648.9334985308346, 567.4292093937121); + points += QPointF(678.66913409911, 569.356067120192); + points += QPointF(690.5719737333277, 569.1428122736005); + points += QPointF(705.3925728033803, 568.7451994046356); + points += QPointF(735.4747135391233, 569.5340065404794); + points += QPointF(765.5663997881065, 572.1930384040452); + points += QPointF(795.4123023513292, 576.6410528859776); + points += QPointF(824.965602108301, 582.8015441033587); + points += QPointF(854.1835470423481, 590.5983253180048); + points += QPointF(883.0268449918112, 599.9562219974732); + points += QPointF(911.4589877868528, 610.8015283739601); + points += QPointF(939.445585340395, 623.0622581751827); points += QPointF(966.9537607342976, 636.6682333974711); points += QPointF(993.9516330911679, 651.551057077312); - points += QPointF(1020.4078966730023, 667.6440112755474); + points += QPointF(1020.4078966730021, 667.6440112755474); points += QPointF(1046.2914925169705, 684.8819135818707); points += QPointF(1071.5713620583545, 703.2009569179793); points += QPointF(1096.216269205861, 722.5385497176682); points += QPointF(1120.1946768785947, 742.8331673228507); - points += QPointF(1143.4746649906992, 764.024220756791); - points += QPointF(1166.0238785179056, 786.0519457597054); - points += QPointF(1187.8094960863832, 808.8573128063047); + points += QPointF(1143.4746649906995, 764.0242207567912); + points += QPointF(1166.0238785179056, 786.0519457597056); + points += QPointF(1187.809496086383, 808.8573128063048); points += QPointF(1208.7982112227505, 832.3819574965946); - points += QPointF(1228.9562198237943, 856.5681299364858); - points += QPointF(1248.2492085181873, 881.3586613164372); - points += QPointF(1266.6423393728558, 906.6969456633109); + points += QPointF(1228.9562198237943, 856.5681299364861); + points += QPointF(1248.2492085181873, 881.3586613164374); + points += QPointF(1266.6423393728555, 906.696945663311); points += QPointF(1284.1002268781353, 932.5269345592678); - points += QPointF(1300.5869033558602, 958.7931423679255); + points += QPointF(1300.5869033558602, 958.7931423679257); points += QPointF(1316.065768928307, 985.4406590911037); points += QPointF(1330.4995219936793, 1012.4151672497809); points += QPointF(1343.850065889632, 1039.6629580676176); points += QPointF(1356.0783871611402, 1067.1309405095865); points += QPointF(1367.1444008135065, 1094.7666342875323); points += QPointF(1377.006758382479, 1122.5181345255592); - points += QPointF(1385.5816561538945, 1150.2017940249868); + points += QPointF(1385.3821076646018, 1149.5575609882246); + points += QPointF(1385.7580931557095, 1150.8527362570703); points += QPointF(1391.2089508950362, 1170.962993556315); + return points; } diff --git a/src/test/ValentinaTest/tst_vabstractpiece.h b/src/test/ValentinaTest/tst_vabstractpiece.h index cc71cefac..16c7a5531 100644 --- a/src/test/ValentinaTest/tst_vabstractpiece.h +++ b/src/test/ValentinaTest/tst_vabstractpiece.h @@ -61,8 +61,23 @@ private slots: #endif private: - QVector InputPointsCase1() const; - QVector OutputPointsCase1() const; + QVector InputPointsSeamTest1PieceByAngle() const; + QVector OutputPointsSeamTest1PieceByAngle() const; + + QVector InputPointsSeamTest1PieceByIntersection() const; + QVector OutputPointsSeamTest1PieceByIntersection() const; + + QVector InputPointsSeamTest1PieceByFirstEdgeSymmerty() const; + QVector OutputPointsSeamTest1PieceByFirstEdgeSymmerty() const; + + QVector InputPointsSeamTest1PieceBySecondEdgeSymmerty() const; + QVector OutputPointsSeamTest1PieceBySecondEdgeSymmerty() const; + + QVector InputPointsSeamTest1PieceByFirstRightAngle() const; + QVector OutputPointsSeamTest1PieceByFirstRightAngle() const; + + QVector InputPointsSeamTest1PieceBySecondRightAngle() const; + QVector OutputPointsSeamTest1PieceBySecondRightAngle() const; QVector InputPointsCase2() const; QVector OutputPointsCase2() const; @@ -70,6 +85,21 @@ private: QVector InputPointsCase3() const; QVector OutputPointsCase3() const; + QVector InputPointsIssue627() const; + QVector OutputPointsIssue627() const; + + QVector InputPointsIssue767_Fabric_TopCollar() const; + QVector OutputPointsIssue767_Fabric_TopCollar() const; + + QVector InputPointsIssue767_SkinFusing_TopCollar_Notch() const; + QVector OutputPointsIssue767_SkinFusing_TopCollar_Notch() const; + + QVector InputPointsIssue880_Piece_Detail() const; + QVector OutputPointsIssue880_Piece_Detail() const; + + QVector InputPointsIssue880_Piece_Detail_1() const; + QVector OutputPointsIssue880_Piece_Detail_1() const; + void Case3() const; void Case4() const; void Case5() const;