Public Types | Public Member Functions | Protected Member Functions | List of all members
imath::TSplineGridFunctionBase< Argument, Result, Fulcrums, Degree > Class Template Referenceabstract

Spline interpolation function using polynomial 3 degree segments. More...

#include <TSplineGridFunctionBase.h>

Inheritance diagram for imath::TSplineGridFunctionBase< Argument, Result, Fulcrums, Degree >:
imath::TFulcrumGridFunctionBase< Argument, Result, Fulcrums > imath::TFulcrumGrid< Argument, Fulcrums > istd::TCachedUpdateManagerWrap< iser::ISerializable > imath::TIMathFunction< Argument, Result > iser::ISerializable iser::ISerializable istd::IPolymorphic istd::IChangeable istd::IChangeable istd::IPolymorphic istd::IPolymorphic

Public Types

typedef
TFulcrumGridFunctionBase
< Argument, Result, Fulcrums > 
BaseClass
 
typedef Degree DerivativeDegreeType
 
- Public Types inherited from imath::TFulcrumGridFunctionBase< Argument, Result, Fulcrums >
typedef TFulcrumGrid< Argument,
Fulcrums > 
BaseClass
 
typedef
istd::TCachedUpdateManagerWrap
< iser::ISerializable
BaseClass2
 
typedef TIMathFunction
< Argument, Result > 
BaseClass3
 
typedef TIMathFunction
< Argument, Result >
::ArgumentType 
ArgumentType
 
- Public Types inherited from imath::TFulcrumGrid< Argument, Fulcrums >
enum  ChangeFlags
 Data model change notification flags. More...
 
typedef Fulcrums::ElementType FulcrumType
 
typedef Fulcrums::IndexType FulcrumIndex
 
typedef Fulcrums::SizesType FulcrumSizes
 
typedef Argument PositionType
 
- Public Types inherited from istd::IChangeable
enum  ChangeFlags {
  CF_ACF_INTERNAL = 0, CF_ALL_DATA, CF_ANY, CF_DESTROYING,
  CF_DELEGATED, CF_NO_UNDO
}
 Data model change notification flags. More...
 
enum  SupportedOperations {
  SO_NONE = 0, SO_OBSERVE = 1 << 0, SO_COPY = 1 << 1, SO_CLONE = 1 << 2,
  SO_COMPARE = 1 << 3, SO_RESET = 1 << 4
}
 Flags for supported operations. More...
 
enum  CompatibilityMode { CM_STRICT, CM_WITHOUT_REFS, CM_WITH_REFS, CM_CONVERT }
 Control how relationship betweeen objects are interpreted. More...
 
- Public Types inherited from istd::TCachedUpdateManagerWrap< iser::ISerializable >
typedef iser::ISerializable BaseClass
 
- Public Types inherited from imath::TIMathFunction< Argument, Result >
typedef Argument ArgumentType
 
typedef Result ResultType
 

Public Member Functions

virtual bool GetValueAt (const Argument &argument, Result &result) const
 Get function value for specified argument value. More...
 
virtual Result GetValueAt (const Argument &argument) const
 Get function value for specified argument value. More...
 
- Public Member Functions inherited from imath::TFulcrumGrid< Argument, Fulcrums >
 TFulcrumGrid ()
 
void Reset ()
 Removes all fulcrum points. More...
 
FulcrumSizes GetGridSize () const
 Return complete grid size. More...
 
int GetDimensionsCount () const
 Get number of dimensions. More...
 
virtual bool SetDimensionsCount (int count)
 Set number of dimensions. More...
 
int GetLayersCount (int dimension) const
 Get number of fulcrum points used in this function. More...
 
virtual void SetLayersCount (int dimension, int count)
 Set number of fulcrum layers at specified dimension. More...
 
double GetLayerPosition (int dimension, int layerIndex) const
 Get position of specified layer of fulcrums. More...
 
virtual void SetLayerPosition (int dimension, int layerIndex, double position)
 Set position of specified layer of fulcrums. More...
 
void GetFulcrumPosition (const FulcrumIndex &index, PositionType &result) const
 Get position of node at specified grid index. More...
 
const FulcrumTypeGetFulcrumAtIndex (const FulcrumIndex &index) const
 Get value at specified index. More...
 
virtual void SetFulcrumAtIndex (const FulcrumIndex &index, const FulcrumType &value)
 Set single fulcrum point. More...
 
