X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=ETL%2Ftrunk%2FETL%2F_calculus.h;h=45c8ed48960378df1a83a173a9d958fc61f76b47;hb=9459638ad6797b8139f1e9f0715c96076dbf0890;hp=8b0fa598c40757661c629fa7f02b556814f9c6e9;hpb=b3016b249333ac0ab0008d8c6c4d9029b2ff30c9;p=synfig.git diff --git a/ETL/trunk/ETL/_calculus.h b/ETL/trunk/ETL/_calculus.h index 8b0fa59..45c8ed4 100644 --- a/ETL/trunk/ETL/_calculus.h +++ b/ETL/trunk/ETL/_calculus.h @@ -1,9 +1,10 @@ /*! ======================================================================== ** Extended Template and Library ** Calculus Functional Classes Implementation -** $Id: _calculus.h,v 1.1.1.1 2005/01/04 01:31:46 darco Exp $ +** $Id$ ** ** Copyright (c) 2002 Robert B. Quattlebaum Jr. +** Copyright (c) 2008 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 @@ -28,14 +29,14 @@ #include +#include "hermite" + /* === M A C R O S ========================================================= */ //#ifndef _EPSILON //#define _EPSILON 0.0000001 //#endif -#define ETL_FIXED_DERIVATIVE 1 - /* === T Y P E D E F S ===================================================== */ /* === C L A S S E S & S T R U C T S ======================================= */ @@ -49,15 +50,27 @@ class derivative : public std::unary_function +class derivative > : public std::unary_function::argument_type,typename hermite::result_type> +{ + hermite func; +public: + explicit derivative(const hermite &x):func(x) { } + + typename hermite::result_type + operator()(const typename hermite::argument_type &x)const + { + T a = func[0], b = func[1], c = func[2], d = func[3]; + typename hermite::argument_type y(1-x); + return ((b-a)*y*y + (c-b)*x*y*2 + (d-c)*x*x) * 3; } }; @@ -68,14 +81,14 @@ class integral : public std::binary_function