Bspline Notes
Jordan Smith
UC Berkeley
CS184
Outline
• Bézier Basis Polynomials– Linear– Quadratic– Cubic
• Uniform Bspline Basis Polynomials– Linear– Quadratic– Cubic
• Uniform Bsplines from Convolution
Review of Bézier CurvesDeCastlejau Algorithm
V001
V111V000
V011
Insert at t = ¾
Review of Bézier CurvesDeCastlejau Algorithm
001
000 111
011
Insert at t = ¾
Review of Bézier CurvesDeCastlejau Algorithm
001
000 111
011
00¾
¾11
0¾1
Insert at t = ¾
Review of Bézier CurvesDeCastlejau Algorithm
001
000 111
011
00¾
¾¾1
¾11
0¾10¾¾
Insert at t = ¾
Review of Bézier CurvesDeCastlejau Algorithm
001
000 111
011
00¾
¾¾1
¾11
0¾10¾¾
¾¾¾
Insert at t = ¾
Review of Bézier CurvesDeCastlejau Algorithm
001
000 111
011
00¾
¾¾1
¾11
0¾10¾¾
¾¾¾
Insert at t = ¾
Review of Bézier CurvesDeCastlejau Algorithm
001
000 111
011
00¾
¾¾1
¾11
0¾10¾¾
¾¾¾
Insert at t = ¾
Review of Bézier CurvesDeCastlejau Algorithm
001
000 111
011
00¾
¾¾1
¾11
0¾10¾¾
¾¾¾
Insert at t = ¾
Bézier Curves Summary
• DeCastlejau algorithm– Evaluate Position(t) and Tangent(t)– Subdivides the curve into 2 subcurves with
independent control polygons
• Subdivision of Bézier curves and convex hull property allows for:– Adaptive rendering based on a flatness criterion– Adaptive collision detection using line segment
tests
Linear Bézier Basis Poly’s
Bez1(t) = Vt
V0 V1
V0 Vt V1
= (1-t) V0 + t V1
1-t t
Knots:-1 0 1 2
Quadratic Bézier Basis Poly’sV01
Vtt
V0t Vt1
V00 V01 V11
1-t t1-t t
1-t t
Bez2(t) = = (1-t)2 V00
+ 2(1-t)t V01
+ t2 V11
V00
V0t
V11
Vt1Vtt
Knots:
Quadratic Bézier Basis Poly’s
Bez2(t) = (1-t)2 V00 + 2(1-t)t V01 + t2 V11
-1 0 1 2
Cubic Bézier Basis Poly’s001
111
011
00t
tt1
t11
0t1
0tt ttt
Vttt
V0tt Vtt1
V00t V0t1 Vt11
V111V011V001V000
1-t t1-t t1-t t
1-t t1-t t
1-t t
Bez3(t) = = (1-t)3 V000
+ 3(1-t)2t V001
+ 3(1-t)t2 V011
+ t3 V111
000
Knots:
Cubic Bézier Basis Poly’s
Bez3(t) = (1-t)3 V000 + 3(1-t)2t V001 + 3(1-t)t2 V011 + t3 V111
-1 0 1 2
Blossoming of Bsplines234
123 456
345
0 1 765432Knots:
Blossoming of Bsplines234
123 456
345
233.5 3.545
33.54
0 1 765432 3.5Knots:
Blossoming of Bsplines234
123 456
345
233.5 3.545
33.5433.53.5 3.53.54
0 1 765432 3.5Knots:
Blossoming of Bsplines234
123 456
345
233.5 3.545
33.5433.53.5 3.53.54
0 1 765432 3.5
3.53.53.5
Knots:
Bspline Blossoming Summary• Blossoming of Bsplines is a generalization of the
DeCastlejau algorithm• Control point index triples on the same control
line share 2 indices with each other• Inserting a knot (t value)
– Adds a new control point and curve segment– Adjusts other control points to form a control polygon
• Inserting the same t value reduces the parametric continuity of the curve
• A control point triple with all 3 indices equal is a point on the Bspline curve
Uniform Linear Bspline Basis Poly’s
B1(t) = Vt
V0 V1
V0 Vt V1
= (1-t) V0 + t V1
1-t t
Knots:-1 0 1 2
Uniform Quadratic Bspline Basis Poly’s
B2(t) =
Vtt
V0t Vt1
V-10 V01 V12
2
11
t
2
1t
21
t
2
t
t1 t
V01
12
2
01
2
10-
2
V2
V2
221
V2
1
t
tt
t
Vt1V0t
V-10 V12
Vtt
Uniform Quadratic Bspline Basis Poly’s
12
2
01
2
10-
2
2 V2
V2
221V
2
1)(B
ttttt
Knots:-2 -1 0 1 32
V-10 V01 V12
Uniform Cubic Bspline Basis Poly’s
B3(t) =
123
3
012
32
101-
32
10-2-
3
V6
V6
3331
V6
364
V6
1
t
ttt
tt
t
V123V012V-101V-2-10
Vttt
V0tt Vtt1
V-10t V0t1 Vt12
3
21
t
3
2t
3
11
t
3
1t
31
t
3
t
2
11
t
2
1t
21
t
2
t
t1 t
-101
123
012
-10ttt1
t12
0t10tt
ttt
-2-10
Uniform Cubic Bspline Basis Poly’s
123
3
012
32
101-
32
10-2-
3
3 V6
V6
3331V
6
364V
6
1)(B
tttttttt
Knots:-3 -2 -1 0 1 432
V-2-10 V-101 V012 V123
Uniform Bsplines from Convolution
10 10 2 3 0 321 4
10 2
=
10
10
10 2 3
=
10 2
=
10
dssgstftgtf )()()()(