Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

37 B splines+NURBS

Download as pdf or txt
Download as pdf or txt
You are on page 1of 12

Cubic Splines

A representation of cubic spline consists of:

EECS 487: Interactive • four control points (why four?)


• these are completely user specified
• determine a set of blending functions

Computer Graphics There is no single “best” representation of cubic spline:


Cubic Interpolate? Local? Continuity Affine? Convex*? VD*?
Lecture 37: Hermite C1 n/a n/a
• B-splines curves Cardinal except C1 no no
(Catmull-Rom) endpoints
• Rational Bézier and NURBS Bézier endpoints C1
natural C2 n/a n/a
B-splines C2
* n/a when some of the control “points” are tangents, not points

Natural Cubic Spline Natural Cubic Spline


A natural cubic spline’s control points:
f (u) = a 0 + u1a1 + u 2 a2 + u 3a 3
Given n control points, a natural cubic
• position of start point p 0 = f (0) = a 0 + 0 a1 +1
0 a2 +
2 3
0 a3 spline has n−1 segments
• 1st derivative of start point p1 = f '(0) = a1 + 2 * 0 a 2 + 3* 0 2 a 3
1

• 2nd derivative of start point p 2 = f ''(0) = 2 *11 a 2 + 6 * 0 2 a 3 For segment i: fi (0) = p i−1 , i = 1,…,n
• position of end point p 3 = f (1) = a 0 + 1 a1 +1
12 a 2 + 13 a 3 fi (1) = p i , i = 1,…,n
• constraint and basis matrices:
⎡ 1 0 0 0 ⎤ ⎡ 1 0 0 0 ⎤ fi' (0) = fi−1
'
(1), i = 1,…,n − 1
⎢ ⎥ ⎢ 0 1 0 0 ⎥
C=⎢
0 1 0 0 ⎥, B = C −1 = ⎢ ⎥ f (0) = f (1),
i
" "
i−1 i = 1,…,n − 1
⎢ ⎥
1
⎢ 0 0 2 0 ⎥ 0 0 2 0
⎢⎣ 1 1 1 1 ⎥⎦ ⎢ −1 −1 − 12 1 ⎥
⎣ ⎦
• subsequent segments assume the position and 1st and 2nd
Set: f1" (0) = fn" (1) = 0
derivatives of the end point of the preceding segment
O’Brien
Natural Cubic Splines B-splines
Each curve segment (other than the first) receives Given n (≥ d + 1) control points,
three out of its four control points from the a B-spline curve has n−d segments
preceding segment, this gives the curve C 2 continuity • d is the degree of each B-spline segment

• the segments are numbered d to n−1, for ease of notation


However the polynomial coefficients are
• number of control points is independent of the degree
dependent on all n control points
• unlike a Bézier spline, where adding a control
• control is not local: any change in any segment point necessarily increases degree by one,
may change the whole curve • and unlike multi-segmented Bézier curve where multiple control
• curve tends to be ill-conditioned: a small change points supporting a new segment must be added at the same time
at the beginning can lead to large subsequent changes • segment degree (d) is also curve degree

B-splines of degree d are said to have order k (= d + 1)


TP3, Watt

Advantages of B-splines Local Control


Main advantages of B-splines:
• number of control points not limited by degree (d)
Unlike natural splines and Bézier curves, B-splines’
• automatic Cd 1 continuity control points are not derivatives
• local control
Instead each segment is a weighted-sum of d basis
To create a large model with C 2 continuity and functions (only), giving the control points local
local control, you pretty much want to use cubic control
B-splines
Hence Basis spline
Aside from the first segment, each B-spline
segment shares the first d control points with its
preceding segment
• sounds like natural spline …
how can B-splines have local control?
Polynomials as a Vector Space
Polynomials f (u) = a0 + a1u + a2u 2 + … + anu n
• can be added: just add the coefficients
• can be multiplied by a scalar: multiply the coefficients
• are closed under addition and multiplication by scalar
• i.e., the result is still a polynomial
Why is B called the Basis Matrix? It’s a vector space!

A vector space is defined by a set of basis


• linearly independent vectors
• linear combination of the basis vectors spans the space
• here vector = polynomial

Durand

Canonical Power Basis Basis Matrix and Basis Functions


