Fix piece mirroring.

Function expects not closed path.
This commit is contained in:
Roman Telezhynskyi 2024-06-25 12:23:19 +03:00
parent b701e0f03b
commit 62fd0b6694

View file

@ -188,8 +188,7 @@ public:
template <class T> static auto MirrorPath(const QVector<T> &points, const QLineF &mirrorLine) -> QVector<T>; template <class T> static auto MirrorPath(const QVector<T> &points, const QLineF &mirrorLine) -> QVector<T>;
template <class T> template <class T>
static auto FullSeamPath(const QVector<T> &points, const QLineF &mirrorLine, const QString &pieceName) static auto FullSeamPath(QVector<T> points, const QLineF &mirrorLine, const QString &pieceName) -> QVector<T>;
-> QVector<T>;
template <class T> template <class T>
static auto FullSeamAllowancePath(const QVector<T> &points, const QLineF &mirrorLine, const QString &pieceName) static auto FullSeamAllowancePath(const QVector<T> &points, const QLineF &mirrorLine, const QString &pieceName)
-> QVector<T>; -> QVector<T>;
@ -867,7 +866,7 @@ inline auto VAbstractPiece::MirrorPath<VLayoutPoint>(const QVector<VLayoutPoint>
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
template <class T> template <class T>
inline auto VAbstractPiece::FullSeamPath(const QVector<T> &points, const QLineF &mirrorLine, const QString &pieceName) inline auto VAbstractPiece::FullSeamPath(QVector<T> points, const QLineF &mirrorLine, const QString &pieceName)
-> QVector<T> -> QVector<T>
{ {
// DumpVector(points, QStringLiteral("input.json.XXXXXX")); // Uncomment for dumping test data // DumpVector(points, QStringLiteral("input.json.XXXXXX")); // Uncomment for dumping test data
@ -882,6 +881,12 @@ inline auto VAbstractPiece::FullSeamPath(const QVector<T> &points, const QLineF
return points; return points;
} }
// Function expects not closed path
if (points.constFirst() == points.constLast())
{
points.removeLast();
}
QVector<T> base; QVector<T> base;
base.reserve(points.size()); base.reserve(points.size());