int InsertLayer (int dimension, double position)
 Inserts single fulcrum layer. More...
 
virtual void RemoveLayer (int dimension, int layerIndex)
 Remove fulcrums at spacified layer. More...
 
virtual bool Serialize (iser::IArchive &archive)
 Load or store state of this object as a archive stream. More...
 
bool operator== (const TFulcrumGrid< Argument, Fulcrums > &value) const
 
bool operator!= (const TFulcrumGrid< Argument, Fulcrums > &value) const
 
- Public Member Functions inherited from iser::ISerializable
virtual quint32 GetMinimalVersion (int versionId) const
 Get minimal needed version to correct storing of this data. More...
 
- Public Member Functions inherited from istd::IChangeable
virtual int GetSupportedOperations () const
 Get set of flags for supported operations. More...
 
virtual bool CopyFrom (const IChangeable &object, CompatibilityMode mode=CM_WITHOUT_REFS)
 Copy this object from another one. More...
 
virtual bool IsEqual (const IChangeable &object) const
 Compare this object with another object. More...
 
virtual IChangeableCloneMe (CompatibilityMode mode=CM_WITHOUT_REFS) const
 Make a copy of this object. More...
 
virtual bool ResetData (CompatibilityMode mode=CM_WITHOUT_REFS)
 Reset data to its default state. More...
 
virtual void BeginChangeGroup (const ChangeSet &changeSet)
 Starts group of changes. More...
 
virtual void EndChangeGroup (const ChangeSet &changeSet)
 Ends group of changes. More...
 
- Public Member Functions inherited from istd::IPolymorphic
virtual ~IPolymorphic ()
 
- Public Member Functions inherited from istd::TCachedUpdateManagerWrap< iser::ISerializable >
 TCachedUpdateManagerWrap ()
 
virtual void BeginChanges (const IChangeable::ChangeSet &changeSet)
 
virtual void EndChanges (const IChangeable::ChangeSet &changeSet)
 

Protected Member Functions

void CumulateRecursiveValueAt (const Argument &argument, int dimension, const typename BaseClass::FulcrumSizes &sizes, typename BaseClass::FulcrumIndex &index, DerivativeDegreeType &degree, double cumulationFactor, Result &result) const
 Cumulate interpolated value or derivative at specified recursion level. More...
 
virtual const
BaseClass::ResultType
GetFulcrumDerivativeAtIndex (const typename BaseClass::FulcrumIndex &index, const DerivativeDegreeType &degree) const =0
 Get derivative of specified degree at specified index position. More...
 
virtual bool IsDerivativeDegreeSupported (const DerivativeDegreeType &degree) const =0
 Check, if this or higher degree derrivatives are supported. More...
 
- Protected Member Functions inherited from imath::TFulcrumGridFunctionBase< Argument, Result, Fulcrums >
virtual bool CalculateCache (const ChangeSet &changeSet)
 Calculate cache. More...
 
- Protected Member Functions inherited from imath::TFulcrumGrid< Argument, Fulcrums >
virtual void SortFulcrums ()
 Sort fulcrums in this collection. More...
 
int FindLayerIndex (int dimension, double value) const
 Find layer index of specified value for specified dimension. More...
 
Fulcrums::IndexType FindIndices (const PositionType &argument) const
 Find indices of cuboid containing specified argument value. More...
 
- Protected Member Functions inherited from istd::IChangeable
virtual void OnBeginChanges ()
 Callback function for begin change event. More...
 
virtual void OnEndChanges (const ChangeSet &changeSet)
 Callback function for end change event. More...
 
- Protected Member Functions inherited from istd::TCachedUpdateManagerWrap< iser::ISerializable >
bool EnsureCacheValid () const
 Ensures cache is valid. More...
 
void InvalidateCache (const IChangeable::ChangeSet &changeSet)
 Make cache invalid. More...
 
void SetCacheValid ()
 Say that cache is valid. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from istd::IChangeable
static const ChangeSetGetNoChanges ()
 Get empty set of changes. More...
 
static const ChangeSetGetAnyChange ()
 Get anonymous change set. More...
 
static const ChangeSetGetAllChanges ()
 Get anonymous change set. More...
 
static const ChangeSetGetDelegatedChanges ()
 Get delegated change set. More...
 
- Static Protected Attributes inherited from imath::TFulcrumGrid< Argument, Fulcrums >
static const ChangeSet s_fulcrumPositionChange
 

Detailed Description

