Skip to content

Catmull Rom Basis Definition

Eric Kerfoot edited this page Feb 7, 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 figure 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 sublines defines a distinct 1D xi space from 0.0 to 1.0, values in the xi space for the piecewise object will correspond to a value in one of these. For example, a xi value of 1/6 in the piece object is equivalent to 0.5 in the first line. This allows continuous lines, quads, or hexahedra to be defined with arbitrary numbers of nodes.

Clone this wiki locally