1, u, u2, u3, … , un A basis matrix (B) transforms the canonical basis (u)
• are independent
to another basis:
• any polynomial is a linear combination of these, n
a0 + a1u + a2u2 + … + anun f (u) = ua = uBp = (1 − u)p 0 + up1 = ∑ bi (u)p i
• often called the canonical basis functions i=0
n
Just as with Euclidean space, uB = ∑ bi (u)
there are infinite number of possible basis i=0

For cubic, the basis functions could be, for example: The bi(u)’s are the basis functions of the other basis
• 1, 1+u, 1+u+u2, 1+u–u2+u3 (we’ve known them as the blending functions)
• u3, u3–u2, u3+u, u3+1

Durand
B-splines Uniform B-splines
Given n control points, there are n−d segments
The knots of a uniform B-splines are spaced at
• we call the segments fi(u), d ≤ i < n
• each segment has a unit range, 0 ≤ u ≤1
equal intervals
• we call the entire B-spline curve with n control points f(t) y(t) P9
P8
a cubic
The parameters ti’s where two segments join are P1 P3 B-spline
f5(u)
Q5 P4 t10 fQ
9(u)
9
called knots P t9
P7
y(t) 9 P8
a cubic t5 t6
• the start and end points (td and tn)
f8(u)
Q
B-spline t3 8
P1 P3 t fQ9(u) f6(u)
Q t8
are also called knots
(u) P4 10
f5Q 9
5
P7 Q
f4(u)4
6
t5 t6
t9 t4 P6
f3(u)
Q t7
• the range [td, tn] is the domain
Q
f8(u)
t3
f66(u)
Q
t8 8 3 Q
f7(u)
7
Q4
of a B-spline curve f3Q
(u)
3
t4 f4(u)
t7 Q
f77(u)
P6
P5
Knot
• the parameter u of segment i is P5
Knot
P0 P2 Control point
scaled to ti ≤ u < ti+1 P0 P2 Control point
x(t) x(t)
Foley, van Dam90

Foley, van Dam90

What Degree is Sufficient? Linear B-spline Segment


Arbitrary curves have an uncountable number of In the linear case, the basis functions are
parameters b0(u) = (1−u) and b1(u) = u
1

Real-number function value expanded into an infinite


set of basis functions:
∞ 0 1 2
f (u) = ∑ bi (u)p i (a.k.a. tent/triangle basis, the i’th functions are
i=0 shifted versions of the 0’th)
⎧ 0 u < −1 ⎫
Approximate by truncating set ⎪⎪ 1+ u −1 < u < 0 ⎪⎪
at some reasonable point, e.g., 3: b(u) = ⎨ ⎬
3 ⎪ 1− u 0 < u < 1 ⎪
f (u) = ∑ bi (u)p i ⎪⎩ 0 u >1 ⎪⎭
i=0
O’Brien James,Hanrahan
Linear B-spline Curve Linear B-splines
Consider using linear B-splines (d=1, k=2) to draw The influence of control point pi on the whole curve
a piecewise linear curve (a polyline) is thus the “tent/triangle” function: pi+1

To draw the curve, we perform linear interpolation ⎧ t − ti pi


⎪ , ti ≤ t < ti+1 , pi−1
of a set of control points p0, …, pn–1
⎪ ti+1 − ti

t = i+2 bi (t) = ⎨ ti+2 − t bi(t)
t = i–1 fi (u) , ti+1 ≤ t < ti+2 , 1
pi–1 t = i+1 pi+1 ⎪ ti+2 − ti+1 t − ti ti+2 − t
p0 pi–2 pi+2 pn–1 ⎪ ti+1 − ti ti+2 − ti+1
t=i
pi
⎪⎩ 0, everywhere else
t = i+3 ti ti+1 ti+2

For segment i, we write the interpolating linear The hardest part of working with B-splines is
t − ti keeping track of the tedious notations!
curve as fi (u) = (1−u)pi–1+ upi, where u = ∈[ 0,1]
ti+1 − ti
[Craig] [Craig]

Linear B-splines Linear B-splines


