370 likes | 517 Views
Splines I – Curves and Properties. based on: Michael Gleicher Curves , chapter 15 in Fundamentals of Computer Graphics, 3 rd ed. (Shirley & Marschner ) Slides by Marc van Kreveld. What is a curve?. Intuitively: what you can draw with a pen without lifting it up
E N D
Splines I – Curves and Properties based on: Michael Gleicher Curves, chapter 15 in Fundamentals of Computer Graphics, 3rd ed. (Shirley & Marschner) Slides by Marc van Kreveld
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 [ ]
Types of curves • Normal (two endpoints) • Closed loops (no endpoints) • Infinite curves (no endpoints)
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
How to specify a curve (3 ways) • Implicit curve • Parametric curve • Procedurally defined curve
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 = 4the 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
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) = cost for t in [0, 2) ; this is a circleg(t) = sin t • f(t) = t2g(t) = t • f(t) = t4g(t) = t2 • f(t) = t6g(t) = t3
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))
Procedural curves • Defined by a process or a grammar, e.g. Koch snowflake (a fractal curve)
Parametric curves • Most common in graphics • Easy to work with (we can draw by evaluating at the parameter)
About the parameterization • The value of the parameter tells you where you are on the curve • The parameter determines “speed” along the curve t=1 t=1 t=1 (0,1) t=½ t=½ t=½ (0,0) (1,0) t=0 t=0 t=0 f(t) = (t, t) f(t) = (t 2, t 2) f(t) = (t 1/2, t 1/2)
About the parameterization • Speed is the derivative (magnitude): | df(t)/dt| t=1 t=1 t=1 (0,1) t=½ t=½ t=½ (0,0) (1,0) t=0 t=0 t=0 f(t) = (t, t) f(t) = (t 2, t 2) f(t) = (t 1/2, t 1/2) speed is 2 everywhere speed increases from 0 to 2 2 speed decreases from to ½ 2
Arc-length parameterizations • Informally, constant-speed parameterizations • Formally, when • s is used as parameter when it is an arc-length parameterization f(t) = (t, t)
Arc-length parameterizations • Informally, constant-speed parameterizations • Formally, when • s is used as parameter when it is an arc-length parameterization f(t) = (t 2, t 2)
Tangent vector along a curve • Has a direction and magnitude; the magnitude is speed • f(s) = sin s s [0, /2] • g(s) = coss • 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
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 (x,y) = f(a) (x,y) = f(b)
Piecewise curves • Defined by a sequence of functions • Should line up head-to-tail to get a continuous overall mapping f3 f2 f1 f4 A piecewise curve is a curve by definition; its description just happens to be done using pieces
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]
Piecewise curves • Pieces must connect continuous curve • Tangent vector at both sides is the same differential curve
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 afterParametric continuity depends on the parameterization, while geometric continuity depends only on the shape
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 continuousPractice: C1 / G1continuous curves look good, C2 / G2continuous curves look slightly better, more is not needed
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 + up1 • Also : f(u) = a0 + ua1(where a0 = p0and a1 = p1 - p0) p1 u is used as parameter notation when it ranges over the unit interval [0,1] p0
Polynomial pieces • Higher-degree polynomials can be written in canonical form: f(u) = a0 + ua1 + u2a2 (quadratic), or f(u) = a0 + ua1 + u2a2 + … + unan (n-th degree)In vector/matrix notation: these have an x- and a y-coordinate
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 + 02a2p1 = f(0.5) = a0 + 0.5 a1 + 0.52a2p2 = f(1) = a0 + 1 a1 + 12a2With linear algebra, we can convert a0 , a1 and a2into p0 , p1 and p2 and vice versa
Quadrics p1 p2 p0 p2 p0 p1
Quadrics • p0 = f(0) = a0 + 0 a1 + 02a2p1 = f(0.5) = a0 + 0.5 a1 + 0.52a2p2 = f(1) = a0 + 1 a1 + 12a2 constraint matrix
Quadrics • p0 = f(0) = a0 + 0 a1 + 02a2p1 = f(0.5) = a0 + 0.5 a1 + 0.52a2p2 = f(1) = a0 + 1 a1 + 12a2 base matrix If you have the three points p0 , p1 and p2 , you can get the coefficients of the polynomial in canonical form
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 ( p0p1p2 )T
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 ( p0p1p2 )T
Quadrics • p0 = f(0) = a0 + 0 a1 + 02a2p1 = f(0.3) = a0 + 0.3 a1 + 0.32a2p2 = f(1) = a0 + 1 a1 + 12a2 • Now compute B = C– 1 and apply it to ( p0p1p2 )T
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 p0 p1
Quadrics • f(u) = a0 + a1u + a2u2 • f’(u) = a1 + 2 a2u • 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 ( p0p1p2 )T
Quadrics • f(u) = a0 + a1u + a2u2 • f’(u) = a1 + 2 a2u • f’’(u) = 2 a2 • For example:p0 = f(0.1) = a0 + 0.1 a1 + 0.12a2p1 = f’(0.6) = a1 + 2 0.6 a2p2 = f’’(0.7) = 2 a2 Note: p1 and p2 are not points, but specifications of the first and second derivatives
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 + a1u + a2u2 + a3u3 p1 p2 p3 p0
Cubics • p0 = f(0) = a0 + 0 a1 + 02a2 + 03a3p1 = f’(0) = a1 + 0 a2 + 3 02a3p2 = f(1) = a0 + 1 a1 + 12a2 + 13a3p3 = f’(1) = a1 + 1 a2 + 3 12a3This is the so-called Hermite form p1 p2 p3 p0
Cubics • For example: p0 = (0,0), p1 = (0,2), p2 = (3,0), p3 = (2,0) point tangent vector point tangent vector p1 = (0,2) p3 = (2,0) p0 = (0,0) p2 = (3,0)
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.