Chap 3 Interpolating Values Animation(U), Chap 3, Interpolating Values1.
Interpolating curves
description
Transcript of Interpolating curves
![Page 1: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/1.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell
Interpolating curves
![Page 2: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/2.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 2
Reading
OptionalBartels, Beatty, and Barsky. An Introduction to Splines for use in Computer Graphics and Geometric Modeling, 1987. (See course reader.)
![Page 3: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/3.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell
Parametric curve review
![Page 4: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/4.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 4
Parametric curvesWe use parametric curves, Q(u)=(x(u),y(u)),where x(u) and y(u) are cubic polynomials:
Advantages:easy (and efficient) to compute“well behaved”infinitely differentiable
We also assume that u varies from 0 to 1
HGuFuEuuy
DCuBuAuux
+++=
+++=23
23
)(
)(
))0(),0(( yx ))1(),1(( yx
![Page 5: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/5.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 5
Various ways to set A,B,C,D
0) Directly – non-intuitive; not very useful. 1) Set positions and derivatives of endpoints: “Hermite Curve”2) Use “control points” that indirectly influence the curve:
“Bezier curve”: - interpolates endpoints - does not interpolate middle control points
“B-spline” - does not interpolate ANY control points
DCuBuAuux +++= 23)(
![Page 6: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/6.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 6
Splines = join cubic curves
ConsiderationsWhat kind of continuity at join points (“knots”)?
C0 = valueC1 = first derivativeC2 = second derivative
How do control points work?
B-spline
![Page 7: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/7.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 7
Spline summary
Joined Hermite curves:C1 continuityInterpolates control points
B-splines:C2 continuityDoes not interpolate control points
Can we get…C2 continuityInterpolates control points
That’s what we’ll talk about towardsthe end of this lecture.But first, some other useful tips.
![Page 8: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/8.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell
Useful tips for Bézier curves
![Page 9: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/9.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 9
Displaying Bézier curvesHow could we draw one of these things?
It would be nice if we had an adaptive algorithm, that would take into account flatness.
DisplayBezier( V0, V1, V2, V3 ) begin if ( FlatEnough( V0, V1, V2, V3 ) ) Line( V0, V3 ); else something;end;
![Page 10: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/10.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 10
Subdivide and conquer
DisplayBezier( V0, V1, V2, V3 ) begin if ( FlatEnough( V0, V1, V2, V3 ) ) Line( V0, V3 ); else Subdivide(V[]) L[], R[] DisplayBezier( L0, L1, L2, L3 ); DisplayBezier( R0, R1, R2, R3 );end;
![Page 11: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/11.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 11
Testing for flatness
Compare total length of control polygon to length of line connecting endpoints:
€
V0 −V1 + V1 −V2 + V2 −V3
V0 −V3
<1+ ε
![Page 12: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/12.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell
Tips for B-splines
B-spline:- C2 continuity- does not interpolate any ctrl points
![Page 13: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/13.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 13
Endpoints of B-splinesWe can see that B-splines don’t interpolate the control points.It would be nice if we could at least control the endpoints of the splines explicitly.There’s a trick to make the spline begin and end at control points by repeating them.In the example below, let’s force interpolation of the last endpoint: (use endpoint 3 times)
![Page 14: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/14.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell
Tips for animator project
![Page 15: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/15.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 15
What if we want a closed curve, i.e., a loop?With Catmull-Rom and B-spline curves, this is easy:
Closing the loop
![Page 16: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/16.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell
C2 interpolating curves
![Page 17: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/17.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 17
Simple interpolating splines
Join several Hermite curves:- Make derivatives match- You still have ability to pick what that matched derivative is.
![Page 18: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/18.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 18
Cardinal splinesIf we set each derivative to be some positive scalar multiple k of the vector between the previous and next controls, we get a Cardinal spline.This leads to:
for any two consecutive interior points pi and pi+1 (we can deal with the endpoints separately if need be)
Think of as a parameter that controls the tension of the spline
€
piu = τ (pi+1 − pi−1)
pi+1u = τ (pi+2 − pi)
(p2-p0)
(p3-p1)
(p4-p2)
QuickTime™ and a decompressor
are needed to see this picture.
![Page 19: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/19.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 19
Cardinal splines
€
p(u) = u3 u2 u 1[ ]
2 −2 1 1−3 3 −2 −10 0 1 01 0 0 0
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
pi
pi+1
piu
pi+1u
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
= u3 u2 u 1[ ]
2 −2 1 1−3 3 −2 −10 0 1 01 0 0 0
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
pi
pi+1
τ pi+1 − pi−1( )τ pi+2 − pi( )
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
= u3 u2 u 1[ ]
2 −2 1 1−3 3 −2 −10 0 1 01 0 0 0
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
0 1 0 00 0 1 0
−τ 0 τ 00 −τ 0 τ
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
pi−1
pi
pi+1
pi+2
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
= u3 u2 u 1[ ] τ
−1 2 /τ −1 −2 /τ +1 12 −3/τ +1 3/τ − 2 −1−1 0 1 00 1/τ 0 0
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
pi−1
pi
pi+1
pi+2
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
![Page 20: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/20.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 20
Catmull-Rom splinesIf we set = 1/2, we get a Catmull-Rom spline.So:
for any two consecutive interior points pi and pi+1 (again dealing with endpoints separately as needed)
€
p(u) = u3 u2 u 1[ ] τ
−1 2 /τ −1 −2 /τ +1 12 −3/τ +1 3/τ − 2 −1−1 0 1 00 1/τ 0 0
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
pi−1
pi
pi+1
pi+2
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥= u3 u2 u 1[ ]
12
−1 3 −3 12 −5 4 −1−1 0 1 00 2 0 0
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
pi−1
pi
pi+1
pi+2
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
![Page 21: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/21.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 21
Catmull-Rom blending functions
QuickTime™ and a decompressor
are needed to see this picture.
![Page 22: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/22.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 22
C2 interpolating splinesHow can we keep the C2 continuity we get with B-splines but get interpolation, too?Again start with connected cubic curves.Each cubic segment is an Hermite curve for which we get to set the position and derivative of the endpoints.That leaves us with a spline that’s C0 and C1 such as a Catmull-Rom or Cardinal spline.But interestingly, there are other ways to choose the values of the (shared) first derivatives at the join points.Is there a way to set those derivatives to get other useful properties?
![Page 23: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/23.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 23
Find second derivativesSo far, we have:
C0, C1 continuity Derivatives are still free, as ‘D0…D4’
Compute second derivatives at both sidesof every join point:
For p1:For p2:…
€
′ ′ Q 0(1) = 6p0 − 6p1 + 2D0 + 4D1 ′ ′ Q 1(0) = −6p1 + 6p2 − 4D1 − 2D2
′ ′ Q 1(1) = 6p1 − 6p2 + 2D1 + 4D2 ′ ′ Q 2(0) = −6p2 + 6p3 − 4D2 − 2D3
![Page 24: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/24.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 24
Match the second derivatives
Now, symbolically set the second derivatives tobe equal.For p1
For p2
…€
6p0 − 6p1 + 2D0 + 4D1 = −6p1 + 6p2 − 4D1 − 2D2
3(p2 − p0) = D0 + 4D1 + D2
€
6p1 − 6p2 + 2D1 + 4D2 = −6p2 + 6p3 − 4D2 − 2D3
3(p3 − p1) = D1 + 4D2 + D3
![Page 25: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/25.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 25
Not quite done yet
How many equations is this? m-1How many unknowns are we solving for? m+1We have two additional degrees of freedom, which we can nail down by imposing more conditions on the curve.There are various ways to do this. We’ll use the variant called natural C2 interpolating splines, which requires the second derivative to be zero at the endpoints.This condition gives us the two additional equations we need.
At the P0 endpoint, it is:
At the Pm endpoint, we have:
''0 (0) 0Q =
''1(1) 0mQ − =
![Page 26: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/26.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 26
Solving for the derivatives
Let’s collect our m+1 equations into a single linear system:
It’s easier to solve than it looks.See the notes from Bartels, Beatty, and Barsky for details.
€
2 11 4 1
1 4 1O1 4 1
1 2
⎡
⎣
⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥
D0T
D1T
D2T
MDm−1
T
DmT
⎡
⎣
⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥
=
3 p1 − p0( )T
3 p2 − p0( )T
3 p3 − p1( )T
M3 pm − pm−2( )
T
3 pm − pm−1( )T
⎡
⎣
⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥
![Page 27: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/27.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 27
C2 interpolating spline
Once we’ve solved for the real Dis, we can plug them in to find our Bézier or Hermite curves and draw the final spline:
Have we lost anything?=> Yes, local control.
![Page 28: Interpolating curves](https://reader035.fdocuments.in/reader035/viewer/2022062410/5681608f550346895dcfb313/html5/thumbnails/28.jpg)
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 28
Next time: Subdivision curves
Basic idea:Represent a curve as an iterative
algorithm, rather than as an explicit function.Reading:
• Stollnitz, DeRose, and Salesin. Wavelets for Computer Graphics: Theory and Applications, 1996, section 6.1-6.3, A.5. [Course reader pp. 248-259 and pp. 273-274]