X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=ETL%2Ftrunk%2FETL%2F_bezier.h;h=a08a42b466d986835a203306d221f85cc17be398;hb=609ffb6c7ad2996e4dde68b1066a27e80ed8a153;hp=7e26796c036a1ac4053cc56bbf9368557a2ea425;hpb=49dafb45e1b8dcb299ed9a992a011566c8c6c7bf;p=synfig.git diff --git a/ETL/trunk/ETL/_bezier.h b/ETL/trunk/ETL/_bezier.h index 7e26796..a08a42b 100644 --- a/ETL/trunk/ETL/_bezier.h +++ b/ETL/trunk/ETL/_bezier.h @@ -4,6 +4,7 @@ ** $Id$ ** ** Copyright (c) 2002 Robert B. Quattlebaum Jr. +** Copyright (c) 2007 Chris Moore ** ** This package is free software; you can redistribute it and/or ** modify it under the terms of the GNU General Public License as @@ -30,7 +31,8 @@ /* === H E A D E R S ======================================================= */ #include "_curve_func.h" -#include +#include // for ldexp +// #include // not used /* === M A C R O S ========================================================= */ @@ -551,7 +553,8 @@ public: bezier::operator[](1), bezier::operator[](2), bezier::operator[](3)}; - return NearestPointOnCurve(x, array); + float t = NearestPointOnCurve(x, array); + return t > 0.999999 ? 0.999999 : t < 0.000001 ? 0.000001 : t; } else { @@ -606,7 +609,7 @@ public: */ void subdivide(bezier *left, bezier *right, const time_type &time = (time_type)0.5) const { - time_type t=(t-get_r())/get_dt(); + time_type t=(time-get_r())/get_dt(); bezier lt,rt; value_type temp; @@ -925,7 +928,7 @@ private: /* * NearestPointOnCurve : * Compute the parameter value of the point on a Bezier - * curve segment closest to some arbtitrary, user-input point. + * curve segment closest to some arbitrary, user-input point. * Return the point on the curve at that parameter value. * * value_type& P; The user-supplied point