Parametric Curves & Surfaces Introduction to Computer Graphics CSE 470/598 Arizona State University

advertisement
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
Download