Improve testing paths.

This commit is contained in:
Roman Telezhynskyi 2022-11-11 17:57:34 +02:00
parent 3379fca082
commit 5a3669e42b
10 changed files with 231 additions and 56 deletions

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<pattern> <pattern>
<!--Pattern created with Valentina v0.6.2.0 (https://valentinaproject.bitbucket.io/).--> <!--Pattern created with Valentina v0.7.52.0 (https://smart-pattern.com.ua/).-->
<version>0.7.12</version> <version>0.9.2</version>
<unit>cm</unit> <unit>cm</unit>
<description>Men's Trousers circa 1830-1870</description> <description>Men's Trousers circa 1830-1870</description>
<notes/> <notes/>
@ -15,7 +15,7 @@
<line alignment="0" bold="false" italic="false" sfIncrement="0" text="%mFileName%.%mExt%"/> <line alignment="0" bold="false" italic="false" sfIncrement="0" text="%mFileName%.%mExt%"/>
<line alignment="0" bold="false" italic="true" sfIncrement="0" text="%date%"/> <line alignment="0" bold="false" italic="true" sfIncrement="0" text="%date%"/>
</patternLabel> </patternLabel>
<measurements>marie_issue_#548.vit</measurements> <measurements path="marie_issue_#548.vit"/>
<increments> <increments>
<increment description="Original pattern outseam is 112. &#10;Use CM_HEIGHT for height formulas&#10;" formula="leg_waist_side_to_floor/112" name="#CM_HEIGHT"/> <increment description="Original pattern outseam is 112. &#10;Use CM_HEIGHT for height formulas&#10;" formula="leg_waist_side_to_floor/112" name="#CM_HEIGHT"/>
<increment description="Original pattern's hip circumference is 102.&#10;Use CM_WIDTH for circumference, arc, or width formulas." formula="hip_circ/102" name="#CM_WIDTH"/> <increment description="Original pattern's hip circumference is 102.&#10;Use CM_WIDTH for circumference, arc, or width formulas." formula="hip_circ/102" name="#CM_WIDTH"/>
@ -207,21 +207,21 @@
<point id="201" idObject="95" inUse="false" mx="0.987301" my="-2.53475" type="modeling"/> <point id="201" idObject="95" inUse="false" mx="0.987301" my="-2.53475" type="modeling"/>
<point id="202" idObject="81" inUse="false" mx="0.655497" my="-0.983501" type="modeling"/> <point id="202" idObject="81" inUse="false" mx="0.655497" my="-0.983501" type="modeling"/>
<point id="212" idObject="3" inUse="false" mx="-1.64399" my="-1.11279" type="modeling"/> <point id="212" idObject="3" inUse="false" mx="-1.64399" my="-1.11279" type="modeling"/>
<point id="214" idObject="80" inUse="true" mx="-1.57043" my="-1.46574" showLabel="true" type="modeling"/> <point id="214" idObject="80" inUse="false" mx="-1.57043" my="-1.46574" showLabel="true" type="modeling"/>
<point id="215" idObject="94" inUse="true" mx="-0.954275" my="-0.880717" showLabel="true" type="modeling"/> <point id="215" idObject="94" inUse="false" mx="-0.954275" my="-0.880717" showLabel="true" type="modeling"/>
<point id="216" idObject="90" inUse="true" mx="-0.675292" my="0.147116" showLabel="true" type="modeling"/> <point id="216" idObject="90" inUse="false" mx="-0.675292" my="0.147116" showLabel="true" type="modeling"/>
<point id="217" idObject="95" inUse="true" mx="0.279125" my="-0.543001" showLabel="true" type="modeling"/> <point id="217" idObject="95" inUse="false" mx="0.279125" my="-0.543001" showLabel="true" type="modeling"/>
<point id="218" idObject="81" inUse="true" mx="0.655497" my="-0.983501" showLabel="true" type="modeling"/> <point id="218" idObject="81" inUse="false" mx="0.655497" my="-0.983501" showLabel="true" type="modeling"/>
<point id="219" idObject="3" inUse="true" mx="-1.64399" my="-1.11279" showLabel="true" type="modeling"/> <point id="219" idObject="3" inUse="false" mx="-1.64399" my="-1.11279" showLabel="true" type="modeling"/>
<point id="221" idObject="80" inUse="true" mx="-1.57043" my="-1.46574" showLabel="true" type="modeling"/> <point id="221" idObject="80" inUse="false" mx="-1.57043" my="-1.46574" showLabel="true" type="modeling"/>
<point id="222" idObject="94" inUse="true" mx="-0.954275" my="-0.880717" showLabel="true" type="modeling"/> <point id="222" idObject="94" inUse="false" mx="-0.954275" my="-0.880717" showLabel="true" type="modeling"/>
<point id="223" idObject="90" inUse="true" mx="-0.675292" my="0.147116" showLabel="true" type="modeling"/> <point id="223" idObject="90" inUse="false" mx="-0.675292" my="0.147116" showLabel="true" type="modeling"/>
<point id="224" idObject="95" inUse="true" mx="0.279125" my="-0.543001" showLabel="true" type="modeling"/> <point id="224" idObject="95" inUse="false" mx="0.279125" my="-0.543001" showLabel="true" type="modeling"/>
<point id="225" idObject="81" inUse="true" mx="0.655497" my="-0.983501" showLabel="true" type="modeling"/> <point id="225" idObject="81" inUse="false" mx="0.655497" my="-0.983501" showLabel="true" type="modeling"/>
<point id="226" idObject="3" inUse="true" mx="-1.64399" my="-1.11279" showLabel="true" type="modeling"/> <point id="226" idObject="3" inUse="false" mx="-1.64399" my="-1.11279" showLabel="true" type="modeling"/>
</modeling> </modeling>
<details> <details>
<detail closed="1" forbidFlipping="true" forceFlipping="false" hideMainPath="false" id="213" inLayout="true" mx="0" my="0" name="Back" seamAllowance="true" united="false" version="2" width="0.3"> <detail closed="1" forbidFlipping="true" forceFlipping="false" hideMainPath="false" id="213" mx="0" my="0" name="Back case 1" seamAllowance="true" sewLineOnDrawing="false" uuid="{b9876b4f-4064-4583-8d9e-510d3be19f51}" version="2" width="0.3">
<data annotation="" foldPosition="" fontSize="102" height="3.66776" letter="" mx="-20.0743" my="468.066" onFold="false" orientation="" quantity="1" rotation="0" rotationWay="" tilt="" visible="false" width="7.55684"> <data annotation="" foldPosition="" fontSize="102" height="3.66776" letter="" mx="-20.0743" my="468.066" onFold="false" orientation="" quantity="1" rotation="0" rotationWay="" tilt="" visible="false" width="7.55684">
<line alignment="4" bold="true" italic="false" sfIncrement="2" text="%pName%"/> <line alignment="4" bold="true" italic="false" sfIncrement="2" text="%pName%"/>
</data> </data>
@ -236,7 +236,7 @@
<node idObject="212" type="NodePoint"/> <node idObject="212" type="NodePoint"/>
</nodes> </nodes>
</detail> </detail>
<detail forbidFlipping="true" forceFlipping="false" hideMainPath="false" id="220" inLayout="true" mx="21.7242" my="0.323277" name="Back" seamAllowance="true" united="false" version="2" width="1"> <detail forbidFlipping="true" forceFlipping="false" hideMainPath="false" id="220" mx="21.7242" my="0.323277" name="Back case 2" seamAllowance="true" sewLineOnDrawing="false" uuid="{55c8aff5-3bdc-4885-aeaf-b402f122e8b3}" version="2" width="1">
<data annotation="" foldPosition="" fontSize="102" height="3.66776" letter="" mx="-20.0743" my="468.066" onFold="false" orientation="" quantity="1" rotation="0" rotationWay="" tilt="" visible="false" width="7.55684"> <data annotation="" foldPosition="" fontSize="102" height="3.66776" letter="" mx="-20.0743" my="468.066" onFold="false" orientation="" quantity="1" rotation="0" rotationWay="" tilt="" visible="false" width="7.55684">
<line alignment="4" bold="true" italic="false" sfIncrement="2" text="%pName%"/> <line alignment="4" bold="true" italic="false" sfIncrement="2" text="%pName%"/>
</data> </data>
@ -251,7 +251,7 @@
<node idObject="219" type="NodePoint"/> <node idObject="219" type="NodePoint"/>
</nodes> </nodes>
</detail> </detail>
<detail forbidFlipping="true" forceFlipping="false" hideMainPath="false" id="227" inLayout="true" mx="7.69399" my="15.0001" name="Back" seamAllowance="true" united="false" version="2" width="2"> <detail forbidFlipping="true" forceFlipping="false" hideMainPath="false" id="227" mx="7.69399" my="15.0001" name="Back case 3" seamAllowance="true" sewLineOnDrawing="false" uuid="{29977cac-1198-46e5-b723-72b060c9ce35}" version="2" width="2">
<data annotation="" foldPosition="" fontSize="102" height="3.66776" letter="" mx="-20.0743" my="468.066" onFold="false" orientation="" quantity="1" rotation="0" rotationWay="" tilt="" visible="false" width="7.55684"> <data annotation="" foldPosition="" fontSize="102" height="3.66776" letter="" mx="-20.0743" my="468.066" onFold="false" orientation="" quantity="1" rotation="0" rotationWay="" tilt="" visible="false" width="7.55684">
<line alignment="4" bold="true" italic="false" sfIncrement="2" text="%pName%"/> <line alignment="4" bold="true" italic="false" sfIncrement="2" text="%pName%"/>
</data> </data>

View File

@ -565,13 +565,13 @@ auto VGObject::IsPointOnLineSegment(const QPointF &t, const QPointF &p1, const Q
// Here we deal with more like cigar shape. // Here we deal with more like cigar shape.
// Front and rear easy to check // Front and rear easy to check
if (VFuzzyComparePoints(p1, t) || VFuzzyComparePoints(p2, t)) if (VFuzzyComparePoints(p1, t, accuracy) || VFuzzyComparePoints(p2, t, accuracy))
{ {
return true; return true;
} }
// Check if we have a segment. On previous step we already confirmed that we don't have intersection // Check if we have a segment. On previous step we already confirmed that we don't have intersection
if (VFuzzyComparePoints(p1, p2)) if (VFuzzyComparePoints(p1, p2, accuracy))
{ {
return false; return false;
} }

View File

@ -59,6 +59,42 @@
#include "../vpatterndb/vpiecenode.h" #include "../vpatterndb/vpiecenode.h"
#include "../vpatterndb/vpassmark.h" #include "../vpatterndb/vpassmark.h"
namespace
{
auto FillPath(const QVector<QPointF> &path, qreal accuracy) -> QVector<QPointF>
{
QVector<QPointF> pathFilled;
pathFilled.reserve(path.size());
for (int i=0; i < path.size()-1; ++i)
{
pathFilled.append(path.at(i));
QLineF line(path.at(i), path.at(i+1));
if (line.length() > accuracy)
{
qreal len = accuracy;
do
{
QLineF l = line;
l.setLength(len);
pathFilled.append(l.p2());
len += accuracy;
}
while(line.length() > len);
}
else
{
int a = 1;
}
}
pathFilled.append(ConstLast(path));
return pathFilled;
}
} // namespace
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
AbstractTest::AbstractTest(QObject *parent) : AbstractTest::AbstractTest(QObject *parent) :
QObject(parent) QObject(parent)
@ -212,6 +248,38 @@ void AbstractTest::PassmarkShapeFromJson(const QString &json, QVector<QLineF> &s
} }
} }
//---------------------------------------------------------------------------------------------------------------------
void AbstractTest::ComparePaths(const QVector<QPointF> &actual, const QVector<QPointF> &expected)
{
QVERIFY2(actual.size() >= 2, "Not enough points");
QVERIFY2(expected.size() >= 2, "Not enough points");
const qreal accuracy = accuracyPointOnLine*2;
QVector<QPointF> actualFilled = FillPath(actual, accuracy);
bool onLine = false;
QSet<int> usedEdges;
for (auto p : actualFilled)
{
for(int i = 0; i < expected.size()-1; ++i)
{
if (VGObject::IsPointOnLineSegment(p, expected.at(i), expected.at(i+1)))
{
usedEdges.insert(i+1);
onLine = true;
}
}
if (not onLine)
{
QFAIL("Paths are not the same. Point is not on edge.");
}
onLine = false;
}
QVERIFY2(expected.size() - 1 == usedEdges.size(), "Paths are not the same. Not all edges were used.");
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void AbstractTest::ComparePathsDistance(const QVector<QPointF> &ekv, const QVector<QPointF> &ekvOrig) const void AbstractTest::ComparePathsDistance(const QVector<QPointF> &ekv, const QVector<QPointF> &ekvOrig) const
{ {

View File

@ -86,6 +86,7 @@ public:
void PassmarkShapeFromJson(const QString &json, QVector<QLineF> &shape); void PassmarkShapeFromJson(const QString &json, QVector<QLineF> &shape);
protected: protected:
static void ComparePaths(const QVector<QPointF> &actual, const QVector<QPointF> &expected);
void ComparePathsDistance(const QVector<QPointF> &ekv, const QVector<QPointF> &ekvOrig) const; void ComparePathsDistance(const QVector<QPointF> &ekv, const QVector<QPointF> &ekvOrig) const;
void ComparePointsDistance(const QPointF &result, const QPointF &expected, qreal testAccuracy) const; void ComparePointsDistance(const QPointF &result, const QPointF &expected, qreal testAccuracy) const;
void CompareLinesDistance(const QVector<QLineF> &result, const QVector<QLineF> &expected) const; void CompareLinesDistance(const QVector<QLineF> &result, const QVector<QLineF> &expected) const;

View File

@ -112,8 +112,18 @@
}, },
{ {
"type": "QPointF", "type": "QPointF",
"x": -69.2871712942862, "x": -71.33016037970899,
"y": 156.06512913942984 "y": 144.14769280779646
},
{
"type": "QPointF",
"x": 234.13513056084665,
"y": 91.78221436084601
},
{
"type": "QPointF",
"x": 234.13513056084665,
"y": 91.7822143608459
}, },
{ {
"type": "QPointF", "type": "QPointF",

View File

@ -1,489 +1,583 @@
{ {
"vector": [ "vector": [
{ {
"turnPoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 247.3228346456693, "x": 247.3228346456693,
"y": 1797.4790551181104 "y": 1797.4790551181104
}, },
{ {
"turnPoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 294.56692913385825, "x": 294.56692913385825,
"y": 1526.744484718234 "y": 1526.744484718234
}, },
{ {
"curvePoint": true,
"turnPoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 294.56692913385825, "x": 294.56692913385825,
"y": 1526.744484718234 "y": 1526.744484718234
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 297.78826667615306, "x": 297.78826667615306,
"y": 1526.2556756427075 "y": 1526.2556756427075
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 318.5060975402612, "x": 318.5060975402612,
"y": 1521.9403017050831 "y": 1521.9403017050831
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 338.4399491985108, "x": 338.4399491985108,
"y": 1516.5913193530896 "y": 1516.5913193530896
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 357.5961791656124, "x": 357.5961791656124,
"y": 1510.2268226147403 "y": 1510.2268226147403
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 375.98114495627635, "x": 375.98114495627635,
"y": 1502.86490551805 "y": 1502.86490551805
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 393.6012040852129, "x": 393.6012040852129,
"y": 1494.5236620910327 "y": 1494.5236620910327
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 410.4627140671324, "x": 410.4627140671324,
"y": 1485.221186361704 "y": 1485.221186361704
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 426.5720324167454, "x": 426.5720324167454,
"y": 1474.975572358077 "y": 1474.975572358077
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 441.9355166487622, "x": 441.9355166487622,
"y": 1463.804914108167 "y": 1463.804914108167
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 456.5595242778931, "x": 456.5595242778931,
"y": 1451.7273056399881 "y": 1451.7273056399881
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 470.4504128188486, "x": 470.4504128188486,
"y": 1438.7608409815548 "y": 1438.7608409815548
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 483.6145397863388, "x": 483.6145397863388,
"y": 1424.9236141608817 "y": 1424.9236141608817
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 496.05826269507435, "x": 496.05826269507435,
"y": 1410.2337192059833 "y": 1410.2337192059833
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 507.78793905976556, "x": 507.78793905976556,
"y": 1394.7092501448735 "y": 1394.7092501448735
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 518.8099263951228, "x": 518.8099263951228,
"y": 1378.3683010055674 "y": 1378.3683010055674
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 529.1305822158562, "x": 529.1305822158562,
"y": 1361.2289658160792 "y": 1361.2289658160792
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 538.7562640366766, "x": 538.7562640366766,
"y": 1343.309338604423 "y": 1343.309338604423
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 547.6933293722939, "x": 547.6933293722939,
"y": 1324.6275133986137 "y": 1324.6275133986137
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 555.9481357374189, "x": 555.9481357374189,
"y": 1305.2015842266655 "y": 1305.2015842266655
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 563.5270406467614, "x": 563.5270406467614,
"y": 1285.0496451165927 "y": 1285.0496451165927
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 570.4364016150325, "x": 570.4364016150325,
"y": 1264.1897900964104 "y": 1264.1897900964104
}, },
{ {
"curvePoint": true,
"turnPoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 574.1606905548133, "x": 574.1606905548133,
"y": 1251.340769819358 "y": 1251.340769819358
}, },
{ {
"turnPoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 574.1606905548133, "x": 574.1606905548133,
"y": 1251.340769819358 "y": 1251.340769819358
}, },
{ {
"turnPoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1043.6462437609543, "x": 1043.6462437609543,
"y": 1420.9221966584219 "y": 1420.9221966584219
}, },
{ {
"curvePoint": true,
"turnPoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1043.6462437609543, "x": 1043.6462437609543,
"y": 1420.9221966584219 "y": 1420.9221966584219
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1035.2312855037069, "x": 1035.2312855037069,
"y": 1459.225877577704 "y": 1459.225877577704
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1027.0331905074174, "x": 1027.0331905074174,
"y": 1504.129744460739 "y": 1504.129744460739
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1020.7375941575093, "x": 1020.7375941575093,
"y": 1547.6425282999794 "y": 1547.6425282999794
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1016.2716040932994, "x": 1016.2716040932994,
"y": 1589.777525721534 "y": 1589.777525721534
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1013.5623279541039, "x": 1013.5623279541039,
"y": 1630.5480333515106 "y": 1630.5480333515106
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1012.5368733792393, "x": 1012.5368733792393,
"y": 1669.9673478160166 "y": 1669.9673478160166
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1013.1223480080217, "x": 1013.1223480080217,
"y": 1708.0487657411604 "y": 1708.0487657411604
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1015.2458594797675, "x": 1015.2458594797675,
"y": 1744.80558375305 "y": 1744.80558375305
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1018.8345154337933, "x": 1018.8345154337933,
"y": 1780.2510984777941 "y": 1780.2510984777941
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1023.815423509415, "x": 1023.815423509415,
"y": 1814.3986065414997 "y": 1814.3986065414997
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1030.1156913459495, "x": 1030.1156913459495,
"y": 1847.2614045702749 "y": 1847.2614045702749
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1037.6624265827127, "x": 1037.6624265827127,
"y": 1878.8527891902281 "y": 1878.8527891902281
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1046.382736859021, "x": 1046.382736859021,
"y": 1909.1860570274675 "y": 1909.1860570274675
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1056.2037298141906, "x": 1056.2037298141906,
"y": 1938.2745047081007 "y": 1938.2745047081007
}, },
{ {
"curvePoint": true,
"turnPoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1060.8693996697996, "x": 1060.78342188316,
"y": 1950.5615890831032 "y": 1950.3388175409807
}, },
{ {
"turnPoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1060.8693996697996, "x": 1060.78342188316,
"y": 1950.5615890831032 "y": 1950.3388175409807
}, },
{ {
"curvePoint": true,
"turnPoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1060.8693996697996, "x": 1060.78342188316,
"y": 1950.5615890831032 "y": 1950.3388175409807
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1067.0525130875385, "x": 1067.0525130875385,
"y": 1966.131428858236 "y": 1966.131428858236
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1078.8561943183804, "x": 1078.8561943183804,
"y": 1992.7701261039808 "y": 1992.7701261039808
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1091.5418811460327, "x": 1091.5418811460327,
"y": 2018.2038930714439 "y": 2018.2038930714439
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1105.0366812098123, "x": 1105.0366812098123,
"y": 2042.4460263867327 "y": 2042.4460263867327
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1119.267702149035, "x": 1119.267702149035,
"y": 2065.5098226759555 "y": 2065.5098226759555
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1134.1620516030175, "x": 1134.1620516030175,
"y": 2087.4085785652205 "y": 2087.4085785652205
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1149.6468372110758, "x": 1149.6468372110758,
"y": 2108.155590680636 "y": 2108.155590680636
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1165.6491666125266, "x": 1165.6491666125266,
"y": 2127.7641556483086 "y": 2127.7641556483086
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1182.0961474466858, "x": 1182.0961474466858,
"y": 2146.247570094348 "y": 2146.247570094348
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1198.9148873528698, "x": 1198.9148873528698,
"y": 2163.619130644861 "y": 2163.619130644861
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1216.0324939703955, "x": 1216.0324939703955,
"y": 2179.892133925956 "y": 2179.892133925956
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1233.3760749385788, "x": 1233.3760749385788,
"y": 2195.0798765637414 "y": 2195.0798765637414
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1250.872737896736, "x": 1250.872737896736,
"y": 2209.195655184325 "y": 2209.195655184325
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1268.4495904841838, "x": 1268.4495904841838,
"y": 2222.2527664138142 "y": 2222.2527664138142
}, },
{ {
"curvePoint": true,
"turnPoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1277.244094488189, "x": 1277.244094488189,
"y": 2228.3451968503937 "y": 2228.3451968503937
}, },
{ {
"turnPoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1277.244094488189, "x": 1277.244094488189,
"y": 2228.3451968503937 "y": 2228.3451968503937
}, },
{ {
"curvePoint": true,
"turnPoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1277.244094488189, "x": 1277.244094488189,
"y": 2228.3451968503937 "y": 2228.3451968503937
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1271.9588830384628, "x": 1271.9588830384628,
"y": 2262.447990091445 "y": 2262.447990091445
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1261.101448249924, "x": 1261.101448249924,
"y": 2345.9028330125902 "y": 2345.9028330125902
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1250.4163709563645, "x": 1250.4163709563645,
"y": 2443.039988555569 "y": 2443.039988555569
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1240.4778420043203, "x": 1240.4778420043203,
"y": 2548.729684381468 "y": 2548.729684381468
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1231.860052240328, "x": 1231.860052240328,
"y": 2657.842148151375 "y": 2657.842148151375
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1225.1371925109243, "x": 1225.1371925109243,
"y": 2765.2476075263785 "y": 2765.2476075263785
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1220.8834536626455, "x": 1220.8834536626455,
"y": 2865.816290167567 "y": 2865.816290167567
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1219.767482875249, "x": 1219.767482875249,
"y": 2933.1761050465484 "y": 2933.1761050465484
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1220.030758030581, "x": 1220.030758030581,
"y": 2973.52370224905 "y": 2973.52370224905
}, },
{ {
"curvePoint": true,
"turnPoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1220.551181102362, "x": 1220.551181102362,
"y": 2991.8097637795277 "y": 2991.8097637795277
}, },
{ {
"turnPoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1220.551181102362, "x": 1220.551181102362,
"y": 2991.8097637795277 "y": 2991.8097637795277
}, },
{ {
"curvePoint": true,
"turnPoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1220.551181102362, "x": 1220.551181102362,
"y": 2991.8097637795277 "y": 2991.8097637795277
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1222.491963893705, "x": 1222.491963893705,
"y": 3041.378156244142 "y": 3041.378156244142
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1228.9297849855586, "x": 1228.9297849855586,
"y": 3149.325295405348 "y": 3149.325295405348
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1242.2166449681567, "x": 1242.2166449681567,
"y": 3324.7922499621873 "y": 3324.7922499621873
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1257.0381248037838, "x": 1257.0381248037838,
"y": 3509.2002740192374 "y": 3509.2002740192374
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1265.9313376604825, "x": 1265.9313376604825,
"y": 3631.4531243807824 "y": 3631.4531243807824
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1272.8825040106944, "x": 1272.8825040106944,
"y": 3749.9949053775285 "y": 3749.9949053775285
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1276.089799507623, "x": 1276.089799507623,
"y": 3834.436912931008 "y": 3834.436912931008
}, },
{ {
"angle": 6, "angle": 6,
"curvePoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1277.1503873849765, "x": 1277.1503873849765,
"y": 3888.191689968952 "y": 3888.191689968952
}, },
{ {
"curvePoint": true,
"saAfter": 90.70866141732284, "saAfter": 90.70866141732284,
"turnPoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1277.244094488189, "x": 1277.244094488189,
"y": 3914.0144881889764 "y": 3914.0144881889764
}, },
{ {
"saAfter": 90.70866141732284, "saAfter": 90.70866141732284,
"turnPoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 1277.244094488189, "x": 1277.244094488189,
"y": 3914.0144881889764 "y": 3914.0144881889764
@ -491,12 +585,14 @@
{ {
"saAfter": 0, "saAfter": 0,
"saBefore": 90.70866141732284, "saBefore": 90.70866141732284,
"turnPoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 218.9763779527559, "x": 218.9763779527559,
"y": 3914.0144881889764 "y": 3914.0144881889764
}, },
{ {
"saBefore": 0, "saBefore": 0,
"turnPoint": true,
"type": "VSAPoint", "type": "VSAPoint",
"x": 218.9763779527559, "x": 218.9763779527559,
"y": 1797.4790551181104 "y": 1797.4790551181104

View File

@ -67,23 +67,23 @@
}, },
{ {
"type": "QPointF", "type": "QPointF",
"x": 469.54733984197816, "x": 469.7108255124939,
"y": 1412.2930283139299 "y": 1412.1211833970249
}, },
{ {
"type": "QPointF", "type": "QPointF",
"x": 481.41282344527315, "x": 481.5023818549732,
"y": 1398.2857485794134 "y": 1398.889071550954
}, },
{ {
"type": "QPointF", "type": "QPointF",
"x": 492.5547151481526, "x": 491.68673124443325,
"y": 1383.8143086488699 "y": 1383.8140348486497
}, },
{ {
"type": "QPointF", "type": "QPointF",
"x": 502.7806762003831, "x": 503.00597472305526,
"y": 1368.354315381568 "y": 1367.980166009198
}, },
{ {
"type": "QPointF", "type": "QPointF",
@ -302,8 +302,8 @@
}, },
{ {
"type": "QPointF", "type": "QPointF",
"x": 1239.7744748167386, "x": 1239.7642099434847,
"y": 2866.372200302109 "y": 2866.614886752182
}, },
{ {
"type": "QPointF", "type": "QPointF",
@ -312,8 +312,8 @@
}, },
{ {
"type": "QPointF", "type": "QPointF",
"x": 1238.9261603693603, "x": 1238.9279935276843,
"y": 2973.119458224285 "y": 2973.4003944697574
}, },
{ {
"type": "QPointF", "type": "QPointF",
@ -362,12 +362,12 @@
}, },
{ {
"type": "QPointF", "type": "QPointF",
"x": 218.40944881889754, "x": 218.09480314960638,
"y": 4004.723149606299 "y": 4004.723149606299
}, },
{ {
"type": "QPointF", "type": "QPointF",
"x": 218.40944881889763, "x": 218.0948031496063,
"y": 1778.581417322835 "y": 1778.581417322835
}, },
{ {

View File

@ -314,7 +314,7 @@ void TST_VAbstractPiece::EquidistantRemoveLoop() const
CastTo(VAbstractPiece::Equidistant(points, width, QString()), ekv); CastTo(VAbstractPiece::Equidistant(points, width, QString()), ekv);
// Begin comparison // Begin comparison
ComparePathsDistance(ekv, ekvOrig); ComparePaths(ekv, ekvOrig);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -331,7 +331,7 @@ void TST_VAbstractPiece::LayoutAllowanceRemoveLoop_data()
QTest::newRow(title) << inputPoints << width << outputPoints; QTest::newRow(title) << inputPoints << width << outputPoints;
}; };
// See file src/app/share/collection/test/smart_pattern_#58.val (private collection) // See file valentina_private_collection/bugs/smart_pattern_#58/smart_pattern_#58.val
ASSERT_TEST_CASE("Loop in layout allowance", ASSERT_TEST_CASE("Loop in layout allowance",
QStringLiteral("://smart_pattern_#58/input.json"), QStringLiteral("://smart_pattern_#58/input.json"),
QStringLiteral("://smart_pattern_#58/output.json"), QStringLiteral("://smart_pattern_#58/output.json"),
@ -367,7 +367,7 @@ void TST_VAbstractPiece::LayoutAllowanceRemoveLoop() const
CastTo(VAbstractPiece::Equidistant(points, width, QString()), ekv); CastTo(VAbstractPiece::Equidistant(points, width, QString()), ekv);
// Begin comparison // Begin comparison
ComparePathsDistance(ekv, ekvOrig); ComparePaths(ekv, ekvOrig);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -459,7 +459,7 @@ void TST_VAbstractPiece::RawPathRemoveLoop() const
QVector<QPointF> res; QVector<QPointF> res;
CastTo(VAbstractPiece::CheckLoops(path), res); CastTo(VAbstractPiece::CheckLoops(path), res);
ComparePathsDistance(res, expect); ComparePaths(res, expect);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -732,7 +732,7 @@ void TST_VAbstractPiece::PathRemoveLoop() const
QFETCH(QVector<QPointF>, expect); QFETCH(QVector<QPointF>, expect);
QVector<QPointF> res = VAbstractPiece::CheckLoops(path); QVector<QPointF> res = VAbstractPiece::CheckLoops(path);
ComparePathsDistance(res, expect); ComparePaths(res, expect);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -918,7 +918,7 @@ void TST_VAbstractPiece::PathLoopsCase() const
QFETCH(QVector<QPointF>, expect); QFETCH(QVector<QPointF>, expect);
const QVector<QPointF> res = VAbstractPiece::CheckLoops(path); const QVector<QPointF> res = VAbstractPiece::CheckLoops(path);
ComparePathsDistance(res, expect); ComparePaths(res, expect);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -1034,7 +1034,7 @@ void TST_VAbstractPiece::BrokenDetailEquidistant() const
CastTo(VAbstractPiece::Equidistant(points, width, QString()), ekv);// Take result CastTo(VAbstractPiece::Equidistant(points, width, QString()), ekv);// Take result
// Begin comparison // Begin comparison
ComparePathsDistance(ekv, ekvOrig); ComparePaths(ekv, ekvOrig);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -1147,7 +1147,7 @@ void TST_VAbstractPiece::EquidistantAngleType() const
CastTo(VAbstractPiece::Equidistant(points, width, QString()), ekv);// Take result CastTo(VAbstractPiece::Equidistant(points, width, QString()), ekv);// Take result
// Begin comparison // Begin comparison
ComparePathsDistance(ekv, ekvOrig); ComparePaths(ekv, ekvOrig);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -1184,7 +1184,7 @@ void TST_VAbstractPiece::CorrectEquidistantPoints() const
const QVector<QPointF> res = VAbstractPiece::CorrectEquidistantPoints(points, removeFirstAndLast); const QVector<QPointF> res = VAbstractPiece::CorrectEquidistantPoints(points, removeFirstAndLast);
// Begin comparison // Begin comparison
ComparePathsDistance(res, expect); ComparePaths(res, expect);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -1218,7 +1218,7 @@ void TST_VAbstractPiece::TestCorrectEquidistantPoints() const
QFETCH(QVector<QPointF>, expect); QFETCH(QVector<QPointF>, expect);
QVector<QPointF> after = VAbstractPiece::CorrectEquidistantPoints(before); QVector<QPointF> after = VAbstractPiece::CorrectEquidistantPoints(before);
ComparePathsDistance(after, expect); ComparePaths(after, expect);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -1335,7 +1335,7 @@ void TST_VAbstractPiece::PossibleInfiniteClearLoops() const
QFETCH(QVector<QPointF>, expect); QFETCH(QVector<QPointF>, expect);
QVector<QPointF> res = VAbstractPiece::CheckLoops(path); QVector<QPointF> res = VAbstractPiece::CheckLoops(path);
ComparePathsDistance(res, expect); ComparePaths(res, expect);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View File

@ -64,7 +64,7 @@ void TST_VLayoutDetail::Case1() const
// Begin comparison // Begin comparison
QVector<QPointF> contourPoints; QVector<QPointF> contourPoints;
CastTo(det.GetMappedContourPoints(), contourPoints); CastTo(det.GetMappedContourPoints(), contourPoints);
ComparePathsDistance(contourPoints, OutputPointsCase1()); ComparePaths(contourPoints, OutputPointsCase1());
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -130,7 +130,7 @@ void TST_VLayoutDetail::Case2() const
// Begin comparison // Begin comparison
QVector<QPointF> contourPoints; QVector<QPointF> contourPoints;
CastTo(det.GetMappedContourPoints(), contourPoints); CastTo(det.GetMappedContourPoints(), contourPoints);
ComparePathsDistance(contourPoints, OutputPointsCase2()); ComparePaths(contourPoints, OutputPointsCase2());
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View File

@ -60,7 +60,7 @@ void TST_VPiece::Issue620()
QVector<QPointF> origPoints = AbstractTest::VectorFromJson<QPointF>(QStringLiteral("://Issue_620/output.json")); QVector<QPointF> origPoints = AbstractTest::VectorFromJson<QPointF>(QStringLiteral("://Issue_620/output.json"));
// Begin comparison // Begin comparison
ComparePathsDistance(pointsEkv, origPoints); ComparePaths(pointsEkv, origPoints);
} }
catch (const VException &e) catch (const VException &e)
{ {