diff options
Diffstat (limited to 'bezier.cpp')
-rw-r--r-- | bezier.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -8,9 +8,10 @@ Bezier_SolveYForX(v2 Point_P0, v2 Point_P1, v2 Point_P2, v2 Point_P3, real32 Tar v2 m1 = (Point_P2 - Point_P0) / (2 * Tau); v2 m2 = (Point_P3 - Point_P1) / (2 * Tau); - real32 Precision = 0.001; + real32 Precision = 0.000001; real32 t = (TargetX - Point_P0.x) / (Point_P3.x - Point_P0.x); + int Iterations = 0; for (;;) { real32 t2 = t * t; real32 t3 = t2 * t; @@ -22,8 +23,9 @@ Bezier_SolveYForX(v2 Point_P0, v2 Point_P1, v2 Point_P2, v2 Point_P3, real32 Tar bool32 Cond1 = (Point.x <= (TargetX - Precision)); bool32 Cond2 = (Point.x >= (TargetX + Precision)); - if (Cond1 || Cond2) { + if ((Cond1 || Cond2) && Iterations < 10) { t = t * TargetX / Point.x; + Iterations++; } else { Y = Point.y; break; |