Intro to Splines

Intro to Splines

Intro to Splines CS 4620 Lecture 14 Cornell CS4620 Fall 2020 Steve Marschner • 1 Motivation: smoothness • In many applications we need smooth shapes – that is, without discontinuities [Boeing] • So far we can make – things with corners (lines, triangles, squares, rectangles, …) – circles, ellipses, other special shapes (only get you so far!) Cornell CS4620 Fall 2020 Steve Marschner • 2 Classical approach • Pencil-and-paper draftsmen also needed smooth curves • Origin of “spline:” strip of flexible metal – held in place by pegs or weights to constrain shape – traced to produce smooth contour Cornell CS4620 Fall 2020 Steve Marschner • 3 Translating into usable math • Smoothness – in drafting spline, comes from physical curvature minimization – in CG spline, comes from choosing smooth functions • usually low-order polynomials • Control – in drafting spline, comes from fixed pegs – in CG spline, comes from user-specified control points Cornell CS4620 Fall 2020 Steve Marschner • 4 Piecewise polynomial functions p0(t) t0 ≤ t < t1 p (t) t ≤ t < t f(t) = 1 1 2 ⋮ pn−1(t) tn−1 ≤ t ≤ tn spline segments join at knots knot values Cornell CS4620 Fall 2020 Steve Marschner • 5 Spline segment • defines the value of a spline over an interval between adjacent knot values • is a polynomial with coefficients that depend linearly on one or more controls • type and meaning of controls differs among types of spline Cornell CS4620 Fall 2020 Steve Marschner • 6 Spline continuity pk−1(tk) ≠ pk(tk) • Knots are transitions between segments – match values for continuity (C0) – match derivatives for smoothness (C1) pk−1(tk) = pk(tk) 0 C pk′−1(tk) ≠ pk′(tk) pk−1(tk) = pk(tk) 1 C pk′−1(tk) = pk′(tk) Cornell CS4620 Fall 2020 Steve Marschner • 7 Defining spline curves • 2D spline curves are parametric curves S = f(t) t [0,N] { | 2 } • For splines, f(t) is piecewise polynomial – for this lecture, the knots are at the integers Cornell CS4620 Fall 2020 Steve Marschner • 8 Defining spline curves • 2D spline curves are parametric curves S = f(t) t [0,N] { | 2 } • For splines, f(t) is piecewise polynomial – for this lecture, the knots are at the integers Cornell CS4620 Fall 2020 Steve Marschner • 8 Defining spline curves • 2D spline curves are parametric curves S = f(t) t [0,N] { | 2 } • For splines, f(t) is piecewise polynomial – for this lecture, the knots are at the integers Cornell CS4620 Fall 2020 Steve Marschner • 8 Defining spline curves • 2D spline curves are parametric curves S = f(t) t [0,N] { | 2 } • For splines, f(t) is piecewise polynomial – for this lecture, the knots are at the integers Cornell CS4620 Fall 2020 Steve Marschner • 8 Defining spline curves • Generally f(t) is a piecewise polynomial – for this lecture, the discontinuities are at the integers – e.g., a cubic spline has the following form over [k, k + 1): – Coefficients are different for every interval Cornell CS4620 Fall 2020 Steve Marschner • 9 Coordinate functions Cornell CS4620 Fall 2020 Steve Marschner • 10 Coordinate functions Cornell CS4620 Fall 2020 Steve Marschner • 10 Coordinate functions Cornell CS4620 Fall 2020 Steve Marschner • 10 Coordinate functions Cornell CS4620 Fall 2020 Steve Marschner • 10 Coordinate functions Cornell CS4620 Fall 2020 Steve Marschner • 11 Coordinate functions Cornell CS4620 Fall 2020 Steve Marschner • 11 Coordinate functions Cornell CS4620 Fall 2020 Steve Marschner • 11 Coordinate functions Cornell CS4620 Fall 2020 Steve Marschner • 11 Coordinate functions Cornell CS4620 Fall 2020 Steve Marschner • 11 Control of spline curves • Specified by a sequence of controls (points or vectors) • Shape is guided by control points (aka control polygon) – interpolating: passes through points – approximating: merely guided by points – some splines interpolate only certain points (e.g. endpoints) Cornell CS4620 Fall 2020 Steve Marschner • 12 Control of spline curves • Specified by a sequence of controls (points or vectors) • Shape is guided by control points (aka control polygon) – interpolating: passes through points – approximating: merely guided by points – some splines interpolate only certain points (e.g. endpoints) Cornell CS4620 Fall 2020 Steve Marschner • 12 Control of spline curves • Specified by a sequence of controls (points or vectors) • Shape is guided by control points (aka control polygon) – interpolating: passes through points – approximating: merely guided by points – some splines interpolate only certain points (e.g. endpoints) Cornell CS4620 Fall 2020 Steve Marschner • 12 Control of spline curves • Specified by a sequence of controls (points or vectors) • Shape is guided by control points (aka control polygon) – interpolating: passes through points – approximating: merely guided by points – some splines interpolate only certain points (e.g. endpoints) Cornell CS4620 Fall 2020 Steve Marschner • 12 Spline curves and their controls • Each coordinate is separate – the function x(t) is determined solely by the x coordinates of the control points – this means 1D, 2D, 3D, … curves are all really the same • Spline curves are linear functions of their controls – moving a control point two inches to the right moves x(t) twice as far as moving it by one inch – x(t), for fixed t, is a linear combination (weighted sum) of the controls’ x coordinates – f(t), for fixed t, is a linear combination (weighted sum) of the controls Cornell CS4620 Fall 2020 Steve Marschner • 13 Context • Today we are talking about defining 1D curves, living in any dimension space – emphasizing 2D – higher dimensions are no more complex (just more coords) • Splines can be used to define objects of any dimension – 2D surfaces – 3D solids – … • Higher dimensions are built from same 1D functions – spline patches have N2 control points – joining patches together is more complicated than curves Cornell CS4620 Fall 2020 Steve Marschner • 14 Plan 1. Spline segments – how to define a polynomial on [0,1] – …that has the properties you want – …and is easy to control 2. Spline curves – how to chain together lots of segments – …so that the whole curve has the properties you want – …and is easy to control 3. Refinement and evaluation – how to add detail to splines – how to approximate them with line segments Cornell CS4620 Fall 2020 Steve Marschner • 15 Spline Segments Cornell CS4620 Fall 2020 Steve Marschner • 16 A spline segment • A polynomial function over the interval [tk, tk+1] • When talking about a single segment, to keep things simple, we assume k = 0; t0 = 0; t1 = 1 – that is, the segment lives on the interval [0,1] Cornell CS4620 Fall 2020 Steve Marschner • 17 Linear spline (line segment) • Control points are the vertices • Each segment will be a linear function p1 = (x1, y1) – starts at p0 (when t = 0) – ends at p1 (when t = 1) – moves at constant speed along segment – both coordinate functions are linear p0 = (x0, y0) Cornell CS4620 Fall 2020 Steve Marschner • 18 Linear interpolation • Take one coordinate, x • It is linear: x(t) = at + b – we want x(0) = x0 and x(1) = x1 – this is achieved by b = x0 and a = x1 − x0 x(t) = (x1 − x0)t + x0 Cornell CS4620 Fall 2020 Steve Marschner • 19 Three equivalent notions x(t) = (x1 − x0)t + x0 = (1 − t)x0 + tx1 = x0b0(t) + x1b1(t) a linear polynomial with coefficients that are linear functions of x0 and x1 a linear combination of the values x0 and x1with weights (1 − t) and t a linear combination of the functions b0(t) = 1 − t and b1(t) = t with weights x0 and x1 Cornell CS4620 Fall 2020 Steve Marschner • 20 Spline matrix • A nice generalizable way of writing this is −1 1 x0 x(t) = [t 1] [ 1 0] [x1] Cornell CS4620 Fall 2020 Steve Marschner • 21 Spline matrix • A nice generalizable way of writing this is −1 1 x0 x(t) = [t 1] [ 1 0] [x1] spline monomials controls matrix Cornell CS4620 Fall 2020 Steve Marschner • 21 Spline matrix • A nice generalizable way of writing this is −1 1 x0 x(t) = [t 1] [ 1 0] [x1] spline monomials controls matrix −1 1 x0 −1 1 x0 x(t) = [t 1] = [t 1] ([ 1 0] [x1]) ( [ 1 0]) [x1] group this way to see coefficients group this way to see basis functions Cornell CS4620 Fall 2020 Steve Marschner • 21 Linear 2D spline segment • Vector formulation x(t)=(x x )t + x 1 − 0 0 y(t)=(y y )t + y 1 − 0 0 f(t)=(p p )t + p 1 − 0 0 • Matrix formulation 11 p f(t)= t 1 0 −10p 1 ⇥ ⇤ Cornell CS4620 Fall 2020 Steve Marschner • 22 Basis function formulation p1 f(t) p0 f(t) = b0(t)p0 + b1(t)p1 Cornell CS4620 Fall 2020 Steve Marschner • 23 Hermite splines • Less trivial example • Form of curve: piecewise cubic • Constraints: endpoints and tangents (derivatives) t0 p0 p1 t1 Cornell CS4620 Fall 2020 Steve Marschner • 24 Hermite splines in 1D Cornell CS4620 Fall 2020 Steve Marschner • 25 Hermite splines in 1D x(t)=at3 + bt2 + ct + d 2 x0(t)=3at +2bt + c x(0) = x0 = d x(1) = x1 = a + b + c + d x0(0) = x0 = c x0(1) = x10 =3a +2b + c Cornell CS4620 Fall 2020 Steve Marschner • 25 Hermite splines in 1D x(t)=at3 + bt2 + ct + d 2 x0(t)=3at +2bt + c x(0) = x0 = d x(1) = x1 = a + b + c + d x0(0) = x0 = c x0(1) = x10 =3a +2b + c Cornell CS4620 Fall 2020 Steve Marschner • 25 Hermite splines in 1D x(t)=at3 + bt2 + ct + d 2 x0(t)=3at +2bt + c x(0) = x0 = d x(1) = x1 = a + b + c + d x0(0) = x0 = c x0(1) = x10 =3a +2b + c d = x0 c = x0 a =2x 2x + x0 + x0 0 − 1 0 1 b = 3x +3x 2x0 x0 − 0 1 − 0 − 1 Cornell CS4620 Fall 2020 Steve Marschner • 25 Hermite splines • Matrix form is much cleaner 2 21 1 p0 33− 2 1 p f(t)= t3 t2 t 1 2− − − 3 2 13 0010 t0 ⇥ ⇤ 6 10007 6t1 7 6 7 6 7 4 5 4 5 – coefficients = rows – basis functions = columns • note the two p columns sum to [0 0 0 1]T Cornell CS4620 Fall 2020

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    118 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us