An implementation of Catmull-Rom splines (sometimes known as Overhauser splines). More...
An implementation of Catmull-Rom splines (sometimes known as Overhauser splines).
In this implementation, the end tangents are created automatically by reflection.
In matrix form, the local interpolation on the interval t=[0..1] is described as follows:
P(t) = 1/2 * [ t^3 t^2 t 1 ] * [ -1 3 -3 1 ] * [ P-1 ] [ 2 -5 4 -1 ] [ P0 ] [ -1 0 1 0 ] [ P1 ] [ 0 2 0 0 ] [ P2 ]
Where P-1 and P2 represent the neighbouring points or the extrapolated end points. Simple reflection is used to automatically create the end points.
The spline is discretized based on the chord length of the individual segments. In rare cases (sections with very high curvatures), the resulting distribution may be sub-optimal.
Definition at line 77 of file CatmullRomSpline.H.
Public Member Functions | |
CatmullRomSpline (const pointField &knots, const bool notImplementedClosed=false) | |
Construct from components.
| |
point | position (const scalar lambda) const |
Return the point position corresponding to the curve parameter.
| |
point | position (const label segment, const scalar lambda) const |
Return the point position corresponding to the local parameter.
| |
scalar | length () const |
Return the length of the curve - not implemented.
|
CatmullRomSpline | ( | const pointField & | knots, |
const bool | notImplementedClosed = false
|
||
) |
Construct from components.
point position | ( | const scalar | lambda ) | const |
Return the point position corresponding to the curve parameter.
0 <= lambda <= 1
Reimplemented from polyLine.
Reimplemented in splineEdge.
point position | ( | const label | segment, |
const scalar | lambda | ||
) | const |
Return the point position corresponding to the local parameter.
0 <= lambda <= 1 on the given segment
Reimplemented from polyLine.
scalar length | ( | ) | const |
Return the length of the curve - not implemented.
Reimplemented from polyLine.
Reimplemented in splineEdge.