Try making some knots very close together and others quite far away from one another and observe the speed at which the curve is drawn in those areas.
If you are unfamiliar with uniform parameterization, it simply spreads the global 't' values out uniformly based on the number of knots. If there are five knots (four segments), the global t=0 to t=0.25 is allocated to the first segment (first cubic curve, local t=0 to t=1). Global t=0.25 to 0.5 is allocated to the second segment (again, local curve t=0 to t=1). The distribution depends only on the number of knots, and does not take knot distances or arc length along the curve into account.
Uniform parameterization carries the least computational expense. A more expensive parameterization is chord-length, where the global t-distribution is based on the fraction of chord length of each line segment between knots to the total chord length.
Arc-length parameterization is the most computationally expensive, but provides the best velocity control when path animation is desired.
For further reading,
:: Catmull-Rom Splines - An introduction to Catmull-Rom Splines.
:: Arc-Length Parameterization - Introduction to curve parameterization and how to reparameterize a curve on arc length. Techniques applied to a Catmull-Rom spline. Examples include how to distribute sprites evenly along a curve and path animation (including path following and orientation).
:: Arc Length of a Catmull-Rom Spline - Arc Length of parametric curves and derivative evaluation, applied to Catmull-Rom splines.
Source Code. Download the Singularity package (this example is in Singularity/demos/CRAnimation.mxml). |