Presentation is loading. Please wait.

Presentation is loading. Please wait.

Curves.

Similar presentations


Presentation on theme: "Curves."— Presentation transcript:

1 Curves

2 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

3 Curves We’ll look at two techniques for generating curves
Interpolation Approximation We’ll also see that interpolation is very restrictive when considering parametric curves Approximation is a much better approach

4 Parametric Curves Similar to what we saw with lines
The parameter t is used to map out a set of (x, y) pairs that represent the line

5 Parametric Curves In the case of a curve we concern the parametric function is of the form Q(u) = (x(u), y(u), z(u)) in 3 dimension 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 to a given location (u) on the curve

6 Derivative

7 Parametric Curves In the case of object drawing, u is a spatial parameter Q(0) is the start of the curve and Q(1) is the end, as was the case for the parametric line

8 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

9 Parametric Curves From calculus, a function f is continuous at a value x0 if In layman’s terms, 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

10 Parametric Curves Continuous over (a,b) – C0 a b

11 Parametric Curves From calculus, a function’s derivative f’ is continuous at a value x0 if In layman’s terms, 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

12 Parametric Curves Continuous derivative over (a,b) – C1 a b
Discontinuous derivative over (a,b) – not C1 a b

13 Parametric Curves When we need to join two curves at a single point we can guarantee C1 continuity across the joint 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

14 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

15 Lagrange Polynomials The general form is Let’s look at an example

16 Lagrange Polynomials For two points:
For the starting point (t0=0) and ending point (t1=1)

17 Lagrange Polynomials For three points:
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

18 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

19 Hermite Boundary Conditions
P0 P1 P’1 P’0 Two points Two tangent vectors

20 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

21 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) 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 boundary conditions u = 0 → Q(0) = P0 and Q’(0) = P’0 u = 1 → Q(1) = P1 and Q’(1) = P’1

22 Solution of Equations Go to the white board…

23 Implementation So, all you have to do to generate a curve is to implement this vector 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 you’ll be implementing 3 equations for Q(u)

24 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

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

26 Bezier Curves Control points Endpoints

27 Implementation So, all you have to do to generate a curve is to implement this vector 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 you’ll be implementing 3 equations for Q(u)

28 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)

29 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


Download ppt "Curves."

Similar presentations


Ads by Google