Outline of Unit Outline of Unit Foundations of Computer Graphics Foundations of Computer Graphics (Spring 2012) (Spring 2012) Bezier curves (last time) CS 184, Lecture 13: Curves 2 deCasteljau algorithm, explicit, matrix (last time) http://inst.eecs.berkeley.edu/~cs184 Polar form labeling (blossoms) B-spline curves Not well covered in textbooks (especially as taught here). Main reference will be lecture notes. If you do want a printed ref, handouts from CAGD, Seidel Idea of Blossoms/Polar Forms Idea of Blossoms/Polar Forms Idea of Blossoms/Polar Forms Idea of Blossoms/Polar Forms (Optional) Labeling trick for control points and intermediate Points on curve simply have u 1 =u 2 so that F(u) = f(u,u) deCasteljau points that makes thing intuitive f is symmetric f(0,1) = f(1,0) E.g. quadratic Bezier curve F(u) Only interpolate linearly between points with one arg different Define auxiliary function f(u 1 ,u 2 ) [number of args = degree] f(0,u) = (1-u) f(0,0) + u f(0,1) Here, interpolate f(0,0) and f(0,1)=f(1,0) Points on curve simply have u 1 =u 2 so that F(u) = f(u,u) And we can label control points and deCasteljau points not on curve with appropriate values of (u 1 ,u 2 ) f(0,1)=f(1,0) f(0,1)=f(1,0) 00 01 11 1-u u 1-u u 0u 1u 1-u u f(u,u) = F(u) f(u,u) = F(u) uu F(u) = f(uu) = (1-u) 2 P0 + 2u(1-u) P1 + u 2 P2 f(0,0) = F(0) f(1,1) = F(1) f(0,0) = F(0) f(1,1) = F(1) Geometric interpretation: Quadratic Polar Forms: Cubic Bezier Curve Polar Forms: Cubic Bezier Curve Geometric interpretation: Quadratic 01=10 001 011 u 1u 1-u 111 000 1-u u 000 001 011 111 1-u u 1-u u 1-u u uu 0u 00u 01u 11u u 1-u u 1-u u 0uu 1uu 00 11 u 1-u uuu 1
Geometric Interpretation: Cubic Why Polar Forms? Why Polar Forms? Simple mnemonic: which points to interpolate and 001 0u1 011 how in deCasteljau algorithm uu1 Easy to see how to subdivide Bezier curve (next) u11 which is useful for drawing recursively uuu 0uu Generalizes to arbitrary spline curves (just label control points correctly instead of 00 01 11 for Bezier) 00u Easy for many analyses (beyond scope of course) 000 111 Geometrically Subdividing Bezier Curves Subdividing Bezier Curves Drawing: Subdivide into halves (u = ½) Demo: hw4.exe Recursively draw each piece 001 0½1 011 At some tolerance, draw control polygon Trivial for Bezier curves (from deCasteljau algorithm): hence ½½½ widely used for drawing 0½½ ½½1 000 001 011 111 00½ ½11 000 00u 0uu uuu uuu uu1 u11 111 Why specific labels/ control points on left/right? How do they follow from deCasteljau? 000 111 Geometrically Subdivision in deCasteljau deCasteljau diagram diagram Subdivision in 001 011 001 0½1 011 111 ½½½ 000 These (interior) points don’t 0½½ ½½1 appear in subdivided curves at all 000 001 011 111 00½ ½11 1-u u 1-u u 1-u u 00u 01u 11u Right part of Bezier curve Left part of Bezier curve 1-u u 1-u u (000, 00u, 0uu, uuu) (uuu, 1uu, 11u, 111) 0uu 1uu Always right edge of Always left edge of deCasteljau pyramid deCasteljau pyramid u 1-u 000 111 uuu 2
Summary for HW 2 Summary for HW 2 DeCasteljau DeCasteljau: Recursive Subdivision : Recursive Subdivision Bezier2 (Bezier discussed last time) Given arbitrary degree Bezier curve, recursively subdivide for some levels, then draw control polygon hw4.exe Generate deCasteljau diagram; recursively call a routine with left edge and right edge of this diagram You are given some code structure; you essentially just DeCasteljau (from last lecture) for midpoint need to compute appropriate control points for left, right Followed by recursive calls using left, right parts Outline of Unit Bezier: Disadvantages Outline of Unit Bezier: Disadvantages Single piece, no local control (move a control point, whole curve changes) hw4.exe Bezier curves (last time) Complex shapes: can be very high degree, difficult deCasteljau algorithm, explicit, matrix (last time) In practice, combine many Bezier curve segments Polar form labeling (blossoms) But only position continuous at join since Bezier curves B-spline curves interpolate end-points (which match at segment boundaries) Unpleasant derivative (slope) discontinuities at end-points Can you see why this is an issue? Not well covered in textbooks (especially as taught here). Main reference will be lecture notes. If you do want a printed ref, handouts from CAGD, Seidel B B- -Splines Splines Polar Forms: Cubic Polar Forms: Cubic Bspline Bspline Curve Curve Cubic B-splines have C 2 continuity, local control Labeling little different from in Bezier curve 4 segments / control point, 4 control No interpolation of end-points like in Bezier points/segment Advantage of polar forms: easy to generalize Knots where two segments join: Knotvector Knotvector uniform/non-uniform (we only consider –1 0 1 0 1 2 uniform cubic B-splines, not general NURBS) Uniform knot vector: -2, -1, 0, 1, 2 ,3 Knot: C 2 continuity Demo: hw4.exe Labels correspond to this deBoor points 1 2 3 -2 –1 0 3
deCasteljau: Cubic B : Cubic B- -Splines Splines deCasteljau: Cubic B : Cubic B- -Splines Splines deCasteljau deCasteljau Easy to generalize using –1 0 1 Easy to generalize using –1 0 1 0 1 2 0 1 2 polar-form labels polar-form labels Impossible remember Impossible remember 1 2 3 1 2 3 -2 –1 0 -2 –1 0 without without -2 -1 0 -1 0 1 0 1 2 1 2 3 -2 -1 0 -1 0 1 0 1 2 1 2 3 ? ? ? ? ? ? (2+u)/3 (1-u)/3 (1+u)/3 (2-u)/3 u/3 1-u/3 -1 0 u 0 1 u -1 0 u 0 1 u 1 2 u 1 2 u ? ? ? ? 0 u u 1 u u deCasteljau: Cubic B : Cubic B- -Splines Splines deCasteljau Explicit Formula (derive as exercise) Explicit Formula (derive as exercise) P 0 Easy to generalize using 1 3 3 1 –1 0 1 0 1 2 1 M M P 1 3 6 3 0 polar-form labels 3 2 ( ) [ 1] F u u u u 6 3 0 3 0 2 P Impossible remember 1 2 3 1 4 1 0 -2 –1 0 3 P without P0 P1 P2 P3 -2 -1 0 0 1 2 1 2 3 -1 0 1 -2 -1 0 -1 0 1 0 1 2 1 2 3 (2+u)/3 (1-u)/3 (1-u)/3 (2+u)/3 (1+u)/3 (1+u)/3 (2-u)/3 (2-u)/3 1-u/3 u/3 u/3 1-u/3 -1 0 u 0 1 u 1 2 u -1 0 u 0 1 u 1 2 u (1+u)/2 (1-u)/2 (1-u)/2 (1+u)/2 1-u/2 u/2 1-u/2 u/2 0 u u 1 u u 0 u u 1 u u 1-u u 1-u u u u u u u u Summary of HW 2 Summary of HW 2 BSpline Demo hw4.exe Arbitrary number of control points / segments Do nothing till 4 control points (see demo) Number of segments = # cpts – 3 Segment A will have control pts A,A+1,A+2,A+3 Evaluate Bspline for each segment using 4 control points (at some number of locations, connect lines) Use either deCasteljau algorithm (like Bezier) or explicit form [matrix formula on previous slide] Questions? 4
Recommend
More recommend