Parametric Curves Surfaces

Post on 21-Jul-2016

24 views 1 download

description

school

Transcript of Parametric Curves Surfaces

Parametric Curves & Surfaces

Introduction to Computer GraphicsCSE 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

Parametric curvesgive us more flexibility

xy = x

2x – 2x2

To illustrate, weplot graph of function

What is a parametric curve?

2D parametric curve takes the formxy

f(t)g(t)

Where f(t) and g(t)are functions of t

=

Example: Line thru points a and bxy

(1-t) ax + t bx(1-t) ay+ 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 similarlyxyz

f(t)g(t)h(t)

=

Example: helixxyz

cos(t)sin(t)t

=

Bézier CurvesPolynomial parametric curves

f(t), g(t), h(t) are polynomial functions

Bézier curve b(t)Bézier control points biBézier polygon

Curve mimics shape of polygon

t in [0,1] maps to curve “between” polygonb(0) = b0 and b(1) = bn

figure: degree n=3 (cubic)

Bézier CurvesExamples

linear: b(t) = (1-t) b0 + t b1

quadratic: b(t) = (1-t)2 b0 + 2(1-t)t b1 + t2 b2cubic: 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 CurvesBézier points and Bernstein basisNice, intuitive method to create curves Variable display resolutionMinimal storage needs

Bézier CurvesBézier points and Bernstein basis

Monomial basis: 1, t, t2, t3 ,....ex: quadratic a(t) = a0 + t a1 + t2 a2

a0 is point on curvea1 is first derivative vectora2 is second derivative vector

Not very practical to design curves with!

nice, intuitive method to create curves Compare to

at t=0

Bézier Curveslocal and global parameter intervals

Piecewise Bézier curves global parameter u e.g., time

[u0,u1]

[u1,u2]

Each curve evaluated for t in [0,1]

If specify u in global spacethen must find t in local space

t = (u-u0) / (u1-u0)figure: 2 quadratic curves

Bézier CurvesPiecewise Bézier curves

Conditions to create a smooth transition

Filled squares are “junction” Bezier points-- start/endpoint of a curve

Bézier Curves in OGLBasic steps:

Define curve by specifying degree, control points and parameter space [u0,u1]

Enable evaluatorCall evaluator with parameter u in [u0, u1]

Specify each u:glEvalCoord1*()

Autocreate uniformly spaced u:glMapGrid1*()glEvalMesh1()

glMap1*()

or

Color and texture available too!

Bézier Curve Evaluationde Casteljau algorithm

another example of repeated subdivision

On each polygon leg,construct a point in theratio t : (1-t)

bn0(t) is point on

curve figure: n=3

What is a parametric surface?

3D parametric surface takes the formxyz

f(u,v)g(u,v)h(u,v)

Where f,g,h are bivariate functions of u and v

=

mapping u,v-space to 3-space;this happens to be a function too

Example: x(u,v) =

uvu2 + v2

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 bijBézier control net

Bézier SurfaceStructure

v

(0,0)

u

(1,1)

b00

b33

b30

b03

uv

Bézier SurfacePropertiesboundary curveslie on surface

boundary curvesdefined by boundary polygons

Bézier SurfaceProperties

Nice, intuitive method for creating surfaces

Variable display resolution

Minimal storage

Bézier SurfaceMultiple patches connected smoothly

Conditions on control netsimilar to curves …difficult to do manually

Bézier SurfaceDisplay

wireframe shaded

choose directionisoparametric curves

OGL: glMap2*, glEvalCoord2*glMapGrid2, glEvalMesh2

OGL: triangles & normalscreated for you

NURBSNon-uniform Rational B-splines

B-splines are piecewise polynomialsOne or more Bezier curves /surfacesOne control polygon

Rational: let’s us represent circles exactly

GLU NURBS utility

Trimmed SurfacesParametric surface with parts of the

domain “invisible”

Jorg Peters’ UFL group

GLU Trimmed NURBS utility

SurfLab

domain

References The Essentials of CAGD

by Gerald Farin & DCH, AK Petershttp://eros.cagd.eas.asu.edu/%7Efarin/essbook/essbook.html

Ken Joy’s CAGD notes (UC Davis)http://graphics.cs.ucdavis.edu/CAGDNotes/homepage.html

Jorg Peters’ UFL SurfLab grouphttp://www.cise.ufl.edu/research/SurfLab/index.html

OpenGL Red Book – Chapter 12