ti+1 − t t − ti t − ti
Linearly interpolating the set of control points to draw fi (u) = (1− u)p i−1 + up i =
ti+1 − ti
p i−1 +
ti+1 − ti
pi , u =
ti+1 − ti
, ti ≤ t < ti+1
the curve: ti+2 − t t − ti+1 t − ti+1
ti+1 − t t − ti t − ti fi+1 (u) = (1− u)p i + up i+1 = pi + p i+1 , u = , ti+1 ≤ t < ti+2
fi (u) = (1− u)p i−1 + up i = p i−1 + pi , u = , ti ≤ t < ti+1 ti+2 − ti+1 ti+2 − ti+1 ti+2 − ti+1
ti+1 − ti ti+1 − ti ti+1 − ti
ti+2 − t t − ti+1 t − ti+1 We can rewrite the segment functions as:
fi+1 (u) = (1− u)p i + up i+1 = pi + p i+1 , u = , ti+1 ≤ t < ti+2
ti+2 − ti+1 ti+2 − ti+1 ti+2 − ti+1
fi (t) = bi−1 (t)p i−1 + bi (t)p i , ti ≤ t < ti+1
fi+1(u)
f(t) upi+1 pi+1 fi+1 (t) = bi (t)p i + bi+1 (t)p i+1 , ti+1 ≤ t < ti+2
pi−2 fi(u) upi
pn−1
pi−1
pi And for the whole curve:
p0 pi+2
n−1 n−1
f (t) = ∑ fi (t) = ∑ bi (t)p i
ti–1 ti ti+1 ti+2 ti+3 i=1 i=1

(1 u) pi−1 (1 u) pi where bi(t)’s are the basis functions (in this case, linear)
[Craig] [Craig]
Quadratic B-splines de Boor Algorithm
Quadratic B-splines (d=2, k=3) are drawn by two De Boor algorithm is an iterative interpolation
interpolation steps, similar but different to quadratic algorithm that generalizes de Casteljau’s algorithm
Bézier p i–1 To evaluate a B-spline curve f(t) at parameter value t:
qi
1/5 4/5
1. determine the [ti, ti+1) in which t belongs;
4/5 qi–1 f(t) d ≤ i < n, the domain of the curve is [td, tn]
1/5
4/5 1/5 2. to compute f(t) of degree d, first interpolate between
B-splines quadratic: control points p’s
Bézier quadratic: parameter “around” pi
control point 3. then, in a bottom up fashion, continue to perform r rounds
parameter “along” edge
of pairwise linear interpolations, until r = d, using:
pi–2
t − t r−1 t − tj
Whereas de Casteljau algorithm performs the iterative r
f j,d (t) = j+k−r f j−1 (t) + f jr−1 (t), t j ≤ t < t j+k−r ,
t j+k−r − t j t j+k−r − t j
interpolations for Bézier curves, de Boor algorithm 1 ≤ r ≤ d,
does so for B-splines j = i − d + r, i − d + r + 1, …,i
[TP3,Buss] [TP3,Buss]

pi–1 pi–1
qi qi

Quadratic B-splines qi–1


f(t)
B-splines quadratic
pi
Quadratic B-splines qi–1
f(t)
B-splines quadratic
pi
pi–2 pi–2

Using the de Boor algorithm we first compute qi–1 Then we linearly interpolate between qi–1 and qi in
and qi (note: over two knot intervals): a second round (r = 2) of interpolation:
ti+1 − t t − ti−1 ti+1 − t t − ti
qi−1 = fi−1,2
1
(t) = p i−2 + p i−1 , ti−1 ≤ t < ti+1 2
fi,2 (t) = qi−1 + qi , ti ≤ t < ti+1
ti+1 − ti−1 ti+1 − ti−1 ti+1 − ti ti+1 − ti
t −t t − ti t − t ti+1 − t
qi = fi,2
1
(t) = i+2 p i−1 + p i , ti ≤ t < ti+2 f (t) = i+1 p i−2
ti+2 − ti ti+2 − ti ti+1 − ti ti+1 − ti−1
⎛ t − t t − ti−1 t − ti ti+2 − t ⎞
+ ⎜ i+1 + p i−1
⎝ ti+1 − ti ti+1 − ti−1 ti+1 − ti ti+2 − ti ⎟⎠
t − ti t − ti
+ pi
ti+1 − ti ti+2 − ti

[TP3,Buss] [TP3,Buss]
fi+1(t)
Quadratic B-splines fi(t)
fi+2(t) Interpolation and Basis Functions

The control point pi influences fi,2 (t), fi+1,2 (t), and


fi+2,2 (t), from which we can assemble its blending Bézier B-spline
function: ⎧ t − t t − t interpolation de Casteljau de Boor

