<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>Contents</title> <link rel="Stylesheet" type="text/css" href="../styles/pagestyle.css") /> </head> <body> <div id="contents"> <h3> B-SPLINE CURVES AND SURFACES </h3> <hr /> These are the most widely used class of approximating splines. <strong>B-splines</strong> have two advantages over Bezier splines: (1) the degree of a B-spline polynomial can be set independently of the number of control points (with certain limitations), and (2) B-splines allow local control over the shape of a spline curve or surface. The trade-off is that B-splines are more complex than Bezier splines.<p>We can write a general expression for the calculation of coordinate positions along a B-spline curve in a blending-function formulation as</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img class="inlinesymbol" src="pics/eqn14_1.gif" alt="" width="351" height="48" /></p> <p>where the P<sub>k</sub> are an input set of (n+1) control points. There are several differences between this B-spline formulation and that for Bezier splines. The range of parameter u now depends on how we choose the B-spline parameters. And the B spline blending function B<sub>k,d</sub> are polynomials of degree (d 1), where parameter d can be chosen to be any integer value in the range from 2 up to the number of control points, n + 1. (Actually, we can also set the value of d at 1, but then our  curve is just a point plot of the control points.) Local control for B-splines is achieved by defining the blending functions over subintervals of the total range of u.</p> <p>Blending functions for B-spline curves are defined by the Cox-deBoor recursion formulas:</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img class="inlinesymbol" src="pics/eqn14_2.gif" alt="" width="351" height="101" /></p> <p>where each blending function is defined over d subintervals of the total range of u. The selected set of subinterval endpoints u<sub>j</sub> is referred to as a <strong>knot vector</strong>. We can choose any values for the subinterval endpoints satisfying the relation <img class="inlinesymbol" src="pics/eqn14_3.gif" alt="" width="60" height="26" />. Values for u<sub>min</sub> and u<sub>max</sub> then depend on the number of control points we select, the value we choose for parameter d, and how we set up the subintervals (knot vector). Since it is possible to choose the elements of the knot vector so that the denominators in the previous calculations can have a value of 0, this formulation assumes that any terms evaluated as 0/0 are to be assigned the value 0.</p> <p>Given the control-point positions and the value of parameter d, we then need to specify the knot values to obtain the blending functions using the recurrence relations defined above. There are three general classifications for knot vectors: uniform, open uniform, and nonuniform. B-splines are commonly described according the selected knot-vector class.</p> <p><b>Properties of B-spline curves</b></p> <p>B-spline curves have the following properties:</p> <ul> <li><u>Local Control</u>: Figure below demonstrates the local-control characteristics of B-splines. In addition to local control, B-splines allow us to very the number of control points used to design a curve without changing the degree of the polynomial. Also, any number of control points can be added or modified to manipulate curve shapes. Similarly, we can increase the number of values in the knot vector to aid in curve design. When we do this, however, we also need to add control points since the size of the knot vector depends on parameter n.</li> <li><u>Degree of the curve</u>: The polynomial curve has degree d  1 and C<sup>d-2</sup> continuity over the range of u.</li> <li><u>Continuity between curve segments:</u> For n + 1 control points, the curve is described with n + 1 blending functions.</li> <li><u>Range of each Blending Function:</u> Each blending function B<sub>k,d</sub> is defined over d subintervals of the total range of u, starting at knot value U<sub>k</sub>.</li> <li><u>The role of knot values:</u> The range of parameter u is divided into n + d subintervals by the n + d + 1 values specified in the knot vector.</li> <li><u>The range of definition of the curve</u>: With knot values labeled as {u<sub>0</sub>,u<sub>1</sub>, & .,u<sub>n+d</sub>}, the resulting B-spline curve is defined only in the interval from knot value u<sub>d-1</sub> up to knot value u<sub>n+1</sub>. </li> <li><u>Control of each curve segment</u>: Each section of the spline curve (between two successive knot values) is influenced by d control points.</li> <li><u>Effect of each control point</u>: Any one control point can affect the shape of at most d curve sections.</li> <li><u>Bounded within the convex Hull:</u> In addition, a B-spline curve lies within the convex hull of at most d + 1 control points, so that B-splines are tightly bound to the input positions. For any value of u in the interval from knot value u<sub>d-1</sub> to u<sub>n+1</sub>, the sum over all basis functions is 1: <img class="inlinesymbol" src="pics/eqn14_4.gif" alt="" width="105" height="51" /><br /> <br /> <br /> <img src="img/pic034.jpg" alt="" width="650" height="261" /> </li> </ul> <hr /> <h3> Related Links </h3> <hr /> <br /> <a href="15.htm">Uniform, Periodic B-Splines (quadratic)</a><br /> <br /> <a href="16.htm">Cubic, Uniform Periodic B-Splines</a><p> <a href="18.htm">Non-uniform B-Splines</a></p> <p><a href="17.htm">Standard Open Non-Uniform B-Splines</a><br /> <br /> <br /> </div> <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-2741197-1"; urchinTracker(); </script> </body> </html>