Presentation on theme: "Splines I – Curves and Properties"— Presentation transcript:
1 Splines I – Curves and Properties based on:Michael GleicherCurves, 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 upMathematically: image of a continuous mapping of an interval into the plane (or higher-d space) f : [0,1] R2Image, so the part in R2, continuous, so you cannot lift your pen.The interval can be open or closed.Continuous mapping implies the image is connected
3 Types of curves Normal (two endpoints) Closed loops (no endpoints) Infinite curves (no endpoints)When these curves have no self-intersections, the first type does not separate the plane, the second type separates it in a bounded (interior) and unbounded (exterior) part, and the third type separates it in two unbounded parts. In 3D, curves never bound a volume.
4 More curvesCurves 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 curveParametric curveProcedurally defined curve
6 Implicit curvesGiven by a function in 2 variables (for curves in the plane) and an outcome value of that functionCircle with radius 2 centered at origin: x2 + y2 = 4 the function is f(x,y)= x2 + y2Some weird curve: log x – x2 + y3 = 0 (if this equation yields a connected set???)We can assume the given value is 0Not every function+value gives a connected set, implying that it cannot be the image of a continuous mappingThink of the image of the 2-value function, which is a surface living in 3D. Setting it equal to a value is intersecting the image with a horizontal plane z=value.
7 Parametric curvesUse a parameter, e.g. t, and use two functions f(t) and g(t) to describe corresponding x and y coordinatesf(t) = cos t for t in [0, 2) ; this is a circle g(t) = sin tf(t) = t2 g(t) = tf(t) = t4 g(t) = t2f(t) = t6 g(t) = t3What is this second thing? How about the third? And the fourth? What if the first thing has a different t domain?
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 curvesDefined 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 curveThe parameter determines “speed” along the curvet=1t=1t=1(0,1)t=½t=½t=½(0,0)(1,0)t=0t=0t=0f(t) = (t, t)f(t) = (t 2, t 2)f(t) = (t 1/2, t 1/2)
12 About the parameterization Speed is the derivative (magnitude): | d f(t)/d t |t=1t=1t=1(0,1)t=½t=½t=½(0,0)(1,0)t=0t=0t=0f(t) = (t, t)f(t) = (t 2, t 2)f(t) = (t 1/2, t 1/2)speed is 2 everywherespeed increases from 0 to 2 2speed decreases from to ½ 2
13 Arc-length parameterizations Informally, constant-speed parameterizationsFormally, whens is used as parameter when it is an arc-length parameterizationThe squaring in the formula is not needed, it is equivalent if it is not present. However, since f is a vector and pythagoras is needed, and the square-root can be avoided by evaluating the square.f(t) = (t, t)
14 Arc-length parameterizations Informally, constant-speed parameterizationsFormally, whens is used as parameter when it is an arc-length parameterizationThe squaring in the formula is not needed, it is equivalent if it is not present. However, since f is a vector and pythagoras is needed, and the square-root can be avoided by evaluating the square.f(t) = (t 2, t 2)
15 Tangent vector along a curve Has a direction and magnitude; the magnitude is speedf(s) = sin s s [0, /2]g(s) = cos sf(t) = t t [0,1]g(t) = ((1 – t)2)For two different parameterizations of the same curve (here: a quarter circle), the direction of the tangent vector will be the same, but the magnitude may different because it depends on the parameterization, not on the curve.The left case is an arc-length parameterization because sin squared + cos squared =1 for any angle.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 curveThe 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)
17 Piecewise curves f3 f2 f1 f4 Defined by a sequence of functions Should line up head-to-tail to get a continuous overall mappingf3f2f1f4A 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 breakpointsGeometric 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 continuityYou cannot “see” parametric continuity, you need the parameterizationParametric continuity implies geometric continuityRe-parameterization may make a geometrically continuous curve parametrically continuousCn 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 piecesBoth functions used for the f are polynomials in the parameterSimplest example: piecewise linear (polygonal) curve, consisting of straight line segments; only C0Each piece can be expressed using linear interpolation between two points: f(u) = (1 – u) p0 + u p1Also : f(u) = a0 + u a1 (where a0 = p0 and a1 = p1 - p0)p1u is used as parameter notation when it ranges over the unit interval [0,1]p0
23 Polynomial piecesHigher-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: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 curvesIt 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) = a a a2 p1 = f(0.5) = a a a2 p2 = f(1) = a a a2 With linear algebra, we can convert a0 , a1 and a2 into p0 , p1 and p2 and vice versa
26 Quadricsp0 = f(0) = a a a2 p1 = f(0.5) = a a a2 p2 = f(1) = a a a2constraint matrix
27 Quadricsp0 = f(0) = a a a2 p1 = f(0.5) = a a a2 p2 = f(1) = a a a2base matrixIf you have the three points p0 , p1 and p2 , you can get the coefficients of the polynomial in canonical form
28 QuadricsExample 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) = p2Solution: simply apply the base matrix B to ( p0 p1 p2 )T
29 QuadricsExample 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) = p2Solution: determine the base matrix B for this case and apply it to ( p0 p1 p2 )T
30 Quadricsp0 = f(0) = a a a2 p1 = f(0.3) = a a a2 p2 = f(1) = a a a2Now compute B = C – 1 and apply it to ( p0 p1 p2 )T
31 Quadrics We can specify the quadric using points and derivatives too two points and one derivate at a pointone point, first derivative at a point and second derivative at a pointp0p1
32 Quadrics f(u) = a0 + a1 u + a2 u2 f’(u) = a1 + 2 a2 u f’’(u) = 2 a2 By specifying anything like p0 = 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) = a a a2 p1 = f’(0.6) = a 0.6 a2 p2 = f’’(0.7) = a2Note: 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 endpointsThis is important for building splinesf(u) = a0 + a1 u + a2 u2 + a3 u3p1p2p0p3
35 Cubicsp0 = f(0) = a a a a3 p1 = f’(0) = a a 02 a3 p2 = f(1) = a a a a3 p3 = f’(1) = a a 12 a3 This is the so-called Hermite formp1p2p0p3
37 SummaryThere are three main ways to specify curves, parametric, implicit, and proceduralThere are different degrees of continuity of curves, important when designing piecewise defined curvesWe 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.
Your consent to our cookies if you continue to use this website.