i+1 i+1
, ti ≤ t < ti+1 ,
⎪ ti+1 − ti ti+1 − ti−1 Bernstein Cox-de Boor
basis functions
⎪ ti+1 − t t − ti−1 t − ti ti+2 − t polynomials recurrence
⎪ + , ti+1 ≤ t < ti+2 ,
bi (t) = ⎨ ti+1 − ti ti+1 − ti−1 ti+1 − ti ti+2 − ti
⎪ t − ti t − ti
⎪ , ti+2 ≤ t < ti+3 ,
⎪ ti+1 − ti ti+2 − ti
⎪ 0, everywhere!else
! ⎩
[TP3,Buss]

Cox-de Boor Recurrence Cubic B-splines


de Boor algorithm constructs basis functions “bottom-
up”, whereas Cox-de Boor recurrence generates the For 4th order (cubic) B-splines, the
basis functions “top-down” recursive definition starts at bi,4(t):
Let bi,k(t) be a k-th order basis function for weighting
⎪⎧ 1, ti ≤ t < ti+1
control point pi, base: bi,1 (t) = ⎨ bi,1(t) a step function of 1
⎪⎩ 0, otherwise interval
⎧⎪ 1, ti ≤ t < ti+1 (both ≤ for last segment), a piecewise linear “tent”
bi,1 (t) = ⎨ function spanning 2
⎩⎪ 0, otherwise t − ti t −t bi,2(t)
linear: bi,2 (t) = intervals
bi,1 (t) + i+2 bi+1,1 (t)
ti+1 − ti ti+2 − ti+1
t − ti t −t a piecewise quadratic
bi,k (t) = bi,k−1 (t) + i+k bi+1,k−1 (t) quadratic: bi,3 (t) =
t − ti t −t bi,3(t) function spanning 3
ti+k−1 − ti ti+k − ti+1 bi,2 (t) + i+3 bi+1,2 (t) intervals
ti+2 − ti ti+3 − ti+1
a piecewise cubic
• if the denominator is 0 (non-uniform knots), t − ti t −t
cubic: bi,4 (t) = bi,3 (t) + i+4 bi+1,3 (t) bi,4(t) function spanning 4
the basis function is defined to be 0 ti+3 − ti ti+4 − ti+1 intervals
• Cox-de Boor recurrence essentially takes a linear interpolation of linear
Illustrated with uniformly spaced knots
interpolations of linear interpolations, similar to the de Casteljau algorithm
Uniform Cubic Basis Function Local Control Property
Constructed from the Cox-de Boor recurrence For uniform, multi-segment B-spline curves, the knot values are equally
spaced and each basis function is a copy and translate of each other
• taking advantage of fixed interval between knots
We define the entire set of curve segments as one B-spline curve in t:
• considering only intervals for which the basis function n−1

∑ b (t)p , t ∈[3,n]
y(t)

is non-zero f(t) = i i
P’’4 P’’4Curve
P’4
i=0 P’4 Curve

Let!ti = i,!specializing!for!i = 0: The curve is a linear combination of all P4

⎪⎧ 1, ti ≤ t < ti+1
P1 P4 Curve
bi,1 (t) = ⎨ the basis functions of the segments:
⎩⎪ 0, otherwise
⎧ t3 P3
P7
P8

b1,2 (t) = ( t − ti ) bi,1 (t) + ( ti+2 − t ) bi+1,1 (t)


⎪ , 0 ≤ t < 1, b0 (t) b1 (t) b2 (t) b3 (t) b4 (t) b5 (t) b6 (t) b7 (t) b8 (t)
P0 f Q(u)
3 3 fQ5(u)
5

⎪ 6 fQ
4(u)
4
f6Q(u)
6
f8Q(u)
8
t − ti t −t
bi,3 (t) = bi,2 (t) + i+3 bi+1,2 (t) ⎪ −3t 3 + 12t 2 − 12t + 4 P2
P5 Q
f7(u)
7 P6 Knot
2 2
⎪ , 1 ≤ t < 2, Control point
t − ti t −t 6 Watt 00 x(t)
bi,4 (t) =
3
bi,3 (t) + i+4
3
bi+1,3 (t) ⎪⎪ domain of curve
b0,4 (t) = ⎨ ! • each segment is influenced by four
3t 3 − 24t 2 + 60t − 44 b(t)
f(t)

⎪ , 2 ≤ t < 3, 6

(non-zero) basis functions
6 6
b4 (t) • each control point is scaled by a

