mirror of
https://github.com/love2d/love.git
synced 2026-08-20 20:49:54 +02:00
Improve renderSegment
This commit is contained in:
@@ -195,28 +195,15 @@ vector<Vector> BezierCurve::renderSegment(double start, double end, size_t accur
|
|||||||
}
|
}
|
||||||
else if (start < end)
|
else if (start < end)
|
||||||
{
|
{
|
||||||
if (start > 0 && start < 1)
|
size_t start_idx = size_t(start * vertices.size());
|
||||||
{
|
size_t end_idx = size_t(end * vertices.size() + 0.5);
|
||||||
for (size_t i = 0; i < vertices.size(); ++i)
|
return std::vector<Vector>(vertices.begin() + start_idx, vertices.begin() + end_idx);
|
||||||
{
|
}
|
||||||
if ((double)i / vertices.size() > start)
|
else if (end > start)
|
||||||
{
|
{
|
||||||
vertices.erase(vertices.begin(), vertices.begin() + i - 1);
|
size_t start_idx = size_t(end * vertices.size() + 0.5);
|
||||||
break;
|
size_t end_idx = size_t(start * vertices.size());
|
||||||
}
|
return std::vector<Vector>(vertices.begin() + start_idx, vertices.begin() + end_idx);
|
||||||
}
|
|
||||||
}
|
|
||||||
if (end < 1 && end > 0)
|
|
||||||
{
|
|
||||||
for (size_t i = vertices.size(); i > 0; --i)
|
|
||||||
{
|
|
||||||
if ((double)(i - 1) / vertices.size() < end)
|
|
||||||
{
|
|
||||||
vertices.erase(vertices.begin() + i, vertices.end());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return vertices;
|
return vertices;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,8 @@
|
|||||||
#include "common/Object.h"
|
#include "common/Object.h"
|
||||||
#include "common/Vector.h"
|
#include "common/Vector.h"
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <map>
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
namespace love
|
namespace love
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user