33 #ifndef AIMS_INTERPOLATION_INTERPOLATEDVOLUME_H
34 #define AIMS_INTERPOLATION_INTERPOLATEDVOLUME_H
86 double at(
double x,
double y = 0.,
double z = 0.,
long t = 0 )
const;
90 double operator() (
double x,
double y = 0.,
double z = 0.,
long t = 0 )
const;
91 Vector der(
double x,
double y = 0.,
double z = 0.,
long t = 0 )
const;
92 Matrix der2(
double x,
double y = 0.,
double z = 0.,
long t = 0 )
const;
93 Matrix der3(
double x,
double y = 0.,
double z = 0.,
long t = 0 )
const;
98 double atMm(
double x,
double y = 0.,
double z = 0.,
long t = 0 )
const;
102 Vector derMm(
double x,
double y = 0.,
double z = 0.,
long t = 0 )
const;
103 Matrix der2Mm(
double x,
double y = 0.,
double z = 0.,
long t = 0 )
const;
104 Matrix der3Mm(
double x,
double y = 0.,
double z = 0.,
long t = 0 )
const;
123 template <
typename T>
125 template <
typename T>
131 template <
typename T>
133 template <
typename T>
Spline interpolation of volumes with simple accessors to interpolated values.
Matrix der2(double x, double y=0., double z=0., long t=0) const
carto::PropertySet & header()
Header / Dimension.
double getSizeYMm() const
InterpolatedVolume & operator=(const InterpolatedVolume &other)
Assignment by copy (underlying data is fully copied and not shared between the volumes)
Vector derivative(double x, double y=0., double z=0., long t=0) const
double operator()(double x, double y=0., double z=0., long t=0) const
double getSizeZMm() const
carto::VolumeRef< double > Matrix
double at(double x, double y=0., double z=0., long t=0) const
Access interpolated values.
double getSizeXMm() const
Matrix der3(double x, double y=0., double z=0., long t=0) const
InterpolatedVolume()
Constructors / Destructors / CopyDefault constructor: allocates no data.
Matrix nderivative(unsigned n, double x, double y=0., double z=0., long t=0) const
Matrix der2Mm(double x, double y=0., double z=0., long t=0) const
unsigned order() const
ParametersInterpolation order.
Matrix der3Mm(double x, double y=0., double z=0., long t=0) const
Vector derivativeMm(double x, double y=0., double z=0., long t=0) const
void setCoeff(const carto::Volume< T > &vol, int order=-1)
Change coefficient volume.
Vector der(double x, double y=0., double z=0., long t=0) const
void setRecursiveMode()
Recursive/Fast/Tabular mode (default is Fast)
const carto::VolumeRef< double > & coefficients() const
void setTabularMode()
Recursive/Fast/Tabular mode (default is Fast)
virtual ~InterpolatedVolume()
Destructor.
carto::rc_ptr< BSpline > _spline
bool empty() const
Is the volume empty (true if only default constructed)
const carto::PropertySet & header() const
double atMm(double x, double y=0., double z=0., long t=0) const
Access interpolated values in mm.
carto::VolumeRef< double > & coefficients()
Access to coefficients.
carto::VolumeRef< double > _coeff
void setFastMode()
Recursive/Fast/Tabular mode (default is Fast)
void setVolume(const carto::Volume< T > &vol, int order=-1)
Change interpolated volume.
Matrix nderivativeMm(unsigned n, double x, double y=0., double z=0., long t=0) const
InterpolatedVolume(const InterpolatedVolume &other)
Copy constructor (underlying data is fully copied and not shared between the volumes)
Vector derMm(double x, double y=0., double z=0., long t=0) const