5

bi (t) 6
B
bi−Bs2 BBs bi−1
single basis function
⎪ −t 3 + 12t 2 − 48t + 64
4
— —2 —1
6

, 3 ≤ t < 4, 3
— • each basis function is non-zero

6

6 2

6 over four successive intervals in t
⎪ 1
— B
bi−Bs3 BBsb t=i t=i+1 t=i+2 t=i+3 t=i+4
each control point influences four
everywhere!else
6 0i

⎪⎩ 0, —3
tt
ti ti+1 ti+2 ti+3 ti+4 ! 0 1
segments (only) local control
[Buss, Shirley, Gleicher] Foley, van Dam 90

Convex Hull Property Uniform Cubic B-spline


f(t)
6 bi (t)

b(u)
6

Segment Basis Functions


5

6 BBs bi−1
B
bi−Bs2
The basis function is ≥ 0 and sums to 4

6
—2 —1

unity in the range ti to ti+4


3

6 ti ti+1 ti+2 ti+3 ti+4
2

all the control points form a convex hull
Basis functions for a single B-spline segment
6
1 BBsb
— B
bi−Bs3
the whole curve is within the convex hull 6 —3 0i

0 1
ut • shifted pieces of a single basis function to u∈[0,1] range
Between knot values, the four basis 3

∑b (t) = 1, ti ≤ t < ti+1 Specializing for i = 0:


functions are non-zero and sum to unity k=0
i−k

u3
At each knot value, one basis function
b (t ) ≥ 0, 3 ≤ i < n, 0 ≤ k ≤ 3
i−k bi,4 (u) = , u = t, !0 ≤ t < 1 b(u)
f(t)
6 6

“switches off” and another “switches on”, and −3u 3 + 3u 2 + 3u + 1
6
5

three basis functions are non-zero and sum to unity bi−1,4 (u) = , u = t − 1, !1 ≤ t < 2 6
4

B
bi−Bs2
—2
BBs bi−1
—1
6 6
3

b0 (t) b1 (t) b2 (t) b3 (t) b4 (t) b5 (t) b6 (t) b7 (t) b8 (t) 3u 3 − 6u 2 + 4 6

bi−2,4 (u) = u = t − 2, !2 ≤ t < 3


2

, 6
6 1

6
B
bi−Bs3 —3
BBsb
0i

(1− u)3 ut
bi−3,4 (u) = , u = t − 3, !3 ≤ t < 4 0 1

! 6
domain of curve [Shirley, Gleicher]
Uniform Cubic B-spline Segment Bézier is Not B-spline
Control points for one segment fi(u) are pi-3, pi-2, Relationship to the control points is different
pi-1, pi, 3 ≤ i < n, recall: the control points can take
on arbitrary values (geometric constraints)
A segment is described as: y(t) P9
P8
Bézier
3 P1 P3
P4 t10 fQ9(u)
∑b
f5Q(u) 9
fi (u) = (u)p i−3+ j , u ∈[0,1]
5
P7
i−3+ j t9
j=0 t5 t6 Q
f88(u)
t3 t8
f66(u)
Q
fQ4(u)
(1− u)3 3u 3 − 6u 2 + 4 t4
4
P6
= p i−3 + p i−2 + f3Q(u) t7 Q
3 f 7(u)
7

6 6 P5
Knot
−3u 3 + 3u 2 + 3u + 1 u3 P0 P2 Control point
p i−1 + p i Foley, van Dam 90
x(t)
6 6
The cubic B-spline segment ⎡ −1 3 −3 1 ⎤ B-spline
basis matrix is: 1 ⎢ 3 −6 3 0 ⎥
B= ⎢ ⎥
6 ⎢ −3 0 3 0 ⎥
⎣⎢ 1 4 1 0 ⎥⎦ Durand

Interpolation with
Interpolation
Multiple Control Points
A B-spline curve doesn’t have to interpolate any A B-spline curve can be made to interpolate one or
of its control points more of its control points by adding multiple control
points of the same value, at the loss of continuity
Examples:

C2G2

C2G1 C2G0

curve becomes a straight


line on either side of the
control points
Watt 00
Interpolation with Non-uniform B-splines
Multiple Control Points Non-uniform B-splines interpolate without causing
Multiple control points reduces continuity: the adjacent segments to become linear by using
intersection between the two convex hulls shrinks multiple knots instead of multiple control points
from a region to a line to a point, and causes the
adjacent segments to become linear The interval between ti and ti+1 may be non-uniform;
Q3 Convex hull when ti = ti+1, curve segment fi is a single point
Q4 Convex hull
P0 P2 P4 P0 P3 P0 P4 P9
y(t) P8

