Curves - PowerPoint PPT Presentation

About This Presentation
Title:

Curves

Description:

Curves * * * * * * Result Go to the demo program My code generates a Hermite curve that is of C1 continuity As I generate new segments along the curve I join them ... – PowerPoint PPT presentation

Number of Views:694
Avg rating:3.0/5.0
Slides: 36
Provided by: d1176
Category:
Tags: curvature | curves

less

Transcript and Presenter's Notes

Title: Curves


1
Curves
2
First of all
  • You may ask yourselves What did those papers
    have to do with computer graphics?
  • Valid question
  • Answer I thought they were cool, unique
    applications of computer graphics
  • This week were looking at scan conversion of
    curves

3
Interpolation
  • Bresenhams line drawing algorithm is nothing
    more than a form of interpolation
  • Given two points, find the location of points in
    between them
  • The function (in this case its a line) must pass
    through the given points, by definition

4
Interpolation Usage
  • We used Bresenham line drawing (interpolation) to
    scan convert a symbolic representation of a line
    to a rasterized line
  • Other applications exist
  • Computing calendar years are leap years (believe
    it or not)
  • Line Drawing, Leap Years, and Euclid, Harris and
    Reingold, ACM Computing Surveys, Vol. 36, No. 1,
    March 2004, pp. 66-80
  • Path planning for key frame animation

5
Key Frame Animation
  • Key frames are infrequent scenes that capture the
    essential flow of an animation
  • Think of them as the endpoints of a line
  • In between frames (tweens) may be generated by
    interpolating between two key frames
  • Think of these as the points drawn by the
    Bresenham algorithm

6
Approximation
  • Another possibility for generating tweens is to
    specify tie-points that guide the generation of
    the intermediate path points but the path does
    not pass through the tie-points
  • This technique is called approximation or curve
    fitting

7
Curves
  • Well look at two techniques for generating
    curves (to be used as either paths or drawn
    objects)
  • Interpolation
  • Approximation
  • Well also see that interpolation is very
    restrictive when considering parametric curves
  • Approximation is a much better approach

8
Parametric Curves
  • Recall the parametric line equations
  • The parameter t is used to map out a set of (x,
    y) pairs that represent the line

9
Parametric Curves
  • In the case of a curve the parametric function is
    of the form
  • Q(u) (x(u), y(u), z(u)) in 3 dimensions
  • The derivative of Q(u) is of the form
  • Q(u) (x(u), y(u), z(u))
  • Significance of the derivative?
  • It is the tangent vector at a given point (u) on
    the curve

10
Derivative
11
Parametric Curves
  • In the case of object drawing, u is a spatial
    parameter (like t was for the line)
  • In the case of key frame animation, u is a
    temporal parameter
  • In both cases Q(0) is the start of the curve and
    Q(1) is the end, as was the case for the
    parametric line

12
Parametric Curves
  • Curvature
  • Curvature k 1/ ?
  • The higher the curvature, the more the curve
    bends at the given point

13
Parametric Curves
  • From calculus, a function f is continuous at a
    value x0 if
  • In laymans terms this means that we can draw the
    curve without ever lifting our pen from the
    drawing surface
  • f(x) is continuous over an interval (a,b) if it
    is continuous for every point in the interval
  • We call this C0 continuity

14
Parametric Curves
Continuous over (a,b) C0
Continuous over (a,b) C0
15
Parametric Curves
  • From calculus, a functions derivative f is
    continuous at a value x0 if
  • In laymans terms this means that there are no
    sharp changes in direction
  • f(x) is continuous over an interval (a,b) if it
    is continuous for every point in the interval
  • We call this C1 (tangential) continuity

16
Parametric Curves
Continuous derivative over (a,b) C1
Discontinuous derivative over (a,b) not C1
17
Parametric Curves
  • When we need to join two curves at a single point
    we can guarantee C1 continuity across the joint
  • For the case when we cant make one continuous
    curve
  • Just make sure that the tangents of the two
    curves at the join are of equal length and
    direction
  • If the tangents at the joint are of identical
    direction but differing lengths (change in
    curvature) then we have G1 continuity

