![]() |
Murl Engine API
Version 2018.3
|
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>
A template class to create a Cubic Hermite spline interpolation (aka as Cardinal Spline / Catmull-Rom spline) object.
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. | |
![]() | |
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... | |
![]() | |
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. More... | |
![]() | |
Array< Key > | mKeys |
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... | |
Additional Inherited Members | |
![]() | |
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... | |
typedef DataType Murl::Math::SplineHermite< DataType >::ValueType |
The template parameter value type.
typedef SplineBase<DataType> Murl::Math::SplineHermite< DataType >::BaseType |
The base class type.
typedef DataType Murl::Math::SplineHermite< DataType >::ControlPoint |
The control point type.
typedef SplineKey<DataType> Murl::Math::SplineBase< DataType >::Key |
Type definition of the animation key data type.
|
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.
wrapMode | The wrapMode. |
curveType | The curveType. |
Tk | The Tk paramter. |
|
inline |
Get the control points for each key.
|
inline |
Calculate the control point for a specified index.
index | The zero-based index in range [0 .. GetNumberOfKeys()-1]. |
|
protected |
The key array stores all given keys sorted according to the time value.