summaryrefslogtreecommitdiff
path: root/bezier.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'bezier.cpp')
-rw-r--r--bezier.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/bezier.cpp b/bezier.cpp
index 42ed04d..f476986 100644
--- a/bezier.cpp
+++ b/bezier.cpp
@@ -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;