announcementsjkh/462_s07/08_curves_splines_part2.pdf1 announcements office hours for joel have...

25
1 Announcements Office hours for Joel have changed this week: 3 p.m – 5 p.m on Wednesday (NOT Tuesday as usual) Michael is out this week Written part of the second programming assignment is due this Thursday before the class or Friday before 9am in Jessica’s mailbox

Upload: others

Post on 26-May-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Announcementsjkh/462_s07/08_curves_splines_part2.pdf1 Announcements Office hours for Joel have changed this week: 3 p.m – 5 p.m on Wednesday (NOT Tuesday as usual) Michael is out

1

AnnouncementsOffice hours for Joel have changed this week:3 p.m – 5 p.m on Wednesday (NOT Tuesday as usual)

Michael is out this week

Written part of the second programming assignment is due this Thursday before the class or Friday before 9am in Jessica’s mailbox

Page 2: Announcementsjkh/462_s07/08_curves_splines_part2.pdf1 Announcements Office hours for Joel have changed this week: 3 p.m – 5 p.m on Wednesday (NOT Tuesday as usual) Michael is out

• Finish parametr ic curves (Splines)• Physics of a mass point• Basics of textures

• Finish parametr ic curves (Splines)• Physics of a mass point• Basics of textures

Page 3: Announcementsjkh/462_s07/08_curves_splines_part2.pdf1 Announcements Office hours for Joel have changed this week: 3 p.m – 5 p.m on Wednesday (NOT Tuesday as usual) Michael is out

3

Roller coaster

• Current programming assignment involves creating a 3D roller coaster animation

• We must model the 3D curve describing the roller coaster, but how?

• How to make the simulation obey the laws of gravity?

Page 4: Announcementsjkh/462_s07/08_curves_splines_part2.pdf1 Announcements Office hours for Joel have changed this week: 3 p.m – 5 p.m on Wednesday (NOT Tuesday as usual) Michael is out

4

Model 3D curve for roller coaster

Page 5: Announcementsjkh/462_s07/08_curves_splines_part2.pdf1 Announcements Office hours for Joel have changed this week: 3 p.m – 5 p.m on Wednesday (NOT Tuesday as usual) Michael is out

5

Splines: Piecewise Polynomials

• A spline is a piecewise polynomial - many low degree polynomials are used to interpolate (pass through) the control points

• Cubic piecewise polynomials are the most common:

• local control• stability• smoothness • continuity• easy to compute

derivatives

Page 6: Announcementsjkh/462_s07/08_curves_splines_part2.pdf1 Announcements Office hours for Joel have changed this week: 3 p.m – 5 p.m on Wednesday (NOT Tuesday as usual) Michael is out

6

Splines• Types of splines:

– Hermite Splines– Catmull-Rom Splines– Bezier Splines– Natural Cubic Splines– B-Splines– NURBS

Page 7: Announcementsjkh/462_s07/08_curves_splines_part2.pdf1 Announcements Office hours for Joel have changed this week: 3 p.m – 5 p.m on Wednesday (NOT Tuesday as usual) Michael is out

7

Hermite Curves

• Cubic Hermite Splines

That is, we want a way to specify the end points and theslope at the end points!

Po

P1

P2

Page 8: Announcementsjkh/462_s07/08_curves_splines_part2.pdf1 Announcements Office hours for Joel have changed this week: 3 p.m – 5 p.m on Wednesday (NOT Tuesday as usual) Michael is out

8

Catmull-Rom Splines• Use for the roller -coaster assignment

• With Hermite splines, the designer must specify all the tangent vectors

• Catmull-Rom: an interpolating cubic splinewith built-in C1 continuity.

Po

P1

P2

tangent at pi = s(pi+1 - pi-1)

Page 9: Announcementsjkh/462_s07/08_curves_splines_part2.pdf1 Announcements Office hours for Joel have changed this week: 3 p.m – 5 p.m on Wednesday (NOT Tuesday as usual) Michael is out

9

Catmull-Rom Splines• Use for the roller -coaster assignment

• With Hermite splines, the designer must specify all the tangent vectors

• Catmull-Rom: an interpolating cubic splinewith built-in C1 continuity.

Page 10: Announcementsjkh/462_s07/08_curves_splines_part2.pdf1 Announcements Office hours for Joel have changed this week: 3 p.m – 5 p.m on Wednesday (NOT Tuesday as usual) Michael is out

10

