Post on 01-Apr-2015
1
Splines I – Curves and Properties
based on: Michael Gleicher
Curves, chapter 15 inFundamentals of Computer Graphics, 3rd ed.
(Shirley & Marschner)Slides by Marc van Kreveld
2
What is a curve?
• Intuitively: what you can draw with a pen without lifting it up
• Mathematically: image of a continuous mapping of an interval into the plane (or higher-d space)
f : [0,1] R2
[ ]
3
Types of curves
• Normal (two endpoints)• Closed loops (no endpoints)• Infinite curves (no endpoints)
4
More curves
• Curves may self-intersect, have sharp corners, trace back on themselves, …
• Well-known curves: line segment, line, circle, ellipse, square (boundary), parabola, circular arc, …
• General curves are called free-form curves
5
How to specify a curve (3 ways)
• Implicit curve• Parametric curve• Procedurally defined curve
6
Implicit curves
• Given by a function in 2 variables (for curves in the plane) and an outcome value of that function– Circle with radius 2 centered at origin: x2 + y2 = 4
the function is f(x,y)= x2 + y2 – Some weird curve: log x – x2 + y3 = 0
(if this equation yields a connected set???)
• We can assume the given value is 0• Not every function+value gives a connected set,
implying that it cannot be the image of a continuous mapping
7
Parametric curves
• Use a parameter, e.g. t, and use two functionsf(t) and g(t) to describe corresponding x and y coordinates– f(t) = cos t for t in [0, 2) ; this is a circle
g(t) = sin t– f(t) = t2
g(t) = t– f(t) = t4
g(t) = t2
– f(t) = t6
g(t) = t3
8
Parametric curves
• Representations are not unique• The functions f and g can be written together as a
vector-valued function f, we then write
(x, y) = f(t)
as a shorthand for
(x, y) = (f(t), g(t))
9
Procedural curves
• Defined by a process or a grammar, e.g. Koch snowflake (a fractal curve)
10
Parametric curves
• Most common in graphics• Easy to work with
(we can draw by evaluating at the parameter)
11
About the parameterization
• The value of the parameter tells you where you are on the curve
• The parameter determines “speed” along the curve
f(t) = (t, t)
(0,1)
(0,0)(1,0)
t=0
t=1
t=½
f(t) = (t 2, t 2)
t=0
t=1
t=½
t=0
t=1
t=½
f(t) = (t 1/2, t 1/2)
12
About the parameterization
• Speed is the derivative (magnitude): | d f(t)/d t |
f(t) = (t, t)
(0,1)
(0,0)(1,0)
t=0
t=1
t=½
f(t) = (t 2, t 2)
t=0
t=1
t=½
t=0
t=1
t=½
f(t) = (t 1/2, t 1/2)
speed is 2 everywhere speed increases from 0 to 2 2
speed decreases from to ½ 2
13
Arc-length parameterizations
• Informally, constant-speed parameterizations• Formally, when
• s is used as parameter when it is an arc-length parameterization
cdssd
2
f )(
f(t) = (t, t) 2(1,1)f 2
2
dttd )(
14
Arc-length parameterizations
• Informally, constant-speed parameterizations• Formally, when
• s is used as parameter when it is an arc-length parameterization
cdssd
2
f )(
f(t) = (t 2, t 2) 222
8),2(2f
tttdttd
)(
15
Tangent vector along a curve
• Has a direction and magnitude; the magnitude is speed
f(s) = sin s s [0, /2]g(s) = cos s
f(t) = t t [0,1]g(t) = ((1 – t)2)
The direction of tangent depends purely on the position on the curve, whereas the magnitude depends on the parameterization as well
16
Length of a parameterized curve
• You get the length of a curve by integrating over the magnitude of the tangent vector of the curve
• The arc length from parameter value a to b, so the arc length between f(a) and f(b), is
b
adt
dttd )(f (x,y) = f(a)
(x,y) = f(b)
17
Piecewise curves
• Defined by a sequence of functions• Should line up head-to-tail to get a continuous overall
mapping
f1f2
f3
f4
A piecewise curve is a curve by definition; its description just happens to be done using pieces
18
Piecewise curves
• Example– f1(t) = (t, 0) for t [0,1)
– f2(t) = (t, t – 1) for t [1,3)
– f3(t) = (t2 – 2t, t – 1) for t [3,4]
19
Piecewise curves
• Pieces must connect continuous curve• Tangent vector at both sides is the same
differential curve
20
Types of continuity
• C0 is the name/notation for normal continuity• Parametric continuity C1: The tangent vectors are
the same “just before and just after every point on the curve”, in particular for breakpoints
• Geometric continuity G1: The tangent vector directions are the same just before and just after
Parametric continuity depends on the parameterization, while geometric continuity depends only on the shape
21
Types of continuity
• You cannot “see” parametric continuity, you need the parameterization
• Parametric continuity implies geometric continuity• Re-parameterization may make a geometrically
continuous curve parametrically continuous• Cn and Gn means that all derivatives up to
(and including) the n-th are continuous
Practice: C1 / G1 continuous curves look good, C2 / G2 continuous curves look slightly better, more is not needed
22
Polynomial pieces
• Both functions used for the f are polynomials in the parameter
• Simplest example: piecewise linear (polygonal) curve, consisting of straight line segments; only C0 – Each piece can be expressed using linear interpolation
between two points: f(u) = (1 – u) p0 + u p1
– Also : f(u) = a0 + u a1 (where a0 = p0 and a1 = p1 - p0)
p0
p1 u is used as parameter notation when it ranges over the unit interval [0,1]
23
Polynomial pieces
• Higher-degree polynomials can be written in canonical form: f(u) = a0 + u a1 + u2 a2 (quadratic), or f(u) = a0 + u a1 + u2 a2 + … + un an (n-th degree)
In vector/matrix notation:
n
nuuuu
a
a
a
a
auf
2
1
0
21
these have an x- and a y-coordinate
24
Quadratic pieces, quadrics
• The (vector) coefficients a0 , a1 and a2 of the canonical form are not convenient for making curves
• It is more natural to describe quadrics using 3 points, one for f(0), one for f(0.5), and one for f(1)
p0 = f(0) = a0 + 0 a1 + 02 a2 p1 = f(0.5) = a0 + 0.5 a1 + 0.52 a2 p2 = f(1) = a0 + 1 a1 + 12 a2
With linear algebra, we can convert a0 , a1 and a2 into p0 , p1 and p2 and vice versa
25
Quadrics
p2
p1
p0
p2
p1p0
26
Quadrics
• p0 = f(0) = a0 + 0 a1 + 02 a2 p1 = f(0.5) = a0 + 0.5 a1 + 0.52 a2 p2 = f(1) = a0 + 1 a1 + 12 a2
111
0.250.51
001
C constraint matrix
2
1
0
2
1
0
111
0.250.51
001
p
p
p
a
a
a
aC
27
Quadrics
• p0 = f(0) = a0 + 0 a1 + 02 a2 p1 = f(0.5) = a0 + 0.5 a1 + 0.52 a2 p2 = f(1) = a0 + 1 a1 + 12 a2
22-2
1-43-
0011CB base matrix
apB If you have the three points p0 , p1 and p2 , you can get the coefficients of the polynomial in canonical form
28
Quadrics
• Example 1: Given the points p0 = (0,1), p1 = (2,0)
and p2 = (4,4), compute the coefficients of the
polynomial in canonical form for which f(0) = p0,
f(0.5) = p1 , and f(1) = p2
• Solution: simply apply the base matrix B to ( p0 p1 p2 )T
2
1
0
4,6
74,
0,1
4,4
2,0
0,1
22-2
1-43-
001
a
a
a
29
Quadrics
• Example 2: Given the points p0 = (0,1), p1 = (2,0)
and p2 = (4,4), compute the coefficients of the
polynomial in canonical form for which f(0) = p0,
f(0.3) = p1 , and f(1) = p2
• Solution: determine the base matrix B for this case and apply it to ( p0 p1 p2 )T
30
Quadrics
• p0 = f(0) = a0 + 0 a1 + 02 a2 p1 = f(0.3) = a0 + 0.3 a1 + 0.32 a2 p2 = f(1) = a0 + 1 a1 + 12 a2
• Now compute B = C – 1 and apply it to ( p0 p1 p2 )T
111
0.090.31
001
C
31
Quadrics
• We can specify the quadric using points and derivatives too– two points and one derivate at a point– one point, first derivative at a point and second derivative
at a point
p1p0
32
Quadrics
• f(u) = a0 + a1 u + a2 u2
• f’(u) = a1 + 2 a2 u
• f’’(u) = 2 a2
• By specifying anything likep0 = f(0) , p1 = f’(0.6) , p2 = f’’(0.7)we can determine a (and therefore the quadric in canonical form) by setting up the constraint matrix, doing matrix inversion, and applying it to ( p0 p1 p2 )T
33
Quadrics
• f(u) = a0 + a1 u + a2 u2
• f’(u) = a1 + 2 a2 u
• f’’(u) = 2 a2
• For example:p0 = f(0.1) = a0 + 0.1 a1 + 0.12 a2 p1 = f’(0.6) = a1 + 2 0.6 a2 p2 = f’’(0.7) = 2 a2
200
1.210
0.010.11
CNote: p1 and p2 are not points, but specifications of the first and second derivatives
34
Cubics
• Cubics are the most popular polynomial pieces– They are determined by 4 coefficients so we can for
instance specify the two endpoints and the two first derivatives at these endpoints
– This is important for building splines
– f(u) = a0 + a1 u + a2 u2 + a3 u3
p2
p0 p3
p1
35
Cubics
• p0 = f(0) = a0 + 0 a1 + 02 a2 + 03 a3
p1 = f’(0) = a1 + 0 a2 + 3 02 a3
p2 = f(1) = a0 + 1 a1 + 12 a2 + 13 a3
p3 = f’(1) = a1 + 1 a2 + 3 12 a3
This is the so-called Hermite form
p2
p0 p3
3210
1111
0010
0001
Cp1
36
Cubics
• For example: p0 = (0,0), p1 = (0,2), p2 = (3,0), p3 = (2,0)
p0 = (0,0)
p1 = (0,2)
p2 = (3,0)
p3 = (2,0)
point pointtangent vector tangent vector
37
Summary
• There are three main ways to specify curves, parametric, implicit, and procedural
• There are different degrees of continuity of curves, important when designing piecewise defined curves
• We can build (parametric) linear curves from two specifications, quadric curves from 3 specifications and cubic curves from 4 specifications (through point, tangent at point, …)
• The constraint matrix and base matrix allow us to convert specifications into canonical form and v.v.