diff --git a/ChangeLog.txt b/ChangeLog.txt
index 472fe06f1..cda9a5aed 100644
--- a/ChangeLog.txt
+++ b/ChangeLog.txt
@@ -6,6 +6,7 @@
- [#913] Unable to save changes for piece path if it doesn't contain a point.
- [#914] Filtering custom seam allowance paths prevent including more than one.
- [#915] Valentina produces wrong seam allowance for acute angle.
+- [#923] Valentina produces wrong seam allowance for rollback case.
# Version 0.6.1 October 23, 2018
- [#885] Regression. Broken support for multi size measurements.
diff --git a/src/app/share/collection/bugs/Issue_#923.val b/src/app/share/collection/bugs/Issue_#923.val
new file mode 100644
index 000000000..a1ab36129
--- /dev/null
+++ b/src/app/share/collection/bugs/Issue_#923.val
@@ -0,0 +1,359 @@
+
+
+
+ 0.7.12
+ cm
+
+
+ Блуза
+ №14
+
+
+
+
+
+
+
+
+ Issue_#923.vit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/share/collection/bugs/Issue_#923.vit b/src/app/share/collection/bugs/Issue_#923.vit
new file mode 100644
index 000000000..a87bf81ac
--- /dev/null
+++ b/src/app/share/collection/bugs/Issue_#923.vit
@@ -0,0 +1,35 @@
+
+
+
+ 0.4.0
+ false
+
+ cm
+ 998
+
+
+ 1800-01-01
+ unknown
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/libs/vlayout/vabstractpiece.cpp b/src/libs/vlayout/vabstractpiece.cpp
index 307471c8a..589cd4b18 100644
--- a/src/libs/vlayout/vabstractpiece.cpp
+++ b/src/libs/vlayout/vabstractpiece.cpp
@@ -191,7 +191,8 @@ QVector RollbackSeamAllowance(QVector points, const QLineF &cu
QPointF crosPoint;
const QLineF::IntersectType type = cuttingEdge.intersect(segment, &crosPoint);
if (type != QLineF::NoIntersection
- && VGObject::IsPointOnLineSegment(crosPoint, segment.p1(), segment.p2()))
+ && VGObject::IsPointOnLineSegment(crosPoint, segment.p1(), segment.p2())
+ && IsOutsidePoint(cuttingEdge.p2(), cuttingEdge.p1(), crosPoint))
{
clipped.append(crosPoint);
for (int j=i-1; j>=0; --j)
@@ -200,6 +201,7 @@ QVector RollbackSeamAllowance(QVector points, const QLineF &cu
}
points = VGObject::GetReversePoints(clipped);
*success = true;
+ break;
}
}
@@ -220,8 +222,13 @@ QVector RollbackSeamAllowance(QVector points, const QLineF &cu
//---------------------------------------------------------------------------------------------------------------------
QVector AngleByLength(QVector points, QPointF p2, const QLineF &bigLine1, QPointF sp2,
- const QLineF &bigLine2, const VSAPoint &p, qreal width)
+ const QLineF &bigLine2, const VSAPoint &p, qreal width, int *needRollback = nullptr)
{
+ if (needRollback != nullptr)
+ {
+ *needRollback = -1;
+ }
+
const QPointF sp1 = bigLine1.p1();
const QPointF sp3 = bigLine2.p2();
const qreal localWidth = p.MaxLocalSA(width);
@@ -267,6 +274,10 @@ QVector AngleByLength(QVector points, QPointF p2, const QLineF
{
bool success = false;
points = RollbackSeamAllowance(points, bigLine2, &success);
+ if (needRollback != nullptr)
+ {
+ *needRollback = 0;
+ }
}
else
{
@@ -281,7 +292,7 @@ QVector AngleByLength(QVector points, QPointF p2, const QLineF
QLineF loop1(sp2, sp1);
loop1.setLength(loop1.length()*0.1);
- points.append(loop1.p2()); // Nedd for the main path rule
+ points.append(loop1.p2()); // Need for the main path rule
loop1.setAngle(loop1.angle() + 180);
loop1.setLength(localWidth);
@@ -300,8 +311,13 @@ QVector AngleByLength(QVector points, QPointF p2, const QLineF
//---------------------------------------------------------------------------------------------------------------------
QVector AngleByIntersection(const QVector &points, QPointF p1, QPointF p2, QPointF p3,
const QLineF &bigLine1, QPointF sp2, const QLineF &bigLine2,
- const VSAPoint &p, qreal width)
+ const VSAPoint &p, qreal width, int *needRollback = nullptr)
{
+ if (needRollback != nullptr)
+ {
+ *needRollback = -1;
+ }
+
const qreal localWidth = p.MaxLocalSA(width);
QVector pointsIntr = points;
@@ -315,6 +331,7 @@ QVector AngleByIntersection(const QVector &points, QPointF p1,
return AngleByLength(points, p2, bigLine1, sp2, bigLine2, p, width);
}
+ bool rollbackFlag = false;
if (IsOutsidePoint(bigLine1.p1(), bigLine1.p2(), px))
{
if (QLineF(p2, px).length() > localWidth*maxL)
@@ -327,6 +344,7 @@ QVector AngleByIntersection(const QVector &points, QPointF p1,
{// Because artificial loop can lead to wrong clipping we must rollback current seam allowance points
bool success = false;
pointsIntr = RollbackSeamAllowance(pointsIntr, edge2, &success);
+ rollbackFlag = true;
}
// Second point
@@ -341,6 +359,11 @@ QVector AngleByIntersection(const QVector &points, QPointF p1,
if (IsOutsidePoint(bigLine2.p2(), bigLine2.p1(), px))
{
pointsIntr.append(px);
+
+ if (needRollback != nullptr && rollbackFlag)
+ {
+ *needRollback = 1;
+ }
}
else
{
@@ -349,6 +372,11 @@ QVector AngleByIntersection(const QVector &points, QPointF p1,
allowance.setLength(allowance.length() + localWidth * 3.);
pointsIntr.append(allowance.p2());
pointsIntr.append(bigLine2.p2());
+
+ if (needRollback != nullptr && rollbackFlag)
+ {
+ *needRollback = 3;
+ }
}
return pointsIntr;
@@ -357,8 +385,13 @@ QVector AngleByIntersection(const QVector &points, QPointF p1,
//---------------------------------------------------------------------------------------------------------------------
QVector AngleByFirstSymmetry(const QVector &points, QPointF p1, QPointF p2,
const QLineF &bigLine1, QPointF sp2, const QLineF &bigLine2,
- const VSAPoint &p, qreal width)
+ const VSAPoint &p, qreal width, int *needRollback = nullptr)
{
+ if (needRollback != nullptr)
+ {
+ *needRollback = -1;
+ }
+
const qreal localWidth = p.MaxLocalSA(width);
QVector pointsIntr = points;
@@ -371,6 +404,7 @@ QVector AngleByFirstSymmetry(const QVector &points, QPointF p1
return AngleByLength(points, p2, bigLine1, sp2, bigLine2, p, width);
}
+ bool rollbackFlag = false;
if (IsOutsidePoint(bigLine1.p1(), bigLine1.p2(), px))
{
if (QLineF(p2, px).length() > localWidth*maxL)
@@ -383,6 +417,7 @@ QVector AngleByFirstSymmetry(const QVector &points, QPointF p1
{// Because artificial loop can lead to wrong clipping we must rollback current seam allowance points
bool success = false;
pointsIntr = RollbackSeamAllowance(pointsIntr, bigLine2, &success);
+ rollbackFlag = true;
}
type = sEdge.intersect(bigLine2, &px);
@@ -398,6 +433,11 @@ QVector AngleByFirstSymmetry(const QVector &points, QPointF p1
return AngleByLength(points, p2, bigLine1, sp2, bigLine2, p, width);
}
pointsIntr.append(px);
+
+ if (needRollback != nullptr && rollbackFlag)
+ {
+ *needRollback = 1;
+ }
}
else
{
@@ -405,6 +445,11 @@ QVector AngleByFirstSymmetry(const QVector &points, QPointF p1
allowance.setAngle(allowance.angle() + 90);
pointsIntr.append(allowance.p2());
pointsIntr.append(bigLine2.p1());
+
+ if (needRollback != nullptr && rollbackFlag)
+ {
+ *needRollback = 2;
+ }
}
return pointsIntr;
@@ -413,8 +458,13 @@ QVector AngleByFirstSymmetry(const QVector &points, QPointF p1
//---------------------------------------------------------------------------------------------------------------------
QVector AngleBySecondSymmetry(const QVector &points, QPointF p2, QPointF p3,
const QLineF &bigLine1, QPointF sp2, const QLineF &bigLine2,
- const VSAPoint &p, qreal width)
+ const VSAPoint &p, qreal width, int *needRollback = nullptr)
{
+ if (needRollback != nullptr)
+ {
+ *needRollback = -1;
+ }
+
const qreal localWidth = p.MaxLocalSA(width);
QVector pointsIntr = points;
@@ -427,6 +477,7 @@ QVector AngleBySecondSymmetry(const QVector &points, QPointF p
return AngleByLength(points, p2, bigLine1, sp2, bigLine2, p, width);
}
+ bool rollbackFlag = false;
if (IsOutsidePoint(bigLine1.p1(), bigLine1.p2(), px))
{
if (QLineF(p2, px).length() > localWidth*maxL)
@@ -439,6 +490,7 @@ QVector AngleBySecondSymmetry(const QVector &points, QPointF p
{// Because artificial loop can lead to wrong clipping we must rollback current seam allowance points
bool success = false;
pointsIntr = RollbackSeamAllowance(pointsIntr, bigLine2, &success);
+ rollbackFlag = true;
}
type = sEdge.intersect(bigLine2, &px);
@@ -453,7 +505,16 @@ QVector AngleBySecondSymmetry(const QVector &points, QPointF p
{
return AngleByLength(points, p2, bigLine1, sp2, bigLine2, p, width);
}
- pointsIntr.append(px);
+
+ if (not rollbackFlag)
+ {
+ pointsIntr.append(px);
+ }
+
+ if (needRollback != nullptr && rollbackFlag)
+ {
+ *needRollback = 0;
+ }
}
else
{
@@ -463,6 +524,11 @@ QVector AngleBySecondSymmetry(const QVector &points, QPointF p
allowance.setLength(allowance.length() + localWidth * 3.);
pointsIntr.append(allowance.p2());
pointsIntr.append(bigLine2.p2());
+
+ if (needRollback != nullptr && rollbackFlag)
+ {
+ *needRollback = 3;
+ }
}
return pointsIntr;
@@ -517,8 +583,13 @@ QVector AngleByFirstRightAngle(const QVector &points, QPointF
//---------------------------------------------------------------------------------------------------------------------
QVector AngleBySecondRightAngle(QVector points, QPointF p2, QPointF p3,
const QLineF &bigLine1, QPointF sp2, const QLineF &bigLine2,
- const VSAPoint &p, qreal width)
+ const VSAPoint &p, qreal width, int *needRollback = nullptr)
{
+ if (needRollback != nullptr)
+ {
+ *needRollback = -1;
+ }
+
const qreal localWidth = p.MaxLocalSA(width);
QLineF edge(p2, p3);
@@ -529,8 +600,6 @@ QVector AngleBySecondRightAngle(QVector points, QPointF p2, QP
return AngleByLength(points, p2, bigLine1, sp2, bigLine2, p, width);
}
-
-
if (IsOutsidePoint(bigLine1.p1(), bigLine1.p2(), px))
{
if (QLineF(p2, px).length() > localWidth*maxL)
@@ -538,22 +607,39 @@ QVector AngleBySecondRightAngle(QVector points, QPointF p2, QP
return AngleByLength(points, p2, bigLine1, sp2, bigLine2, p, width);
}
points.append(px);
+
+ QLineF seam(px, p3);
+ seam.setAngle(seam.angle()+90);
+ seam.setLength(p.GetSAAfter(width));
+ points.append(seam.p2());
}
else
{
// Because artificial loop can lead to wrong clipping we must rollback current seam allowance points
bool success = false;
+ const int countBefore = points.size();
points = RollbackSeamAllowance(points, edge, &success);
+
if (success)
{
px = points.last();
}
- }
- QLineF seam(px, p3);
- seam.setAngle(seam.angle()+90);
- seam.setLength(p.GetSAAfter(width));
- points.append(seam.p2());
+ if (countBefore > 0)
+ {
+ QLineF seam(px, p3);
+ seam.setAngle(seam.angle()+90);
+ seam.setLength(p.GetSAAfter(width));
+ points.append(seam.p2());
+ }
+ else
+ {
+ if (needRollback != nullptr)
+ {
+ *needRollback = 0;
+ }
+ }
+ }
return points;
}
@@ -886,13 +972,14 @@ QVector VAbstractPiece::Equidistant(QVector points, qreal wid
points.append(points.at(0));// Should be always closed
}
+ int needRollback = -1; // no need for rollback
QVector ekvPoints;
for (qint32 i = 0; i < points.size(); ++i )
{
if ( i == 0)
{//first point
ekvPoints = EkvPoint(ekvPoints, points.at(points.size()-2), points.at(points.size()-1), points.at(1),
- points.at(0), width);
+ points.at(0), width, &needRollback);
continue;
}
@@ -900,7 +987,7 @@ QVector VAbstractPiece::Equidistant(QVector points, qreal wid
{//last point
if (not ekvPoints.isEmpty())
{
- ekvPoints.append(ekvPoints.at(0));
+ ekvPoints.append(ekvPoints.first());
}
continue;
}
@@ -908,6 +995,82 @@ QVector VAbstractPiece::Equidistant(QVector points, qreal wid
ekvPoints = EkvPoint(ekvPoints, points.at(i-1), points.at(i), points.at(i+1), points.at(i), width);
}
+ if (needRollback != -1)
+ {
+ auto Rollback = [&ekvPoints, needRollback](const QLineF &edge)
+ {
+ if (not ekvPoints.isEmpty())
+ {
+ ekvPoints.removeLast();
+
+ QVector head = ekvPoints.mid(0, needRollback);
+ ekvPoints.remove(0, needRollback);
+
+ bool success = false;
+ ekvPoints = RollbackSeamAllowance(ekvPoints, edge, &success);
+
+ ekvPoints = head + ekvPoints;
+
+ if (not ekvPoints.isEmpty())
+ {
+ ekvPoints.append(ekvPoints.first());
+ }
+ }
+ };
+
+ QT_WARNING_PUSH
+ QT_WARNING_DISABLE_GCC("-Wswitch-default")
+ // This check helps to find missed angle types in the switch
+ Q_STATIC_ASSERT_X(static_cast(PieceNodeAngle::LAST_ONE_DO_NOT_USE) == 7, "Not all types were handled.");
+ switch (points.last().GetAngleType())
+ {
+ case PieceNodeAngle::LAST_ONE_DO_NOT_USE:
+ case PieceNodeAngle::ByFirstEdgeRightAngle:
+ Q_UNREACHABLE(); //-V501
+ break;
+ case PieceNodeAngle::ByLength:
+ case PieceNodeAngle::ByLengthCurve:
+ case PieceNodeAngle::ByFirstEdgeSymmetry:
+ case PieceNodeAngle::BySecondEdgeSymmetry:
+ Rollback(ParallelLine(points.at(0), points.at(1), width));
+ break;
+ case PieceNodeAngle::ByPointsIntersection:
+ Rollback(QLineF(points.last(), points.at(1)));
+ break;
+ case PieceNodeAngle::BySecondEdgeRightAngle:
+ if (not ekvPoints.isEmpty())
+ {
+ const QLineF edge(points.last(), points.at(1));
+ const QLineF bigLine1 = ParallelLine(points.at(points.size()-2), points.at(0), width);
+
+ QPointF px;
+ edge.intersect(bigLine1, &px);
+
+ ekvPoints.removeLast();
+
+ bool success = false;
+ ekvPoints = RollbackSeamAllowance(ekvPoints, edge, &success);
+
+ if (success)
+ {
+ px = ekvPoints.last();
+ }
+
+ QLineF seam(px, points.at(1));
+ seam.setAngle(seam.angle()+90);
+ seam.setLength(points.at(0).GetSAAfter(width));
+ ekvPoints.append(seam.p2());
+
+ if (not ekvPoints.isEmpty())
+ {
+ ekvPoints.append(ekvPoints.first());
+ }
+ }
+ break;
+ }
+ QT_WARNING_POP
+ }
+
const bool removeFirstAndLast = false;
ekvPoints = CheckLoops(CorrectEquidistantPoints(ekvPoints, removeFirstAndLast));//Result path can contain loops
ekvPoints = CheckLoops(CorrectEquidistantPoints(ekvPoints, removeFirstAndLast));//Result path can contain loops
@@ -1099,7 +1262,7 @@ QVector VAbstractPiece::CheckLoops(const QVector &points)
* @return seam aloowance points.
*/
QVector VAbstractPiece::EkvPoint(QVector points, const VSAPoint &p1Line1, VSAPoint p2Line1,
- const VSAPoint &p1Line2, VSAPoint p2Line2, qreal width)
+ const VSAPoint &p1Line2, VSAPoint p2Line2, qreal width, int *needRollback)
{
if (width < 0)
{ // width can't be < 0
@@ -1164,8 +1327,8 @@ QVector VAbstractPiece::EkvPoint(QVector points, const VSAPoin
const qreal angle = AngleBetweenBisectors(b1, b2);
// Comparison bisector angles helps to find direction
- if (angle < 90
- || VFuzzyComparePossibleNulls(angle, 90.0))// Go in a same direction
+ if (angle < 135
+ || VFuzzyComparePossibleNulls(angle, 135.0))// Go in a same direction
{//Regular equdistant case
QT_WARNING_PUSH
QT_WARNING_DISABLE_GCC("-Wswitch-default")
@@ -1179,22 +1342,23 @@ QT_WARNING_DISABLE_GCC("-Wswitch-default")
break;
case PieceNodeAngle::ByLength:
case PieceNodeAngle::ByLengthCurve:
- return AngleByLength(points, p2Line1, bigLine1, crosPoint, bigLine2, p2Line1, width);
+ return AngleByLength(points, p2Line1, bigLine1, crosPoint, bigLine2, p2Line1, width,
+ needRollback);
case PieceNodeAngle::ByPointsIntersection:
return AngleByIntersection(points, p1Line1, p2Line1, p1Line2, bigLine1, crosPoint, bigLine2,
- p2Line1, width);
+ p2Line1, width, needRollback);
case PieceNodeAngle::ByFirstEdgeSymmetry:
return AngleByFirstSymmetry(points, p1Line1, p2Line1, bigLine1, crosPoint, bigLine2,
- p2Line1, width);
+ p2Line1, width, needRollback);
case PieceNodeAngle::BySecondEdgeSymmetry:
return AngleBySecondSymmetry(points, p2Line1, p1Line2, bigLine1, crosPoint, bigLine2,
- p2Line1, width);
+ p2Line1, width, needRollback);
case PieceNodeAngle::ByFirstEdgeRightAngle:
return AngleByFirstRightAngle(points, p1Line1, p2Line1, bigLine1, crosPoint, bigLine2,
p2Line1, width);
case PieceNodeAngle::BySecondEdgeRightAngle:
return AngleBySecondRightAngle(points, p2Line1, p1Line2, bigLine1, crosPoint, bigLine2,
- p2Line1, width);
+ p2Line1, width, needRollback);
}
QT_WARNING_POP
}
diff --git a/src/libs/vlayout/vabstractpiece.h b/src/libs/vlayout/vabstractpiece.h
index 2c357041b..26950b801 100644
--- a/src/libs/vlayout/vabstractpiece.h
+++ b/src/libs/vlayout/vabstractpiece.h
@@ -187,7 +187,8 @@ public:
static qreal SumTrapezoids(const QVector &points);
static QVector CheckLoops(const QVector &points);
static QVector EkvPoint(QVector points, const VSAPoint &p1Line1, VSAPoint p2Line1,
- const VSAPoint &p1Line2, VSAPoint p2Line2, qreal width);
+ const VSAPoint &p1Line2, VSAPoint p2Line2, qreal width,
+ int *needRollback = nullptr);
static QLineF ParallelLine(const VSAPoint &p1, const VSAPoint &p2, qreal width);
template
diff --git a/src/test/ValentinaTest/tst_vabstractpiece.cpp b/src/test/ValentinaTest/tst_vabstractpiece.cpp
index e1a2fa86e..22d981559 100644
--- a/src/test/ValentinaTest/tst_vabstractpiece.cpp
+++ b/src/test/ValentinaTest/tst_vabstractpiece.cpp
@@ -125,6 +125,66 @@ void TST_VAbstractPiece::EquidistantRemoveLoop_data()
QTest::newRow("Issue 646.") << InputPointsIssue646()
<< 37.795275590551185 // seam allowance width (1.0 cm)
<< OutputPointsIssue646();
+
+ // See file src/app/share/collection/bugs/Issue_#923.val
+ QTest::newRow("Issue 923. Test 1") << InputPointsIssue923Test1()
+ << 37.795275590551185 // seam allowance width (1.0 cm)
+ << OutputPointsIssue923Test1();
+
+ // See file src/app/share/collection/bugs/Issue_#923.val
+ QTest::newRow("Issue 923. Test 2") << InputPointsIssue923Test2()
+ << 37.795275590551185 // seam allowance width (1.0 cm)
+ << OutputPointsIssue923Test2();
+
+ // See file src/app/share/collection/bugs/Issue_#923.val
+ QTest::newRow("Issue 923. Test 3") << InputPointsIssue923Test3()
+ << 37.795275590551185 // seam allowance width (1.0 cm)
+ << OutputPointsIssue923Test3();
+
+ // See file src/app/share/collection/bugs/Issue_#923.val
+ QTest::newRow("Issue 923. Test 4") << InputPointsIssue923Test4()
+ << 37.795275590551185 // seam allowance width (1.0 cm)
+ << OutputPointsIssue923Test4();
+
+ // See file src/app/share/collection/bugs/Issue_#923.val
+ QTest::newRow("Issue 923. Test 5") << InputPointsIssue923Test5()
+ << 37.795275590551185 // seam allowance width (1.0 cm)
+ << OutputPointsIssue923Test5();
+
+ // See file src/app/share/collection/bugs/Issue_#923.val
+ QTest::newRow("Issue 923. Test 6") << InputPointsIssue923Test6()
+ << 37.795275590551185 // seam allowance width (1.0 cm)
+ << OutputPointsIssue923Test6();
+
+ // See file src/app/share/collection/bugs/Issue_#923.val
+ QTest::newRow("Issue 923. Test 1.1") << InputPointsIssue923Test1_1()
+ << 37.795275590551185 // seam allowance width (1.0 cm)
+ << OutputPointsIssue923Test1_1();
+
+ // See file src/app/share/collection/bugs/Issue_#923.val
+ QTest::newRow("Issue 923. Test 2.2") << InputPointsIssue923Test2_2()
+ << 37.795275590551185 // seam allowance width (1.0 cm)
+ << OutputPointsIssue923Test2_2();
+
+ // See file src/app/share/collection/bugs/Issue_#923.val
+ QTest::newRow("Issue 923. Test 3.3") << InputPointsIssue923Test3_3()
+ << 37.795275590551185 // seam allowance width (1.0 cm)
+ << OutputPointsIssue923Test3_3();
+
+ // See file src/app/share/collection/bugs/Issue_#923.val
+ QTest::newRow("Issue 923. Test 4.4") << InputPointsIssue923Test4_4()
+ << 37.795275590551185 // seam allowance width (1.0 cm)
+ << OutputPointsIssue923Test4_4();
+
+ // See file src/app/share/collection/bugs/Issue_#923.val
+ QTest::newRow("Issue 923. Test 5.5") << InputPointsIssue923Test5_5()
+ << 37.795275590551185 // seam allowance width (1.0 cm)
+ << OutputPointsIssue923Test5_5();
+
+ // See file src/app/share/collection/bugs/Issue_#923.val
+ QTest::newRow("Issue 923. Test 6.6") << InputPointsIssue923Test6_6()
+ << 37.795275590551185 // seam allowance width (1.0 cm)
+ << OutputPointsIssue923Test6_6();
}
//---------------------------------------------------------------------------------------------------------------------
@@ -1379,7 +1439,6 @@ QVector TST_VAbstractPiece::OutputPointsSeamTest1PieceBySecondEdgeSymme
points += QPointF(257.767987517066160, -51.011647735560771);
points += QPointF(273.528559017665714, -60.623983162339158);
points += QPointF(284.944912181261145, -68.750463215889098);
- points += QPointF(286.890081707470131, -68.482082508404147);
points += QPointF(556.951317720606994, -31.220946854728947);
points += QPointF(539.610114105118896, 79.891315777781244);
points += QPointF(585.916731584533181, -20.702420721823501);
@@ -6497,3 +6556,4906 @@ QVector TST_VAbstractPiece::OutputPointsIssue646() const
return points;
}
+
+//---------------------------------------------------------------------------------------------------------------------
+QVector TST_VAbstractPiece::InputPointsIssue923Test1()
+{
+ QVector points;
+
+ VSAPoint p = VSAPoint(-814.714960629921279, 331.313196850393751);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(0);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, -8.844283464566928);
+ p.SetSABefore(0);
+ p.SetSAAfter(37.7953);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, -8.844283464566928);
+ p.SetSABefore(0);
+ p.SetSAAfter(37.7953);
+ points += p;
+
+ p = VSAPoint(-810.914791391285917, -9.118915311803084);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-773.697565712941014, -13.057776517652679);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-731.369396039071717, -19.564193239769612);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-700.813861852517789, -25.693917945236084);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-670.539289284542633, -33.532046871057645);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-649.425406024800168, -40.690709434256448);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-636.497248173983621, -46.041845587202857);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-630.550935626324190, -48.932226964906654);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-612.770937464562508, -58.178811938993192);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-595.504209442756292, -69.042252656202692);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ points += VSAPoint(-590.462992125984215, -72.529322834645669);
+ points += VSAPoint(-590.462992125984215, -72.529322834645669);
+ points += VSAPoint(-231.118006951984967, 95.879158575193841);
+ points += VSAPoint(-231.118006951984967, 95.879158575193841);
+
+ p = VSAPoint(-238.402815433872661, 116.441912166387880);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-251.054901827475362, 155.855307076335350);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-261.519858253217421, 193.398201754121601);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-269.924247729261879, 229.275078971710684);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-276.394633273771547, 263.690421501066567);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-281.057577904909294, 296.848712114153273);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-284.039644640838333, 328.954433582934655);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+
+ p = VSAPoint(-285.555799865587915, 332.073678193884462);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-288.834524762284673, 333.546028373225568);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-292.651017475591800, 334.960499310104979);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-296.986935988437835, 336.317597411974702);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-304.365417624891165, 338.253791617484694);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-315.933705242960059, 340.629827700589658);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-329.249539751899079, 342.785487777791332);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-344.166185015137103, 344.724823108705550);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-360.536904896102669, 346.451884952948035);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-378.214963258224429, 347.970724570134507);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-397.053623964930921, 349.285393219880916);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-416.906150879651022, 350.399942161802983);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-437.625807865813101, 351.318422655516372);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-459.065858786846093, 352.044885960637032);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-481.079567506178364, 352.583383336780628);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-503.520197887238680, 352.937966043563051);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-526.241013793455750, 353.112685340600024);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-549.095279088258053, 353.111592487507210);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-571.936257635074298, 352.938738743900558);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-594.617213297333365, 352.598175369395790);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-616.991409938463448, 352.093953623608741);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-638.912111421893314, 351.430124766155018);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-660.232581611051955, 350.610740056650570);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-680.806084369367682, 349.639850754711119);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-700.485883560269031, 348.521508119952557);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-719.125243047185108, 347.259763411990377);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-736.577426693544112, 345.858667890440699);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-752.695698362774920, 344.322272814919074);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-767.333321918305955, 342.654629445041451);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-780.343561223566212, 340.859789040423379);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-791.579680141983886, 338.941802860680923);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-800.894942536987969, 336.904722165429632);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-806.464504883768996, 335.297692803701807);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-809.543928560675113, 334.193629625334438);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-812.060599029906371, 333.062071651623739);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-813.996174274391478, 331.903525290021662);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, 331.313196850393751);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(0);
+ points += p;
+
+ return points;
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+QVector TST_VAbstractPiece::OutputPointsIssue923Test1()
+{
+ QVector points;
+
+ points += QPointF(-814.714960629921279, -46.738127408018386);
+ points += QPointF(-778.560274683193597, -50.549491761193529);
+ points += QPointF(-737.960891197081651, -56.790170478391879);
+ points += QPointF(-709.273784936183347, -62.545071142283753);
+ points += QPointF(-681.358329676571884, -69.772421317304676);
+ points += QPointF(-662.734996979773655, -76.086662659765864);
+ points += QPointF(-652.000013358218780, -80.530014885308333);
+ points += QPointF(-647.534742107878174, -82.700492263504771);
+ points += QPointF(-631.585239468780856, -90.995118061836052);
+ points += QPointF(-616.328020233970847, -100.594267156991847);
+ points += QPointF(-594.096383910663576, -115.972155307751649);
+ points += QPointF(-184.048650148745537, 76.198374399107223);
+ points += QPointF(-202.588712626694274, 128.531217087733864);
+ points += QPointF(-214.844352980142077, 166.709615345349164);
+ points += QPointF(-224.900721916665105, 202.786707734969326);
+ points += QPointF(-232.934347140993879, 237.080856834901624);
+ points += QPointF(-239.089037151700012, 269.817045957384835);
+ points += QPointF(-243.506611386394923, 301.230502874877175);
+ points += QPointF(-246.324245680472586, 331.565901059170528);
+ points += QPointF(-247.367542640672326, 354.406709505752815);
+ points += QPointF(-268.813396242720216, 365.986520876589054);
+ points += QPointF(-274.509592479190928, 368.544465142904016);
+ points += QPointF(-280.430827138279028, 370.738996867416517);
+ points += QPointF(-286.539948778692178, 372.651089393540587);
+ points += QPointF(-295.760523769485246, 375.070669023642552);
+ points += QPointF(-309.108660665237892, 377.812272271559323);
+ points += QPointF(-323.791841306461833, 380.189287868544909);
+ points += QPointF(-339.746492379944868, 382.263575885265993);
+ points += QPointF(-356.936262185776172, 384.077045039880318);
+ points += QPointF(-375.281527662442841, 385.653208859628023);
+ points += QPointF(-394.678657394273387, 387.006850647147644);
+ points += QPointF(-414.787606696514558, 388.135795504608552);
+ points += QPointF(-435.952026976937020, 389.076617984501581);
+ points += QPointF(-457.785958239726995, 389.818484035948188);
+ points += QPointF(-480.155299343825106, 390.367355935354340);
+ points += QPointF(-502.923072127811622, 390.728524359010180);
+ points += QPointF(-525.950383000425973, 390.906843496429246);
+ points += QPointF(-549.097086395700558, 390.906868034847378);
+ points += QPointF(-572.222272868468281, 390.732932110765603);
+ points += QPointF(-595.184660101380132, 390.389190982770685);
+ points += QPointF(-617.842942744172888, 389.879635420374768);
+ points += QPointF(-640.056148626075128, 389.208081776045162);
+ points += QPointF(-661.684051740050222, 388.378134611085102);
+ points += QPointF(-682.587707903001387, 387.393111203977753);
+ points += QPointF(-702.630213610816895, 386.255904969512756);
+ points += QPointF(-721.913933492959586, 384.952760768153212);
+ points += QPointF(-739.883081019170959, 383.510162372720174);
+ points += QPointF(-756.628370632600195, 381.913999891517676);
+ points += QPointF(-772.055707410166860, 380.156385631636169);
+ points += QPointF(-786.107417616341536, 378.217868080938274);
+ points += QPointF(-798.800506212061464, 376.051179682426266);
+ points += QPointF(-810.181063245406790, 373.562456117723798);
+ points += QPointF(-814.714960629921279, 372.254255263452592);
+ points += QPointF(-814.714960629921279, -46.738127408018386);
+
+ return points;
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+QVector TST_VAbstractPiece::InputPointsIssue923Test2()
+{
+ QVector points;
+
+ VSAPoint p = VSAPoint(-814.714960629921279, 331.313196850393751);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(0);
+ p.SetAngleType(PieceNodeAngle::ByPointsIntersection);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, -8.844283464566928);
+ p.SetSABefore(0);
+ p.SetSAAfter(37.7953);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, -8.844283464566928);
+ p.SetSABefore(0);
+ p.SetSAAfter(37.7953);
+ points += p;
+
+ p = VSAPoint(-810.914791391285917, -9.118915311803084);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-773.697565712941014, -13.057776517652679);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-731.369396039071717, -19.564193239769612);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-700.813861852517789, -25.693917945236084);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-670.539289284542633, -33.532046871057645);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-649.425406024800168, -40.690709434256448);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-636.497248173983621, -46.041845587202857);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-630.550935626324190, -48.932226964906654);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-612.770937464562508, -58.178811938993192);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-595.504209442756292, -69.042252656202692);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ points += VSAPoint(-590.462992125984215, -72.529322834645669);
+ points += VSAPoint(-590.462992125984215, -72.529322834645669);
+ points += VSAPoint(-231.118006951984967, 95.879158575193841);
+ points += VSAPoint(-231.118006951984967, 95.879158575193841);
+
+ p = VSAPoint(-238.402815433872661, 116.441912166387880);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-251.054901827475362, 155.855307076335350);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-261.519858253217421, 193.398201754121601);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-269.924247729261879, 229.275078971710684);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-276.394633273771547, 263.690421501066567);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-281.057577904909294, 296.848712114153273);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-284.039644640838333, 328.954433582934655);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+
+ p = VSAPoint(-285.555799865587915, 332.073678193884462);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-288.834524762284673, 333.546028373225568);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-292.651017475591800, 334.960499310104979);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-296.986935988437835, 336.317597411974702);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-304.365417624891165, 338.253791617484694);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-315.933705242960059, 340.629827700589658);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-329.249539751899079, 342.785487777791332);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-344.166185015137103, 344.724823108705550);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-360.536904896102669, 346.451884952948035);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-378.214963258224429, 347.970724570134507);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-397.053623964930921, 349.285393219880916);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-416.906150879651022, 350.399942161802983);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-437.625807865813101, 351.318422655516372);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-459.065858786846093, 352.044885960637032);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-481.079567506178364, 352.583383336780628);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-503.520197887238680, 352.937966043563051);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-526.241013793455750, 353.112685340600024);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-549.095279088258053, 353.111592487507210);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-571.936257635074298, 352.938738743900558);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-594.617213297333365, 352.598175369395790);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-616.991409938463448, 352.093953623608741);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-638.912111421893314, 351.430124766155018);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-660.232581611051955, 350.610740056650570);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-680.806084369367682, 349.639850754711119);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-700.485883560269031, 348.521508119952557);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-719.125243047185108, 347.259763411990377);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-736.577426693544112, 345.858667890440699);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-752.695698362774920, 344.322272814919074);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-767.333321918305955, 342.654629445041451);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-780.343561223566212, 340.859789040423379);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-791.579680141983886, 338.941802860680923);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-800.894942536987969, 336.904722165429632);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-806.464504883768996, 335.297692803701807);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-809.543928560675113, 334.193629625334438);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-812.060599029906371, 333.062071651623739);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-813.996174274391478, 331.903525290021662);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, 331.313196850393751);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(0);
+ p.SetAngleType(PieceNodeAngle::ByPointsIntersection);
+ points += p;
+
+ return points;
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+QVector TST_VAbstractPiece::OutputPointsIssue923Test2()
+{
+ QVector points;
+
+ points += QPointF(-814.714960629921279, 331.313196850393751);
+ points += QPointF(-814.714960629921279, -46.738127408018386);
+ points += QPointF(-778.560274683193597, -50.549491761193529);
+ points += QPointF(-737.960891197081651, -56.790170478391879);
+ points += QPointF(-709.273784936183347, -62.545071142283753);
+ points += QPointF(-681.358329676571884, -69.772421317304676);
+ points += QPointF(-662.734996979773655, -76.086662659765864);
+ points += QPointF(-652.000013358218780, -80.530014885308333);
+ points += QPointF(-647.534742107878174, -82.700492263504771);
+ points += QPointF(-631.585239468780856, -90.995118061836052);
+ points += QPointF(-616.328020233970847, -100.594267156991847);
+ points += QPointF(-594.096383910663576, -115.972155307751649);
+ points += QPointF(-184.048650148745537, 76.198374399107223);
+ points += QPointF(-202.588712626694274, 128.531217087733864);
+ points += QPointF(-214.844352980142077, 166.709615345349164);
+ points += QPointF(-224.900721916665105, 202.786707734969326);
+ points += QPointF(-232.934347140993879, 237.080856834901624);
+ points += QPointF(-239.089037151700012, 269.817045957384835);
+ points += QPointF(-243.506611386394923, 301.230502874877175);
+ points += QPointF(-246.324245680472586, 331.565901059170528);
+ points += QPointF(-247.367542640672326, 354.406709505752815);
+ points += QPointF(-268.813396242720216, 365.986520876589054);
+ points += QPointF(-274.509592479190928, 368.544465142904016);
+ points += QPointF(-280.430827138279028, 370.738996867416517);
+ points += QPointF(-286.539948778692178, 372.651089393540587);
+ points += QPointF(-295.760523769485246, 375.070669023642552);
+ points += QPointF(-309.108660665237892, 377.812272271559323);
+ points += QPointF(-323.791841306461833, 380.189287868544909);
+ points += QPointF(-339.746492379944868, 382.263575885265993);
+ points += QPointF(-356.936262185776172, 384.077045039880318);
+ points += QPointF(-375.281527662442841, 385.653208859628023);
+ points += QPointF(-394.678657394273387, 387.006850647147644);
+ points += QPointF(-414.787606696514558, 388.135795504608552);
+ points += QPointF(-435.952026976937020, 389.076617984501581);
+ points += QPointF(-457.785958239726995, 389.818484035948188);
+ points += QPointF(-480.155299343825106, 390.367355935354340);
+ points += QPointF(-502.923072127811622, 390.728524359010180);
+ points += QPointF(-525.950383000425973, 390.906843496429246);
+ points += QPointF(-549.097086395700558, 390.906868034847378);
+ points += QPointF(-572.222272868468281, 390.732932110765603);
+ points += QPointF(-595.184660101380132, 390.389190982770685);
+ points += QPointF(-617.842942744172888, 389.879635420374768);
+ points += QPointF(-640.056148626075128, 389.208081776045162);
+ points += QPointF(-661.684051740050222, 388.378134611085102);
+ points += QPointF(-682.587707903001387, 387.393111203977753);
+ points += QPointF(-702.630213610816895, 386.255904969512756);
+ points += QPointF(-721.913933492959586, 384.952760768153212);
+ points += QPointF(-739.883081019170959, 383.510162372720174);
+ points += QPointF(-756.628370632600195, 381.913999891517676);
+ points += QPointF(-772.055707410166860, 380.156385631636169);
+ points += QPointF(-786.107417616341536, 378.217868080938274);
+ points += QPointF(-798.800506212061464, 376.051179682426266);
+ points += QPointF(-810.181063245406790, 373.562456117723798);
+ points += QPointF(-814.714960629921279, 372.254255263452592);
+ points += QPointF(-814.714960629921279, 331.313196850393751);
+
+ return points;
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+QVector TST_VAbstractPiece::InputPointsIssue923Test3()
+{
+ QVector points;
+
+ VSAPoint p = VSAPoint(-814.714960629921279, 331.313196850393751);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(0);
+ p.SetAngleType(PieceNodeAngle::ByFirstEdgeSymmetry);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, -8.844283464566928);
+ p.SetSABefore(0);
+ p.SetSAAfter(37.7953);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, -8.844283464566928);
+ p.SetSABefore(0);
+ p.SetSAAfter(37.7953);
+ points += p;
+
+ p = VSAPoint(-810.914791391285917, -9.118915311803084);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-773.697565712941014, -13.057776517652679);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-731.369396039071717, -19.564193239769612);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-700.813861852517789, -25.693917945236084);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-670.539289284542633, -33.532046871057645);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-649.425406024800168, -40.690709434256448);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-636.497248173983621, -46.041845587202857);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-630.550935626324190, -48.932226964906654);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-612.770937464562508, -58.178811938993192);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-595.504209442756292, -69.042252656202692);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ points += VSAPoint(-590.462992125984215, -72.529322834645669);
+ points += VSAPoint(-590.462992125984215, -72.529322834645669);
+ points += VSAPoint(-231.118006951984967, 95.879158575193841);
+ points += VSAPoint(-231.118006951984967, 95.879158575193841);
+
+ p = VSAPoint(-238.402815433872661, 116.441912166387880);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-251.054901827475362, 155.855307076335350);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-261.519858253217421, 193.398201754121601);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-269.924247729261879, 229.275078971710684);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-276.394633273771547, 263.690421501066567);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-281.057577904909294, 296.848712114153273);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-284.039644640838333, 328.954433582934655);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+
+ p = VSAPoint(-285.555799865587915, 332.073678193884462);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-288.834524762284673, 333.546028373225568);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-292.651017475591800, 334.960499310104979);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-296.986935988437835, 336.317597411974702);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-304.365417624891165, 338.253791617484694);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-315.933705242960059, 340.629827700589658);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-329.249539751899079, 342.785487777791332);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-344.166185015137103, 344.724823108705550);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-360.536904896102669, 346.451884952948035);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-378.214963258224429, 347.970724570134507);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-397.053623964930921, 349.285393219880916);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-416.906150879651022, 350.399942161802983);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-437.625807865813101, 351.318422655516372);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-459.065858786846093, 352.044885960637032);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-481.079567506178364, 352.583383336780628);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-503.520197887238680, 352.937966043563051);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-526.241013793455750, 353.112685340600024);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-549.095279088258053, 353.111592487507210);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-571.936257635074298, 352.938738743900558);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-594.617213297333365, 352.598175369395790);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-616.991409938463448, 352.093953623608741);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-638.912111421893314, 351.430124766155018);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-660.232581611051955, 350.610740056650570);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-680.806084369367682, 349.639850754711119);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-700.485883560269031, 348.521508119952557);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-719.125243047185108, 347.259763411990377);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-736.577426693544112, 345.858667890440699);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-752.695698362774920, 344.322272814919074);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-767.333321918305955, 342.654629445041451);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-780.343561223566212, 340.859789040423379);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-791.579680141983886, 338.941802860680923);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-800.894942536987969, 336.904722165429632);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-806.464504883768996, 335.297692803701807);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-809.543928560675113, 334.193629625334438);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-812.060599029906371, 333.062071651623739);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-813.996174274391478, 331.903525290021662);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, 331.313196850393751);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(0);
+ p.SetAngleType(PieceNodeAngle::ByFirstEdgeSymmetry);
+ points += p;
+
+ return points;
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+QVector TST_VAbstractPiece::OutputPointsIssue923Test3()
+{
+ QVector points;
+
+ points += QPointF(-844.490345580522785, 355.767273366986956);
+ points += QPointF(-814.714960629921279, 331.313196850393751);
+ points += QPointF(-814.714960629921279, -46.738127408018386);
+ points += QPointF(-778.560274683193597, -50.549491761193529);
+ points += QPointF(-737.960891197081651, -56.790170478391879);
+ points += QPointF(-709.273784936183347, -62.545071142283753);
+ points += QPointF(-681.358329676571884, -69.772421317304676);
+ points += QPointF(-662.734996979773655, -76.086662659765864);
+ points += QPointF(-652.000013358218780, -80.530014885308333);
+ points += QPointF(-647.534742107878174, -82.700492263504771);
+ points += QPointF(-631.585239468780856, -90.995118061836052);
+ points += QPointF(-616.328020233970847, -100.594267156991847);
+ points += QPointF(-594.096383910663576, -115.972155307751649);
+ points += QPointF(-184.048650148745537, 76.198374399107223);
+ points += QPointF(-202.588712626694274, 128.531217087733864);
+ points += QPointF(-214.844352980142077, 166.709615345349164);
+ points += QPointF(-224.900721916665105, 202.786707734969326);
+ points += QPointF(-232.934347140993879, 237.080856834901624);
+ points += QPointF(-239.089037151700012, 269.817045957384835);
+ points += QPointF(-243.506611386394923, 301.230502874877175);
+ points += QPointF(-246.324245680472586, 331.565901059170528);
+ points += QPointF(-247.367542640672326, 354.406709505752815);
+ points += QPointF(-268.813396242720216, 365.986520876589054);
+ points += QPointF(-274.509592479190928, 368.544465142904016);
+ points += QPointF(-280.430827138279028, 370.738996867416517);
+ points += QPointF(-286.539948778692178, 372.651089393540587);
+ points += QPointF(-295.760523769485246, 375.070669023642552);
+ points += QPointF(-309.108660665237892, 377.812272271559323);
+ points += QPointF(-323.791841306461833, 380.189287868544909);
+ points += QPointF(-339.746492379944868, 382.263575885265993);
+ points += QPointF(-356.936262185776172, 384.077045039880318);
+ points += QPointF(-375.281527662442841, 385.653208859628023);
+ points += QPointF(-394.678657394273387, 387.006850647147644);
+ points += QPointF(-414.787606696514558, 388.135795504608552);
+ points += QPointF(-435.952026976937020, 389.076617984501581);
+ points += QPointF(-457.785958239726995, 389.818484035948188);
+ points += QPointF(-480.155299343825106, 390.367355935354340);
+ points += QPointF(-502.923072127811622, 390.728524359010180);
+ points += QPointF(-525.950383000425973, 390.906843496429246);
+ points += QPointF(-549.097086395700558, 390.906868034847378);
+ points += QPointF(-572.222272868468281, 390.732932110765603);
+ points += QPointF(-595.184660101380132, 390.389190982770685);
+ points += QPointF(-617.842942744172888, 389.879635420374768);
+ points += QPointF(-640.056148626075128, 389.208081776045162);
+ points += QPointF(-661.684051740050222, 388.378134611085102);
+ points += QPointF(-682.587707903001387, 387.393111203977753);
+ points += QPointF(-702.630213610816895, 386.255904969512756);
+ points += QPointF(-721.913933492959586, 384.952760768153212);
+ points += QPointF(-739.883081019170959, 383.510162372720174);
+ points += QPointF(-756.628370632600195, 381.913999891517676);
+ points += QPointF(-772.055707410166860, 380.156385631636169);
+ points += QPointF(-786.107417616341536, 378.217868080938274);
+ points += QPointF(-798.800506212061464, 376.051179682426266);
+ points += QPointF(-810.181063245406790, 373.562456117723798);
+ points += QPointF(-818.092955780502393, 371.279575916538420);
+ points += QPointF(-823.692975528084730, 369.271805550997954);
+ points += QPointF(-829.575336882823422, 366.626948794191208);
+ points += QPointF(-835.815139714856855, 362.892089667033019);
+ points += QPointF(-844.490345580522785, 355.767273366986956);
+
+ return points;
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+QVector TST_VAbstractPiece::InputPointsIssue923Test4()
+{
+ QVector points;
+
+ VSAPoint p = VSAPoint(-814.714960629921279, 331.313196850393751);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(0);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, -8.844283464566928);
+ p.SetSABefore(0);
+ p.SetSAAfter(37.7953);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, -8.844283464566928);
+ p.SetSABefore(0);
+ p.SetSAAfter(37.7953);
+ points += p;
+
+ p = VSAPoint(-810.914791391285917, -9.118915311803084);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-773.697565712941014, -13.057776517652679);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-731.369396039071717, -19.564193239769612);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-700.813861852517789, -25.693917945236084);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-670.539289284542633, -33.532046871057645);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-649.425406024800168, -40.690709434256448);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-636.497248173983621, -46.041845587202857);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-630.550935626324190, -48.932226964906654);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-612.770937464562508, -58.178811938993192);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-595.504209442756292, -69.042252656202692);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ points += VSAPoint(-590.462992125984215, -72.529322834645669);
+ points += VSAPoint(-590.462992125984215, -72.529322834645669);
+ points += VSAPoint(-231.118006951984967, 95.879158575193841);
+ points += VSAPoint(-231.118006951984967, 95.879158575193841);
+
+ p = VSAPoint(-238.402815433872661, 116.441912166387880);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-251.054901827475362, 155.855307076335350);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-261.519858253217421, 193.398201754121601);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-269.924247729261879, 229.275078971710684);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-276.394633273771547, 263.690421501066567);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-281.057577904909294, 296.848712114153273);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-284.039644640838333, 328.954433582934655);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+
+ p = VSAPoint(-285.555799865587915, 332.073678193884462);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-288.834524762284673, 333.546028373225568);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-292.651017475591800, 334.960499310104979);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-296.986935988437835, 336.317597411974702);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-304.365417624891165, 338.253791617484694);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-315.933705242960059, 340.629827700589658);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-329.249539751899079, 342.785487777791332);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-344.166185015137103, 344.724823108705550);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-360.536904896102669, 346.451884952948035);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-378.214963258224429, 347.970724570134507);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-397.053623964930921, 349.285393219880916);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-416.906150879651022, 350.399942161802983);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-437.625807865813101, 351.318422655516372);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-459.065858786846093, 352.044885960637032);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-481.079567506178364, 352.583383336780628);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-503.520197887238680, 352.937966043563051);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-526.241013793455750, 353.112685340600024);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-549.095279088258053, 353.111592487507210);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-571.936257635074298, 352.938738743900558);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-594.617213297333365, 352.598175369395790);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-616.991409938463448, 352.093953623608741);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-638.912111421893314, 351.430124766155018);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-660.232581611051955, 350.610740056650570);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-680.806084369367682, 349.639850754711119);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-700.485883560269031, 348.521508119952557);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-719.125243047185108, 347.259763411990377);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-736.577426693544112, 345.858667890440699);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-752.695698362774920, 344.322272814919074);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-767.333321918305955, 342.654629445041451);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-780.343561223566212, 340.859789040423379);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-791.579680141983886, 338.941802860680923);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-800.894942536987969, 336.904722165429632);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-806.464504883768996, 335.297692803701807);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-809.543928560675113, 334.193629625334438);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-812.060599029906371, 333.062071651623739);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-813.996174274391478, 331.903525290021662);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, 331.313196850393751);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(0);
+ points += p;
+
+ return points;
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+QVector TST_VAbstractPiece::OutputPointsIssue923Test4()
+{
+ QVector points;
+
+ points += QPointF(-814.714960629921279, -46.738127408018386);
+ points += QPointF(-778.560274683193597, -50.549491761193529);
+ points += QPointF(-737.960891197081651, -56.790170478391879);
+ points += QPointF(-709.273784936183347, -62.545071142283753);
+ points += QPointF(-681.358329676571884, -69.772421317304676);
+ points += QPointF(-662.734996979773655, -76.086662659765864);
+ points += QPointF(-652.000013358218780, -80.530014885308333);
+ points += QPointF(-647.534742107878174, -82.700492263504771);
+ points += QPointF(-631.585239468780856, -90.995118061836052);
+ points += QPointF(-616.328020233970847, -100.594267156991847);
+ points += QPointF(-594.096383910663576, -115.972155307751649);
+ points += QPointF(-184.048650148745537, 76.198374399107223);
+ points += QPointF(-202.588712626694274, 128.531217087733864);
+ points += QPointF(-214.844352980142077, 166.709615345349164);
+ points += QPointF(-224.900721916665105, 202.786707734969326);
+ points += QPointF(-232.934347140993879, 237.080856834901624);
+ points += QPointF(-239.089037151700012, 269.817045957384835);
+ points += QPointF(-243.506611386394923, 301.230502874877175);
+ points += QPointF(-246.324245680472586, 331.565901059170528);
+ points += QPointF(-247.367542640672326, 354.406709505752815);
+ points += QPointF(-268.813396242720216, 365.986520876589054);
+ points += QPointF(-274.509592479190928, 368.544465142904016);
+ points += QPointF(-280.430827138279028, 370.738996867416517);
+ points += QPointF(-286.539948778692178, 372.651089393540587);
+ points += QPointF(-295.760523769485246, 375.070669023642552);
+ points += QPointF(-309.108660665237892, 377.812272271559323);
+ points += QPointF(-323.791841306461833, 380.189287868544909);
+ points += QPointF(-339.746492379944868, 382.263575885265993);
+ points += QPointF(-356.936262185776172, 384.077045039880318);
+ points += QPointF(-375.281527662442841, 385.653208859628023);
+ points += QPointF(-394.678657394273387, 387.006850647147644);
+ points += QPointF(-414.787606696514558, 388.135795504608552);
+ points += QPointF(-435.952026976937020, 389.076617984501581);
+ points += QPointF(-457.785958239726995, 389.818484035948188);
+ points += QPointF(-480.155299343825106, 390.367355935354340);
+ points += QPointF(-502.923072127811622, 390.728524359010180);
+ points += QPointF(-525.950383000425973, 390.906843496429246);
+ points += QPointF(-549.097086395700558, 390.906868034847378);
+ points += QPointF(-572.222272868468281, 390.732932110765603);
+ points += QPointF(-595.184660101380132, 390.389190982770685);
+ points += QPointF(-617.842942744172888, 389.879635420374768);
+ points += QPointF(-640.056148626075128, 389.208081776045162);
+ points += QPointF(-661.684051740050222, 388.378134611085102);
+ points += QPointF(-682.587707903001387, 387.393111203977753);
+ points += QPointF(-702.630213610816895, 386.255904969512756);
+ points += QPointF(-721.913933492959586, 384.952760768153212);
+ points += QPointF(-739.883081019170959, 383.510162372720174);
+ points += QPointF(-756.628370632600195, 381.913999891517676);
+ points += QPointF(-772.055707410166860, 380.156385631636169);
+ points += QPointF(-786.107417616341536, 378.217868080938274);
+ points += QPointF(-798.800506212061464, 376.051179682426266);
+ points += QPointF(-810.181063245406790, 373.562456117723798);
+ points += QPointF(-814.714960629921279, 372.254255263452592);
+ points += QPointF(-814.714960629921279, -46.738127408018386);
+
+ return points;
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+QVector TST_VAbstractPiece::InputPointsIssue923Test5()
+{
+ QVector points;
+
+ VSAPoint p = VSAPoint(-814.714960629921279, 331.313196850393751);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(0);
+ p.SetAngleType(PieceNodeAngle::ByFirstEdgeRightAngle);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, -8.844283464566928);
+ p.SetSABefore(0);
+ p.SetSAAfter(37.7953);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, -8.844283464566928);
+ p.SetSABefore(0);
+ p.SetSAAfter(37.7953);
+ points += p;
+
+ p = VSAPoint(-810.914791391285917, -9.118915311803084);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-773.697565712941014, -13.057776517652679);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-731.369396039071717, -19.564193239769612);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-700.813861852517789, -25.693917945236084);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-670.539289284542633, -33.532046871057645);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-649.425406024800168, -40.690709434256448);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-636.497248173983621, -46.041845587202857);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-630.550935626324190, -48.932226964906654);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-612.770937464562508, -58.178811938993192);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-595.504209442756292, -69.042252656202692);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ points += VSAPoint(-590.462992125984215, -72.529322834645669);
+ points += VSAPoint(-590.462992125984215, -72.529322834645669);
+ points += VSAPoint(-231.118006951984967, 95.879158575193841);
+ points += VSAPoint(-231.118006951984967, 95.879158575193841);
+
+ p = VSAPoint(-238.402815433872661, 116.441912166387880);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-251.054901827475362, 155.855307076335350);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-261.519858253217421, 193.398201754121601);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-269.924247729261879, 229.275078971710684);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-276.394633273771547, 263.690421501066567);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-281.057577904909294, 296.848712114153273);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-284.039644640838333, 328.954433582934655);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+
+ p = VSAPoint(-285.555799865587915, 332.073678193884462);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-288.834524762284673, 333.546028373225568);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-292.651017475591800, 334.960499310104979);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-296.986935988437835, 336.317597411974702);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-304.365417624891165, 338.253791617484694);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-315.933705242960059, 340.629827700589658);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-329.249539751899079, 342.785487777791332);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-344.166185015137103, 344.724823108705550);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-360.536904896102669, 346.451884952948035);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-378.214963258224429, 347.970724570134507);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-397.053623964930921, 349.285393219880916);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-416.906150879651022, 350.399942161802983);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-437.625807865813101, 351.318422655516372);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-459.065858786846093, 352.044885960637032);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-481.079567506178364, 352.583383336780628);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-503.520197887238680, 352.937966043563051);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-526.241013793455750, 353.112685340600024);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-549.095279088258053, 353.111592487507210);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-571.936257635074298, 352.938738743900558);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-594.617213297333365, 352.598175369395790);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-616.991409938463448, 352.093953623608741);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-638.912111421893314, 351.430124766155018);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-660.232581611051955, 350.610740056650570);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-680.806084369367682, 349.639850754711119);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-700.485883560269031, 348.521508119952557);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-719.125243047185108, 347.259763411990377);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-736.577426693544112, 345.858667890440699);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-752.695698362774920, 344.322272814919074);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-767.333321918305955, 342.654629445041451);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-780.343561223566212, 340.859789040423379);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-791.579680141983886, 338.941802860680923);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-800.894942536987969, 336.904722165429632);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-806.464504883768996, 335.297692803701807);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-809.543928560675113, 334.193629625334438);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-812.060599029906371, 333.062071651623739);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-813.996174274391478, 331.903525290021662);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, 331.313196850393751);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(0);
+ p.SetAngleType(PieceNodeAngle::ByFirstEdgeRightAngle);
+ points += p;
+
+ return points;
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+QVector TST_VAbstractPiece::OutputPointsIssue923Test5()
+{
+ QVector points;
+
+ points += QPointF(-838.702607797801647, 360.520655492237381);
+ points += QPointF(-814.714960629921279, 331.313196850393751);
+ points += QPointF(-814.714960629921279, -46.738127408018386);
+ points += QPointF(-778.560274683193597, -50.549491761193529);
+ points += QPointF(-737.960891197081651, -56.790170478391879);
+ points += QPointF(-709.273784936183347, -62.545071142283753);
+ points += QPointF(-681.358329676571884, -69.772421317304676);
+ points += QPointF(-662.734996979773655, -76.086662659765864);
+ points += QPointF(-652.000013358218780, -80.530014885308333);
+ points += QPointF(-647.534742107878174, -82.700492263504771);
+ points += QPointF(-631.585239468780856, -90.995118061836052);
+ points += QPointF(-616.328020233970847, -100.594267156991847);
+ points += QPointF(-594.096383910663576, -115.972155307751649);
+ points += QPointF(-184.048650148745537, 76.198374399107223);
+ points += QPointF(-202.588712626694274, 128.531217087733864);
+ points += QPointF(-214.844352980142077, 166.709615345349164);
+ points += QPointF(-224.900721916665105, 202.786707734969326);
+ points += QPointF(-232.934347140993879, 237.080856834901624);
+ points += QPointF(-239.089037151700012, 269.817045957384835);
+ points += QPointF(-243.506611386394923, 301.230502874877175);
+ points += QPointF(-246.324245680472586, 331.565901059170528);
+ points += QPointF(-247.367542640672326, 354.406709505752815);
+ points += QPointF(-268.813396242720216, 365.986520876589054);
+ points += QPointF(-274.509592479190928, 368.544465142904016);
+ points += QPointF(-280.430827138279028, 370.738996867416517);
+ points += QPointF(-286.539948778692178, 372.651089393540587);
+ points += QPointF(-295.760523769485246, 375.070669023642552);
+ points += QPointF(-309.108660665237892, 377.812272271559323);
+ points += QPointF(-323.791841306461833, 380.189287868544909);
+ points += QPointF(-339.746492379944868, 382.263575885265993);
+ points += QPointF(-356.936262185776172, 384.077045039880318);
+ points += QPointF(-375.281527662442841, 385.653208859628023);
+ points += QPointF(-394.678657394273387, 387.006850647147644);
+ points += QPointF(-414.787606696514558, 388.135795504608552);
+ points += QPointF(-435.952026976937020, 389.076617984501581);
+ points += QPointF(-457.785958239726995, 389.818484035948188);
+ points += QPointF(-480.155299343825106, 390.367355935354340);
+ points += QPointF(-502.923072127811622, 390.728524359010180);
+ points += QPointF(-525.950383000425973, 390.906843496429246);
+ points += QPointF(-549.097086395700558, 390.906868034847378);
+ points += QPointF(-572.222272868468281, 390.732932110765603);
+ points += QPointF(-595.184660101380132, 390.389190982770685);
+ points += QPointF(-617.842942744172888, 389.879635420374768);
+ points += QPointF(-640.056148626075128, 389.208081776045162);
+ points += QPointF(-661.684051740050222, 388.378134611085102);
+ points += QPointF(-682.587707903001387, 387.393111203977753);
+ points += QPointF(-702.630213610816895, 386.255904969512756);
+ points += QPointF(-721.913933492959586, 384.952760768153212);
+ points += QPointF(-739.883081019170959, 383.510162372720174);
+ points += QPointF(-756.628370632600195, 381.913999891517676);
+ points += QPointF(-772.055707410166860, 380.156385631636169);
+ points += QPointF(-786.107417616341536, 378.217868080938274);
+ points += QPointF(-798.800506212061464, 376.051179682426266);
+ points += QPointF(-810.181063245406790, 373.562456117723798);
+ points += QPointF(-818.092955780502393, 371.279575916538420);
+ points += QPointF(-823.692975528084730, 369.271805550997954);
+ points += QPointF(-829.575336882823422, 366.626948794191208);
+ points += QPointF(-835.815139714856855, 362.892089667033019);
+ points += QPointF(-838.702607797801647, 360.520655492237381);
+
+ return points;
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+QVector TST_VAbstractPiece::InputPointsIssue923Test6()
+{
+ QVector points;
+
+ VSAPoint p = VSAPoint(-814.714960629921279, 331.313196850393751);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(0);
+ p.SetAngleType(PieceNodeAngle::BySecondEdgeRightAngle);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, -8.844283464566928);
+ p.SetSABefore(0);
+ p.SetSAAfter(37.7953);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, -8.844283464566928);
+ p.SetSABefore(0);
+ p.SetSAAfter(37.7953);
+ points += p;
+
+ p = VSAPoint(-810.914791391285917, -9.118915311803084);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-773.697565712941014, -13.057776517652679);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-731.369396039071717, -19.564193239769612);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-700.813861852517789, -25.693917945236084);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-670.539289284542633, -33.532046871057645);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-649.425406024800168, -40.690709434256448);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-636.497248173983621, -46.041845587202857);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-630.550935626324190, -48.932226964906654);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-612.770937464562508, -58.178811938993192);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-595.504209442756292, -69.042252656202692);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ points += VSAPoint(-590.462992125984215, -72.529322834645669);
+ points += VSAPoint(-590.462992125984215, -72.529322834645669);
+ points += VSAPoint(-231.118006951984967, 95.879158575193841);
+ points += VSAPoint(-231.118006951984967, 95.879158575193841);
+
+ p = VSAPoint(-238.402815433872661, 116.441912166387880);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-251.054901827475362, 155.855307076335350);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-261.519858253217421, 193.398201754121601);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-269.924247729261879, 229.275078971710684);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-276.394633273771547, 263.690421501066567);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-281.057577904909294, 296.848712114153273);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-284.039644640838333, 328.954433582934655);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+
+ p = VSAPoint(-285.555799865587915, 332.073678193884462);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-288.834524762284673, 333.546028373225568);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-292.651017475591800, 334.960499310104979);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-296.986935988437835, 336.317597411974702);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-304.365417624891165, 338.253791617484694);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-315.933705242960059, 340.629827700589658);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-329.249539751899079, 342.785487777791332);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-344.166185015137103, 344.724823108705550);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-360.536904896102669, 346.451884952948035);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-378.214963258224429, 347.970724570134507);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-397.053623964930921, 349.285393219880916);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-416.906150879651022, 350.399942161802983);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-437.625807865813101, 351.318422655516372);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-459.065858786846093, 352.044885960637032);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-481.079567506178364, 352.583383336780628);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-503.520197887238680, 352.937966043563051);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-526.241013793455750, 353.112685340600024);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-549.095279088258053, 353.111592487507210);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-571.936257635074298, 352.938738743900558);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-594.617213297333365, 352.598175369395790);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-616.991409938463448, 352.093953623608741);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-638.912111421893314, 351.430124766155018);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-660.232581611051955, 350.610740056650570);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-680.806084369367682, 349.639850754711119);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-700.485883560269031, 348.521508119952557);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-719.125243047185108, 347.259763411990377);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-736.577426693544112, 345.858667890440699);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-752.695698362774920, 344.322272814919074);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-767.333321918305955, 342.654629445041451);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-780.343561223566212, 340.859789040423379);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-791.579680141983886, 338.941802860680923);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-800.894942536987969, 336.904722165429632);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-806.464504883768996, 335.297692803701807);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-809.543928560675113, 334.193629625334438);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-812.060599029906371, 333.062071651623739);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-813.996174274391478, 331.903525290021662);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, 331.313196850393751);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(0);
+ p.SetAngleType(PieceNodeAngle::BySecondEdgeRightAngle);
+ points += p;
+
+ return points;
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+QVector TST_VAbstractPiece::OutputPointsIssue923Test6()
+{
+ QVector points;
+
+ points += QPointF(-814.714960629921279, -46.738127408018386);
+ points += QPointF(-778.560274683193597, -50.549491761193529);
+ points += QPointF(-737.960891197081651, -56.790170478391879);
+ points += QPointF(-709.273784936183347, -62.545071142283753);
+ points += QPointF(-681.358329676571884, -69.772421317304676);
+ points += QPointF(-662.734996979773655, -76.086662659765864);
+ points += QPointF(-652.000013358218780, -80.530014885308333);
+ points += QPointF(-647.534742107878174, -82.700492263504771);
+ points += QPointF(-631.585239468780856, -90.995118061836052);
+ points += QPointF(-616.328020233970847, -100.594267156991847);
+ points += QPointF(-594.096383910663576, -115.972155307751649);
+ points += QPointF(-184.048650148745537, 76.198374399107223);
+ points += QPointF(-202.588712626694274, 128.531217087733864);
+ points += QPointF(-214.844352980142077, 166.709615345349164);
+ points += QPointF(-224.900721916665105, 202.786707734969326);
+ points += QPointF(-232.934347140993879, 237.080856834901624);
+ points += QPointF(-239.089037151700012, 269.817045957384835);
+ points += QPointF(-243.506611386394923, 301.230502874877175);
+ points += QPointF(-246.324245680472586, 331.565901059170528);
+ points += QPointF(-247.367542640672326, 354.406709505752815);
+ points += QPointF(-268.813396242720216, 365.986520876589054);
+ points += QPointF(-274.509592479190928, 368.544465142904016);
+ points += QPointF(-280.430827138279028, 370.738996867416517);
+ points += QPointF(-286.539948778692178, 372.651089393540587);
+ points += QPointF(-295.760523769485246, 375.070669023642552);
+ points += QPointF(-309.108660665237892, 377.812272271559323);
+ points += QPointF(-323.791841306461833, 380.189287868544909);
+ points += QPointF(-339.746492379944868, 382.263575885265993);
+ points += QPointF(-356.936262185776172, 384.077045039880318);
+ points += QPointF(-375.281527662442841, 385.653208859628023);
+ points += QPointF(-394.678657394273387, 387.006850647147644);
+ points += QPointF(-414.787606696514558, 388.135795504608552);
+ points += QPointF(-435.952026976937020, 389.076617984501581);
+ points += QPointF(-457.785958239726995, 389.818484035948188);
+ points += QPointF(-480.155299343825106, 390.367355935354340);
+ points += QPointF(-502.923072127811622, 390.728524359010180);
+ points += QPointF(-525.950383000425973, 390.906843496429246);
+ points += QPointF(-549.097086395700558, 390.906868034847378);
+ points += QPointF(-572.222272868468281, 390.732932110765603);
+ points += QPointF(-595.184660101380132, 390.389190982770685);
+ points += QPointF(-617.842942744172888, 389.879635420374768);
+ points += QPointF(-640.056148626075128, 389.208081776045162);
+ points += QPointF(-661.684051740050222, 388.378134611085102);
+ points += QPointF(-682.587707903001387, 387.393111203977753);
+ points += QPointF(-702.630213610816895, 386.255904969512756);
+ points += QPointF(-721.913933492959586, 384.952760768153212);
+ points += QPointF(-739.883081019170959, 383.510162372720174);
+ points += QPointF(-756.628370632600195, 381.913999891517676);
+ points += QPointF(-772.055707410166860, 380.156385631636169);
+ points += QPointF(-786.107417616341536, 378.217868080938274);
+ points += QPointF(-798.800506212061464, 376.051179682426266);
+ points += QPointF(-810.181063245406790, 373.562456117723798);
+ points += QPointF(-814.714960629921279, 372.254255263452592);
+ points += QPointF(-814.714960629921279, -46.738127408018386);
+
+ return points;
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+QVector TST_VAbstractPiece::InputPointsIssue923Test1_1()
+{
+ QVector points;
+
+ VSAPoint p = VSAPoint(-814.714960629921279, 331.313196850393751);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(151.181);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, -8.844283464566928);
+ p.SetSABefore(0);
+ p.SetSAAfter(37.7953);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, -8.844283464566928);
+ p.SetSABefore(0);
+ p.SetSAAfter(37.7953);
+ points += p;
+
+ p = VSAPoint(-810.914791391285917, -9.118915311803084);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-773.697565712941014, -13.057776517652679);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-731.369396039071717, -19.564193239769612);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-700.813861852517789, -25.693917945236084);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-670.539289284542633, -33.532046871057645);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-649.425406024800168, -40.690709434256448);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-636.497248173983621, -46.041845587202857);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-630.550935626324190, -48.932226964906654);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-612.770937464562508, -58.178811938993192);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-595.504209442756292, -69.042252656202692);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ points += VSAPoint(-590.462992125984215, -72.529322834645669);
+ points += VSAPoint(-590.462992125984215, -72.529322834645669);
+ points += VSAPoint(-231.118006951984967, 95.879158575193841);
+ points += VSAPoint(-231.118006951984967, 95.879158575193841);
+
+ p = VSAPoint(-238.402815433872661, 116.441912166387880);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-251.054901827475362, 155.855307076335350);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-261.519858253217421, 193.398201754121601);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-269.924247729261879, 229.275078971710684);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-276.394633273771547, 263.690421501066567);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-281.057577904909294, 296.848712114153273);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-284.039644640838333, 328.954433582934655);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+
+ p = VSAPoint(-285.555799865587915, 332.073678193884462);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-288.834524762284673, 333.546028373225568);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-292.651017475591800, 334.960499310104979);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-296.986935988437835, 336.317597411974702);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-304.365417624891165, 338.253791617484694);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-315.933705242960059, 340.629827700589658);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-329.249539751899079, 342.785487777791332);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-344.166185015137103, 344.724823108705550);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-360.536904896102669, 346.451884952948035);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-378.214963258224429, 347.970724570134507);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-397.053623964930921, 349.285393219880916);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-416.906150879651022, 350.399942161802983);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-437.625807865813101, 351.318422655516372);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-459.065858786846093, 352.044885960637032);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-481.079567506178364, 352.583383336780628);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-503.520197887238680, 352.937966043563051);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-526.241013793455750, 353.112685340600024);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-549.095279088258053, 353.111592487507210);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-571.936257635074298, 352.938738743900558);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-594.617213297333365, 352.598175369395790);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-616.991409938463448, 352.093953623608741);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-638.912111421893314, 351.430124766155018);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-660.232581611051955, 350.610740056650570);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-680.806084369367682, 349.639850754711119);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-700.485883560269031, 348.521508119952557);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-719.125243047185108, 347.259763411990377);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-736.577426693544112, 345.858667890440699);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-752.695698362774920, 344.322272814919074);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-767.333321918305955, 342.654629445041451);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-780.343561223566212, 340.859789040423379);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-791.579680141983886, 338.941802860680923);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-800.894942536987969, 336.904722165429632);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-806.464504883768996, 335.297692803701807);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-809.543928560675113, 334.193629625334438);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-812.060599029906371, 333.062071651623739);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-813.996174274391478, 331.903525290021662);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, 331.313196850393751);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(151.181);
+ points += p;
+
+ return points;
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+QVector TST_VAbstractPiece::OutputPointsIssue923Test1_1()
+{
+ QVector points;
+
+ points += QPointF(-941.393414608898865, 276.182237988132670);
+ points += QPointF(-814.172528355339296, -10.064756082376469);
+ points += QPointF(-797.048974584331063, -48.592752067144829);
+ points += QPointF(-778.560274683193597, -50.549491761193529);
+ points += QPointF(-737.960891197081651, -56.790170478391879);
+ points += QPointF(-709.273784936183347, -62.545071142283753);
+ points += QPointF(-681.358329676571884, -69.772421317304676);
+ points += QPointF(-662.734996979773655, -76.086662659765864);
+ points += QPointF(-652.000013358218780, -80.530014885308333);
+ points += QPointF(-647.534742107878174, -82.700492263504771);
+ points += QPointF(-631.585239468780856, -90.995118061836052);
+ points += QPointF(-616.328020233970847, -100.594267156991847);
+ points += QPointF(-594.096383910663576, -115.972155307751649);
+ points += QPointF(-184.048650148745537, 76.198374399107223);
+ points += QPointF(-202.588712626694274, 128.531217087733864);
+ points += QPointF(-214.844352980142077, 166.709615345349164);
+ points += QPointF(-224.900721916665105, 202.786707734969326);
+ points += QPointF(-232.934347140993879, 237.080856834901624);
+ points += QPointF(-239.089037151700012, 269.817045957384835);
+ points += QPointF(-243.506611386394923, 301.230502874877175);
+ points += QPointF(-246.324245680472586, 331.565901059170528);
+ points += QPointF(-247.367542640672326, 354.406709505752815);
+ points += QPointF(-268.813396242720216, 365.986520876589054);
+ points += QPointF(-274.509592479190928, 368.544465142904016);
+ points += QPointF(-280.430827138279028, 370.738996867416517);
+ points += QPointF(-286.539948778692178, 372.651089393540587);
+ points += QPointF(-295.760523769485246, 375.070669023642552);
+ points += QPointF(-309.108660665237892, 377.812272271559323);
+ points += QPointF(-323.791841306461833, 380.189287868544909);
+ points += QPointF(-339.746492379944868, 382.263575885265993);
+ points += QPointF(-356.936262185776172, 384.077045039880318);
+ points += QPointF(-375.281527662442841, 385.653208859628023);
+ points += QPointF(-394.678657394273387, 387.006850647147644);
+ points += QPointF(-414.787606696514558, 388.135795504608552);
+ points += QPointF(-435.952026976937020, 389.076617984501581);
+ points += QPointF(-457.785958239726995, 389.818484035948188);
+ points += QPointF(-480.155299343825106, 390.367355935354340);
+ points += QPointF(-502.923072127811622, 390.728524359010180);
+ points += QPointF(-525.950383000425973, 390.906843496429246);
+ points += QPointF(-549.097086395700558, 390.906868034847378);
+ points += QPointF(-572.222272868468281, 390.732932110765603);
+ points += QPointF(-595.184660101380132, 390.389190982770685);
+ points += QPointF(-617.842942744172888, 389.879635420374768);
+ points += QPointF(-640.056148626075128, 389.208081776045162);
+ points += QPointF(-661.684051740050222, 388.378134611085102);
+ points += QPointF(-682.587707903001387, 387.393111203977753);
+ points += QPointF(-702.630213610816895, 386.255904969512756);
+ points += QPointF(-721.913933492959586, 384.952760768153212);
+ points += QPointF(-739.883081019170959, 383.510162372720174);
+ points += QPointF(-756.628370632600195, 381.913999891517676);
+ points += QPointF(-772.055707410166860, 380.156385631636169);
+ points += QPointF(-786.107417616341536, 378.217868080938274);
+ points += QPointF(-798.800506212061464, 376.051179682426266);
+ points += QPointF(-810.181063245406790, 373.562456117723798);
+ points += QPointF(-818.092955780502393, 371.279575916538420);
+ points += QPointF(-823.692975528084730, 369.271805550997954);
+ points += QPointF(-829.575336882823422, 366.626948794191208);
+ points += QPointF(-835.815139714856855, 362.892089667033019);
+ points += QPointF(-941.393414608898865, 276.182237988132670);
+
+ return points;
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+QVector TST_VAbstractPiece::InputPointsIssue923Test2_2()
+{
+ QVector points;
+
+ VSAPoint p = VSAPoint(-814.714960629921279, 331.313196850393751);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(151.181);
+ p.SetAngleType(PieceNodeAngle::ByPointsIntersection);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, -8.844283464566928);
+ p.SetSABefore(0);
+ p.SetSAAfter(37.7953);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, -8.844283464566928);
+ p.SetSABefore(0);
+ p.SetSAAfter(37.7953);
+ points += p;
+
+ p = VSAPoint(-810.914791391285917, -9.118915311803084);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-773.697565712941014, -13.057776517652679);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-731.369396039071717, -19.564193239769612);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-700.813861852517789, -25.693917945236084);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-670.539289284542633, -33.532046871057645);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-649.425406024800168, -40.690709434256448);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-636.497248173983621, -46.041845587202857);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-630.550935626324190, -48.932226964906654);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-612.770937464562508, -58.178811938993192);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-595.504209442756292, -69.042252656202692);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ points += VSAPoint(-590.462992125984215, -72.529322834645669);
+ points += VSAPoint(-590.462992125984215, -72.529322834645669);
+ points += VSAPoint(-231.118006951984967, 95.879158575193841);
+ points += VSAPoint(-231.118006951984967, 95.879158575193841);
+
+ p = VSAPoint(-238.402815433872661, 116.441912166387880);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-251.054901827475362, 155.855307076335350);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-261.519858253217421, 193.398201754121601);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-269.924247729261879, 229.275078971710684);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-276.394633273771547, 263.690421501066567);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-281.057577904909294, 296.848712114153273);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-284.039644640838333, 328.954433582934655);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+
+ p = VSAPoint(-285.555799865587915, 332.073678193884462);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-288.834524762284673, 333.546028373225568);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-292.651017475591800, 334.960499310104979);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-296.986935988437835, 336.317597411974702);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-304.365417624891165, 338.253791617484694);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-315.933705242960059, 340.629827700589658);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-329.249539751899079, 342.785487777791332);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-344.166185015137103, 344.724823108705550);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-360.536904896102669, 346.451884952948035);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-378.214963258224429, 347.970724570134507);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-397.053623964930921, 349.285393219880916);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-416.906150879651022, 350.399942161802983);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-437.625807865813101, 351.318422655516372);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-459.065858786846093, 352.044885960637032);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-481.079567506178364, 352.583383336780628);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-503.520197887238680, 352.937966043563051);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-526.241013793455750, 353.112685340600024);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-549.095279088258053, 353.111592487507210);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-571.936257635074298, 352.938738743900558);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-594.617213297333365, 352.598175369395790);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-616.991409938463448, 352.093953623608741);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-638.912111421893314, 351.430124766155018);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-660.232581611051955, 350.610740056650570);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-680.806084369367682, 349.639850754711119);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-700.485883560269031, 348.521508119952557);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-719.125243047185108, 347.259763411990377);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-736.577426693544112, 345.858667890440699);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-752.695698362774920, 344.322272814919074);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-767.333321918305955, 342.654629445041451);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-780.343561223566212, 340.859789040423379);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-791.579680141983886, 338.941802860680923);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-800.894942536987969, 336.904722165429632);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-806.464504883768996, 335.297692803701807);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-809.543928560675113, 334.193629625334438);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-812.060599029906371, 333.062071651623739);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-813.996174274391478, 331.903525290021662);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, 331.313196850393751);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(151.181);
+ p.SetAngleType(PieceNodeAngle::ByPointsIntersection);
+ points += p;
+
+ return points;
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+QVector TST_VAbstractPiece::OutputPointsIssue923Test2_2()
+{
+ QVector points;
+
+ points += QPointF(-925.469085441364086, 240.352497361179360);
+ points += QPointF(-814.172528355339296, -10.064756082376469);
+ points += QPointF(-797.048974584331063, -48.592752067144829);
+ points += QPointF(-778.560274683193597, -50.549491761193529);
+ points += QPointF(-737.960891197081651, -56.790170478391879);
+ points += QPointF(-709.273784936183347, -62.545071142283753);
+ points += QPointF(-681.358329676571884, -69.772421317304676);
+ points += QPointF(-662.734996979773655, -76.086662659765864);
+ points += QPointF(-652.000013358218780, -80.530014885308333);
+ points += QPointF(-647.534742107878174, -82.700492263504771);
+ points += QPointF(-631.585239468780856, -90.995118061836052);
+ points += QPointF(-616.328020233970847, -100.594267156991847);
+ points += QPointF(-594.096383910663576, -115.972155307751649);
+ points += QPointF(-184.048650148745537, 76.198374399107223);
+ points += QPointF(-202.588712626694274, 128.531217087733864);
+ points += QPointF(-214.844352980142077, 166.709615345349164);
+ points += QPointF(-224.900721916665105, 202.786707734969326);
+ points += QPointF(-232.934347140993879, 237.080856834901624);
+ points += QPointF(-239.089037151700012, 269.817045957384835);
+ points += QPointF(-243.506611386394923, 301.230502874877175);
+ points += QPointF(-246.324245680472586, 331.565901059170528);
+ points += QPointF(-247.367542640672326, 354.406709505752815);
+ points += QPointF(-268.813396242720216, 365.986520876589054);
+ points += QPointF(-274.509592479190928, 368.544465142904016);
+ points += QPointF(-280.430827138279028, 370.738996867416517);
+ points += QPointF(-286.539948778692178, 372.651089393540587);
+ points += QPointF(-295.760523769485246, 375.070669023642552);
+ points += QPointF(-309.108660665237892, 377.812272271559323);
+ points += QPointF(-323.791841306461833, 380.189287868544909);
+ points += QPointF(-339.746492379944868, 382.263575885265993);
+ points += QPointF(-356.936262185776172, 384.077045039880318);
+ points += QPointF(-375.281527662442841, 385.653208859628023);
+ points += QPointF(-394.678657394273387, 387.006850647147644);
+ points += QPointF(-414.787606696514558, 388.135795504608552);
+ points += QPointF(-435.952026976937020, 389.076617984501581);
+ points += QPointF(-457.785958239726995, 389.818484035948188);
+ points += QPointF(-480.155299343825106, 390.367355935354340);
+ points += QPointF(-502.923072127811622, 390.728524359010180);
+ points += QPointF(-525.950383000425973, 390.906843496429246);
+ points += QPointF(-549.097086395700558, 390.906868034847378);
+ points += QPointF(-572.222272868468281, 390.732932110765603);
+ points += QPointF(-595.184660101380132, 390.389190982770685);
+ points += QPointF(-617.842942744172888, 389.879635420374768);
+ points += QPointF(-640.056148626075128, 389.208081776045162);
+ points += QPointF(-661.684051740050222, 388.378134611085102);
+ points += QPointF(-682.587707903001387, 387.393111203977753);
+ points += QPointF(-702.630213610816895, 386.255904969512756);
+ points += QPointF(-721.913933492959586, 384.952760768153212);
+ points += QPointF(-739.883081019170959, 383.510162372720174);
+ points += QPointF(-756.628370632600195, 381.913999891517676);
+ points += QPointF(-772.055707410166860, 380.156385631636169);
+ points += QPointF(-786.107417616341536, 378.217868080938274);
+ points += QPointF(-798.800506212061464, 376.051179682426266);
+ points += QPointF(-810.181063245406790, 373.562456117723798);
+ points += QPointF(-814.714960629921279, 372.254255263452592);
+ points += QPointF(-925.469085441364086, 240.352497361179360);
+
+ return points;
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+QVector TST_VAbstractPiece::InputPointsIssue923Test3_3()
+{
+ QVector points;
+
+ VSAPoint p = VSAPoint(-814.714960629921279, 331.313196850393751);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(151.181);
+ p.SetAngleType(PieceNodeAngle::ByFirstEdgeSymmetry);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, -8.844283464566928);
+ p.SetSABefore(0);
+ p.SetSAAfter(37.7953);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, -8.844283464566928);
+ p.SetSABefore(0);
+ p.SetSAAfter(37.7953);
+ points += p;
+
+ p = VSAPoint(-810.914791391285917, -9.118915311803084);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-773.697565712941014, -13.057776517652679);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-731.369396039071717, -19.564193239769612);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-700.813861852517789, -25.693917945236084);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-670.539289284542633, -33.532046871057645);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-649.425406024800168, -40.690709434256448);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-636.497248173983621, -46.041845587202857);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-630.550935626324190, -48.932226964906654);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-612.770937464562508, -58.178811938993192);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-595.504209442756292, -69.042252656202692);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ points += VSAPoint(-590.462992125984215, -72.529322834645669);
+ points += VSAPoint(-590.462992125984215, -72.529322834645669);
+ points += VSAPoint(-231.118006951984967, 95.879158575193841);
+ points += VSAPoint(-231.118006951984967, 95.879158575193841);
+
+ p = VSAPoint(-238.402815433872661, 116.441912166387880);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-251.054901827475362, 155.855307076335350);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-261.519858253217421, 193.398201754121601);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-269.924247729261879, 229.275078971710684);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-276.394633273771547, 263.690421501066567);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-281.057577904909294, 296.848712114153273);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-284.039644640838333, 328.954433582934655);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+
+ p = VSAPoint(-285.555799865587915, 332.073678193884462);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-288.834524762284673, 333.546028373225568);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-292.651017475591800, 334.960499310104979);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-296.986935988437835, 336.317597411974702);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-304.365417624891165, 338.253791617484694);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-315.933705242960059, 340.629827700589658);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-329.249539751899079, 342.785487777791332);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-344.166185015137103, 344.724823108705550);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-360.536904896102669, 346.451884952948035);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-378.214963258224429, 347.970724570134507);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-397.053623964930921, 349.285393219880916);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-416.906150879651022, 350.399942161802983);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-437.625807865813101, 351.318422655516372);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-459.065858786846093, 352.044885960637032);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-481.079567506178364, 352.583383336780628);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-503.520197887238680, 352.937966043563051);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-526.241013793455750, 353.112685340600024);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-549.095279088258053, 353.111592487507210);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-571.936257635074298, 352.938738743900558);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-594.617213297333365, 352.598175369395790);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-616.991409938463448, 352.093953623608741);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-638.912111421893314, 351.430124766155018);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-660.232581611051955, 350.610740056650570);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-680.806084369367682, 349.639850754711119);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-700.485883560269031, 348.521508119952557);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-719.125243047185108, 347.259763411990377);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-736.577426693544112, 345.858667890440699);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-752.695698362774920, 344.322272814919074);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-767.333321918305955, 342.654629445041451);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-780.343561223566212, 340.859789040423379);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-791.579680141983886, 338.941802860680923);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-800.894942536987969, 336.904722165429632);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-806.464504883768996, 335.297692803701807);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-809.543928560675113, 334.193629625334438);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-812.060599029906371, 333.062071651623739);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-813.996174274391478, 331.903525290021662);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, 331.313196850393751);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(151.181);
+ p.SetAngleType(PieceNodeAngle::ByFirstEdgeSymmetry);
+ points += p;
+
+ return points;
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+QVector TST_VAbstractPiece::OutputPointsIssue923Test3_3()
+{
+ QVector points;
+
+ points += QPointF(-998.323622337918891, 229.426313313416387);
+ points += QPointF(-925.469085441362722, 240.352497361176461);
+ points += QPointF(-814.172528355339296, -10.064756082376469);
+ points += QPointF(-797.048974584331063, -48.592752067144829);
+ points += QPointF(-778.560274683193597, -50.549491761193529);
+ points += QPointF(-737.960891197081651, -56.790170478391879);
+ points += QPointF(-709.273784936183347, -62.545071142283753);
+ points += QPointF(-681.358329676571884, -69.772421317304676);
+ points += QPointF(-662.734996979773655, -76.086662659765864);
+ points += QPointF(-652.000013358218780, -80.530014885308333);
+ points += QPointF(-647.534742107878174, -82.700492263504771);
+ points += QPointF(-631.585239468780856, -90.995118061836052);
+ points += QPointF(-616.328020233970847, -100.594267156991847);
+ points += QPointF(-594.096383910663576, -115.972155307751649);
+ points += QPointF(-184.048650148745537, 76.198374399107223);
+ points += QPointF(-202.588712626694274, 128.531217087733864);
+ points += QPointF(-214.844352980142077, 166.709615345349164);
+ points += QPointF(-224.900721916665105, 202.786707734969326);
+ points += QPointF(-232.934347140993879, 237.080856834901624);
+ points += QPointF(-239.089037151700012, 269.817045957384835);
+ points += QPointF(-243.506611386394923, 301.230502874877175);
+ points += QPointF(-246.324245680472586, 331.565901059170528);
+ points += QPointF(-247.367542640672326, 354.406709505752815);
+ points += QPointF(-268.813396242720216, 365.986520876589054);
+ points += QPointF(-274.509592479190928, 368.544465142904016);
+ points += QPointF(-280.430827138279028, 370.738996867416517);
+ points += QPointF(-286.539948778692178, 372.651089393540587);
+ points += QPointF(-295.760523769485246, 375.070669023642552);
+ points += QPointF(-309.108660665237892, 377.812272271559323);
+ points += QPointF(-323.791841306461833, 380.189287868544909);
+ points += QPointF(-339.746492379944868, 382.263575885265993);
+ points += QPointF(-356.936262185776172, 384.077045039880318);
+ points += QPointF(-375.281527662442841, 385.653208859628023);
+ points += QPointF(-394.678657394273387, 387.006850647147644);
+ points += QPointF(-414.787606696514558, 388.135795504608552);
+ points += QPointF(-435.952026976937020, 389.076617984501581);
+ points += QPointF(-457.785958239726995, 389.818484035948188);
+ points += QPointF(-480.155299343825106, 390.367355935354340);
+ points += QPointF(-502.923072127811622, 390.728524359010180);
+ points += QPointF(-525.950383000425973, 390.906843496429246);
+ points += QPointF(-549.097086395700558, 390.906868034847378);
+ points += QPointF(-572.222272868468281, 390.732932110765603);
+ points += QPointF(-595.184660101380132, 390.389190982770685);
+ points += QPointF(-617.842942744172888, 389.879635420374768);
+ points += QPointF(-640.056148626075128, 389.208081776045162);
+ points += QPointF(-661.684051740050222, 388.378134611085102);
+ points += QPointF(-682.587707903001387, 387.393111203977753);
+ points += QPointF(-702.630213610816895, 386.255904969512756);
+ points += QPointF(-721.913933492959586, 384.952760768153212);
+ points += QPointF(-739.883081019170959, 383.510162372720174);
+ points += QPointF(-756.628370632600195, 381.913999891517676);
+ points += QPointF(-772.055707410166860, 380.156385631636169);
+ points += QPointF(-786.107417616341536, 378.217868080938274);
+ points += QPointF(-798.800506212061464, 376.051179682426266);
+ points += QPointF(-810.181063245406790, 373.562456117723798);
+ points += QPointF(-818.092955780502393, 371.279575916538420);
+ points += QPointF(-823.692975528084730, 369.271805550997954);
+ points += QPointF(-829.575336882823422, 366.626948794191208);
+ points += QPointF(-835.815139714856855, 362.892089667033019);
+ points += QPointF(-998.323622337918891, 229.426313313416387);
+
+ return points;
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+QVector TST_VAbstractPiece::InputPointsIssue923Test4_4()
+{
+ QVector points;
+
+ VSAPoint p = VSAPoint(-814.714960629921279, 331.313196850393751);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(151.181);
+ p.SetAngleType(PieceNodeAngle::BySecondEdgeSymmetry);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, -8.844283464566928);
+ p.SetSABefore(0);
+ p.SetSAAfter(37.7953);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, -8.844283464566928);
+ p.SetSABefore(0);
+ p.SetSAAfter(37.7953);
+ points += p;
+
+ p = VSAPoint(-810.914791391285917, -9.118915311803084);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-773.697565712941014, -13.057776517652679);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-731.369396039071717, -19.564193239769612);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-700.813861852517789, -25.693917945236084);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-670.539289284542633, -33.532046871057645);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-649.425406024800168, -40.690709434256448);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-636.497248173983621, -46.041845587202857);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-630.550935626324190, -48.932226964906654);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-612.770937464562508, -58.178811938993192);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-595.504209442756292, -69.042252656202692);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ points += VSAPoint(-590.462992125984215, -72.529322834645669);
+ points += VSAPoint(-590.462992125984215, -72.529322834645669);
+ points += VSAPoint(-231.118006951984967, 95.879158575193841);
+ points += VSAPoint(-231.118006951984967, 95.879158575193841);
+
+ p = VSAPoint(-238.402815433872661, 116.441912166387880);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-251.054901827475362, 155.855307076335350);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-261.519858253217421, 193.398201754121601);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-269.924247729261879, 229.275078971710684);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-276.394633273771547, 263.690421501066567);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-281.057577904909294, 296.848712114153273);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-284.039644640838333, 328.954433582934655);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+
+ p = VSAPoint(-285.555799865587915, 332.073678193884462);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-288.834524762284673, 333.546028373225568);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-292.651017475591800, 334.960499310104979);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-296.986935988437835, 336.317597411974702);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-304.365417624891165, 338.253791617484694);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-315.933705242960059, 340.629827700589658);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-329.249539751899079, 342.785487777791332);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-344.166185015137103, 344.724823108705550);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-360.536904896102669, 346.451884952948035);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-378.214963258224429, 347.970724570134507);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-397.053623964930921, 349.285393219880916);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-416.906150879651022, 350.399942161802983);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-437.625807865813101, 351.318422655516372);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-459.065858786846093, 352.044885960637032);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-481.079567506178364, 352.583383336780628);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-503.520197887238680, 352.937966043563051);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-526.241013793455750, 353.112685340600024);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-549.095279088258053, 353.111592487507210);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-571.936257635074298, 352.938738743900558);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-594.617213297333365, 352.598175369395790);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-616.991409938463448, 352.093953623608741);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-638.912111421893314, 351.430124766155018);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-660.232581611051955, 350.610740056650570);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-680.806084369367682, 349.639850754711119);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-700.485883560269031, 348.521508119952557);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-719.125243047185108, 347.259763411990377);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-736.577426693544112, 345.858667890440699);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-752.695698362774920, 344.322272814919074);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-767.333321918305955, 342.654629445041451);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-780.343561223566212, 340.859789040423379);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-791.579680141983886, 338.941802860680923);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-800.894942536987969, 336.904722165429632);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-806.464504883768996, 335.297692803701807);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-809.543928560675113, 334.193629625334438);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-812.060599029906371, 333.062071651623739);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-813.996174274391478, 331.903525290021662);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, 331.313196850393751);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(151.181);
+ p.SetAngleType(PieceNodeAngle::BySecondEdgeSymmetry);
+ points += p;
+
+ return points;
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+QVector TST_VAbstractPiece::OutputPointsIssue923Test4_4()
+{
+ QVector points;
+
+ points += QPointF(-814.172528355339296, -10.064756082376469);
+ points += QPointF(-797.048974584331063, -48.592752067144829);
+ points += QPointF(-778.560274683193597, -50.549491761193529);
+ points += QPointF(-737.960891197081651, -56.790170478391879);
+ points += QPointF(-709.273784936183347, -62.545071142283753);
+ points += QPointF(-681.358329676571884, -69.772421317304676);
+ points += QPointF(-662.734996979773655, -76.086662659765864);
+ points += QPointF(-652.000013358218780, -80.530014885308333);
+ points += QPointF(-647.534742107878174, -82.700492263504771);
+ points += QPointF(-631.585239468780856, -90.995118061836052);
+ points += QPointF(-616.328020233970847, -100.594267156991847);
+ points += QPointF(-594.096383910663576, -115.972155307751649);
+ points += QPointF(-184.048650148745537, 76.198374399107223);
+ points += QPointF(-202.588712626694274, 128.531217087733864);
+ points += QPointF(-214.844352980142077, 166.709615345349164);
+ points += QPointF(-224.900721916665105, 202.786707734969326);
+ points += QPointF(-232.934347140993879, 237.080856834901624);
+ points += QPointF(-239.089037151700012, 269.817045957384835);
+ points += QPointF(-243.506611386394923, 301.230502874877175);
+ points += QPointF(-246.324245680472586, 331.565901059170528);
+ points += QPointF(-247.367542640672326, 354.406709505752815);
+ points += QPointF(-268.813396242720216, 365.986520876589054);
+ points += QPointF(-274.509592479190928, 368.544465142904016);
+ points += QPointF(-280.430827138279028, 370.738996867416517);
+ points += QPointF(-286.539948778692178, 372.651089393540587);
+ points += QPointF(-295.760523769485246, 375.070669023642552);
+ points += QPointF(-309.108660665237892, 377.812272271559323);
+ points += QPointF(-323.791841306461833, 380.189287868544909);
+ points += QPointF(-339.746492379944868, 382.263575885265993);
+ points += QPointF(-356.936262185776172, 384.077045039880318);
+ points += QPointF(-375.281527662442841, 385.653208859628023);
+ points += QPointF(-394.678657394273387, 387.006850647147644);
+ points += QPointF(-414.787606696514558, 388.135795504608552);
+ points += QPointF(-435.952026976937020, 389.076617984501581);
+ points += QPointF(-457.785958239726995, 389.818484035948188);
+ points += QPointF(-480.155299343825106, 390.367355935354340);
+ points += QPointF(-502.923072127811622, 390.728524359010180);
+ points += QPointF(-525.950383000425973, 390.906843496429246);
+ points += QPointF(-549.097086395700558, 390.906868034847378);
+ points += QPointF(-572.222272868468281, 390.732932110765603);
+ points += QPointF(-595.184660101380132, 390.389190982770685);
+ points += QPointF(-617.842942744172888, 389.879635420374768);
+ points += QPointF(-640.056148626075128, 389.208081776045162);
+ points += QPointF(-661.684051740050222, 388.378134611085102);
+ points += QPointF(-682.587707903001387, 387.393111203977753);
+ points += QPointF(-702.630213610816895, 386.255904969512756);
+ points += QPointF(-721.913933492959586, 384.952760768153212);
+ points += QPointF(-739.883081019170959, 383.510162372720174);
+ points += QPointF(-756.628370632600195, 381.913999891517676);
+ points += QPointF(-772.055707410166860, 380.156385631636169);
+ points += QPointF(-786.107417616341536, 378.217868080938274);
+ points += QPointF(-798.800506212061464, 376.051179682426266);
+ points += QPointF(-810.181063245406790, 373.562456117723798);
+ points += QPointF(-818.092955780502393, 371.279575916538420);
+ points += QPointF(-823.692975528084730, 369.271805550997954);
+ points += QPointF(-829.575336882823422, 366.626948794191208);
+ points += QPointF(-835.815139714856855, 362.892089667033019);
+ points += QPointF(-949.648673098827885, 294.756569590472964);
+ points += QPointF(-814.172528355339296, -10.064756082376469);
+
+ return points;
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+QVector TST_VAbstractPiece::InputPointsIssue923Test5_5()
+{
+ QVector points;
+
+ VSAPoint p = VSAPoint(-814.714960629921279, 331.313196850393751);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(151.181);
+ p.SetAngleType(PieceNodeAngle::ByFirstEdgeRightAngle);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, -8.844283464566928);
+ p.SetSABefore(0);
+ p.SetSAAfter(37.7953);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, -8.844283464566928);
+ p.SetSABefore(0);
+ p.SetSAAfter(37.7953);
+ points += p;
+
+ p = VSAPoint(-810.914791391285917, -9.118915311803084);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-773.697565712941014, -13.057776517652679);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-731.369396039071717, -19.564193239769612);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-700.813861852517789, -25.693917945236084);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-670.539289284542633, -33.532046871057645);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-649.425406024800168, -40.690709434256448);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-636.497248173983621, -46.041845587202857);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-630.550935626324190, -48.932226964906654);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-612.770937464562508, -58.178811938993192);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-595.504209442756292, -69.042252656202692);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ points += VSAPoint(-590.462992125984215, -72.529322834645669);
+ points += VSAPoint(-590.462992125984215, -72.529322834645669);
+ points += VSAPoint(-231.118006951984967, 95.879158575193841);
+ points += VSAPoint(-231.118006951984967, 95.879158575193841);
+
+ p = VSAPoint(-238.402815433872661, 116.441912166387880);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-251.054901827475362, 155.855307076335350);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-261.519858253217421, 193.398201754121601);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-269.924247729261879, 229.275078971710684);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-276.394633273771547, 263.690421501066567);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-281.057577904909294, 296.848712114153273);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-284.039644640838333, 328.954433582934655);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+
+ p = VSAPoint(-285.555799865587915, 332.073678193884462);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-288.834524762284673, 333.546028373225568);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-292.651017475591800, 334.960499310104979);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-296.986935988437835, 336.317597411974702);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-304.365417624891165, 338.253791617484694);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-315.933705242960059, 340.629827700589658);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-329.249539751899079, 342.785487777791332);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-344.166185015137103, 344.724823108705550);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-360.536904896102669, 346.451884952948035);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-378.214963258224429, 347.970724570134507);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-397.053623964930921, 349.285393219880916);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-416.906150879651022, 350.399942161802983);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-437.625807865813101, 351.318422655516372);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-459.065858786846093, 352.044885960637032);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-481.079567506178364, 352.583383336780628);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-503.520197887238680, 352.937966043563051);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-526.241013793455750, 353.112685340600024);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-549.095279088258053, 353.111592487507210);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-571.936257635074298, 352.938738743900558);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-594.617213297333365, 352.598175369395790);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-616.991409938463448, 352.093953623608741);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-638.912111421893314, 351.430124766155018);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-660.232581611051955, 350.610740056650570);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-680.806084369367682, 349.639850754711119);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-700.485883560269031, 348.521508119952557);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-719.125243047185108, 347.259763411990377);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-736.577426693544112, 345.858667890440699);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-752.695698362774920, 344.322272814919074);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-767.333321918305955, 342.654629445041451);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-780.343561223566212, 340.859789040423379);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-791.579680141983886, 338.941802860680923);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-800.894942536987969, 336.904722165429632);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-806.464504883768996, 335.297692803701807);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-809.543928560675113, 334.193629625334438);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-812.060599029906371, 333.062071651623739);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-813.996174274391478, 331.903525290021662);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, 331.313196850393751);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(151.181);
+ p.SetAngleType(PieceNodeAngle::ByFirstEdgeRightAngle);
+ points += p;
+
+ return points;
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+QVector TST_VAbstractPiece::OutputPointsIssue923Test5_5()
+{
+ QVector points;
+
+ points += QPointF(-949.456732609244455, 269.559956003021910);
+ points += QPointF(-925.469085441364086, 240.352497361179360);
+ points += QPointF(-814.172528355339296, -10.064756082376469);
+ points += QPointF(-797.048974584331063, -48.592752067144829);
+ points += QPointF(-778.560274683193597, -50.549491761193529);
+ points += QPointF(-737.960891197081651, -56.790170478391879);
+ points += QPointF(-709.273784936183347, -62.545071142283753);
+ points += QPointF(-681.358329676571884, -69.772421317304676);
+ points += QPointF(-662.734996979773655, -76.086662659765864);
+ points += QPointF(-652.000013358218780, -80.530014885308333);
+ points += QPointF(-647.534742107878174, -82.700492263504771);
+ points += QPointF(-631.585239468780856, -90.995118061836052);
+ points += QPointF(-616.328020233970847, -100.594267156991847);
+ points += QPointF(-594.096383910663576, -115.972155307751649);
+ points += QPointF(-184.048650148745537, 76.198374399107223);
+ points += QPointF(-202.588712626694274, 128.531217087733864);
+ points += QPointF(-214.844352980142077, 166.709615345349164);
+ points += QPointF(-224.900721916665105, 202.786707734969326);
+ points += QPointF(-232.934347140993879, 237.080856834901624);
+ points += QPointF(-239.089037151700012, 269.817045957384835);
+ points += QPointF(-243.506611386394923, 301.230502874877175);
+ points += QPointF(-246.324245680472586, 331.565901059170528);
+ points += QPointF(-247.367542640672326, 354.406709505752815);
+ points += QPointF(-268.813396242720216, 365.986520876589054);
+ points += QPointF(-274.509592479190928, 368.544465142904016);
+ points += QPointF(-280.430827138279028, 370.738996867416517);
+ points += QPointF(-286.539948778692178, 372.651089393540587);
+ points += QPointF(-295.760523769485246, 375.070669023642552);
+ points += QPointF(-309.108660665237892, 377.812272271559323);
+ points += QPointF(-323.791841306461833, 380.189287868544909);
+ points += QPointF(-339.746492379944868, 382.263575885265993);
+ points += QPointF(-356.936262185776172, 384.077045039880318);
+ points += QPointF(-375.281527662442841, 385.653208859628023);
+ points += QPointF(-394.678657394273387, 387.006850647147644);
+ points += QPointF(-414.787606696514558, 388.135795504608552);
+ points += QPointF(-435.952026976937020, 389.076617984501581);
+ points += QPointF(-457.785958239726995, 389.818484035948188);
+ points += QPointF(-480.155299343825106, 390.367355935354340);
+ points += QPointF(-502.923072127811622, 390.728524359010180);
+ points += QPointF(-525.950383000425973, 390.906843496429246);
+ points += QPointF(-549.097086395700558, 390.906868034847378);
+ points += QPointF(-572.222272868468281, 390.732932110765603);
+ points += QPointF(-595.184660101380132, 390.389190982770685);
+ points += QPointF(-617.842942744172888, 389.879635420374768);
+ points += QPointF(-640.056148626075128, 389.208081776045162);
+ points += QPointF(-661.684051740050222, 388.378134611085102);
+ points += QPointF(-682.587707903001387, 387.393111203977753);
+ points += QPointF(-702.630213610816895, 386.255904969512756);
+ points += QPointF(-721.913933492959586, 384.952760768153212);
+ points += QPointF(-739.883081019170959, 383.510162372720174);
+ points += QPointF(-756.628370632600195, 381.913999891517676);
+ points += QPointF(-772.055707410166860, 380.156385631636169);
+ points += QPointF(-786.107417616341536, 378.217868080938274);
+ points += QPointF(-798.800506212061464, 376.051179682426266);
+ points += QPointF(-810.181063245406790, 373.562456117723798);
+ points += QPointF(-818.092955780502393, 371.279575916538420);
+ points += QPointF(-823.692975528084730, 369.271805550997954);
+ points += QPointF(-829.575336882823422, 366.626948794191208);
+ points += QPointF(-835.815139714856855, 362.892089667033019);
+ points += QPointF(-949.456732609244455, 269.559956003021910);
+
+ return points;
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+QVector TST_VAbstractPiece::InputPointsIssue923Test6_6()
+{
+ QVector points;
+
+ VSAPoint p = VSAPoint(-814.714960629921279, 331.313196850393751);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(151.181);
+ p.SetAngleType(PieceNodeAngle::BySecondEdgeRightAngle);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, -8.844283464566928);
+ p.SetSABefore(0);
+ p.SetSAAfter(37.7953);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, -8.844283464566928);
+ p.SetSABefore(0);
+ p.SetSAAfter(37.7953);
+ points += p;
+
+ p = VSAPoint(-810.914791391285917, -9.118915311803084);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-773.697565712941014, -13.057776517652679);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-731.369396039071717, -19.564193239769612);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-700.813861852517789, -25.693917945236084);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-670.539289284542633, -33.532046871057645);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-649.425406024800168, -40.690709434256448);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-636.497248173983621, -46.041845587202857);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-630.550935626324190, -48.932226964906654);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-612.770937464562508, -58.178811938993192);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-595.504209442756292, -69.042252656202692);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ points += VSAPoint(-590.462992125984215, -72.529322834645669);
+ points += VSAPoint(-590.462992125984215, -72.529322834645669);
+ points += VSAPoint(-231.118006951984967, 95.879158575193841);
+ points += VSAPoint(-231.118006951984967, 95.879158575193841);
+
+ p = VSAPoint(-238.402815433872661, 116.441912166387880);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-251.054901827475362, 155.855307076335350);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-261.519858253217421, 193.398201754121601);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-269.924247729261879, 229.275078971710684);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-276.394633273771547, 263.690421501066567);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-281.057577904909294, 296.848712114153273);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-284.039644640838333, 328.954433582934655);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+ points += VSAPoint(-284.147385597229004, 331.313196850393751);
+
+ p = VSAPoint(-285.555799865587915, 332.073678193884462);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-288.834524762284673, 333.546028373225568);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-292.651017475591800, 334.960499310104979);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-296.986935988437835, 336.317597411974702);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-304.365417624891165, 338.253791617484694);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-315.933705242960059, 340.629827700589658);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-329.249539751899079, 342.785487777791332);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-344.166185015137103, 344.724823108705550);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-360.536904896102669, 346.451884952948035);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-378.214963258224429, 347.970724570134507);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-397.053623964930921, 349.285393219880916);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-416.906150879651022, 350.399942161802983);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-437.625807865813101, 351.318422655516372);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-459.065858786846093, 352.044885960637032);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-481.079567506178364, 352.583383336780628);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-503.520197887238680, 352.937966043563051);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-526.241013793455750, 353.112685340600024);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-549.095279088258053, 353.111592487507210);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-571.936257635074298, 352.938738743900558);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-594.617213297333365, 352.598175369395790);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-616.991409938463448, 352.093953623608741);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-638.912111421893314, 351.430124766155018);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-660.232581611051955, 350.610740056650570);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-680.806084369367682, 349.639850754711119);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-700.485883560269031, 348.521508119952557);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-719.125243047185108, 347.259763411990377);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-736.577426693544112, 345.858667890440699);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-752.695698362774920, 344.322272814919074);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-767.333321918305955, 342.654629445041451);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-780.343561223566212, 340.859789040423379);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-791.579680141983886, 338.941802860680923);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-800.894942536987969, 336.904722165429632);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-806.464504883768996, 335.297692803701807);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-809.543928560675113, 334.193629625334438);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-812.060599029906371, 333.062071651623739);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-813.996174274391478, 331.903525290021662);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(37.7953);
+ p.SetAngleType(PieceNodeAngle::ByLengthCurve);
+ points += p;
+
+ p = VSAPoint(-814.714960629921279, 331.313196850393751);
+ p.SetSABefore(37.7953);
+ p.SetSAAfter(151.181);
+ p.SetAngleType(PieceNodeAngle::BySecondEdgeRightAngle);
+ points += p;
+
+ return points;
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+QVector TST_VAbstractPiece::OutputPointsIssue923Test6_6()
+{
+ QVector points;
+
+ points += QPointF(-814.172528355339296, -10.064756082376469);
+ points += QPointF(-797.048974584331063, -48.592752067144829);
+ points += QPointF(-778.560274683193597, -50.549491761193529);
+ points += QPointF(-737.960891197081651, -56.790170478391879);
+ points += QPointF(-709.273784936183347, -62.545071142283753);
+ points += QPointF(-681.358329676571884, -69.772421317304676);
+ points += QPointF(-662.734996979773655, -76.086662659765864);
+ points += QPointF(-652.000013358218780, -80.530014885308333);
+ points += QPointF(-647.534742107878174, -82.700492263504771);
+ points += QPointF(-631.585239468780856, -90.995118061836052);
+ points += QPointF(-616.328020233970847, -100.594267156991847);
+ points += QPointF(-594.096383910663576, -115.972155307751649);
+ points += QPointF(-184.048650148745537, 76.198374399107223);
+ points += QPointF(-202.588712626694274, 128.531217087733864);
+ points += QPointF(-214.844352980142077, 166.709615345349164);
+ points += QPointF(-224.900721916665105, 202.786707734969326);
+ points += QPointF(-232.934347140993879, 237.080856834901624);
+ points += QPointF(-239.089037151700012, 269.817045957384835);
+ points += QPointF(-243.506611386394923, 301.230502874877175);
+ points += QPointF(-246.324245680472586, 331.565901059170528);
+ points += QPointF(-247.367542640672326, 354.406709505752815);
+ points += QPointF(-268.813396242720216, 365.986520876589054);
+ points += QPointF(-274.509592479190928, 368.544465142904016);
+ points += QPointF(-280.430827138279028, 370.738996867416517);
+ points += QPointF(-286.539948778692178, 372.651089393540587);
+ points += QPointF(-295.760523769485246, 375.070669023642552);
+ points += QPointF(-309.108660665237892, 377.812272271559323);
+ points += QPointF(-323.791841306461833, 380.189287868544909);
+ points += QPointF(-339.746492379944868, 382.263575885265993);
+ points += QPointF(-356.936262185776172, 384.077045039880318);
+ points += QPointF(-375.281527662442841, 385.653208859628023);
+ points += QPointF(-394.678657394273387, 387.006850647147644);
+ points += QPointF(-414.787606696514558, 388.135795504608552);
+ points += QPointF(-435.952026976937020, 389.076617984501581);
+ points += QPointF(-457.785958239726995, 389.818484035948188);
+ points += QPointF(-480.155299343825106, 390.367355935354340);
+ points += QPointF(-502.923072127811622, 390.728524359010180);
+ points += QPointF(-525.950383000425973, 390.906843496429246);
+ points += QPointF(-549.097086395700558, 390.906868034847378);
+ points += QPointF(-572.222272868468281, 390.732932110765603);
+ points += QPointF(-595.184660101380132, 390.389190982770685);
+ points += QPointF(-617.842942744172888, 389.879635420374768);
+ points += QPointF(-640.056148626075128, 389.208081776045162);
+ points += QPointF(-661.684051740050222, 388.378134611085102);
+ points += QPointF(-682.587707903001387, 387.393111203977753);
+ points += QPointF(-702.630213610816895, 386.255904969512756);
+ points += QPointF(-721.913933492959586, 384.952760768153212);
+ points += QPointF(-739.883081019170959, 383.510162372720174);
+ points += QPointF(-756.628370632600195, 381.913999891517676);
+ points += QPointF(-772.055707410166860, 380.156385631636169);
+ points += QPointF(-786.107417616341536, 378.217868080938274);
+ points += QPointF(-798.800506212061464, 376.051179682426266);
+ points += QPointF(-810.181063245406790, 373.562456117723798);
+ points += QPointF(-814.714960629921279, 372.254255263452592);
+ points += QPointF(-965.896062992125962, 372.254255263452592);
+ points += QPointF(-814.172528355339296, -10.064756082376469);
+
+ return points;
+}
diff --git a/src/test/ValentinaTest/tst_vabstractpiece.h b/src/test/ValentinaTest/tst_vabstractpiece.h
index 16c7a5531..163643aa3 100644
--- a/src/test/ValentinaTest/tst_vabstractpiece.h
+++ b/src/test/ValentinaTest/tst_vabstractpiece.h
@@ -125,6 +125,42 @@ private:
QVector InputPointsIssue646() const;
QVector OutputPointsIssue646() const;
+
+ QVector InputPointsIssue923Test1();
+ QVector OutputPointsIssue923Test1();
+
+ QVector InputPointsIssue923Test2();
+ QVector OutputPointsIssue923Test2();
+
+ QVector InputPointsIssue923Test3();
+ QVector OutputPointsIssue923Test3();
+
+ QVector InputPointsIssue923Test4();
+ QVector OutputPointsIssue923Test4();
+
+ QVector InputPointsIssue923Test5();
+ QVector OutputPointsIssue923Test5();
+
+ QVector InputPointsIssue923Test6();
+ QVector OutputPointsIssue923Test6();
+
+ QVector InputPointsIssue923Test1_1();
+ QVector OutputPointsIssue923Test1_1();
+
+ QVector InputPointsIssue923Test2_2();
+ QVector OutputPointsIssue923Test2_2();
+
+ QVector InputPointsIssue923Test3_3();
+ QVector OutputPointsIssue923Test3_3();
+
+ QVector InputPointsIssue923Test4_4();
+ QVector OutputPointsIssue923Test4_4();
+
+ QVector InputPointsIssue923Test5_5();
+ QVector OutputPointsIssue923Test5_5();
+
+ QVector InputPointsIssue923Test6_6();
+ QVector OutputPointsIssue923Test6_6();
};
#endif // TST_VABSTRACTPIECE_H