fix last commit

This commit is contained in:
muddmaker
2014-10-02 18:22:54 -07:00
parent 238656ecc1
commit ccd856255d
2 changed files with 22 additions and 19 deletions
+21 -18
View File
@@ -189,31 +189,34 @@ vector<Vector> BezierCurve::renderSegment(double start, double end, size_t accur
throw Exception("Invalid Bezier curve: Not enough control points.");
vector<Vector> vertices(controlPoints);
subdivide(vertices, accuracy);
if (start > 0)
if (start == end)
{
Vector startPoint = evaluate(start);
for (size_t i = 0; i < vertices.size(); ++i)
{
if ((double)i / vertices.size() > start)
{
vertices.erase(vertices.begin(), vertices.begin() + i - 1);
break;
}
}
vertices.insert(vertices.begin(), startPoint);
vertices.clear();
}
if (end < 1)
else if (start < end)
{
Vector endPoint = evaluate(end);
for (size_t i = vertices.size(); i > 0; --i)
if (start > 0 && start < 1)
{
if ((double)(i - 1) / vertices.size() < end)
for (size_t i = 0; i < vertices.size(); ++i)
{
vertices.erase(vertices.begin() + i, vertices.end());
break;
if ((double)i / vertices.size() > start)
{
vertices.erase(vertices.begin(), vertices.begin() + i - 1);
break;
}
}
}
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;
}
}
}
vertices.insert(vertices.end(), endPoint);
}
return vertices;
}
+1 -1
View File
@@ -179,7 +179,7 @@ int w_BezierCurve_renderSegment(lua_State *L)
for (size_t i = 0; i < points.size(); ++i)
{
lua_pushnumber(L, points[i].x);
lua_rawseti(L, -2, 2*i+2);
lua_rawseti(L, -2, 2*i+1);
lua_pushnumber(L, points[i].y);
lua_rawseti(L, -2, 2*i+2);
}