Re-apply commit b0094b5: Fix BezierCurve:render to avoid adding collinear points in some situations. Resolves issue #1501.

--HG--
branch : minor
This commit is contained in:
Alex Szpakowski
2019-12-31 15:45:20 -04:00
parent 881a31512d
commit c27629bd47
+6 -3
View File
@@ -69,11 +69,14 @@ void subdivide(vector<love::Vector2> &points, int k)
subdivide(right, k-1);
// merge (right is in reversed order)
points.resize(left.size() + right.size() - 1);
for (size_t i = 0; i < left.size(); ++i)
// By this point the 'left' array has a point at the end that's collinear
// with other points. It's still needed for the subdivide calls above but we
// can get rid of it here.
points.resize(left.size() + right.size() - 2);
for (size_t i = 0; i < left.size() - 1; ++i)
points[i] = left[i];
for (size_t i = 1; i < right.size(); ++i)
points[i-1 + left.size()] = right[right.size() - i - 1];
points[i-1 + left.size() - 1] = right[right.size() - i - 1];
}
}