chapter 10 curves and surfaces vivian by richard s. wright jr

24
CHAPTER 10 Curves and Surfaces Vivian by Richard S. Wright Jr.

Post on 19-Dec-2015

278 views

Category:

Documents


0 download

TRANSCRIPT

CHAPTER 10

Curves and Surfaces

Vivian

by Richard S. Wright Jr.

Objectives• Introduce OpenGL evaluators• Learn to render polynomial curves

and surfaces• Discuss quadrics in OpenGL

- GLUT Quadrics- GLU Quadrics

What Does OpenGL Support?

• Evaluators: a general mechanism for working with the Bernstein polynomials- Can use any degree polynomials- Can use in 1-4 dimensions- Automatic generation of normals and texture coordinates- NURBS supported in GLU

• Quadrics– GLU and GLUT contain polynomial

approximations of quadrics

Quadrics

Quadrics• Void

gluQuadricDrawStyle(GLUquadricObj *obj, GLenum drawStyle);

• void gluQuadricNormals(GLUquadricObj *pbj, GLenum normals);

Draw a quadrics• Draw a sphere:

– void gluSphere(GLUQuadricObj *obj, GLdouble radius, GLint slices, GLint stacks);

Draw a quadrics

void gltDrawUnitAxes(void)

Curves and Surfaces 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?2D parametric curve takes the form

xy

f(t)g(t)

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

=

Example: Line thru points a and b

xy

(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

y = mx + b

What is a parametric curve?3D curves defined similarly

xyz

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

=

Example: helix

xyz

cos(t)sin(t)t

=

Parametric representation of curves and surfaces.

Control Points

The order of the curve is represented by the number of control points used to describe its shape. The degree is one less than the order of the curve.

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

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

Continuity

Bézier Curves in OpenGL

Basic 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!

What is a parametric surface?

3D parametric surface takes the form

xyz

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) =

uv

u2 + v2

Bézier Surfaces in OpenGL

Basic steps:

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

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

glMap2*()

Bézier SurfaceMultiple patches connected smoothly

Conditions on control netsimilar to curves …difficult to do manually

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

From Bézier to B-Splines

Creating a NURBS Surface• Evaluator →NURBS• Knots

Trimming

Trimmed SurfacesParametric surface with parts of the

domain “invisible”

Jorg Peters’ UFL group

GLU Trimmed NURBS utility

Surf

Lab

domain