Bezier (1)

Preview:

Citation preview

MAE 152Computer Graphics for Scientists

and Engineers

Splines and Bezier Curves

Introduction• |Representing Curves

– A number of small line-segments joined

• Interpolation

• Parametric equations

• Types of curve we study– Natural Cubic Splines and Bezier Curves

• Derivation

• Implementation

“Computers can’t draw curves.”

The more points/line segments that are used, the smoother the curve.

Why have curves ?

• Representation of “irregular surfaces”• Example: Auto industry (car body design)

– Artist’s representation– Clay / wood models– Digitizing– Surface modeling (“body in white”)– Scaling and smoothening– Tool and die Manufacturing

Curve representation• Problem: How to represent a curve easily

and efficiently

• “Brute force and ignorance” approaches:• storing a curve as many small straight line

segments– doesn’t work well when scaled – inconvenient to have to specify so many points– need lots of points to make the curve look smooth

• working out the equation that represents the curve– difficult for complex curves– moving an individual point requires re-calculation of the

entire curve

Solution - Interpolation

•Define a small number of points

•Use a technique called “interpolation” to invent the extra points for us.

•Join the points with a series of (short) straight lines

The need for smoothness• So far, mostly polygons• Can approximate any geometry, but

– Only approximate– Need lots of polygons to hide discontinuities

• Storage problems– Math problems

• Normal direction• Texture coordinates

– Not very convenient as modeling tool• Gets even worse in animation

– Almost always need smooth motion

Geometric modeling• Representing world geometry in the computer

– Discrete vs. continuous again• At least some part has to be done by a human

– Will see some automatic methods soon• Reality: humans are discrete in their actions• Specify a few points, have computer create

something which “makes sense”– Examples: goes through points, goes “near” points

Requirements• Want mathematical smoothness

– Some number of continuous derivatives of P• Local control

– Local data changes have local effect• Continuous with respect to the data

– No wiggling if data changes slightly• Low computational effort

A solution• Use SEVERAL polynomials• Complete curve consists of several pieces• All pieces are of low order

– Third order is the most common• Pieces join smoothly• This is the idea of spline curves

– or just “splines”

Parametric Equations - linear

x0 ,y0

x1,y1

dy

dx

(13,8)

(2,3)

P0

P1

(7.5,4)

Walk from P0 to P1 at a constant speed.Start from P0 at t=0

Arrive at P1 at t=1

dx = x1 - x0

dy = y1 - y0

Where are you at a general time t?x(t) = x0 + t.dx

y(t) = y0 + t.dy

Equation(s) of a straight line as a function of an arbitrary parameter t.

Why use parametric equations?• One, two, three or n-dimensional

representation is possible

• Can handle “infinite slope” of tangents

• Can represent multi-valued functions

For this class …

• Natural Cubic Spline• Bezier Curves

Splines• Define the “knots”

– (x0,y0) - (x3,y3)

• Calculate all other points

spline

knots

Continuity• Parametric continuity Cx

– Only P is continuous: C0• Positional continuity

– P and first derivative dP/du are continuous: C1• Tangential continuity

– P + first + second: C2• Curvature continuity

