Parametric Curves
Ref: 1, 2
Outline
Hermite curvesBezier curvesCatmull-Rom splinesFrames along the curve
Hermite Curves
3D curve of polynomial basesGeometrically defined by position and tangents of end pointsAble to construct C1 composite curveIn CG, often used as the trace for camera with Frenet frame, or rotation-minimizing frame
Math …
h1(s) = 2s3 - 3s2 + 1h2(s) = -2s3 + 3s2
h3(s) = s3 - 2s2 + s h4(s) = s3 - s2
P(s) = P1h1(s) + P2h2(s) + T1h3(s) + T2h4(s)
P’(s)=P1h1’(s) + P2h2’(s) + T1h3’(s) + T2h4’(s) h1’ = 6s2-6s h2’ = -6s2+6s h3’= 3s2-4s+1 h4’= 3s2 – 2s
P(0)= P1, P(1)=P2; P’(0)=T1, P’(1)=T2
Blending Functions
At s = 0: h1 = 1, h2 = h3 = h4 = 0 h1’ = h2’ = h4’ = 0, h3’ = 1
At s = 1: h1 = h3 = h4 = 0, h2 = 1 h1’ = h2’ = h3’ = 0, h4’ = 1
h1(s) h2(s) h3(s) h4(s)
P(0) = P1P’(0) = T1
P(1) = P2P’(1) = T2
C1 Composite Curve
P(t)
Q(t) R(t)
More on Continuity
Composite Curve
P(t)
Q(t) R(t)
t0
t1
t2
t3
Each subcurve is defined in [0,1].The whole curve (PQR) can be defined from [0,3]
To evaluate the position (and tangent)
Close Relatives
Bezier curvesCatmull-Rom splines
Bezier Curve (cubic, ref)
Defined by four control pointsde Casteljau algorithm (engineer at Citroën)
Bezier Curve (cont)
Also invented by Pierre Bézier (engineer of Renault) Blending function: Bernstein polynomialCan be of any degree
Degree n has (n+1) control points
First Derivative of Bezier Curves (ref)
Degree-n Bezier curveBernstein polynomialDerivative of Bernstein polynomialFirst derivative of Bezier curve
Hodograph
iii PPnQ 1
Ex: cubic Bezier curve
22312
201
2
012,
312313
3)()(
tPPttPPtPP
PPtBtPdt
d
iiii
23
01
3)1(
3)0(
PPP
PPP
Hence, to convert to/from Hermite curve:
23
01
3
0
3)1(
3)0(
)1(
)0(
PPP
PPP
PP
PP
3
2
1
0
1
0
1
0
3300
0033
1000
0001
P
P
P
P
p
p
p
p
1
0
1
0
31
31
3
2
1
0
0010
010
001
0001
p
p
p
p
P
P
P
P
C1 Composite Bezier Curves
Bezier Curve Fitting
From GraphicsGemsInput: digitized data points in R2
Output: composite Bezier curves in specified error
Bezier Marching
A path made of composite Bezier curvesGenerate a sequence of points along the path with nearly constant step sizeAdjust the parametric increment according to (approximated) arc length
Catmull-Rom spline (1974, ref)
Given n+1 control points {P0,…,Pn}, we wish to find a curve that interpolates these control points (i.e. passes through them all), and is local in nature (i.e. if one of the control points is moved, it only affects the curve locally). We define the curve on each segment [Pi,Pi+1] by using the two control points, and specifying the tangent to the curve at each control point to be (Pi+1–Pi-1)/2 and (Pi+2–Pi)/2Tangents in first and last segments are defined differently
PowerPoint Line Tool …
Gives you a Catmull-Rom spline, open or close.
Ex: Catmull-Rom Curves
Reference Frames Along the Curve
Applications generalized cylinder Cinematography
Frenet framesRotation minimizing frame
Generalized Cylinder
Frenet Frame (Farin)
tangent vector
binormal vector
main normal vector
: cross productUnit vectors
Frenet Frame (arc-length parameterization)
Frenet-Serret Formula
Orthonormal expansion
Express T’N’B’ (change rate of TNB)in terms of TNB
In this notation, the curve is r(s)
Frenet-Serret Formula (cont)
In general parameterization r(t)
Curvature and torsion
r(t)=(x(t),y(t))
(s)
Geometric Meaning of and
x(s+s)
: angle between t(s) and t(s+s): angle between b(s) and b(s+s)
curvature torsion
More result on this reference
Frenet Frame Problem
Problem: vanishing second derivative at inflection points
(vanishing normal)
Rotation Minimizing Frame (ref)
Use the second derivative to define the first frame (if zero, set N0 to any vector T0)
Compute all subsequent Ti; find a rotation from Ti-1 to Ti; rotate Ni and Bi accordingly
If no rotation, use the same frame
ContinuityGeometric Continuity
A curve can be described as having Gn continuity, n being the increasing measure of smoothness. G0: The curves touch at the join point.G1: The curves also share a common tangent direction at the join point.G2: The curves also share a common center of curvature at the join point.
Parametric ContinuityC0: curves are joinedC1: first derivatives are equalC2: first and second derivatives are equalCn: first through nth derivatives are equal
BACK