Catmull-Rom Spline Matrix

control vectorCR basis

[ ]����

����

����

����

−−−−

−−−

=

4

3

2

1

23

0010

00

2332

22

1)(

p

p

p

p

ss

ssss

ssss

uuuup

• Derived similarly to Hermite• Parameter s is typically set to s=1/2.

Page 11: Announcementsjkh/462_s07/08_curves_splines_part2.pdf1 Announcements Office hours for Joel have changed this week: 3 p.m – 5 p.m on Wednesday (NOT Tuesday as usual) Michael is out

11

Cubic Curves in 3D

• Three cubic polynomials, one for each coordinate– x(u) = axu3+bxu2+cxu+dx

– y(u) = ayu3+byu2+cyu+dy

– z(u) = azu3+bzu2+czu+dz

• In matr ix notation

[ ] [ ]����

����

=

zyx

zyx

zyx

zyx

ddd

ccc

bbb

aaa

uuuuzuyux 1)()()( 23

Page 12: Announcementsjkh/462_s07/08_curves_splines_part2.pdf1 Announcements Office hours for Joel have changed this week: 3 p.m – 5 p.m on Wednesday (NOT Tuesday as usual) Michael is out

12

Catmull-Rom Spline Matrix in 3D

[ ] [ ]����

����

����

����

−−−−

−−−

=

444

333

222

111

23

0010

00

2332

22

1)()()(

zyx

zyx

zyx

zyx

ss

ssss

ssss

uuuuzuyux

control vectorCR basis

Page 13: Announcementsjkh/462_s07/08_curves_splines_part2.pdf1 Announcements Office hours for Joel have changed this week: 3 p.m – 5 p.m on Wednesday (NOT Tuesday as usual) Michael is out

13

Bezier Curves*• Another var iant of the same game

• Instead of endpoints and tangents, four control points– points P0 and P3 are on the curve: P(u=0) = P0, P(u=1) = P3

– points P1 and P2 are off the curve

– P'(u=0) = 3(P1-P0), P'(u=1) = 3(P3 – P2)

• Convex Hull proper ty– curve contained within convex hull of control points

• Gives more control knobs (ser ies of points) than Hermite

• Scale factor (3) is chosen to make “ velocity” approximately constant

Page 14: Announcementsjkh/462_s07/08_curves_splines_part2.pdf1 Announcements Office hours for Joel have changed this week: 3 p.m – 5 p.m on Wednesday (NOT Tuesday as usual) Michael is out

14

The Bezier Spline Matrix*

[ ] [ ]����

����

����

����

−−

−−

=

444

333

222

111

23

0001

0033

0363

1331

1

zyx

zyx

zyx

zyx

uuuzyx

Bezier basis Beziercontrol vector

Page 15: Announcementsjkh/462_s07/08_curves_splines_part2.pdf1 Announcements Office hours for Joel have changed this week: 3 p.m – 5 p.m on Wednesday (NOT Tuesday as usual) Michael is out

15

Bezier Blending Functions*

Also known as the order 4, degree 3 Bernstein polynomials

Nonnegative, sum to 1The entire curve lies inside the

polyhedron bounded by the control points

Page 16: Announcementsjkh/462_s07/08_curves_splines_part2.pdf1 Announcements Office hours for Joel have changed this week: 3 p.m – 5 p.m on Wednesday (NOT Tuesday as usual) Michael is out

16

Piecewise Polynomials

• Spline: lots of little polynomials pieced together• Want to make sure they fit together nicely

Continuous in position

Continuous in position and tangent vector

Continuous in position, tangent, and curvature

Page 17: Announcementsjkh/462_s07/08_curves_splines_part2.pdf1 Announcements Office hours for Joel have changed this week: 3 p.m – 5 p.m on Wednesday (NOT Tuesday as usual) Michael is out

17

Splines with More Continuity?

• How could we get C2 continuity at control points?

• Possible answers:– Use higher degree polynomials

degree 4 = quar tic, degree 5 = quintic, … but these get computationally expensive, and sometimes wiggly

– Give up local control àààà natural cubic splines

A change to any control point affects the entire curve– Give up interpolation àààà cubic B-splines

Curve goes near , but not through, the control points

Page 18: Announcementsjkh/462_s07/08_curves_splines_part2.pdf1 Announcements Office hours for Joel have changed this week: 3 p.m – 5 p.m on Wednesday (NOT Tuesday as usual) Michael is out

18

Comparison of Basic Cubic Splines

Type Local Control Continuity Interpolation

Hermite YES C1 YESBezier YES C1 YES

Catmull-Rom YES C1 YES

Natural NO C2 YESB-Splines YES C2 NO

• Summary– Can’ t get C2, interpolation and local control with cubics

Page 19: Announcementsjkh/462_s07/08_curves_splines_part2.pdf1 Announcements Office hours for Joel have changed this week: 3 p.m – 5 p.m on Wednesday (NOT Tuesday as usual) Michael is out

19

Natural Cubic Splines*• I f you want 2nd der ivatives at joints to match up, the

resulting curves are called natural cubic splines

• I t’s a simple computation to solve for the cubics' coefficients. (See Numerical Recipes in C book for code.)

• Finding all the r ight weights is a global calculation (solve tr idiagonal linear system)

Page 20: Announcementsjkh/462_s07/08_curves_splines_part2.pdf1 Announcements Office hours for Joel have changed this week: 3 p.m – 5 p.m on Wednesday (NOT Tuesday as usual) Michael is out

20

B-Splines*

• Give up interpolation– the curve passes near the control points

– best generated with interactive placement (because it’s hard to guess where the curve will go)

• Curve obeys the convex hull proper ty

• C2 continuity and local control are good compensation for loss of interpolation

Page 21: Announcementsjkh/462_s07/08_curves_splines_part2.pdf1 Announcements Office hours for Joel have changed this week: 3 p.m – 5 p.m on Wednesday (NOT Tuesday as usual) Michael is out

21

B-Spline Basis*

• We always need 3 more control points than splinepieces

����

����

=

����

����

−−

−−

=

i

i

i

i

Bs

Bs

P

P

P

P

G

M

i

1

2

3

0141

0303

0363

1331

6

1

Page 22: Announcementsjkh/462_s07/08_curves_splines_part2.pdf1 Announcements Office hours for Joel have changed this week: 3 p.m – 5 p.m on Wednesday (NOT Tuesday as usual) Michael is out

22

How to Draw Spline Curves• Basis matr ix eqn. allows same code to draw any spline type

• Method 1: brute force– Calculate the coefficients

– For each cubic segment, vary u from 0 to 1 (fixed step size)

– Plug in u value, matr ix multiply to compute position on curve

– Draw line segment from last position to current position

[ ] [ ]����

����

����

����

−−−−

−−−

=

444

333

222

111

23

0010

00

2332

22

1

zyx

zyx

zyx

zyx

ss

ssss

ssss

uuuzyx

control vectorCR basis

Page 23: Announcementsjkh/462_s07/08_curves_splines_part2.pdf1 Announcements Office hours for Joel have changed this week: 3 p.m – 5 p.m on Wednesday (NOT Tuesday as usual) Michael is out

23

How to Draw Spline Curves• What’s wrong with this approach?

–Draws in even steps of u

–Even steps of u ≠≠≠≠ even steps of x

–Line length will vary over the curve

–Want to bound line length»too long: curve looks jagged

»too shor t: curve is slow to draw

Page 24: Announcementsjkh/462_s07/08_curves_splines_part2.pdf1 Announcements Office hours for Joel have changed this week: 3 p.m – 5 p.m on Wednesday (NOT Tuesday as usual) Michael is out

24

Drawing Splines, 2• Method 2: recursive subdivision - vary step size to draw shor t lines

Subdivide(u0,u1,maxlinelength)umid = (u0 + u1)/2x0 = P(u0)x1 = P(u1)if |x1 - x0| > maxlinelength

Subdivide(u0,umid,maxlinelength)Subdivide(umid,u1,maxlinelength)

else drawline(x0,x1)

• Var iant on Method 2 - subdivide based on curvature

– replace condition in “ if” statement with straightness cr iter ion

– draws fewer lines in flatter regions of the curve

Page 25: Announcementsjkh/462_s07/08_curves_splines_part2.pdf1 Announcements Office hours for Joel have changed this week: 3 p.m – 5 p.m on Wednesday (NOT Tuesday as usual) Michael is out

25

In Summary...• Summary:

– piecewise cubic is generally sufficient

– define conditions on the curves and their continuity

• Things to know:– basic curve proper ties (what are the conditions, controls, and proper ties for

each spline type)

– gener ic matr ix formula for uniform cubic splines x(u) = uBG

– given definition der ive a basis matr ix