Improve renderSegment

This commit is contained in:
muddmaker
2014-12-22 14:50:44 -08:00
parent 640da48368
commit 637908ab43
2 changed files with 11 additions and 22 deletions
+9 -22
View File
@@ -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;
} }
+2
View File
@@ -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
{ {