Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef POLYNOMIAL_INCLUDED
00030 #define POLYNOMIAL_INCLUDED
00031
00032 #include <vector>
00033
00034 namespace pcl
00035 {
00036 namespace poisson
00037 {
00038
00039 template< int Degree >
00040 class Polynomial{
00041 public:
00042 double coefficients[Degree+1];
00043
00044 Polynomial(void);
00045 template<int Degree2>
00046 Polynomial(const Polynomial<Degree2>& P);
00047 double operator()( double t ) const;
00048 double integral( double tMin , double tMax ) const;
00049
00050 int operator == (const Polynomial& p) const;
00051 int operator != (const Polynomial& p) const;
00052 int isZero(void) const;
00053 void setZero(void);
00054
00055 template<int Degree2>
00056 Polynomial& operator = (const Polynomial<Degree2> &p);
00057 Polynomial& operator += (const Polynomial& p);
00058 Polynomial& operator -= (const Polynomial& p);
00059 Polynomial operator - (void) const;
00060 Polynomial operator + (const Polynomial& p) const;
00061 Polynomial operator - (const Polynomial& p) const;
00062 template<int Degree2>
00063 Polynomial<Degree+Degree2> operator * (const Polynomial<Degree2>& p) const;
00064
00065 Polynomial& operator += ( double s );
00066 Polynomial& operator -= ( double s );
00067 Polynomial& operator *= ( double s );
00068 Polynomial& operator /= ( double s );
00069 Polynomial operator + ( double s ) const;
00070 Polynomial operator - ( double s ) const;
00071 Polynomial operator * ( double s ) const;
00072 Polynomial operator / ( double s ) const;
00073
00074 Polynomial scale( double s ) const;
00075 Polynomial shift( double t ) const;
00076
00077 Polynomial<Degree-1> derivative(void) const;
00078 Polynomial<Degree+1> integral(void) const;
00079
00080 void printnl(void) const;
00081
00082 Polynomial& addScaled(const Polynomial& p,double scale);
00083
00084 static void Negate(const Polynomial& in,Polynomial& out);
00085 static void Subtract(const Polynomial& p1,const Polynomial& p2,Polynomial& q);
00086 static void Scale(const Polynomial& p,double w,Polynomial& q);
00087 static void AddScaled(const Polynomial& p1,double w1,const Polynomial& p2,double w2,Polynomial& q);
00088 static void AddScaled(const Polynomial& p1,const Polynomial& p2,double w2,Polynomial& q);
00089 static void AddScaled(const Polynomial& p1,double w1,const Polynomial& p2,Polynomial& q);
00090
00091 void getSolutions(double c,std::vector<double>& roots,double EPS) const;
00092
00093 static Polynomial BSplineComponent( int i );
00094 };
00095
00096
00097 }
00098 }
00099
00100
00101 #include "polynomial.hpp"
00102 #endif // POLYNOMIAL_INCLUDED