Global B-Spline Curve Interpolation

Initializing live version
Download to Desktop

Requires a Wolfram Notebook System

Interact on desktop, mobile and cloud with the free Wolfram Player or other Wolfram Language products.

This Demonstration shows the method of global B-spline curve interpolation. The implementation is fully described in the Details.

Contributed by: Shutao Tang (October 2015)
(Northwestern Polytechnical University, Xi'an, China)
Open content licensed under CC BY-NC-SA


Snapshots


Details

Given a set of points , , this Demonstration interpolates between these points using a degree nonrational B-spline curve. Assigning a parameter value to each and selecting an appropriate knot vector leads to the system of linear equations

. (1)

The control points are the unknowns. Let be the number of coordinates in the (typically 2, 3, or 4). Equation (1) has one coefficient matrix with elements in the right-hand column and, correspondingly, solution sets for the coordinates of the .

The problem of choosing the and remains; their choice affects the shape and parametrization of the curve. Assume that the parameter lies in the range . Three common methods of choosing the are, with ():

Equal spacing:

, , , (2)

Chord length:

let , then

, , (3)

Centripetal:

let , then

, , (4)

Lastly, the following method was used to generate the knots ():

, , . (5)

Here is an example of an application of this algorithm:

Let , and assume the interpolation is a cubic curve. Use equations (3) and (5) to compute the and , and then set up the system of linear equations, equation (1). The separate chord lengths are given by

, , , and the total chord length is . Thus

, , , , .

So .

Thus

The system of linear equations is then represented by

Reference

[1] L. Piegl and W. Tiller, The NURBS Book, 2nd ed., Berlin: Springer–Verlag, 1997.



Feedback (field required)
Email (field required) Name
Occupation Organization
Note: Your message & contact information may be shared with the author of any specific Demonstration for which you give feedback.
Send