Download presentation
Presentation is loading. Please wait.
Published byRosamond Robertson Modified over 8 years ago
1
Blossoms CS 419 Advanced Topics in Computer Graphics John C. Hart
Borrowed somewhat from Tom Sederberg’s notes
2
de Casteljau p1 p12 p2 p012 1-t de Casteljau algorithm evaluates a point on a Bezier curve by scaffolding lerps Blossoming renames the control and intermediate points, like p12, using a polar form, like p(0,t,1) p123 p0123 p01 t p23 p0 p3
3
de Casteljau p(1,0,0) p12 p(1,1,0) p012 1-t
de Casteljau algorithm evaluates a point on a Bezier curve by scaffolding lerps Blossoming renames the control and intermediate points, like p12, using a polar form, like p(0,t,1) p123 p0123 p01 t p23 p(0,0,0) p(1,1,1)
4
de Casteljau p(1,0,0) p(1,t,0) p(1,1,0) p012 1-t
de Casteljau algorithm evaluates a point on a Bezier curve by scaffolding lerps Blossoming renames the control and intermediate points, like p12, using a polar 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)
5
de Casteljau p(1,0,0) p(1,t,0) p(1,1,0) p(t,t,0) 1-t
de Casteljau algorithm evaluates a point on a Bezier curve by scaffolding lerps Blossoming renames the control and intermediate points, like p12, using a polar 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)
6
de Casteljau p(1,0,0) p(1,t,0) p(1,1,0) p(t,t,0) 1-t
de Casteljau algorithm evaluates a point on a Bezier curve by scaffolding lerps Blossoming renames the control and intermediate points, like p12, using a polar 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)
7
Blossoming Rules p(1,0,0) p(1,t,0) p(1,1,0) p(t,t,0) 1-t
# of parameters = degree Order doesn’t 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,b+c,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)
8
Evaluation p(1,0,0) p(1,t,0) p(1,1,0) p(t,t,0) 1-t
Goal is to find p(t) by diagonalization, by manipulating blossoms into p(t,t,t) de Casteljau algorithm blossoms into 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) (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)
9
B-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 at each end of knot vector (in general, d-1 extra knots at each end) p(2,3,4) p(3,4,5) t=3 t=4 p(1,2,3) p(4,5,6) t=2 t=5 p(0,1,2) p(5,6,7) knot vector: [ ]
10
Bohm Blossoms Trick: Think of each segment as a Bezier curve p(2,3,4)
knot vector: [ ]
11
Bohm Blossoms Trick: Think of each segment as a Bezier curve p(2,3,4)
knot vector: [ ]
12
Bohm Blossoms Trick: Think of each segment as a Bezier curve p(2,3,4)
Where should the other two control points go for 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: [ ]
13
Bohm Blossoms Trick: Think of each segment as a Bezier curve p(4,2,3)
Where should the other two control points go for 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: [ ]
14
Bohm 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-spline into a Bezier curve! p(3,4,2) p(3,4,3) p(3,4,5) 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: [ ]
15
Knot Insertion Suppose we want to add a knot at t = 3.5 p(2,3,4)
knot vector: [ ]
16
Knot Insertion Suppose we want to add a knot at t = 3.5
Then we need new cp’s p(2,3,3.5), p(3,3.5,4) and p(3.5,4,5) and can get rid of p(2,3,4) and p(3,4,5) p(3,3.5,4) p(2,3,4) p(3,4,5) p(2,3,3.5) p(3.5,4,5) t=3 t=4 p(1,2,3) p(4,5,6) t=2 t=5 p(0,1,2) p(5,6,7) knot vector: [ ]
17
Knot Insertion Suppose we want to add a knot at t = 3.5
Then we need new cp’s p(2,3,3.5), p(3,3.5,4) and p(3.5,4,5) and can get rid of p(2,3,4) and p(3,4,5) p(3,3.5,4) p(2,3,3.5) p(3.5,4,5) t=3.5 p(1,2,3) p(4,5,6) t=2 t=5 p(0,1,2) p(5,6,7) knot vector: [ ]
18
de Boor Algorithm What if we want to evaluate p(3.5)?
Then create a triple knot at t = 3.5 and figure out where to put the control point p(3.5,3.5,3.5) p(3,3.5,4) p(2,3,3.5) p(3.5,4,5) t=3.5 p(1,2,3) p(4,5,6) t=2 t=5 p(0,1,2) p(5,6,7) knot vector: [ ]
19
de Boor Algorithm What if we want to evaluate p(3.5)? p(3,3.5,4)
Then create a triple knot at t = 3.5 and figure out where to put the control point 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 into [0,1,2,3,3.5,3.5,3.5] and [3.5,3.5,3.5,4,5,6,7] p(3,3.5,4) p(3,3.5,3.5) p(3.5,3.5,4) p(2,3,3.5) p(3.5,4,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: [ ]
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.