From 95651d88dd7661170695d2c32c0a5ec446d56951 Mon Sep 17 00:00:00 2001 From: kramm Date: Sat, 21 May 2005 17:01:39 +0000 Subject: [PATCH] fixed integral error calculation --- lib/drawer.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/drawer.c b/lib/drawer.c index cf19d98..a7c336e 100644 --- a/lib/drawer.c +++ b/lib/drawer.c @@ -297,12 +297,18 @@ static int approximate3(const struct cspline*s, struct qspline*q, int size, doub /* convert control point representation to d*x^3 + c*x^2 + b*x + a */ - - /* FIXME: we need to do this for the subspline between [start,end], - not [0,1] */ dx= s->end.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) -- 1.7.10.4