X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=ETL%2Ftrunk%2FETL%2F_bezier.h;h=fe6b17017f1e89b13a62f40efbc9f3ed67322d58;hb=e0dedc46e8ab6b258be81887689b0c0fd60def0c;hp=0e3ace9f9ec86241ada76f8670a4264b941d4fe1;hpb=f54364d89e1687ee58effaa0e5932d68c1137eed;p=synfig.git diff --git a/ETL/trunk/ETL/_bezier.h b/ETL/trunk/ETL/_bezier.h index 0e3ace9..fe6b170 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 @@ -24,13 +25,14 @@ /* === S T A R T =========================================================== */ -#ifndef __ETL_BEZIER_H -#define __ETL_BEZIER_H +#ifndef __ETL__BEZIER_H +#define __ETL__BEZIER_H /* === 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)); @@ -607,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; @@ -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