Centripetal Catmull–Rom spline

In computer graphics, the centripetal Catmull–Rom spline is a variant form of the Catmull–Rom spline, originally formulated by Edwin Catmull and Raphael Rom,[1] which can be evaluated using a recursive algorithm proposed by Barry and Goldman.

[2] It is a type of interpolating spline (a curve that goes through its control points) defined by four control points

, with the curve drawn only from

denote a point.

For a curve segment

defined by points

and knot sequence

, the centripetal Catmull–Rom spline can be produced by: where and in which

α

ranges from 0 to 1 for knot parameterization, and

For centripetal Catmull–Rom spline, the value of

, the resulting curve is the standard uniform Catmull–Rom spline; when

, the result is a chordal Catmull–Rom spline.

into the spline equations

shows that the value of the spline curve at

Similarly, substituting

into the spline equations shows that

This is true independent of the value of

is not needed to calculate the value of

The extension to 3D points is simply achieved by considering

a generic 3D point

and Centripetal Catmull–Rom splines have several desirable mathematical properties compared to the original and the other types of Catmull-Rom formulation.

[3] First, loops and self-intersections do not occur within a curve segment.

Second, cusps will never occur within a curve segment.

Third, it follows the control points more tightly.

[4][vague] In computer vision, centripetal Catmull-Rom spline has been used to formulate an active model for segmentation.

The method is termed active spline model.

[5] The model is devised on the basis of active shape model, but uses centripetal Catmull-Rom spline to join two successive points (active shape model uses simple straight line), so that the total number of points necessary to depict a shape is less.

The use of centripetal Catmull-Rom spline makes the training of a shape model much simpler, and it enables a better way to edit a contour after segmentation.

The following is an implementation of the Catmull–Rom spline in Python that produces the plot shown beneath.

Catmull–Rom spline interpolation with four points
Barry and Goldman's pyramidal formulation
Knot parameterization for the Catmull–Rom algorithm
Gif animation for uniform , centripetal and chordal parameterization of Catmull–Rom spline depending on the α value
3D centripetal Catmull-Rom spline segment.
In this figure, there is a self-intersection/loop on the uniform Catmull-Rom spline (green), whereas for chordal Catmull-Rom spline (red), the curve does not follow tightly through the control points.
Plot obtained by the Python example code given above