• Geometric continuity Gx– Only directions have to match

)0(G

)1(G

(a)

(b)

(c)

continuity order th0

continuity order st1

continuity order nd2)2(G

)0(C

)1(C

)2(C

Order of continuity

Wiggling effect• Example:

– Four data points– Third degree polynomial – Might look something like:

• This the ONLY third degree polynomial which fits the data

• Wiggling gets much worse with higher degree

Polynomial parametric equations• To represent a straight

line - linear parametric equation (i.e. one where the highest power of t was 1).

• For curves, we need polynomial equations. Why? Because the graphs of polynomial equations wiggle!

Natural Cubic Spline• spline, n. 1 A long narrow and

relatively thin piece or strip of wood, metal, etc. 2 A flexible strip of wood or rubber used by draftsmen in laying out broad sweeping curves, as in railroad work.

• A natural spline defines the curve that minimizes the potential energy of an idealized elastic strip.

• A natural cubic spline defines a curve, in which the points P(u) that define each segment of the spline are represented as a cubic P(u) = a0 + a1u + a2u2 + a3u3

• Where u is between 0 and 1 and a0, a1, a2 and a3 are (as yet) undetermined parameters.

• We assume that the positions of n+1 control points Pk, where k = 0, 1,…, n are given, and the 1st and 2nd derivatives of P(u) are continuous at each interior control point.

• Undesirable wiggles and oscillations for higher orders

• The lowest order polynomials to satisfy the following conditions

Why cubic?

Caution! Heavy math ahead!

minu

maxuu

0u

1u

2u

nu1nu

)(uQ

A parametrically defined curve

)()()(

)(uzuyux

uQ

sequenceknot uniform then , Ifvectorknot sequenceknot

iu

uuuuuuuuuu

i

nn

nn

),,,,( 110

max110min

Parameterization

0u 1u 2u 3u iu 1iu mu

)(uY)(1 uY

)(0 uY)(2 uY

)(uYm

i 1i

10

,,2,1,0),()(Y

),(

1i

1

u

niuu

uuYu

uuuuY

ii

i

ii

non-uniform

“Re-parameterization”

0V

1V

2V

3V

4V

5V6V

Interpolation

0V

1V 2V

3V 4V

5V

6V

Approximation

Interpolation versus Approximation

0y1y

2y

3y

4y

5y 6y)(0 uY )(uY

)(5 uY

u

6u0u

1)1(

)1(

1

≡32)1(

≡)0(

≡)1(≡)0(

iiiii

iii

iiiiii

iii

DdcbY

DbY

ydcbaYyaY

5,...,010)( 32

iuuducubau iiii

Yi

11

11

)(22)(3

iiiii

iiiii

ii

ii

DDyydDDyyc

Dbya

1 2 3 4 5

Hermite Interpolation

Hermite Spline• Say the user provides • A cubic spline has degree 3, and is of the form:

– For some constants a, b, c and d derived from the control points, but how?

• We have constraints:– The curve must pass through x0 when t=0– The derivative must be x’0 when t=0– The curve must pass through x1 when t=1– The derivative must be x’1 when t=1

dctbtatx 23

1010 ,,, xxxx

10))(1() 11

avrage hted weig

(y (2) i iii yyy

directly specifying (3)

1,, ii yyy and through parabola a fitting e.g.

llyautomatica D Computing

(1)

-1i

i

1iy

iy

1iy1iP

iP

1iP

How to specify slope Di

Hermite SplineA Hermite spline is a curve for which the user provides:

– The endpoints of the curve– The parametric derivatives of the curve at the endpoints

• The parametric derivatives are dx/dt, dy/dt, dz/dt – That is enough to define a cubic Hermite spline, more

derivatives are required for higher order curves

Hermite Spline• Solving for the unknowns gives:

• Rearranging gives:

0

0

0101

0101

23322

xdxc

xxxxbxxxxa

)2( )(x

)132( )32(

230

231

230

231

tttxtt

ttxttxx

10121001110320032

2

3

0101 ttt

xxxxx

or

Hermite curves in 2D and 3D• We have defined only 1D splines:

x = f(t:x0,x1,x’0,x’1)• For higher dimensions, define the control

points in higher dimensions (that is, as vectors)

10121001110320032

2

3

0101

0101

0101

ttt

zzzzyyyyxxxx

zyx

Basis Functions• A point on a Hermite curve is obtained by

multiplying each control point by some function and summing

• The functions are called basis functions

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

1.2

x1x0x'1x'0

0V

1V

2V

3V

4V

5V6V

An interpolating cubic spline

),())(),(()(

iii

iii

yxVuyuxuQ

Hermite and Cubic Spline Interpolation

(knots) jointsat continuity )2(C

0y1y

2y

iy

1iy

my)(0 uY )(uY

)(1 uYm

)(1 uY

mm

ii

ii

ii

ii

yYyY

miYY

YY

yYyY

)1()0(

11 )0()1(

)0()1(

)0()1(

1

00

)2()2(1

)1()1(1

1

44 m

2

need two more Eq’s to determine all coefficients10)( 32 miuducubauY iiiii : note

Spline Interpolation

0)1(

0)0()2(1

)2(0

mY

Y

Natural Spline

11)(34

)(22)(3

262

1111

11

11

11

miyyDDD

DDyydDDyyc

Dbya

cdc

iiiii

iiiii

iiiii

ii

ii

iii

tion,simplifica and onsubstitutiBy

(4)

0)1(

0)0(

)1()0(

)0()1(

)0()1(

)0()1(

)2(1

)2(0

1

00

)2()2(1

)1()1(1

1

m

mm

ii

ii

ii

ii

Y

Y

yYyYYY

YY

yYyY

(8)

(7)

(6)

(5)

(4)

(3)

(2)

(1)

11 mi

32 tdtctbay iiiii

Deriving Natural Cubic Splines

)(32 (8) from Similarly,

)(32 tion,simplifica and onsubstitutiBy

02 (7), From

conditions-end Applying

11

0110

0

mmmm yyDD

yyDD

c

)(3)(3

)(3)(3

21141

....141

141141

12

1

2

02

01

1

0

mm

mm

m yyyy

yyyy

D

DD

Tri-Diagonal Matrix for Natural Cubic Spline

iP

mP0P

2P

1P

Homework

)(34 1111 iiiii yyDDD

)(3)(3

)(3)(3

411141

....141

141141

114

10

2

02

1

1

0

m

mm

m

m yyyy

yyyy

D

DD

Closed Curves

Bezier Curves

• An alternative to splines

• M. Bezier was a French mathematician who worked for the Renault motor car company.

• He invented his curves to allow his firm’s computers to describe the shape of car bodies.

? and provide to How 41 R R

1P4P

1R 4R

mation Approxi

and

!!! points control additional two provide , and providing of Instead

32

41

PP

RR1P

4P

2P 3P

Bezier Approximation

Bezier curves• Typically, cubic polynomials• Similar to Hermite interpolation

– Special way of specifying end tangents• Requires special set of coefficients

• Need four points– Two at the ends of a segment– Two control tangent vectors

Bezier curves• Control polygon: control points connected to each

other

• Easy to generalize to higher order– Insert more control points– Hermite – third order only

De Casteljau algorithm

• Can compute any point on the curve in a few iterations

• No polynomials, pure geometry• Repeated linear interpolation

– Repeated order of the curve times• The algorithm can be used as definition of

the curve

De Casteljau algorithm

Third order, u=0.75

De Casteljau algorithm

De Casteljau algorithm

De Casteljau algorithm

De Casteljau Algorithm

3P

1P 2Pt

t1

t1 t1t1

t1t

tt

t

0P0P

1P

2P

3P

t1

t

t1

t

t1

t

10)1( tPPt

21)1( tPPt

32)1( tPPt

t1

t

t1

t

22

102 )1(2)1(

Pt

tPtPt

32

212 )1(2)1(

Pt

tPtPt

t1

t

33

22

12

03

)1(3

)1(3

)1(

Pt

Ptt

tPt

Pt

ii

i

tti

33

0

)1(3

0

1

1

3)1( t2)1(3 -tt

3t

)1(3 2 -tt

Now,

1)1(3 3

3

0

ii

i

tti

What does it mean ?

10)1(3

)1(3)1(3)1()(

0001003303631331

1)(

33

0

43

32

22

13

4

3

2

1

23

t, Ptt

i

PtP-ttP-ttPttQ

GMT PPPP

ttttQ

iii

i

bb

3))1(( tt

Bezier Polynomial Function

iniin tt

inintB

)1.(.)!(!

!)(

Parametric equations for x(t),y(t)

)(.)(0

tBxtx in

n

ii

)(.)(0

tByty in

n

ii

Some Bezier Curves

Bezier Curves - properties• Not all of the control points are on the line

– Some just attract it towards themselves• Points have “influence” over the course of the line• “Influence” (attraction) is calculated from a

polynomial expression• (show demo applet)

1P

3P

2P

4P

Convex Hull property

Bezier Curve Properties• The first and last control points are interpolated• The tangent to the curve at the first control point is along

the line joining the first and second control points• The tangent at the last control point is along the line

joining the second last and last control points• The curve lies entirely within the convex hull of its control

points– The Bernstein polynomials (the basis functions) sum to 1 and are

everywhere positive• They can be rendered in many ways

– E.g.: Convert to line segments with a subdivision algorithm

Disadvantages

• The degree of the Bezier curve depends on the number of control points.

• The Bezier curve lacks local control. Changing the position of one control point affects the entire curve.

Invariance• Translational invariance means that translating

the control points and then evaluating the curve is the same as evaluating and then translating the curve

• Rotational invariance means that rotating the control points and then evaluating the curve is the same as evaluating and then rotating the curve

• These properties are essential for parametric curves used in graphics

• It is easy to prove that Bezier curves, Hermite curves and everything else we will study are translation and rotation invariant

Longer Curves• A single cubic Bezier or Hermite curve can only capture a

small class of curves– At most 2 inflection points

• One solution is to raise the degree– Allows more control, at the expense of more control points

and higher degree polynomials– Control is not local, one control point influences entire curve

• Alternate, most common solution is to join pieces of cubic curve together into piecewise cubic curves– Total curve can be broken into pieces, each of which is cubic– Local control: Each control point only influences a limited

part of the curve– Interaction and design is much easier

Piecewise Bezier Curve

“knot”P0,0

P0,1 P0,2

P0,3

P1,0

P1,1

P1,2

P1,3

Continuity• When two curves are joined, we typically want some

degree of continuity across the boundary (the knot)– C0, “C-zero”, point-wise continuous, curves share the same point

where they join– C1, “C-one”, continuous derivatives, curves share the same

parametric derivatives where they join– C2, “C-two”, continuous second derivatives, curves share the same

parametric second derivatives where they join– Higher orders possible

• Question: How do we ensure that two Hermite curves are C1 across a knot?

• Question: How do we ensure that two Bezier curves are C0, or C1, or C2 across a knot?

Achieving Continuity• For Hermite curves, the user specifies the derivatives, so

C1 is achieved simply by sharing points and derivatives across the knot

• For Bezier curves:– They interpolate their endpoints, so C0 is achieved by sharing

control points– The parametric derivative is a constant multiple of the vector

joining the first/last 2 control points– So C1 is achieved by setting P0,3=P1,0=J, and making P0,2 and J and

P1,1 collinear, with J-P0,2=P1,1-J– C2 comes from further constraints on P0,1 and P1,2

Bezier Continuity

P0,0

P0,1 P0,2

J

P1,1

P1,2

P1,3

Disclaimer: PowerPoint curves are not Bezier curves, they are interpolating piecewise quadratic curves! This diagram is an approximation.

Problem with Bezier Curves

• To make a long continuous curve with Bezier segments requires using many segments

• Maintaining continuity requires constraints on the control point positions– The user cannot arbitrarily move control vertices and

automatically maintain continuity– The constraints must be explicitly maintained– It is not intuitive to have control points that are not free

Bezier Basis Functions for d=3

0

0.2

0.4

0.6

0.8

1

1.2

B0B1B2B3

Bezier Curves in OpenGL

• OpenGL supports Beziers through mechanism called evaluators used to compute the blending functions, bi (u), of any degree.

• Smooth curves and surfaces are drawn by approximating them with large number of small line segments or polygons. Described mathematically by a small number of parameters such as control points.

• 1D Bezier curves can also be used to define paths in time for animation

• Evaluator is a way to compute points on a curve or surface using only control points. They do not require uniform spacing of u. Bezier curves can then be rendered at any precision.

Evaluators• A Bezier curve is a vector-valued function of one

variableC(u) = [X(u) Y(u) Z(u)]

and a Bezier surface patch is a vector-valued function of two variable

S(u,v) = [X(u,v) Y(u,v) Z(u,v)]

• To use evaluator– first define the function C(u) or S(u,v)– then use the glEvalCoord{12}() command

Berstein Polynomial & Bezier Curve

ini

n

iPuBuC )(

0

inini uu

in

uB

)1(

12

1

uuuuC

One-Dimensional EvaluatorsGLfloat ctrlpoints[4][3] = {...};void init(void) {glMap1f(GL_MAP1_VERTEX_3, 0.0, 1.0,

3, 4, &ctrlpoints[0][0]);}

void display(void) { glBegin(GL_LINE_STRIP);for(i=0; i<=30; i++)

glEvalCoord1f((GLfloat)i/30.0);glEnd();

}

Defining 1-D EvaluatorglMap1(target,u1,u2,stride,order,points);

• target: tells what the control points represent• u1,u2: the range of the variable u• stride: the number of floating-point values to advance in the

data between one control point and the next• order: the degree plus one, and it should agree with the

number of control points• points: pointer to the first coordinate of the first control point

Evaluating 1-D EvaluatorglEvalCoord1(u); glEvalCoord1v(*u);

• Causes evaluation of the enabled maps• u: the value of the domain coordinate• More than one evaluator can be defined and evaluated

at a time. – (ex) GL_MAP1_VERTEX_3 and GL_MAP1_COLOR_4– In this case, calls to glEvalCoord1() generates both a

position and a color.

point ctrlpts[ ] = { ……. } ; glMaplf ( GL_MAP1_VERTEX_3, 0.0, 1.0, 3, 4, ctrlpts);glEnable (GL_MAP1_VERTEX_3); /* GL_MAP1_VERTEX_3 specifies data type for ctrlpts , range of u = [ 0.0, 1.0], 3 is the number of values between control points , (order = degree +1) = 4 */

/* With evaluator enabled, draw line segments for Bezier curve */

e.g. /* define and enable 1D evaluator for Bezier cubic curve */

 glBegin (GL_LINE_STRIP);for ( i = 0; i <= 30; i ++)

glEvalCoord1f ( (Glfloat) i/30.0);glEnd ( )

One-Dimensional Grid and Its Eval.

• define a one-dimensional evenly spaced grid using glMapGrid1*(), and then evaluate the (part of) grid points using glEvalMesh1()

• glMapGrid1(n, u1, u2);defines a grid that goes from u1 to u2 in n steps.

• glEvalMesh1(mode, p1, p2);mode: GL_POINT or GL_LINEevaluates from integer indices p1 to p2 with evenly spaced coordinate

Bezier Surface

ijmj

ni

m

j

n

iPvBuBvuS )()(,

00

Two-Dimensional Evaluators• Everything is similar to the one-

dimensional case, except that all the commands must take two parameters, u and v, into account

1. Define evaluator(s) with glMap2*()2. Enable them with glEnable()3. Invoke them by calling glEvalCoord2() between a glBegin() and glEnd() or by specifying and applying a mesh with glMapGrid2() and glEvalMesh2()

Defining and Evaluating

glMap2(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder,

points);glEvalCoord2(u, v);glEvalCoord2v(*values);

• Example

Grid and Its Evaluation

glMapGrid2(nu, u1, u2, nv, v1, v2);

glEvalMesh2(mode, i1, i2, j1, j2);

Using Evaluators for TexturesGLfloat ctrlpoints[4][4][3] = {...};GLfloat texpts[2][2][2] = {...};void init(void) { glMap2f(GL_MAP2_VERTEX_3,...,&ctrlpoints[0][0][0]);glMap2f(GL_MAP2_TEXTURE_COORD_2,..., &texpts[0][0][0]);glEnable(GL_ MAP2_VERTEX_3);glEnable(GL_MAP2_TEXTURE_COORD_2);glMapGrid2f(...);

}void display(void) { glEvalMesh2(...);

}

End Of Curves

Recommended