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
00030
00031
00032
00033
00034
00035
00036 #ifndef PCL_POLYNOMIAL_CALCULATIONS_H_
00037 #define PCL_POLYNOMIAL_CALCULATIONS_H_
00038
00039 #include <pcl/common/eigen.h>
00040 #include <pcl/common/bivariate_polynomial.h>
00041
00042 namespace pcl
00043 {
00049 template <typename real>
00050 class PolynomialCalculationsT
00051 {
00052 public:
00053
00054 PolynomialCalculationsT ();
00055 ~PolynomialCalculationsT ();
00056
00057
00059 struct Parameters
00060 {
00061 Parameters () : zero_value (), sqr_zero_value () { setZeroValue (1e-6);}
00063 void
00064 setZeroValue (real new_zero_value);
00065
00066 real zero_value;
00067 real sqr_zero_value;
00068 };
00069
00070
00073 inline void
00074 solveQuarticEquation (real a, real b, real c, real d, real e, std::vector<real>& roots) const;
00075
00078 inline void
00079 solveCubicEquation (real a, real b, real c, real d, std::vector<real>& roots) const;
00080
00083 inline void
00084 solveQuadraticEquation (real a, real b, real c, std::vector<real>& roots) const;
00085
00087 inline void
00088 solveLinearEquation (real a, real b, std::vector<real>& roots) const;
00089
00095 inline BivariatePolynomialT<real>
00096 bivariatePolynomialApproximation (std::vector<Eigen::Matrix<real, 3, 1> >& samplePoints,
00097 unsigned int polynomial_degree, bool& error) const;
00098
00100 inline bool
00101 bivariatePolynomialApproximation (std::vector<Eigen::Matrix<real, 3, 1> >& samplePoints,
00102 unsigned int polynomial_degree, BivariatePolynomialT<real>& ret) const;
00103
00105 inline void
00106 setZeroValue (real new_zero_value) { parameters_.setZeroValue(new_zero_value); }
00107
00108 protected:
00109
00111 inline bool
00112 isNearlyZero (real d) const
00113 {
00114 return (fabs (d) < parameters_.zero_value);
00115 }
00116
00118 inline bool
00119 sqrtIsNearlyZero (real d) const
00120 {
00121 return (fabs (d) < parameters_.sqr_zero_value);
00122 }
00123
00124
00125 Parameters parameters_;
00126 };
00127
00128 typedef PolynomialCalculationsT<double> PolynomialCalculationsd;
00129 typedef PolynomialCalculationsT<float> PolynomialCalculations;
00130
00131 }
00132
00133 #include <pcl/common/impl/polynomial_calculations.hpp>
00134
00135 #endif