template<class Argument, class Result, class Fulcrums, class Degree>
class imath::TSplineGridFunctionBase< Argument, Result, Fulcrums, Degree >

Spline interpolation function using polynomial 3 degree segments.

To reduce number of coefficients only precalculated derrivative values for each fulcrum will be stored.

Parameters
Argumentfunction argument type.
Resultfunction result type.
Fulcrumsarray type used to stored fulcrums.
See Also
imath::TFulcrumGridFunctionBase.
Parameters
Degreetype of object storing index of derivative degree. It should implement operator[] to access drivative degree for specified dimension.

Definition at line 26 of file TSplineGridFunctionBase.h.

Member Typedef Documentation

template<class Argument , class Result , class Fulcrums , class Degree >
typedef TFulcrumGridFunctionBase<Argument, Result, Fulcrums> imath::TSplineGridFunctionBase< Argument, Result, Fulcrums, Degree >::BaseClass

Definition at line 29 of file TSplineGridFunctionBase.h.

template<class Argument , class Result , class Fulcrums , class Degree >
typedef Degree imath::TSplineGridFunctionBase< Argument, Result, Fulcrums, Degree >::DerivativeDegreeType

Definition at line 31 of file TSplineGridFunctionBase.h.

Member Function Documentation

template<class Argument , class Result , class Fulcrums , class Degree >
void imath::TSplineGridFunctionBase< Argument, Result, Fulcrums, Degree >::CumulateRecursiveValueAt ( const Argument &  argument,
int  dimension,
const typename BaseClass::FulcrumSizes sizes,
typename BaseClass::FulcrumIndex index,
DerivativeDegreeType degree,
double  cumulationFactor,
Result &  result 
) const
protected

Cumulate interpolated value or derivative at specified recursion level.

Parameters
argumentposition, where interpolation should be calculated. The elements with index less of equal dimension indicate non grid components (hard to explain). The other components should be taken from index.
sizessize fulcrum grid.
dimensionworking dimension and recursion level.
indexmultidimensional index pointing at cuboid element in fulcrum grid. The elements with index greater dimension indicate asked subspace in grid (hard to explain). For the sake of performance it is internal modified, but original state is reverted before this method returns.
degreederivative degree will be taken. For the sake of performance it is internal modified, but original state is reverted before this method returns.
cumulationFactorscaled factor for cumulation.
resultobject where values are cumulated.

Definition at line 122 of file TSplineGridFunctionBase.h.

References imath::CSplineSegmentFunction::GetDerivativeKernelAt(), imath::CSplineSegmentFunction::GetValueKernelAt(), and I_BIG_EPSILON.

template<class Argument , class Result , class Fulcrums , class Degree >
virtual const BaseClass::ResultType& imath::TSplineGridFunctionBase< Argument, Result, Fulcrums, Degree >::GetFulcrumDerivativeAtIndex ( const typename BaseClass::FulcrumIndex index,
const DerivativeDegreeType degree 
) const
protectedpure virtual

Get derivative of specified degree at specified index position.

template<class Argument , class Result , class Fulcrums , class Degree >
bool imath::TSplineGridFunctionBase< Argument, Result, Fulcrums, Degree >::GetValueAt ( const Argument &  argument,
Result &  result 
) const
virtual

Get function value for specified argument value.

Parameters
argumentfunction argument.
resultfunction value for specified argument.
Returns
true if result was correctly calculated.

Implements imath::TIMathFunction< Argument, Result >.

Definition at line 84 of file TSplineGridFunctionBase.h.

template<class Argument , class Result , class Fulcrums , class Degree >
Result imath::TSplineGridFunctionBase< Argument, Result, Fulcrums, Degree >::GetValueAt ( const Argument &  argument) const
virtual

Get function value for specified argument value.

This overloaded menthod is provided only for convinence.

Parameters
argumentfunction argument.
Returns
function value for specified argument.

Implements imath::TIMathFunction< Argument, Result >.

Definition at line 109 of file TSplineGridFunctionBase.h.

template<class Argument , class Result , class Fulcrums , class Degree >
virtual bool imath::TSplineGridFunctionBase< Argument, Result, Fulcrums, Degree >::IsDerivativeDegreeSupported ( const DerivativeDegreeType degree) const
protectedpure virtual

Check, if this or higher degree derrivatives are supported.


The documentation for this class was generated from the following file:

© 2007-2017 Witold Gantzke and Kirill Lepskiy