diff options
author | Fox Caminiti <fox@foxcam.net> | 2022-10-26 22:20:09 -0400 |
---|---|---|
committer | Fox Caminiti <fox@foxcam.net> | 2022-10-26 22:20:09 -0400 |
commit | 7435ce70153572e9f2dec316406e6ebb53334b51 (patch) | |
tree | 6f9f8064fa9a3e2b8bb2e5c7317eebb3b013bf1f /bezier.cpp | |
parent | bf01cea7274d9ac8ae13fd447c8568c95da31614 (diff) |
graph work
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; |