Download presentation
Presentation is loading. Please wait.
Published byTheodore Kelley Modified over 9 years ago
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 we’re looking at scan conversion of curves
3
Interpolation Bresenham’s 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 it’s 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 We’ll look at two techniques for generating curves (to be used as either paths or drawn objects) –Interpolation –Approximation We’ll 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 Osculating circle of radius ρ touches the curve at exactly 1 point ρ
13
Parametric Curves From calculus, a function f is continuous at a value x 0 if In layman’s 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 C 0 continuity
14
Parametric Curves a b a b Continuous over (a,b) – C 0
15
Parametric Curves From calculus, a function’s derivative f’ is continuous at a value x 0 if In layman’s 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 C 1 (tangential) continuity
16
Parametric Curves a b a b Continuous derivative over (a,b) – C 1 Discontinuous derivative over (a,b) – not C 1
17
Parametric Curves When we need to join two curves at a single point we can guarantee C 1 continuity across the joint –For the case when we can’t 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 G 1 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) Let’s look at an example
20
Lagrange Polynomials For two points P 0 and P 1 : For the starting point (t 0 =0) and ending point (t 1 =1)
21
Lagrange Polynomials For three points P 0, P 1, and P 2 : And it only gets worse for larger numbers of points Suffice it to say, this isn’t 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 P0P0 P1P1 P’ 1 P’ 0
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 This is why it’s called a “cubic” function
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) = P 0 and Q’(0) = P’ 0 u = 1 → Q(1) = P 1 and Q’(1) = P’ 1
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 P 0, P 1, P 0 ’ and P 1 ’ are vectors in x, y, z so there are really 12 coefficients to be computed and you’ll be implementing 3 equations for Q(u)
28
Implementation Note that you’ll 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 I’m 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 Endpoints Control points
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 P 0, P 1, P 2 and P 3 are vectors in x, y, z so there are really 12 coefficients to be computed and you’ll 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 C 1 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)
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.