Skip to content

Catmull Rom Basis Definition

Eric Kerfoot edited this page Aug 17, 2017 · 7 revisions

The Catmull-Rom basis definition is a modified form of cubic Hermite whereby adjacent control points in world space can be used as control point derivatives. This has the advantages that derivative control points don't need to be calculated, elements will definitely intersect their control points, adjacent elements using each other's control points as derivatives will maintain C1 continuity between them, and an object defined by multiple elements will be guaranteed to have C1 continuity throughout its xi space.

The function CM for evaluating a Catmull-Rom spline at position 0<=xi<=1 with control points p0 and p1 having respective derivatives (or neighbouring points) p0' and p1' is defined as the following:

The below figure graphs the four component basis functions for this definition:

The definition for this function is derived from the generalized form described here using a tau value of 0.5. This basis definition is therefore derived from Cubic Hermite by using midpoint values between neighbouring points as derivative values.

Continuous Elements

The Catmull-Rom basis allows continuous elements to be defined without having to calculate derivatives, which can be demonstrated by comparing line segments defined with cubic Hermite and Catmull-Rom bases. A line is defined as the quadruple (p0',p0,p1,p1') where p0 and p1 are points in space and p0' and p1' are their derivatives. Given four vertices in space a, b, c, and d, three lines can be defined as the sets (a,a,b,c), (a,b,c,d), and (b,c,d,d).

The figures below plot these lines using first the cubic Hermite basis function and then the Catmull-Rom basis function. The cubic Hermite lines are not C1 continuous thus demonstrating that derivative values distinct from the given vertices must be calculated to create continuity, whereas the Catmull-Rom lines do not require this.

These four points can be used to define a single continuous line object by considering the three lines as members of a piecewise object. A piecewise object presents a continuous xi space spanning multiple elements which maps to the internal xi spaces of the elements. For the piecewise line each of the sub-lines defines a distinct 1D xi space from 0.0 to 1.0, values in the xi space for the piecewise object as a whole will correspond to a value in one of these. For example, a xi value of 1/6 in the piecewise object is equivalent to a xi value of 0.5 in the first line. This allows continuous lines, quads, or hexahedra to be defined with arbitrary numbers of nodes arranged in 1D, 2D, or 3D lattices of control points.

Clone this wiki locally