Document

advertisement

2IV60 Computer graphics set 9: Splines

Jack van Wijk

TU/e

Splines...

Classic problem: How to draw smooth curves?

Spline curve : smooth curve that is defined by a sequence of points

Requirements:

• …

H&B 8-8:420-425

Splines 1

Spline curve : smooth curve that is defined by a sequence of points

Interpolating spline Approximating spline

H&B 8-8:420-425

Splines 2

Convex hull : Smallest polygon that encloses all points

Convex hull

Interpolating spline Approximating spline

H&B 8-8:420-425

Splines 3

Control graph : polyline through sequence of points

Control graph

Interpolating spline Approximating spline

H&B 8-8:420-425

Splines 4

Splines in computer graphics:

Piecewise cubic splines

Segments

H&B 8-8:420-425

Splines 5

Segments have to match ‘nicely’.

Given two segments P ( u ) en Q ( v ).

We consider the transition of P (1) to Q (0).

Zero-order parametric continuity

C 0 : P (1) = Q (0).

Endpoint of P ( u ) coincides with startpoint Q ( v ).

P ( u ) Q ( v )

H&B 8-8:420-425

Splines 6

Segments have to match ‘nicely’.

Given two segments P ( u ) en Q ( v ).

We consider the transition of P (1) to Q (0).

First order parametric continuity

C 1 : d P (1)/d u = d Q (0)/d v .

Direction of P (1) coincides with direction of Q (0).

P ( u ) Q ( v )

H&B 8-8:420-425

Splines 7

First order parametric continuity gives a smooth curve. Sometimes good enough, sometimes not.

line segment circle arc

Suppose that you are bicycling over the curve.

What to do with the steering rod at the transition?

Turn around! Discontinuity in the curvature!

H&B 8-8:420-425

Splines 8

Given two segments P ( u ) and Q ( v ).

We consider the transition of P (1) to Q (0).

Second order parametric continuity

C 2 : d 2 P (1)/d u 2 = d 2 Q (0)/d v 2 .

Curvatures in P (1) and Q (0) are equal.

P ( u ) Q ( v )

H&B 8-8:420-425

Splines 9

So far: considered parametric continuity.

Here the vectors are exactly equal.

It suffices to require that the directions are the same: geometric continuity.

P ( u ) Q ( v ) P ( u ) Q ( v )

H&B 8-8:420-425

Splines 10

Given two segments P ( u ) en Q ( v ).

We consider the transition of P (1) to Q (0).

First order geometric continuity:

G 1 : d P (1)/d u =

 d Q (0)/d v with

>0.

Direction of P (1) coincides with direction Q (0).

P ( u ) Q ( v )

H&B 8-8:420-425

Representation cubic spline 1

U : Powers of u C : Coefficient matrix

H&B 8-8:420-425

Representation cubic spline 2

Control points or

Control vectors

H&B 8-8:420-425

Matrix M spline

:’translates’ geometric info to coefficients

Representation cubic spline 3

H&B 8-8:420-425

Representation cubic spline 4

H&B 8-8:420-425

Representatie cubic spline 5

Puzzle: Describe a line segment between the points P

0 with those three variants.

en P

1

P

1 u= 1

P

0 u= 0 u

H&B 8-8:420-425

Representation cubic spline 6

P

1

P

0 u= 0 u

H&B 8-8:420-425

Representation cubic spline 7

P

1

P

0 u= 0 u

H&B 8-8:420-425

Representation cubic spline 8

P

1

P

0 u= 0 u

H&B 8-8:420-425

P

30

P

20

P

10

P

00

Spline surface 1

P

33

P

03

H&B 8-8:420-425

Spline surface 2

H&B 8-8:420-425

P

30

P

20

P

10

P

00

Spline surface 2

P

33

P

03

H&B 8-8:420-425

Spline surface 3 u v

H&B 8-8:420-425

Spline surface 4 v du := 1/nu; // nu: #facets u-direction u dv := 1/nv; // nv: #facets v-direction for i := 0 to nu

1 do u := i*du; for j := 0 to nv

