Title: Blossoms
1Blossoms
- CS 419
- Advanced Topics in Computer Graphics
- John C. Hart
- Borrowed somewhat from Tom Sederbergs notes
2de Casteljau
p1
p12
p2
p012
1-t
- de Casteljau algorithmevaluates a point on
aBezier curve byscaffolding lerps - Blossoming renames thecontrol and
intermediatepoints, like p12, using apolar
form, like p(0,t,1)
p123
p0123
p01
p23
t
p0
p3
3de Casteljau
p(1,0,0)
p12
p(1,1,0)
p012
1-t
- de Casteljau algorithmevaluates a point on
aBezier curve byscaffolding lerps - Blossoming renames thecontrol and
intermediatepoints, like p12, using apolar
form, like p(0,t,1)
p123
p0123
p01
t
p23
p(0,0,0)
p(1,1,1)
4de Casteljau
p(1,0,0)
p(1,t,0)
p(1,1,0)
p012
1-t
- de Casteljau algorithmevaluates a point on
aBezier curve byscaffolding lerps - Blossoming renames thecontrol and
intermediatepoints, like p12, using apolar
form, like p(0,t,1)
p123
p0123
p(t,0,0)
t
p(1,1,t)
p(0,0,0)
p(1,1,1)
5de Casteljau
p(1,0,0)
p(1,t,0)
p(1,1,0)
p(t,t,0)
1-t
- de Casteljau algorithmevaluates a point on
aBezier curve byscaffolding lerps - Blossoming renames thecontrol and
intermediatepoints, like p12, using apolar
form, like p(0,t,1)
p(1,t,t)
p0123
p(t,0,0)
t
p(1,1,t)
p(0,0,0)
p(1,1,1)
6de Casteljau
p(1,0,0)
p(1,t,0)
p(1,1,0)
p(t,t,0)
1-t
- de Casteljau algorithmevaluates a point on
aBezier curve byscaffolding lerps - Blossoming renames thecontrol and
intermediatepoints, like p12, using apolar
form, like p(0,t,1)
p(1,t,t)
p(t,t,t)
p(t,0,0)
t
p(1,1,t)
p(0,0,0)
p(1,1,1)
7Blossoming Rules
p(1,0,0)
p(1,t,0)
p(1,1,0)
p(t,t,0)
1-t
- of parameters degree
- Order doesnt matter
- p(a,b,c) p(b,a,c)
- Linear in any parameter
- ap(a,b,c) p(aa,b,c) p(a,ab,c)
- p(a,bc,d) p(a,b,d) p(a,c,d)
- Lerping
- (1-t) p(0,0,0) t p(1,0,0) p(0 (1-t),0,0)
p(1 t,0,0) - p(0 (1-t) 1 t,0,0) p(t,0,0)
p(1,t,t)
p(t,t,t)
p(t,0,0)
t
p(1,1,t)
p(0,0,0)
p(1,1,1)
8Evaluation
p(1,0,0)
p(1,t,0)
p(1,1,0)
p(t,t,0)
1-t
- Goal is to find p(t) bydiagonalization,
bymanipulating blossomsinto p(t,t,t) - de Casteljau algorithm blossomsinto Bernstein
polynomials
p(1,t,t)
p(t,t,t)
p(t,0,0)
t
p(1,1,t)
p(0,0,0)
p(1,1,1)
p(t) p(t,t,t) (1-t) p(t,t,0) t p(t,t,1)
(1-t)(1-t) p(t,0,0) t p(t,0,1) t (1-t)
p(t,0,1) t p(t,1,1) (1-t)2 p(t,0,0)
2 (1-t) t p(t,0,1) t2
p(t,1,1) (1-t)2(1-t)p(0,0,0)tp(1,0,0)2
(1-t)t (1-t)p(0,0,1)tp(1,0,1)t2(1-t)p(0,1,1)
tp(1,1,1) (1-t)3 p(0,0,0) 3 (1-t)2 t
p(0,0,1) 3 (1-t) t2 p(0,1,1) t3 p(1,1,1)
9B-Spline Blossoms
- Three segments 2,3,3,4,4,5
- Points within each segment influenced by four
surrounding control points - Knots influenced by three surrounding control
points - Need two extra knots ateach end of knot
vector(in general, d-1 extraknots at each end)
p(2,3,4)
p(3,4,5)
t3
t4
p(1,2,3)
p(4,5,6)
t2
t5
p(0,1,2)
p(5,6,7)
knot vector 0 1 2 3 4 5 6 7
10Bohm Blossoms
- Trick Think of each segmentas a Bezier curve
p(2,3,4)
p(3,4,5)
t3
t4
p(1,2,3)
p(4,5,6)
t2
t5
p(0,1,2)
p(5,6,7)
knot vector 0 1 2 3 4 5 6 7
11Bohm Blossoms
- Trick Think of each segmentas a Bezier curve
p(2,3,4)
p(3,4,5)
p(3,3,3)
p(4,4,4)
p(1,2,3)
p(4,5,6)
p(2,2,2)
p(5,5,5)
p(0,1,2)
p(5,6,7)
knot vector 0 1 2 3 4 5 6 7
12Bohm Blossoms
- Trick Think of each segmentas a Bezier curve
- Where should the othertwo control points gofor
the 2,3 segment?
p(2,3,4)
p(3,4,5)
p(3,3,3)
p(1,2,3)
p(4,5,6)
p(2,2,2)
p(0,1,2)
p(5,6,7)
knot vector 0 1 2 3 4 5 6 7
13Bohm Blossoms
- Trick Think of each segmentas a Bezier curve
- Where should the othertwo control points gofor
the 2,3 segment? - Need to find
- p(2,2,3) 2/3 p(1,2,3) 1/3 p(4,2,3)
- p(3,2,3) 1/3 p(1,2,3) 2/3 p(4,2,3)
p(4,2,3)
p(3,4,5)
p(3,2,3)
p(3,3,3)
p(2,2,3)
p(1,2,3)
p(4,5,6)
p(2,2,2)
p(0,1,2)
p(5,6,7)
knot vector 0 1 2 3 4 5 6 7
14Bohm Blossoms
- Where are the endpoints located?
- Need to find
- p(2,1,2) 1/3 p(0,1,2) 2/3 p(3,1,2)
- p(3,4,3) 2/3 p(3,4,2) 1/3 p(3,4,5)
- p(2,2,2) 1/2 p(2,1,2) 1/2 p(2,3,2)
- p(3,3,3) 1/2 p(3,2,3) 1/2 p(3,4,3)
- Reveals how to turn a B-splineinto a Bezier
curve!
p(3,4,2)
p(3,4,5)
p(3,4,3)
p(3,2,3)
p(3,3,3)
p(2,3,2)
p(3,1,2)
p(2,2,2)
p(2,1,2)
p(0,1,2)
knot vector 0 1 2 3 4 5 6 7
15Knot Insertion
- Suppose we want to add aknot at t 3.5
p(2,3,4)
p(3,4,5)
t3
t4
p(1,2,3)
p(4,5,6)
t2
t5
p(0,1,2)
p(5,6,7)
knot vector 0 1 2 3 4 5 6 7
16Knot Insertion
- Suppose we want to add aknot at t 3.5
- Then we need new cpsp(2,3,3.5), p(3,3.5,4)and
p(3.5,4,5)and can get rid ofp(2,3,4) and
p(3,4,5)
p(3,3.5,4)
p(2,3,4)
p(3,4,5)
p(3.5,4,5)
p(2,3,3.5)
t3
t4
p(1,2,3)
p(4,5,6)
t2
t5
p(0,1,2)
p(5,6,7)
knot vector 0 1 2 3 4 5 6 7
17Knot Insertion
- Suppose we want to add aknot at t 3.5
- Then we need new cpsp(2,3,3.5), p(3,3.5,4)and
p(3.5,4,5)and can get rid ofp(2,3,4) and
p(3,4,5)
p(3,3.5,4)
p(3.5,4,5)
p(2,3,3.5)
t3.5
p(1,2,3)
p(4,5,6)
t2
t5
p(0,1,2)
p(5,6,7)
knot vector 0 1 2 3 3.5 4 5 6 7
18de Boor Algorithm
- What if we want toevaluate p(3.5)?
- Then create a triple knotat t 3.5 and figure
outwhere to put the controlpoint p(3.5,3.5,3.5)
p(3,3.5,4)
p(3.5,4,5)
p(2,3,3.5)
t3.5
p(1,2,3)
p(4,5,6)
t2
t5
p(0,1,2)
p(5,6,7)
knot vector 0 1 2 3 3.5 4 5 6 7
19de Boor Algorithm
- What if we want toevaluate p(3.5)?
- Then create a triple knotat t 3.5 and figure
outwhere to put the controlpoint p(3.5,3.5,3.5) - Need p(3,3.5,3.5)and p(3.5,3.5,4)
- Also subdivides B-spline into0,1,2,3,3.5,3.5,3.5
and3.5,3.5,3.5,4,5,6,7
p(3,3.5,4)
p(3.5,3.5,4)
p(3,3.5,3.5)
p(3.5,4,5)
p(2,3,3.5)
p(3.5,3.5,3.5)
p(1,2,3)
p(4,5,6)
p(0,1,2)
p(5,6,7)
knot vector 0 1 2 3 3.5 3.5 3.5 4 5 6 7