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 pdf 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
We call call this point and note that it is equal to .
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 by
To calculate the limit,
first consider applying
In short, given any vertex with corresponding edge points and , we can directly calculate points on the curve by dotting the left eigenvector that corresponds to the eigenvalue by the vertex-edge vector
Consider a cubic uniform B-spline curve with control polygon . This curve can be written as
Similarly we can calculate a point on the curve using the vertex with and as the two respective edge points. In this case, we find that this is exactly the point on the curve.
Carrying this one step further, suppose we generate one full refinement of the curve, generating new edge and vertex points.
These new points become the input to the
refinement process, and if we consider
as the vertex point,
as the respective edge points, we obtain the
point on the curve
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.