1 do v := j*dv;

DrawQuad(P(u,v), P(u+du, v), P(u+du, v+dv), P(u, v+dv))

H&B 8-8:420-425

Spline surface 5

// Alternative: calculate points first for i := 0 to nu do for j := 0 to nv do

Q[i, j] := P(i/nu, j/nv); u for i := 0 to nu

1 do for j := 0 to nv

1 do

DrawQuad(Q[i, j], Q[i+1, j], Q[i+1, j+1], Q[i, j+1]) v

H&B 8-8:420-425

Spline surface 6

// Alternative: calculate points first,

// triangle version for i := 0 to nu do for j := 0 to nv do

Q[i, j] := P(i/nu, j/nv); u v for i := 0 to nu

1 do for j := 0 to nv

1 do

DrawTriangle(Q[i, j], Q[i+1, j], Q[i+1, j+1]);

DrawTriangle(Q[i, j], Q[i+1, j+1], Q[i, j+1]);

H&B 8-8:420-425

Spline surface 7

// Alternative: calculate points first,

// triangle variant, triangle strip for i := 0 to nu do for j := 0 to nv do

Q[i, j] := P(i/nu, j/nv); for i := 0 to nu

1 do glBegin(GL_TRIANGLE_STRIP); for j := 0 to nv

1 do glVertex(Q[i, j]); glVertex(Q[i, j+1]); glEnd; u v

H&B 8-8:420-425

Bézier spline curves 1

H&B 8-10:432-441

Bézier spline curves 2

P

1

P

0

H&B 8-10:432-441

Bézier spline curves 3

P

1

P

2

P

0

H&B 8-10:432-441

Bézier spline curves 4

P

1

P

2 P

3

P

0

H&B 8-10:432-441

Bézier spline curves 5

P

1

P

2 P

3

P

0

H&B 8-10:432-441

Bézier spline curves 6

P

1

P

2 P

3

P

0

H&B 8-10:432-441

Bézier spline curves 7

P

1

P

2 P

3

P

0

H&B 8-10:432-441

Bézier spline curves 8

P

0

P

1

P

2 P

3

Q

1

Q

0

Q

2

Q

3

H&B 8-10:432-441

Bézier spline curves 8

P

0

P

1

P

2 P

3

Q

0

Q

1

Q

2

Q

3

H&B 8-10:432-441

Bézier spline curves 9

P

0

P

1

P

2 P

3

Q

0

Q

1

Q

2

Q

3

H&B 8-10:432-441

Bézier spline curves 9

P

0

P

1

P

2 P

3

Q

0

Q

1

Q

2

Q

3

H&B 8-10:432-441

Bézier spline curves 10

H&B 8-10:432-441

Bézier surface 1

P

33

P

30

P

20

P

10

P

00

P

03

H&B 8-10:432-441

Q

30

Bézier surface 2

P

33

Q

33

P

30

P

03

Q

03

P

00

H&B 8-10:432-441

Q

00

Q

30

Bézier surface 2

P

33

Q

33

P

30

P

03

Q

03

P

00

H&B 8-10:432-441

Q

00

Q

30

Bézier surface 3

P

33

Q

00

P

30

P

03

P

00

H&B 8-10:432-441

Q

30

Bézier surface 3

P

33

Q

00

P

30

P

03

P

00

H&B 8-10:432-441

Q

30

Bézier surface 3

P

33

Q

00

P

30

P

03

P

00

H&B 8-10:432-441

Finally…

The world is full of all kind of objects:

Trees, people, cars, housed, clouds, rocks, waves, pencil sharpeners, fire, mountains, plants, …

How can we describe these, such that they are

- easy to enter;

- easy to process;

- easy to display?

Complex problem, HUGE topic!

Finally…

Many other ways to model shapes:

Sweep representations

– Fractal-Geometry methods

– Shape Grammars

– Procedurally defined objects

– Constructive Solid Geometry

– Subdivision surfaces

– Custom methods for hair, water, fire, etc.

Next…

• We now know how to model curved objects

• But they still look somewhat dull, …

Download