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"
Public Types | |
| using | ValueType = DataType |
| The template parameter value type. | |
| using | BaseType = SplineBase< DataType > |
| The base class type. | |
| using | ControlPoint = DataType |
| The control point type. | |
| using | Key = SplineKey< DataType > |
| Type definition of the animation key data type. | |
| 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... | |
| using | ValueType = DataType |
| The template parameter value type. | |
| using | Key = SplineKey< DataType > |
| Type definition of the animation key data type. | |
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... | |
| ~SplineHermite () override | |
| 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 Key & | GetKey (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... | |
Protected Attributes | |
| Array< Key > | mKeys |
| The key array stores all given keys sorted according to the time value. | |
Protected Attributes inherited from Murl::Math::SplineBase< DataType > | |
| Array< Key > | mKeys |
| The key array stores all given keys sorted according to the time value. | |
| CurveType | mCurveType |
| The current curve type. | |
| WrapMode | mWrapMode |
| The current wrap mode. | |
| DataType | mCurrentValue |
| The current interpolated value. | |
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... | |
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.
Constructor & Destructor Documentation
◆ SplineHermite()
|
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
-
wrapMode The wrapMode. curveType The curveType. Tk The Tk paramter.
Member Function Documentation
◆ GetControlPoints()
|
inline |
Get the control points for each key.
- Returns
- The control points for each key.
◆ CalculateControlPoint()
|
inline |
Calculate the control point for a specified index.
- Parameters
-
index The zero-based index in range [0 .. GetNumberOfKeys()-1].
- Returns
- true if successful, false if the index is invalid.
References Murl::Math::SplineBase< DataType >::GetNextKey(), Murl::Math::SplineBase< DataType >::GetPrevKey(), Murl::Array< DataType >::IsIndexValid(), Murl::Math::SplineHermite< DataType >::mKeys, and Murl::Math::SplineKey< DataType >::mValue.
The documentation for this class was generated from the following file:
- murl_math_spline_hermite.h
Public Types inherited from