From: kramm <kramm>
Date: Sat, 21 May 2005 17:01:39 +0000 (+0000)
Subject: fixed integral error calculation
X-Git-Tag: release-0-7-0~74
X-Git-Url: http://git.asbjorn.it/?a=commitdiff_plain;h=95651d88dd7661170695d2c32c0a5ec446d56951;p=swftools.git

fixed integral error calculation
---

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)