drawing curves lecture 9 mon, sep 15, 2003. drawing functions if f(x) is a function, then thanks to...

Post on 31-Dec-2015

214 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Drawing Curves

Lecture 9Mon, Sep 15, 2003

Drawing Functions

If f(x) is a function, then thanks to the vertical-line test, for each value of x, there is at most one value of y on the graph of f(x).Therefore, we may sample points along the x-axis, compute the y-coordinates on the curve, and then draw the graph.

Drawing Functions

For example, we may write the following.

float dx = (xmax – mxin)/(numPts – 1);glBegin(GL_LINE_STRIP); for (float x = xmin; x <= xmax; x += dx); glVertex2f(x, f(x));glEnd();

Drawing Functions

Is it better to compute f(x) in real time?Or should we store the function values in an array?for (int i = 0; i < numPts; i++)

{ xcoord[i] = x; ycoord[i] = f(x); x += dx;}// LaterglBegin(GL_LINE_STRIP); for (int i = 0; i < numPts; i++) glVertex2f(xcoord[i], ycoord[i]);glEnd();

Drawing Functions

What if we want to draw many functions?If we choose to store them, how do we store them?

Drawing Functions

What if we wanted to draw a circle? The circle fails the vertical line test.

We could draw two semicircles. f1(x) = (r2 – x2) f2(x) = -(r2 – x2)

Are there any problems with this?Is there a better way?

Curves in the Plane

We generally think of curves in the plane as being described by equations in x and y Line: y = 3x + 5 Parabola: y = 2x2 – 10 Circle: x2 + y2 = 100 Ellipse: x2 + 2y2 = 100

However, it is often easier to describe curves parametrically.

Parametric Curves

To parameterize a curve, we define both x and y as functions of a parameter t. x = x(t) y = y(t)

The parameter t may be unrestricted or it may be restricted to some range a t b.

Parameterizing Lines

The line through two points A and B can be parameterized as x(t) = A.x + (B.x – A.x)t y(t) = A.y + (B.y – A.y)t

We may write this as in the vector form

P = A + (B – A)tWhat point do we get when t = 0? t = 1? t = ½?

Line Segments and Rays

The line segment AB is given by x = A.x + (B.x – A.x)t y = A.y + (B.y – A.y)t 0 t 1

The ray AB is given by the same, except t 0

What about the ray BA?

Parameterizing Circles and Arcs

The circle with center at C and radius r can be parameterized as x(t) = C.x + r cos(t) y(t) = C.y + r sin(t) 0 t 2

We get an arc if we restrict t further.For example, suppose 0 t /2.

Parameterizing Ovals

To parameterize an oval (ellipse) with axis 2a in the x-direction and axis 2b in the y-direction, let x(t) = a cos(t) y(t) = b sin(t) 0 t 2

Other Curves

Many interesting curves are possible.What is the shape of the following curve? x(t) = sin(t) y(t) = sin(2t) 0 t 2

How about x(t) = (t – 1)2

y(t) = t(t – 2) 0 t 2.

Parametric Curves in 3D

Three-dimensional curves are similar except there is also a z-coordinate given by z(t).

The Helix

A helix of radius 1 is given by x(t) = cos(t) y(t) = sin(t) z(t) = t 0 t 2

top related