X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=ETL%2Ftrunk%2FETL%2F_bezier.h;h=4851a98419a329dcbddde766179261e1b8d01db7;hb=1891afee8b0ad9e67c56b1c262a940a0bb5042cb;hp=fe7ba8cc5fe866366d0960faee4c6e66621ad49b;hpb=eb6e49a13d89333e6246324723bd727964f56f6d;p=synfig.git diff --git a/ETL/trunk/ETL/_bezier.h b/ETL/trunk/ETL/_bezier.h index fe7ba8c..4851a98 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,8 +553,7 @@ public: bezier::operator[](1), bezier::operator[](2), bezier::operator[](3)}; - float t = NearestPointOnCurve(x, array); - return t > 0.999999 ? 0.999999 : t < 0.000001 ? 0.000001 : t; + return NearestPointOnCurve(x, array); } else { @@ -576,6 +577,7 @@ public: distance_type find_distance(time_type r, time_type s, int steps=7)const { const time_type inc((s-r)/steps); + if (!inc) return 0; distance_type ret(0); value_type last(operator()(r)); @@ -926,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