22 template <
class RT,
class PT,
class T>
29 xsize_ = arr_->info().getSize(0);
30 ysize_ = arr_->info().getSize(1);
34 inline RT getValue(PT,PT)
const;
36 {
return getValue(p[0],p[1]); }
47 template <
class RT,
class PT,
class T>
inline 52 if ( ix0<0 || ix0>=xsize_-1 )
return mUdf(
RT);
56 if ( iy0<0 || iy0>=ysize_-1)
return mUdf(
RT);
58 if ( xsize_<4 || ysize_<4 || !ix0 || !iy0 ||
59 ix0>=xsize_-2 || iy0>=ysize_-2 )
63 return Interpolate::linearReg2DWithUdf<T>(
64 arr_->get( ix0, iy0 ),
65 arr_->get( ix0, iy0+1 ),
66 arr_->get( ix0+1, iy0 ),
67 arr_->get( ix0+1, iy0+1),
71 return Interpolate::linearReg2D<T>(
72 arr_->get( ix0, iy0 ),
73 arr_->get( ix0, iy0+1 ),
74 arr_->get( ix0+1, iy0 ),
75 arr_->get( ix0+1, iy0+1 ),
81 return Interpolate::polyReg2DWithUdf<T>(
82 arr_->get( ix0-1, iy0 ),
83 arr_->get( ix0-1, iy0+1 ),
84 arr_->get( ix0, iy0-1 ),
85 arr_->get( ix0, iy0 ),
86 arr_->get( ix0, iy0+1 ),
87 arr_->get( ix0, iy0+2 ),
88 arr_->get( ix0+1, iy0-1 ),
89 arr_->get( ix0+1, iy0 ),
90 arr_->get( ix0+1, iy0+1 ),
91 arr_->get( ix0+1, iy0+2 ),
92 arr_->get( ix0+2, iy0 ),
93 arr_->get( ix0+2, iy0+1 ),
98 return Interpolate::polyReg2D<T>( arr_->get( ix0-1, iy0 ),
99 arr_->get( ix0-1, iy0+1 ),
100 arr_->get( ix0, iy0-1 ),
101 arr_->get( ix0, iy0 ),
102 arr_->get( ix0, iy0+1 ),
103 arr_->get( ix0, iy0+2 ),
104 arr_->get( ix0+1, iy0-1 ),
105 arr_->get( ix0+1, iy0 ),
106 arr_->get( ix0+1, iy0+1 ),
107 arr_->get( ix0+1, iy0+2 ),
108 arr_->get( ix0+2, iy0 ),
109 arr_->get( ix0+2, iy0+1 ),
int xsize_
Definition: array2dfunc.h:41
RT getValue(PT, PT) const
Definition: array2dfunc.h:48
int ysize_
Definition: array2dfunc.h:42
Array2D ( Subclass of ArrayND ) is a two dimensional array.
Definition: arraynd.h:127
#define mUdf(type)
Use this macro to get the undefined for simple types.
Definition: undefval.h:270
RT getValue(const PT *p) const
Definition: array2dfunc.h:35
A Math Function as in F(x,y).
Definition: mathfunc.h:103
bool hasudfs_
Definition: array2dfunc.h:43
#define mClass(module)
Definition: commondefs.h:161
const Array2D< T > * arr_
Definition: array2dfunc.h:40
int getArrIdxPosition(const float farridx, const int arrsz, float &relpos, const float eps=1e-4)
Definition: simpnumer.h:27
Adaptor to make an Array2D behave like a MathXYFunction. Will do linear interpolation at the edges...
Definition: array2dfunc.h:23