Announcement

Collapse
No announcement yet.

B-Spline summary

Collapse
This topic is closed.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • B-Spline summary

    I want to thank everyone who responded to my posting asking for help
    fitting B-Splines through a data set. Here is a somewhat brief but
    detailed summary of the explanations I received with the suggested
    references given at the bottom. I hope this is helpful to others who are
    new to these methods.

    First of all, it was pointed out that B-Splines are usually very well
    suited to fitting between data points but not necessarily interpolating
    _through_ each of those points. Basically, b-splines are associated with a
    number of control points. For a cubic order b-spline, four control points
    are necessary to describe each section of the curve. To crudely construct
    a curve that will go through certain points, you must duplicate those
    control points. The curve can also be forced through the endpoints by
    using repeated values at the beginning and end of the knot vector. "If you
    need interpolating endpoints your knot multiplicity at the ends must equal
    the order of curve (= degree + 1). For a cubic curve this means that you
    must have 4 identical knot values at the beginning and at the end."(RT)
    A knot sequence defines the scope of each control point. Unlike
    Bezier curves, b-splines are characterized by local control so moving one
    control point will change a small region but doesn't affect the entire
    curve. To define a basic knot sequence "you can use a uniform sequence of
    numbers, 1, 2, 3, ..., or usually you can achieve a better curve by having
    the knot sequence represent euclidean distance between points so that
    U(n)-u(n-1) = distance between points n-1 and n." (GN) This line will go
    through the endpoints (if the repeated knots described above are used) but
    not necessarily through any of the intervening points.
    To create a line that intersects all data points, a different type
    of curve is more efficient. Both natural or Ferguson splines (JR) and
    Hermite curves (VL) were suggested to fill this role. I settled on using
    a subset of Hermite curves. There are several basic types of hermite
    curves: Cardinal Splines, Catmull-Rom Splines, and Kochanek-Bartels (KB)
    Splines. All these curves rely on locally fitting curves based on the
    control points and tangents to those points either specified or derived
    from the surrounding data. The most general of these being KB splines
    which allow the user (or algorithm) to specify a tension, continuity and
    bias coefficient for each tangent calculation. Catmull-Rom splines are
    similar in form to the KB-spline but do not account for these three
    specific coefficients. Rather , the coefficient is set at
    1/2. Calculation of the intermediary points on the curve is trivial once
    the algorithm is set up.

    References:

    "Curves and Surfaces for CAGD: A Practical Guide" by Gerald Farin (RT)
    "The NURBS Book" by Les A. Piegl and Wayne Tiller (RT)
    "Mathematical Elements of Computer Graphics" by Rogers and Adams (GN)
    "Computer Graphics for Engineers" by Dewey Pub: Harper & Row, 1988 (AE)
    Hermite Curve Interpolation by Nils Pipenbrinck (link below)
    http://www.cubic.org/~submissive/sourcerer/hermite.htm

    Cheers,

    James

    ------------------------------------------------------------------------------------------
    Brown University Orthopedic Research
    Dept of Engineering Rhode Island Hospital
    Providence, RI Providence, RI

    ---------------------------------------------------------------
    To unsubscribe send SIGNOFF BIOMCH-L to LISTSERV@nic.surfnet.nl
    For information and archives: http://isb.ri.ccf.org/biomch-l
    ---------------------------------------------------------------
Working...
X