On-Line Geometric Modeling Notes

Direct Calculation of Points
on Cubic Subdivision Curves


Given an initial control polygon we can define a refinement process that generates a sequence of control polygons from the original. In the limit, this sequence converges to the uniform B-spline curve specified by the original control polygon. By examining this refinement process from a different angle, we can specify a procedure that allows us to directly calculate points on the curve.

For a postscript version of these notes look here.


Direct Calculation of Points on the Curve

In the cubic case, we define the general refinement procedure by classifying the points of a refinement as either ``vertex'' or ``edge'' points. Using this classification we can cleverly write this refinement process in a matrix form. This form takes a control point and its two adjacent control points of a refinement and applies a refinement matrix as follows
displaymath25
where A is called the refinement matrix and is given by
displaymath33
Here we have denoted the control points as vertex and edge points. This procedure creates two new edge points and a vertex point which are part of a new control polygon that represents the curve. We can apply A again and obtain
displaymath40
where tex2html_wrap_inline336. In general, we can generate points on the kth refinement by applying A k-times. In the limit, as k approaches infinity, we obtain a point on the curve.

tex2html_wrap410

We call call this point tex2html_wrap_inline346 and note that it is equal to tex2html_wrap_inline348.


Calculating the Limit Point

The suprising thing is that we can actually calculate this limit. We utilize the fact that the refinement matrix can be diagonalized, which defines the matrix A by
displaymath57
where
displaymath59
is the matrix whose columns are the right eigenvectors of A,
displaymath64
is the matrix whose rows are the left eigenvectors of A, and tex2html_wrap_inline356 is the matrix of eigenvalues
displaymath85
Since tex2html_wrap_inline358, this allows us to write
displaymath95
(Noting that tex2html_wrap_inline360) or, in general
displaymath98

To calculate the limit, first consider applying A k-times
eqnarray100
Now as tex2html_wrap_inline366, this approaches
displaymath124
and by substituting for R and L, this becomes
eqnarray132
That is, the vertex and edge points all converge to the same value, which is just the dot product of the left eigenvector of A that corresponds to the eigenvalue one, and the original vertex-edge vector of the refinement - obtaining the point tex2html_wrap_inline374.

In short, given any vertex tex2html_wrap_inline376 with corresponding edge points tex2html_wrap_inline378 and tex2html_wrap_inline380, we can directly calculate points on the curve by dotting the left eigenvector that corresponds to the eigenvalue 1 by the vertex-edge vector
displaymath228
This says that any vertex point on any refinement directly corresponds to a point on the curve.


Examples

Consider a cubic uniform B-spline curve with control polygon tex2html_wrap_inline384. This curve can be written as
displaymath240
Consider the first step of the refinement using tex2html_wrap_inline386 as the vertex with tex2html_wrap_inline388 and tex2html_wrap_inline390 as the two respective edge points. The corresponding point on the curve can be calculated directly as
displaymath253
which is exactly the point tex2html_wrap_inline392 on the curve.

Similarly we can calculate a point on the curve using the vertex tex2html_wrap_inline394 with tex2html_wrap_inline396 and tex2html_wrap_inline398 as the two respective edge points. In this case, we find that this is exactly the point tex2html_wrap_inline400 on the curve.

Carrying this one step further, suppose we generate one full refinement of the curve, generating new edge and vertex points.

tex2html_wrap412

These new points become the input to the refinement process, and if we consider tex2html_wrap_inline402 as the vertex point, with tex2html_wrap_inline404 and tex2html_wrap_inline406 as the respective edge points, we obtain the point on the curve
eqnarray266
which is exactly tex2html_wrap_inline408.


Summary

It is possible, using eigenanalysis, to formulate simple procedures that calculate directly a point on the limit curve. This, in many cases, can be used to replace the overall refinement process.

The tangent vector on the curve at this limit point can also be directly calculated, by much the same procedure.


References

1
CATMULL, E., AND CLARK, J. Recursively generated B-spline surfaces on arbitrary topological meshes. Computer-Aided Design 10 (Sept. 1978), 350-355.

2
HALSTEAD, M., KASS, M., AND DEROSE, T. Efficient, fair interpolation using Catmull-Clark surfaces. In Computer Graphics (SIGGRAPH '93 Proceedings) (Aug. 1993), J. T. Kajiya, Ed., vol. 27, pp. 35-44.


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 11:28:36 PDT 1997