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