 |
OpendTect
6.6
|
Go to the documentation of this file.
47 return x * v1 + (1-x) * v0;
59 return x < 0.5 ?
mUdf(T) : v1;
61 return x >= 0.5 ?
mUdf(T) : v0;
73 inline T
linear1D(
float x0, T v0,
float x1, T v1,
float x )
75 return v0 + (x-x0) * (v1-v0) / (x1-x0);
80 inline iT
linear1Di(
float x0, iT v0,
float x1, iT v1,
float x )
82 const float tmp = v0 + (x-x0) * (v1-v0) / (x1-x0);
102 set( v[0], v[1], v[2], v[3] );
107 set( vm1, v0, v1, v2 );
110 inline void set( T vm1, T v0, T v1, T v2 )
113 a_[1] = v1 - (( 2*vm1 + 3*v0 + v2 ) / 6);
114 a_[2] = (( v1 + vm1 ) / 2) - v0;
115 a_[3] = (( v1 - vm1 ) / 2) - a_[1];
120 const float xsq = x * x;
121 return xsq * x * a_[3] + xsq * a_[2] + x * a_[1] + a_[0];
149 {
set ( 0, 0, 0, 0 ); }
153 set( v[0], v[1], v[2], v[3] );
158 set( vm1, v0, v1, v2 );
161 inline void set( T vm1, T v0, T v1, T v2 )
164 if ( v0udf_ && v1udf_ )
return;
166 if (
mIsUdf(vm1) ) vm1 = v0udf_ ? v1 : v0;
167 if (
mIsUdf(v2) ) v2 = v1udf_ ? v0 : v1;
168 if ( v0udf_ ) v0 = vm1;
169 if ( v1udf_ ) v1 = v2;
171 intp_.set( vm1, v0, v1, v2 );
176 if ( (v0udf_ && x < 0.5) || (v1udf_ && x >= 0.5) )
178 return intp_.apply( x );
201 inline T
parabolic1D(
float x0, T v0,
float x1, T v1,
float x2, T v2,
float x )
203 float xx0 = x - x0, xx1 = x-x1, xx2 = x-x2;
204 return v0 * xx1 * xx2 / ((x0 - x1) * (x0 - x2)) +
205 v1 * xx0 * xx2 / ((x1 - x0) * (x1 - x2)) +
206 v2 * xx0 * xx1 / ((x2 - x0) * (x2 - x1));
217 inline T
poly1D(
float x0, T v0,
float x1, T v1,
float x2, T v2,
218 float x3, T v3,
float x )
220 float xx0 = x - x0, xx1 = x-x1, xx2 = x-x2, xx3 = x-x3;
221 return v0 * xx1 * xx2 * xx3 / ((x0 - x1) * (x0 - x2) * (x0 - x3)) +
222 v1 * xx0 * xx2 * xx3 / ((x1 - x0) * (x1 - x2) * (x1 - x3)) +
223 v2 * xx0 * xx1 * xx3 / ((x2 - x0) * (x2 - x1) * (x2 - x3)) +
224 v3 * xx0 * xx1 * xx2 / ((x3 - x0) * (x3 - x1) * (x3 - x2));
236 return (-2 * vm2 + 8 * vm1 + 8 * v1 - 2 * v2) / 12;
248 return (vm3 - 6 * vm2 + 15 * vm1 + 15 * v1 - 6 * v2 + v3) / 20;
void set(T vm1, T v0, T v1, T v2)
Definition: interpol1d.h:161
PolyReg1D which smoothly handles undefined values.
Definition: interpol1d.h:145
T poly1D(float x0, T v0, float x1, T v1, float x2, T v2, float x3, T v3, float x)
Definition: interpol1d.h:217
T linear1D(float x0, T v0, float x1, T v1, float x)
Definition: interpol1d.h:73
PolyReg1DWithUdf(T vm1, T v0, T v1, T v2)
Definition: interpol1d.h:156
iT linear1Di(float x0, iT v0, float x1, iT v1, float x)
Interpolate 1D regularly sampled, using a 3rd order polynome.
Definition: interpol1d.h:80
PolyReg1D< T > intp_
Definition: interpol1d.h:181
#define mIsUdf(val)
Use mIsUdf to check for undefinedness of simple types.
Definition: undefval.h:289
PolyReg1D()
Definition: interpol1d.h:95
#define mRounded(typ, x)
Definition: commondefs.h:57
PolyReg1DWithUdf()
Definition: interpol1d.h:148
T predictAtZero1D(T vm2, T vm1, T v1, T v2)
Definition: interpol1d.h:234
#define mClass(module)
Definition: commondefs.h:181
void set(T &_to, const F &fr)
template based type conversion
Definition: convert.h:27
PolyReg1D(T vm1, T v0, T v1, T v2)
Definition: interpol1d.h:105
PolyReg1DWithUdf(const T *v)
Definition: interpol1d.h:151
bool v0udf_
Definition: interpol1d.h:182
T polyReg1DWithUdf(T vm1, T v0, T v1, T v2, float x)
Definition: interpol1d.h:188
void set(T vm1, T v0, T v1, T v2)
Definition: interpol1d.h:110
#define mUdf(type)
Use this macro to get the undefined for simple types.
Definition: undefval.h:274
T linearReg1DWithUdf(T v0, T v1, float x)
Definition: interpol1d.h:56
T apply(float x) const
Definition: interpol1d.h:174
T parabolic1D(float x0, T v0, float x1, T v1, float x2, T v2, float x)
Definition: interpol1d.h:201
Definition: interpol1d.h:92
T polyReg1D(T vm1, T v0, T v1, T v2, float x)
Definition: interpol1d.h:129
Definition: interpol1d.h:38
bool v1udf_
Definition: interpol1d.h:183
T linearReg1D(T v0, T v1, float x)
Definition: interpol1d.h:45
T apply(float x) const
Definition: interpol1d.h:118
PolyReg1D(const T *v)
Definition: interpol1d.h:100
Generated at
for the OpendTect
seismic interpretation project.
Copyright (C): dGB Beheer B.V. 1995-2021