Advanced Computer Graphics Advanced Computer Graphics (Spring 2005) (Spring 2005)
COMS 4162, Lecture 12: Spline Curves (review) Ravi Ramamoorthi
http://www.cs.columbia.edu/~cs4162
Most material taken from COMS 4160 lectures 6 and 7
To Do / MotivationTo Do / Motivation
One of written questions in assignment deals with material in this (actually next) lecture
Otherwise, mainly intended for completeness, since splines are very common modeling tool
This lecture reviews spline curves (from 4160). Next lecture discusses extensions to NURBs and surfaces
Curved SurfacesCurved Surfaces
Motivation Exact boundary representation for some objects More concise representation than polygonal mesh Easier to model with and specify for many man-made
objects and machine parts (started with car bodies)
H&B Figure 10.46H&B Figure 10.46
Curve RepresentationsCurve Representations
Function: y = f(x)
Implicit: f(x,y) = 0
Subdivision: (x,y) as limit of recursive process
Parametric: x = f(t), y = g(t)
Curved Surface RepresentationsCurved Surface Representations
Function: z = f(x,y)
Implicit: f(x,y,z) = 0
Subdivision: (x,y,z) as limit of recursive process
Parametric: x = f(s,t), y = g(s,t), z = h(s,t)
Parametric SurfacesParametric Surfaces
Boundary defined by parametric function:x = f(u,v)y = f(u,v)z = f(u,v)
Example (sphere):x = sin() cos()y = sin() sin()z = cos()
Parametric RepresentationsParametric Representations
One function vs. many (defined piecewise)
Continuity
How specified?
Parametric Polynomial CurvesParametric Polynomial Curves
A parametric polynomial curve of order n:
Advantages of polynomial curves Easy to compute Infinitely differentiable everywhere
n
i
iiuaux
0
)(
n
i
iiuaux
0
)(
n
i
iiubuy
0
)(
n
i
iiubuy
0
)(
(Cubic) Spline Constructions(Cubic) Spline Constructions
Bézier: 4 control points
B-splines: approximating, C2, local control
Hermite: 2 points, 2 normals
Natural splines: interpolating, C2, no local control
Catmull-Rom: interpolating, C1, local control
Book chapter 11 covers some spline constructionsBut material is hard to read, doesn’t follow formathere. I recommend following lecture.
Bezier Curve (with 4160-HW2 demo)Bezier Curve (with 4160-HW2 demo)
Motivation: Draw a smooth intuitive curve (or surface) given a few key user-specified control points
hw2.exe
Control points (all that user specifies, edits)
Smooth Bezier curve(drawn automatically)
Controlpolygon
Bezier Curve: (Desirable) propertiesBezier Curve: (Desirable) properties
Interpolates, is tangent to end points
Curve within convex hull of control polygon
Control points (all that user specifies, edits)
Smooth Bezier curve(drawn automatically)
Controlpolygon
hw2.exe
deCasteljau: Linear Bezier CurvedeCasteljau: Linear Bezier Curve
Just a simple linear combination or interpolation (easy to code up, very numerically stable)
Linear (Degree 1, Order 2)F(0) = P0, F(1) = P1
F(u) = ?P0
P1
P0 P1
1-u u
F(u) = (1-u) P0 + u P1
F(0)
F(u)
F(1)
deCasteljau: Quadratic Bezier CurvedeCasteljau: Quadratic Bezier Curve
P0
P1
P2
QuadraticDegree 2, Order 3
F(0) = P0, F(1) = P2F(u) = ?
F(u) = (1-u)2 P0 + 2u(1-u) P1 + u2 P2
P0 P1 P2
1-u 1-uu u
1-u u
Geometric interpretation: QuadraticGeometric interpretation: Quadratic
u
u
u
1-u
1-u
Geometric Interpretation: Cubic
u
u
u
u
u
u
Summary: deCasteljau AlgorithmSummary: deCasteljau Algorithm
Linear Degree 1, Order 2
F(0) = P0, F(1) = P1
P0
P1
P0 P1
1-u u
F(u) = (1-u) P0 + u P1
P0
P1
P2Quadratic
Degree 2, Order 3F(0) = P0, F(1) = P2
P0 P1 P2
F(u) = (1-u)2 P0 + 2u(1-u) P1 + u2 P2
1-u 1-uu u
1-u u
P0
P1 P2
P3Cubic
Degree 3, Order 4F(0) = P0, F(1) = P3
P0 P1 P2 P31-u
1-u
1-u
u
u
u u
u
u
1-u
1-u
F(u) = (1-u)3 P0 +3u(1-u)2 P1 +3u2(1-u) P2 + u3 P3
1-u
Idea of Blossoms/Polar FormsIdea of Blossoms/Polar Forms
(Optional) Labeling trick for control points and intermediate deCasteljau points that makes thing intuitive
E.g. quadratic Bezier curve F(u) Define auxiliary function f(u1,u2) [number of args = degree] Points on curve simply have u1=u2 so that F(u) = f(u,u) And we can label control points and deCasteljau points not
on curve with appropriate values of (u1,u2 )
f(0,0) = F(0) f(1,1) = F(1)
f(0,1)=f(1,0)
f(u,u) = F(u)
Idea of Blossoms/Polar FormsIdea of Blossoms/Polar Forms
Points on curve simply have u1=u2 so that F(u) = f(u,u)
f is symmetric f(0,1) = f(1,0)
Only interpolate linearly between points with one arg different f(0,u) = (1-u) f(0,0) + u f(0,1) Here, interpolate f(0,0) and
f(0,1)=f(1,0)
00 01 11
F(u) = f(uu) = (1-u)2 P0 + 2u(1-u) P1 + u2 P2
1-u 1-uu u
1-u u
0u 1u
uuf(0,0) = F(0) f(1,1) = F(1)
f(0,1)=f(1,0)
f(u,u) = F(u)
Geometric interpretation: Quadratic Geometric interpretation: Quadratic
u
u
u
1-u
1-u
00
01=10
11
0u
1u
uu
Polar Forms: Cubic Bezier CurvePolar Forms: Cubic Bezier Curve
000
001 011
111
000 001 011 1111-u u u u1-u 1-u
00u 01u 11u
1-u u u1-u
0uu 1uu
1-u u
uuu
Geometric Interpretation: Cubic
00u
0u1
u11
0uu
uu1
uuu
000 111
001 011
Why Polar Forms?Why Polar Forms?
Simple mnemonic: which points to interpolate and how in deCasteljau algorithm
Easy to see how to subdivide Bezier curve (next) which is useful for drawing recursively
Generalizes to arbitrary spline curves (just label control points correctly instead of 00 01 11 for Bezier)
Easy for many analyses (beyond scope of course)
Subdividing Bezier CurvesSubdividing Bezier Curves
Drawing: Subdivide into halves (u = ½) Demo: hw2.exe Recursively draw each piece At some tolerance, draw control polygon Trivial for Bezier curves (from deCasteljau algorithm): hence
widely used for drawing
Why specific labels/ control points on left/right? How do they follow from deCasteljau?
000 001 011 111
000 00u 0uu uuu uuu uu1 u11 111
Geometrically
00½
0½1
½11
0½½ ½½1½½½
000 111
001 011
Geometrically
00½
0½1
½11
0½½ ½½1½½½
000 111
001 011
Subdivision in deCasteljau diagramSubdivision in deCasteljau diagram
000
001 011
111
000 001 011 1111-u u u u1-u 1-u
00u 01u 11u
1-u u u1-u
0uu 1uu
1-u u
uuu
Left part of Bezier curve(000, 00u, 0uu, uuu)Always left edge of deCasteljau pyramid
Right part of Bezier curve(uuu, 1uu, 11u, 111)
Always right edge of deCasteljau pyramid
These (interior) points don’t appear in subdivided curves at all
Properties (brief discussion)Properties (brief discussion)
Demo:
Interpolation: End-points, but approximates others
Single piece, moving one point affects whole curve (no local control as in B-splines later)
Invariant to translations, rotations, scales etc. That is, translating all control points translates entire curve
Easily subdivided into parts for drawing. Hence, Bezier curves easiest for drawing (4160-HW2)
hw2.exe
Bezier: DisadvantagesBezier: Disadvantages
Single piece, no local control (move a control point, whole curve changes) hw2.exe
Complex shapes: can be very high degree, difficult
In practice, combine many Bezier curve segments But only position continuous at join since Bezier curves
interpolate end-points (which match at segment boundaries)
Unpleasant derivative (slope) discontinuities at end-points Can you see why this is an issue?
Piecewise Polynomial CurvesPiecewise Polynomial Curves
Idea: Use different polynomial functions
for different parts of the curve
Advantage: Flexibility Local control
Issue: Smoothness at “joints” (continuity)
ContinuityContinuity
Continuity Ck indicates adjacent curves have the same kth derivative at their joints
CC00 Continuity Continuity
Adjacent curves share … Same endpoints: Qi(1) = Qi+1(0)
Aside: discontinuous curves sometimes called “C-1”
CC11 Continuity Continuity
Adjacent curves share … Same endpoints: Qi(1) = Qi+1(0) Same derivatives: Qi ’(1) = Qi+1 ’(0)
CC22 Continuity Continuity
Adjacent curves share … Same endpoints: Qi(1) = Qi+1(0) Same derivatives: Qi ’(1) = Qi+1 ’(0) Same second derivatives: Qi ’’(1) = Qi+1 ’’(0)
(Cubic) Spline Constructions(Cubic) Spline Constructions
Bézier: 4 control points
B-splines: approximating, C2, local control
Hermite: 2 points, 2 normals
Natural splines: interpolating, C2, no local control
Catmull-Rom: interpolating, C1, local control
Book chapter 11 covers some spline constructionsBut material is hard to read, doesn’t follow formathere. I recommend following lecture.
B-SplinesB-Splines
Cubic B-splines have C2 continuity, local control
4 segments / control point, 4 control points/segment
Knots where two segments join: Knotvector
Knotvector uniform/non-uniform (we only consider uniform cubic B-splines, not general NURBS)
Knot: C2 continuity
deBoor points
Demo: hw2.exe
Polar Forms: Cubic Bspline CurvePolar Forms: Cubic Bspline Curve
-2 –1 0
–1 0 1 0 1 2
1 2 3
Labeling little different from in Bezier curve
No interpolation of end-points like in Bezier
Advantage of polar forms: easy to generalize
Uniform knot vector:-2, -1, 0, 1, 2 ,3
Labels correspond to this
deCasteljau: Cubic B-SplinesdeCasteljau: Cubic B-Splines
Easy to generalize using polar-form labels
Impossible remember without
-2 –1 0
–1 0 1 0 1 2
1 2 3
-2 -1 0 -1 0 1 0 1 2 1 2 3
-1 0 u 0 1 u 1 2 u
? ? ????
deCasteljau: Cubic B-SplinesdeCasteljau: Cubic B-Splines
Easy to generalize using polar-form labels
Impossible remember without
-2 –1 0
–1 0 1 0 1 2
1 2 3
-2 -1 0 -1 0 1 0 1 2 1 2 3
-1 0 u 0 1 u 1 2 u1-u/3
(1-u)/3 (2+u)/3(2-u)/3 (1+u)/3 u/3
0 u u 1 u u? ? ? ?
deCasteljau: Cubic B-SplinesdeCasteljau: Cubic B-Splines
Easy to generalize using polar-form labels
Impossible remember without
-2 –1 0
–1 0 1 0 1 2
1 2 3
-2 -1 0 -1 0 1 0 1 2 1 2 3
-1 0 u 0 1 u 1 2 u1-u/3
(1-u)/3 (2+u)/3(2-u)/3 (1+u)/3 u/3
0 u u 1 u u
(1-u)/2 (1+u)/21-u/2 u/2
u u u1-u u
Explicit Formula (derive as exercise)Explicit Formula (derive as exercise)
-2 -1 0 -1 0 1 0 1 2 1 2 3
-1 0 u 0 1 u 1 2 u1-u/3
(1-u)/3 (2+u)/3(2-u)/3 (1+u)/3 u/3
0 u u 1 u u
(1-u)/2 (1+u)/21-u/2 u/2
u u u1-u u
3 2
0
1( ) [ 1]
2
3
P
PF u u u u
P
P
M
1 3 3 1
3 6 3 0
3 0 3 0
1 4 1 0
16
M
P0 P1 P2 P3
Top Related