From cd3dd0314902fe195b54948bba62bf07f75cd310 Mon Sep 17 00:00:00 2001 From: Kyzentun Date: Fri, 23 Jan 2015 10:41:39 -0700 Subject: [PATCH] Changed RageBezier2D EvaluateYFromX to only loop 100 times instead of forever. --- src/RageMath.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/RageMath.cpp b/src/RageMath.cpp index 05bc7dab0c..bc35fbdbe7 100644 --- a/src/RageMath.cpp +++ b/src/RageMath.cpp @@ -705,7 +705,8 @@ float RageBezier2D::EvaluateYFromX( float fX ) const * http://www.tinaja.com/text/bezmath.html). This usually finds T within an * acceptable error margin in a few steps. */ float fT = SCALE( fX, m_X.GetBezierStart(), m_X.GetBezierEnd(), 0, 1 ); - while(1) + // Don't try more than 100 times, the curve might be a bit nonsensical. -Kyz + for(int i= 0; i < 100; ++i) { float fGuessedX = m_X.Evaluate( fT ); float fError = fX-fGuessedX; @@ -717,6 +718,7 @@ float RageBezier2D::EvaluateYFromX( float fX ) const float fSlope = m_X.GetSlope( fT ); fT += fError/fSlope; } + return m_Y.Evaluate( fT ); } void RageBezier2D::SetFromBezier(