Browse Source

Merged in Mastificate/love (pull request #77)

Fix infinite loop bug with bezier curves
Alex Szpakowski 8 years ago
parent
commit
01ff7d1275
1 changed files with 12 additions and 0 deletions
  1. 12 0
      src/modules/math/BezierCurve.cpp

+ 12 - 0
src/modules/math/BezierCurve.cpp

@@ -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();