18
Lagrange Polynomials
  • To generate a function that passes through every
    specified point, the type of function depends on
    the number of specified points
  • Two points ? linear function
  • Three points ? quadratic function
  • Four points ? cubic function
  • Generating such functions makes use of Lagrange
    polynomials

19
Lagrange Polynomials
  • The general form is (n is the number of points)
  • Lets look at an example

20
Lagrange Polynomials
  • For two points P0 and P1
  • For the starting point (t00) and ending point
    (t11)

21
Lagrange Polynomials
  • For three points P0 , P1 , and P2
  • And it only gets worse for larger numbers of
    points
  • Suffice it to say, this isnt the most optimum
    way to draw curves
  • Too many operations per point
  • Too complex if the artist decides to change the
    curve
  • But you could do it

22
A Better Way
  • The problem with Lagrange polynomials lies in the
    fact that we try to make the curve pass through
    all of the specified points
  • A better way is to specify points that control
    how the curve passes from one point to the next
  • We do so by specifying a cubic function
    controlled by four points
  • The four points are called boundary conditions

23
Hermite Boundary Conditions
  • Two points
  • Two tangent vectors
  • Two of the points are interpreted as vectors off
    of the other two points

24
Cubic Functions
  • Generalized form
  • Derivative
  • Our goal is to solve these equations in closed
    form so that we can generate a series of points
    on the curve

25
Cubic Functions
  • There are four unknown values in the equation
  • a, b, c, and D (remember, a, b, c, and D are
    vectors in x, y, z so there is actually a set of
    3 equations)
  • We need to use these equations to generate values
    of x, y, and z along the curve
  • We can generate a closed form solution (solve the
    equations for x, y, and z) since we have four
    known boundary conditions
  • u 0 ? Q(0) P0 and Q(0) P0
  • u 1 ? Q(1) P1 and Q(1) P1

26
Solution of Equations
  • Go to the white board

27
Implementation
  • So, all you have to do to generate a curve is to
    implement this vector (x, y, z) equation
  • by stepping 0 u 1
  • P0, P1, P0 and P1 are vectors in x, y, z so
    there are really 12 coefficients to be computed
    and youll be implementing 3 equations for Q(u)

28
Implementation
  • Note that youll have to estimate the step size
    for u or(any ideas?)
  • use your Bresenham code to draw short straight
    lines between the points you generate on the
    curve (to fill gaps)
  • There is no trick (that Im aware of) comparable
    to the Bresenham approach

29
Bezier Curves
  • Similar derivation to Hermite
  • Different boundary conditions
  • Bezier uses 2 endpoints and 2 control points
    (rather than 2 endpoints and 2 slopes)

30
Bezier Curves
31
Implementation
  • So, all you have to do to generate a curve is to
    implement this vector (x, y, z) equation
  • by stepping 0 u 1
  • P0, P1, P2 and P3 are vectors in x, y, z so there
    are really 12 coefficients to be computed and
    youll be implementing 3 equations for Q(u)

32
Bezier example
33
Hermite vs. Bezier
  • Hermite is easy to control continuity at the
    endpoints when joining multiple curves to create
    a path
  • But difficult to control the internal shape of
    the curve
  • Bezier is easy to control the internal shape of
    the curve
  • But a little more (not much) difficult to control
    continuity at the endpoints when joining multiple
    curves to create a path
  • Bottom line is, when creating a path you have to
    be very selective about endpoints and adjacent
    control points (Bezier) or tangent slopes
    (Hermite)

34
Result
  • Go to the demo program
  • My code generates a Hermite curve that is of C1
    continuity
  • As I generate new segments along the curve I join
    them by keeping the adjoining tangent vectors
    equal

35
Homework
  • Implement Bezier and Hermite curve drawing
  • Parameters should be control points and brush
    width
  • Create a video sequence to show in class
  • Demonstrate Bezier and Hermite curves of various
    control points and brush widths
  • Be creative
  • Due date Next week Turn in
  • Video to be shown in class
  • All program listings
  • Grading will be on completeness (following
    instructions) and timeliness (late projects will
    be docked 10 per week)
Write a Comment
User Comments (0)
About PowerShow.com