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 a uniform B-spline curve. We can specify a procedure, based upon eigenanalysis of the refinement matrix, that allows us to exactly calculate a point on the limit curve.
We show in these notes, that by applying the eigenanalysis further we can also calculate directly the tangent vectors on the limit curve. In this case it is the eigenvector corresponding to the eigenvalue that plays the primary role.
For a pdf version of these notes look here
Direct Calculation of Points on the Curve
Select a control point and let and be the adjacent control points (thought of as edge points of the refinement). Given the refinement matrix
Tangent Vectors to the Curve
We can also use this analysis to address the tangent vectors on the curve. Given a vertex point and the two adjacent edge points and respectively, we wish to look at the unit vectors
To calculate this quantity, we will use the diagonalization of the matrix which states that
Therefore, it is the left eigenvector of corresponding to the eigenvalue which determines the tangent vector to the curve, and given any vertex with corresponding edge points and , we can directly calculate the tangent vector at the limit point dotting the left eigenvector that corresponds to the eigenvalue by the vertex-edge vector
It is possible, using eigenanalysis, to formulate simple procedures that calculate directly a point on the limit curve, and the tangent vector on the curve at this point. This makes this refinement procedure quite simple to use.