P1 P3 t
(u) P4 10
f5Q fQ9(u)
9
5
P7
curve becomes a t5 t6 t9
Q
f8(u)
Q3 Q4 Q4 straight line on t3
f66(u)
Q
t8 8
Q4
either side of the t4 f4(u) P6
f3Q
(u) t7 Q
control points 3 f77(u)

P5
Q3 Q3 Q4 Knot
P0 P2 Control point
P1 P3 P1 = P2 P4 P1 = P2 = P3 x(t)
Foley, van Dam 90 Foley, van Dam 90
(a) (b) (c)

Interpolation with Multiple Knots Non-Uniform


Uniform B-splines: B-splines Basis Functions
Non-uniform B-splines, Because the intervals between knots are not
multiple knots: uniform, there is no single set of basis functions
t = [ 0,1, 2, 3, 4, 4, 4, 5, 6, 7,8]
f4 (u) and f5 (u) (Q4 and Q5 in figure) shrinks to 0
Instead, the basis functions depend on the intervals
between knot values and are defined recursively in
terms of lower-order basis functions (using the Cox-
Uniform B-splines, de Boor recurrence)
multiple control points:
A Bézier curve is really a non-uniform B-splines with
curve doesn’t no (interior) knot between control points
curve becomes a become a straight • B-splines can be rendered as a Bézier curve, by inserting
straight line on line (though
either side of the continuity is still lost) multiple knots at the control points, with no interior knot!
control points Watt 00
Rational Curves Rational Cubic Bézier
Polynomial curves cannot represent conic sections/ As with homogeneous coordinate, a rational curve is a
quadrics exactly–for modeling machine parts, e.g. nonrational curve that has been perspective projected
Why not? Cubic Bézier:
A conic section in 2D is the • add an extra weight coordinate: wipi = (wixi, wiyi, wizi, wi)
perspective projection (wi is the homogeneous coordinate)
of a parabola in 3D onto 3
• rational due to division by final weight coordinate:
the plane z = 1, with the ∑ w b (u)p i i i
(= perspective divide) f p (u) = i=0
COP at the origin o f(u) 3

• projected to z = 1: ∑ w b (u) i i
Polynomial curves are affine invariant, i=0

but not perspective invariant If the wi’s are all


equal, we recover
Instead, use a rational curve, the nonrational
p (u)
i.e., a ratio of polynomials: f (u) = 1 f p (u) curve
p2 (u)
Merrell, Funkhouser, andrews.edu Ramamoorthi, Watt00

Advantages of Rational Curves Role of the Weights (wi’s)


Both affine and perspective invariant For example: larger w1 means that the pre-image,
nonrational curve near p1 is “further up” in z, and
Can represent conics as rational quadratics the projected image is “pulled” towards p1

Weights (wi’s) provide extra control:


values affect “tension” near control points f(u)

• the wi’s cannot all be simultaneously zero

• if all the wi’s are ≥ 0, the curve is still contained in


the convex hull of the control polygon moving control point changing weight

f p (u)

[Farin] [Farin,Watt]
Non-Uniform Rational B-Splines Advantages of NURBS
3
Most general, can represent:
• B-splines
∑w b i i,k (u)p i
• Bézier and rational Bézier
cubic NURB control points
cubic Bézier control points
f (u) = i=0
3 • conic sections
∑w b i i,k (u)
i=0
Properties:
with: • local control
wi = scalar weight for each control point • convex hull (if wi ≥ 0)
p i = control points • variation diminishing (if wi ≥ 0)
wi p i = (wi xi ,wi yi ,wi zi ,wi ) • invariant under both affine and projective transformations
bi,k (u) = the B-splines basis functions
k = B-splines order Standard tool for representing
freeform curves in CAGD applications
[Farin]

How to Choose a Spline


Hermite curves are good for single segments
when you know the parametric derivative or
want easy control of it
Bézier curves are good for single segments or
patches where a user controls the points
B-splines are good for large continuous curves
and surfaces
NURBS are the most general, and are good
when that generality is useful, or when conic
sections must be accurately represented (CAD)

Chenney

You might also like