Presentation is loading. Please wait.

Presentation is loading. Please wait.

Blossoms CS 419 Advanced Topics in Computer Graphics John C. Hart

Similar presentations


Presentation on theme: "Blossoms CS 419 Advanced Topics in Computer Graphics John C. Hart"— Presentation transcript:

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: [ ]


Download ppt "Blossoms CS 419 Advanced Topics in Computer Graphics John C. Hart"

Similar presentations


Ads by Google