added error handling for bezier curves and fixed infinite loop bugs

This commit is contained in:
Mastificate
2017-01-13 19:28:09 -05:00
parent 9316d84028
commit 93a15ce983
+12
View File
@@ -105,6 +105,9 @@ BezierCurve BezierCurve::getDerivative() const
const Vector &BezierCurve::getControlPoint(int i) const
{
if (controlPoints.size() == 0)
throw Exception("Curve contains no control points.");
while (i < 0)
i += controlPoints.size();
@@ -116,6 +119,9 @@ const Vector &BezierCurve::getControlPoint(int i) const
void BezierCurve::setControlPoint(int i, const Vector &point)
{
if (controlPoints.size() == 0)
throw Exception("Curve contains no control points.");
while (i < 0)
i += controlPoints.size();
@@ -127,6 +133,9 @@ void BezierCurve::setControlPoint(int i, const Vector &point)
void BezierCurve::insertControlPoint(const Vector &point, int i)
{
if (controlPoints.size() == 0)
i = 0;
while (i < 0)
i += controlPoints.size();
@@ -138,6 +147,9 @@ void BezierCurve::insertControlPoint(const Vector &point, int i)
void BezierCurve::removeControlPoint(int i)
{
if (controlPoints.size() == 0)
throw Exception("No control points to remove.");
while (i < 0)
i += controlPoints.size();