Parametric Curves & Surfaces Introduction to Computer Graphics CSE 470/598 Arizona State University Dianne Hansford Overview • • • • • • What is a parametric curve/surface? Why use parametric curves & surfaces? Bézier curves & surfaces NURBS Trimmed surfaces OpenGL library What is a parametric curve? Recall functions from calculus ... Example: y = 2x – 2x2 x y = x 2x – 2x2 Parametric curves give us more flexibility To illustrate, we plot graph of function What is a parametric curve? 2D parametric curve takes the form x y = f(t) g(t) Where f(t) and g(t) are functions of t Example: Line thru points a and b x y = (1-t) (1-t) ax + t b x a y+ t by Mapping of the real line to 2D: here t in [0,1] line segment a,b What is a parametric curve? 3D curves defined similarly x y z = f(t) g(t) h(t) Example: helix x y z = cos(t) sin(t) t Bézier Curves Polynomial parametric curves f(t), g(t), h(t) are polynomial functions Bézier curve b(t) Bézier control points bi Bézier polygon Curve mimics shape of polygon t in [0,1] maps to curve “between” polygon b(0) = b0 and b(1) = bn figure: degree n=3 (cubic) Bézier Curves Examples linear: b(t) = (1-t) b0 + t b1 quadratic: b(t) = (1-t)2 b0 + 2(1-t)t b1 + t2 b2 cubic: b(t) = (1-t)3 b0 + 3(1-t)2 t b1 + 3(1-t)t2 b2 + t3 b3 Bernstein basis Bin (t) = {n!/(n-i)! i!} (1-t)n-i ti n=1 n=2 n=3 Bézier Curves Bézier Curves Bézier points and Bernstein basis Nice, intuitive method to create curves Variable display resolution Minimal storage needs Bézier Curves Bézier points and Bernstein basis nice, intuitive method to create curves Compare to Monomial basis: 1, t, t2, t3 ,.... ex: quadratic a(t) = a0 + t a1 + t2 a2 a0 is point on curve a1 is first derivative vector at t=0 a2 is second derivative vector Not very practical to design curves with! Bézier Curves local and global parameter intervals Piecewise Bézier curves global parameter u e.g., time Each curve evaluated for t in [0,1] [u0,u1] If specify u in global space then must find t in local space t = (u-u0) / (u1-u0) [u1,u2] figure: 2 quadratic curves Bézier Curves Piecewise Bézier curves Conditions to create a smooth transition Filled squares are “junction” Bezier points -- start/endpoint of a curve Bézier Curves in OGL Basic steps: Define curve by specifying degree, control points and parameter space [u0,u1] Enable evaluator Call evaluator with parameter u in [u0, u1] Specify each u: glEvalCoord1*() or glMap1*() Autocreate uniformly spaced u: glMapGrid1*() glEvalMesh1() Color and texture available too! Bézier Curve Evaluation de Casteljau algorithm another example of repeated subdivision On each polygon leg, construct a point in the ratio t : (1-t) bn0(t) is point on curve figure: n=3 What is a parametric surface? 3D parametric surface takes the form x y z = f(u,v) g(u,v) h(u,v) Where f,g,h are bivariate functions of u and v Example: x(u,v) = u v u2 + v2 mapping u,v-space to 3-space; this happens to be a function too Bézier Surface (Patch) Polynomial parametric surface f(u,v), g(u,v), h(u,v) are polynomial functions written in the Bernstein basis Bézier surface b(u,v) Bézier control points bij Bézier control net Bézier Surface Structure b33 b03 (1,1) v b30 v u (0,0) u b00 Bézier Surface Properties boundary curves lie on surface boundary curves defined by boundary polygons Bézier Surface Properties Nice, intuitive method for creating surfaces Variable display resolution Minimal storage Bézier Surface Multiple patches connected smoothly Conditions on control net similar to curves … difficult to do manually Bézier Surface Display wireframe choose direction isoparametric curves shaded OGL: triangles & normals created for you OGL: glMap2*, glEvalCoord2* glMapGrid2, glEvalMesh2 NURBS Non-uniform Rational B-splines B-splines are piecewise polynomials One or more Bezier curves /surfaces One control polygon Rational: let’s us represent circles exactly GLU NURBS utility Trimmed Surfaces Parametric surface with parts of the domain “invisible” Surf Lab domain Jorg Peters’ UFL group GLU Trimmed NURBS utility References The Essentials of CAGD by Gerald Farin & DCH, AK Peters http://eros.cagd.eas.asu.edu/%7Efarin/essbook/essbook.h tml Ken Joy’s CAGD notes (UC Davis) http://graphics.cs.ucdavis.edu/CAGDNotes/homepage.html Jorg Peters’ UFL SurfLab group http://www.cise.ufl.edu/research/SurfLab/index.html OpenGL Red Book – Chapter 12