On-Line Geometric Modeling Notes

Catmull-Rom Splines

The Catmull-Rom Spline is a local interpolating spline developed for computer graphics purposes. Its initial use was in design of curves and surfaces, and has recently been used several applications. This paper presents a simple development of the matrix form of this spline, using only intuitive concepts. The matrix form will arise from a simple geometrical argument that attempts to fix the tangents at certain control points to be the average of the slopes of the two line segments of the control polygon adjacent to each control point. The matrix equation is then just a simple result of matrix algebra.


Ferguson's Parametric Cubic Curves

Given the two control points tex2html_wrap_inline171 and tex2html_wrap_inline173, and the slopes of the tangents tex2html_wrap_inline175 and tex2html_wrap_inline177 at each point, we can define a parametric cubic curve that passes through tex2html_wrap_inline179 and tex2html_wrap_inline181, with the respective slopes tex2html_wrap_inline183 and tex2html_wrap_inline185 by equating the coefficients of the polynomial function
displaymath23
with the values above. Namely
eqnarray25

Solving these equations simultaneously for tex2html_wrap_inline187, tex2html_wrap_inline189, tex2html_wrap_inline191 and tex2html_wrap_inline193, we obtain
eqnarray27

Substituting these into the original polynomial equation and simplifying to isolate the terms with tex2html_wrap_inline195, tex2html_wrap_inline197, tex2html_wrap_inline199, and tex2html_wrap_inline201, we have
eqnarray29
which is clearly in a cubic polynomial form. Alternatively, this can be written in the following matrix form
displaymath31

This method can be used to obtain a curve through a more general set of control points tex2html_wrap_inline203 by considering pairs of control points and using the Ferguson method for two points as developed above. It is necessary, however, to have the slopes of the tangents at each control point.


Development of the Catmull-Rom Spline

Given n+1 control points tex2html_wrap_inline207, we wish to find a curve that interpolates these control points (i.e. passes through them all), and is local in nature (i.e. if one of the control points is moved, it only affects the curve locally). We define the curve on each segment tex2html_wrap_inline209 by using the two control points, and specifying the tangent to the curve at each control point to be
displaymath44
respectively.

Substituting these tangents into Ferguson's method, we obtain the matrix equation
displaymath52
or
displaymath69
Multiplying the two inner matrices, we obtain
displaymath94
where
displaymath106

This matrix representation defines the cubic curve that represents the portion of the total curve between two successive control points. It can be applied to all segments of the curve except for the first and last segments in which tex2html_wrap_inline211 and tex2html_wrap_inline213 must be defined by a different method.


Bibliography

  1. Catmull, E. and R. Rom, ``A Class of Local Interpolationg Splines,'' in Barnhill R.E. and R.F. Riesenfled (eds.), Computer Aided Geometric Design, Academic Press, New York, 1974.
  2. Faux, I.D. and M.J. Pratt, Computational Geometry for Design and Manufacture, Ellis Horwood Publishing, Chichester, UK, 1979.


This document maintained by Ken Joy

Comments to the Author

All contents copyright (c) 1996, 1997
Computer Science Department,
University of California, Davis
All rights reserved.



Ken Joy
Thu Jul 24 10:51:29 PDT 1997