00001
00021 #ifndef INC_MI32_POLYNOMIAL_H
00022 #define INC_MI32_POLYNOMIAL_H
00023
00024 #ifndef INC_MI32_POINT_H
00025 #include <mi32/point.h>
00026 #endif
00027
00028 #ifndef INC_MI32_DOUBLEAR_H
00029 #include <mi32/doublear.h>
00030 #endif
00031
00032 #ifdef GEOMDLL
00033 #define CLASSEXPORT MI_DLLCLASSEXPORT
00034 #else
00035 #define CLASSEXPORT MI_DLLCLASSIMPORT
00036 #endif
00037
00038
00043 class CLASSEXPORT POLYNOMIAL_1D {
00044 public:
00045
00047 POLYNOMIAL_1D (
00048 );
00049
00051 ~POLYNOMIAL_1D (
00052 );
00053
00055 ERRVALUE AddSample (
00056 double x,
00057 double value
00058 );
00059
00061 ERRVALUE Compute (
00062 );
00063
00065 double Evaluate (
00066 double x
00067 ) const;
00068
00072 const DOUBLE_ARRAY<double>& GetCoefficients (
00073 ) const { return (m_Coeff); }
00074
00076 ERRVALUE Initialize (
00077 unsigned order
00078 );
00079
00081 ERRVALUE SetCoefficients (
00082 unsigned order,
00083 const double *Coeff
00084 );
00085
00086 private:
00087 #ifndef GENERATING_DOXYGEN_OUTPUT
00088 int m_Order;
00089 DOUBLE_ARRAY<double> m_Coeff;
00090 DOUBLE_ARRAY<double> m_A;
00091 DOUBLE_ARRAY<double> m_b;
00092 #endif
00093 };
00094
00095
00096
00101 class CLASSEXPORT POLYNOMIAL_2D {
00102 public:
00103
00105 POLYNOMIAL_2D (
00106 );
00107
00109 ~POLYNOMIAL_2D (
00110 );
00111
00113 ERRVALUE AddSample (
00114 double x,
00115 double y,
00116 double value
00117 );
00118
00120 ERRVALUE AddSample (
00121 const DPOINT2D& pos,
00122 double value
00123 ) { return (AddSample(pos.x,pos.y,value)); }
00124
00126 ERRVALUE Compute (
00127 );
00128
00130 double Evaluate (
00131 double x,
00132 double y
00133 ) const;
00134
00136 double Evaluate (
00137 const DPOINT2D& pos
00138 ) const { return (Evaluate(pos.x,pos.y)); }
00139
00143 const DOUBLE_ARRAY<double>& GetCoefficients (
00144 ) const { return (m_Coeff); }
00145
00147 ERRVALUE Initialize (
00148 unsigned order
00149 );
00150
00152 ERRVALUE SetCoefficients (
00153 unsigned order,
00154 const double *Coeff
00155 );
00156
00157 private:
00158 #ifndef GENERATING_DOXYGEN_OUTPUT
00159 int m_Order;
00160 DOUBLE_ARRAY<double> m_Coeff;
00161 DOUBLE_ARRAY<double> m_A;
00162 DOUBLE_ARRAY<double> m_b;
00163 #endif
00164 };
00165
00166
00167
00168
00169 #undef CLASSEXPORT
00170
00171 #endif // INC_MI32_POLYNOMIAL_H