Murl::Math::SplineHermite< DataType > Class Template Reference

A template class to create a Cubic Hermite spline interpolation (aka as Cardinal Spline / Catmull-Rom spline) object. More...

#include "murl_math_spline_hermite.h"

Inheritance diagram for Murl::Math::SplineHermite< DataType >:

Public Types

typedef DataType ValueType
 The template parameter value type. More...
 
typedef SplineBase< DataType > BaseType
 The base class type. More...
 
typedef DataType ControlPoint
 The control point type. More...
 
typedef SplineKey< DataType > Key
 Type definition of the animation key data type. More...
 
enum  WrapMode
 Enumeration of the wrap modes.
 
enum  CurveType
 Enumeration of the curve type.
 
- Public Types inherited from Murl::Math::SplineBase< DataType >
enum  WrapMode { WRAP_NONE, WRAP_CLAMP_TO_EDGE, WRAP_REPEAT, WRAP_REPEAT_MIRRORED }
 Enumeration of the wrap modes. More...
 
enum  CurveType { CURVE_DEFAULT, CURVE_CLOSED }
 Enumeration of the curve type. More...
 
typedef DataType ValueType
 The template parameter value type. More...
 
typedef SplineKey< DataType > Key
 Type definition of the animation key data type. More...
 

Public Member Functions

 SplineHermite ()
 The default constructor (Catmull-Rom spline interpolation).
 
 SplineHermite (WrapMode wrapMode, CurveType curveType, Real Tk=0.5)
 Constructor taking the wrap mode, the curve type and the Tk value. More...
 
virtual ~SplineHermite ()
 The destructor.
 
Array< ControlPoint > & GetControlPoints ()
 Get the control points for each key. More...
 
Bool CalculateControlPoint (SInt32 index)
 Calculate the control point for a specified index. More...
 
- Public Member Functions inherited from Murl::Math::SplineBase< DataType >
 SplineBase ()
 The default constructor. More...
 
 SplineBase (WrapMode wrapMode, CurveType curveType)
 Constructor taking the wrap mode and the curve type. More...
 
virtual ~SplineBase ()
 The destructor.
 
void SetCurveType (CurveType curveType)
 Set the current curve type. More...
 
CurveType GetCurveType () const
 Get the current curve type. More...
 
void SetWrapMode (WrapMode wrapMode)
 Set the current wrap mode. More...
 
WrapMode GetWrapMode () const
 Get the current wrap mode. More...
 
SInt32 AddKey (const Key &key)
 Add a new interpolation key. More...
 
SInt32 AddKey (Real time, const DataType &value)
 Add a new interpolation key. More...
 
Bool RemoveKey (SInt32 index)
 Remove a key at a specified index. More...
 
Bool SetKeyValue (SInt32 index, const DataType &value)
 Set a key's value for a specified index. More...
 
SInt32 SetKey (SInt32 index, const Key &key)
 Set a key for a specified index. More...
 
SInt32 SetKey (SInt32 index, Real time, const DataType &value)
 Set a key for a specified index. More...
 
void CopyKeys (const SplineBase< DataType > &source)
 Copy the keys from a spline object. More...
 
SInt32 GetKeyIndex (Real time) const
 Get the nearest key index for a specified time. More...
 
SInt32 GetNumberOfKeys () const
 Get the number of keys. More...
 
const KeyGetKey (SInt32 index) const
 Get a key for a specified index. More...
 
void EmptyKeys ()
 Empty the keys, but keep the underlying storage.
 
void ClearKeys ()
 Clear the keys and remove the underlying storage.
 
virtual const DataType & Interpolate (Double time)
 Get the interpolated value at a specific time. More...
 
Bool UpdateControlPoints ()
 Update the control points immediately. More...
 
void SetControlPointsValid (Bool areValid)
 Set the control points valid state. More...
 

Additional Inherited Members

- Protected Member Functions inherited from Murl::Math::SplineBase< DataType >
Key GetPrevKey (SInt32 index) const
 Get the previous key for a specified index depending on the curve type and the wrap mode. More...
 
Key GetNextKey (SInt32 index) const
 Get the next key for a specified index depending on the curve type and the wrap mode. More...
 
SInt32 FindIndex (Real time) const
 Find the index using binary search O(log n). More...
 
- Protected Attributes inherited from Murl::Math::SplineBase< DataType >
Array< KeymKeys
 The key array stores all given keys sorted according to the time value. More...
 
CurveType mCurveType
 The current curve type. More...
 
WrapMode mWrapMode
 The current wrap mode. More...
 
DataType mCurrentValue
 The current interpolated value. More...
 

Detailed Description

template<class DataType>
class Murl::Math::SplineHermite< DataType >

A template class to create a Cubic Hermite spline interpolation (aka as Cardinal Spline / Catmull-Rom spline) object.

Member Typedef Documentation

◆ ValueType

template<class DataType >
typedef DataType Murl::Math::SplineHermite< DataType >::ValueType

The template parameter value type.

◆ BaseType

template<class DataType >
typedef SplineBase<DataType> Murl::Math::SplineHermite< DataType >::BaseType

The base class type.

◆ ControlPoint

template<class DataType >
typedef DataType Murl::Math::SplineHermite< DataType >::ControlPoint

The control point type.

◆ Key

template<class DataType >
typedef SplineKey<DataType> Murl::Math::SplineBase< DataType >::Key

Type definition of the animation key data type.

Constructor & Destructor Documentation

◆ SplineHermite()

template<class DataType >
Murl::Math::SplineHermite< DataType >::SplineHermite ( WrapMode  wrapMode,
CurveType  curveType,
Real  Tk = 0.5 
)
inline

Constructor taking the wrap mode, the curve type and the Tk value.

The Tk is the multiplication factor used to calculate the tangent of the Cardinal spline: mk = Tk * (Pk+1 - Pk-1) = (1 - c) / 2 * (Pk+1 - Pk-1) with c in [-1,1] The default value for Tk is 0.5, which corresponds to a Catmull-Rom spline interpolation.

Parameters
wrapModeThe wrapMode.
curveTypeThe curveType.
TkThe Tk paramter.

Member Function Documentation

◆ GetControlPoints()

template<class DataType >
Array<ControlPoint>& Murl::Math::SplineHermite< DataType >::GetControlPoints ( )
inline

Get the control points for each key.

Returns
The control points for each key.

◆ CalculateControlPoint()


The documentation for this class was generated from the following file:
  • murl_math_spline_hermite.h


Copyright © 2011-2018 Spraylight GmbH.