X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=ETL%2Ftags%2F0.04.12%2FETL%2F_calculus.h;fp=ETL%2Ftags%2F0.04.12%2FETL%2F_calculus.h;h=0000000000000000000000000000000000000000;hb=3a6643238c67c043fc3592837a05d6d2861967f1;hp=45c8ed48960378df1a83a173a9d958fc61f76b47;hpb=47fce282611fbba1044921d22ca887f9b53ad91a;p=synfig.git diff --git a/ETL/tags/0.04.12/ETL/_calculus.h b/ETL/tags/0.04.12/ETL/_calculus.h deleted file mode 100644 index 45c8ed4..0000000 --- a/ETL/tags/0.04.12/ETL/_calculus.h +++ /dev/null @@ -1,102 +0,0 @@ -/*! ======================================================================== -** Extended Template and Library -** Calculus Functional Classes Implementation -** $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 -** published by the Free Software Foundation; either version 2 of -** the License, or (at your option) any later version. -** -** This package is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -** General Public License for more details. -** -** === N O T E S =========================================================== -** -** ========================================================================= */ - -/* === S T A R T =========================================================== */ - -#ifndef __ETL__CALCULUS_H -#define __ETL__CALCULUS_H - -/* === H E A D E R S ======================================================= */ - -#include - -#include "hermite" - -/* === M A C R O S ========================================================= */ - -//#ifndef _EPSILON -//#define _EPSILON 0.0000001 -//#endif - -/* === T Y P E D E F S ===================================================== */ - -/* === C L A S S E S & S T R U C T S ======================================= */ - -_ETL_BEGIN_NAMESPACE - -template -class derivative : public std::unary_function -{ - T func; - typename T::argument_type epsilon; -public: - explicit derivative(const T &x, const typename T::argument_type &epsilon=0.000001):func(x),epsilon(epsilon) { } - - typename T::result_type - operator()(const typename T::argument_type &x)const - { - return (func(x+epsilon)-func(x))/epsilon; - } -}; - -template -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; - } -}; - -template -class integral : public std::binary_function -{ - T func; - int samples; -public: - explicit integral(const T &x, const int &samples=500):func(x),samples(samples) { } - - typename T::result_type - operator()(typename T::argument_type x,typename T::argument_type y)const - { - typename T::result_type ret=0; - int i=samples; - const typename T::argument_type increment=(y-x)/i; - - for(;i;i--,x+=increment) - ret+=(func(x)+func(x+increment))*increment/2; - return ret; - } -}; - -_ETL_END_NAMESPACE - -/* === E N D =============================================================== */ - -#endif