X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=ETL%2Ftrunk%2Ftest%2Fhermite.cpp;h=25a6278ce7ab8f39ef00670c981e918c0c9ab05b;hb=e9a42a585dec26a8c0aabcfd6e12755f0f0f1156;hp=26eca4e24c56521993221de75a2442ffb846b59d;hpb=65b2df90d49328a766e0ebd892c795ef3f5cf832;p=synfig.git diff --git a/ETL/trunk/test/hermite.cpp b/ETL/trunk/test/hermite.cpp index 26eca4e..25a6278 100644 --- a/ETL/trunk/test/hermite.cpp +++ b/ETL/trunk/test/hermite.cpp @@ -1,9 +1,10 @@ /*! ======================================================================== ** Extended Template and Library Test Suite ** Hermite Curve Test -** $Id: hermite.cpp,v 1.1.1.1 2005/01/04 01:31:48 darco Exp $ +** $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 @@ -25,6 +26,7 @@ #include #include #include +#include #include /* === M A C R O S ========================================================= */ @@ -40,21 +42,21 @@ int basic_test(void) { int ret=0; float f; - + hermite Hermie; etl::clock timer; double t; - + Hermie.p1()=0; Hermie.t1()=1; Hermie.p2()=0; Hermie.t2()=1; - + Hermie.sync(); - + integral > inte(Hermie); - + fprintf(stderr,"integral of curve() on [0,1] = %f\n",inte(0,1.0)); fprintf(stderr,"integral of curve() on [-1,3] = %f\n",inte(-1.0,3.0)); Hermie.set_rs(-1.0,7.0); @@ -62,8 +64,8 @@ int basic_test(void) fprintf(stderr,"integral of curve()[%f,%f] on [-1,7] = %f\n",Hermie.get_r(),Hermie.get_s(),inte(-1.0,7.0)); fprintf(stderr,"integral of curve()[%f,%f] on [0,1] = %f\n",Hermie.get_r(),Hermie.get_s(),inte(0,1.0)); Hermie.set_rs(0.0,1.0); - - + + for(f=0.0f,timer.reset();f<1.001f;f+=0.000005f) { t+=Hermie(f)+Hermie(f+0.1f); @@ -80,7 +82,7 @@ int basic_test(void) t+=Hermie(f)+Hermie(f+0.1f); } t=timer(); - + fprintf(stderr,"time=%f milliseconds\n",t*1000); return ret; } @@ -89,21 +91,21 @@ int angle_test(void) { int ret=0; float f; - + hermite Hermie; etl::clock timer; angle tmp; double t; - + Hermie.p1()=angle::degrees(0); Hermie.t1()=angle::degrees(45); Hermie.p2()=angle::degrees(-45); Hermie.t2()=angle::degrees(180); - Hermie.sync(); - - + Hermie.sync(); + + for(f=0.0f,timer.reset();f<1.001f;f+=0.000005f) { tmp+=Hermie(f)+Hermie(f+0.1f); @@ -120,7 +122,7 @@ int angle_test(void) tmp+=Hermie(f)+Hermie(f+0.1f); } t=timer(); - + fprintf(stderr,"angle time=%f milliseconds\n",t*1000); return ret; @@ -130,20 +132,20 @@ int fixed_test(void) { int ret=0; float f; - + hermite Hermie; etl::clock timer; double t; - + Hermie.p1()=0; Hermie.t1()=1; Hermie.p2()=0; Hermie.t2()=1; - + Hermie.sync(); - - - + + + for(f=0.0f,timer.reset();f<1.001f;f+=0.005f) { t+=Hermie(f)+Hermie(f+0.1f); @@ -160,7 +162,7 @@ int fixed_test(void) t+=Hermie(f)+Hermie(f+0.1f); } t=timer(); - + fprintf(stderr,"time=%f milliseconds\n",t*1000); return ret; } @@ -170,21 +172,21 @@ int anglefixed_test(void) { int ret=0; float f; - + hermite Hermie; etl::clock timer; angle tmp; double t; - + Hermie.p1()=angle::degrees(0); Hermie.t1()=angle::degrees(45); Hermie.p2()=angle::degrees(-45); Hermie.t2()=angle::degrees(180); - Hermie.sync(); - - + Hermie.sync(); + + for(f=0.0f,timer.reset();f<1.001f;f+=0.0005f) { tmp+=Hermie(f)+Hermie(f+0.1f); @@ -201,7 +203,7 @@ int anglefixed_test(void) tmp+=Hermie(f)+Hermie(f+0.1f); } t=timer(); - + fprintf(stderr,"angle fixed time=%f milliseconds\n",t*1000); return ret; @@ -220,7 +222,7 @@ int float_intersection_test() t2=curve2.intersect(curve1); d=curve1(t1)-curve2(t2); - + fprintf(stderr,"float:Intersection difference: %f (t1=%f, t2=%f)\n",d,t1,t2); if(d>0.01) @@ -237,7 +239,7 @@ int float_intersection_test() int main() { int error=0; - + error+=basic_test(); error+=angle_test(); error+=fixed_test();