From 59c449f6c4adf1296f0aa55196a7a9440eaec721 Mon Sep 17 00:00:00 2001 From: kramm Date: Sat, 21 May 2005 17:01:58 +0000 Subject: [PATCH] optimized spline approximation --- lib/gfxtools.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/gfxtools.c b/lib/gfxtools.c index 938f6e4..ec98609 100644 --- a/lib/gfxtools.c +++ b/lib/gfxtools.c @@ -411,7 +411,7 @@ static int approximate3(const cspline_t*s, qspline_t*q, int size, double quality test.control.y += test.end.y; } -#define PROBES +//#define PROBES #ifdef PROBES /* measure the spline's accurancy, by taking a number of probes */ for(t=0;tend.x - s->control2.x*3 + s->control1.x*3 - s->start.x; dy= s->end.y - s->control2.y*3 + s->control1.y*3 - s->start.y; + /* we need to do this for the subspline between [start,end], not [0,1] + as a transformation of t->a*t+b does nothing to highest coefficient + of the spline except multiply it with a^3, we just need to modify + d here. */ + {double m = end-start; + dx*=m*m*m; + dy*=m*m*m; + } + /* use the integral over (f(x)-g(x))^2 between 0 and 1 to measure the approximation quality. - (it boils down to const*d^2) - */ + (it boils down to const*d^2) */ recurse = (dx*dx + dy*dy > quality2); #endif -- 1.7.10.4