GeoPath
Description
- Derived from
-
IGeoPath<TSample>
Represents a 3D path, created from the interpolation of a sequence of GeoPathSample values.
After creation, a geo path is empty. Path samples must be added to it, in order to form a 3D path. The timestamps of samples can be distributed arbitrarily (i.e. there is no requirement for a fixed time-step). The geo path can be used to translate between sample indices and timestamp values.
Smooth interpolation is performed with non-uniform B-splines, where control points are implicitly duplicated before the first and after the last sample. For a given timestamp value T
, the influencing geo path samples look like this:
t1 t2 t3 t4 t5 t6 control point timestamp |------|--|----x---|----|---------| 1 2 3 | 4 5 6 control point index T interpolation timestamp
Geo path samples are interpolated from the values of control points [2..5].
Interpolation factors are computed from the timestamps of control points [1..6], using the Maths.SplineNonUniformB method. If the interpolation timestamp is identical to the control point timestamp (T = t3), the factors are influenced only by the timestamps of control points [1..5].
The interpolated geo path has C2 continuity (see Continuity.Curvature), which reduces to C1 continuity (see Continuity.Tangent) or C0 continuity (see Continuity.Position) if samples are duplicated once or twice.