Week 8 - Monday. What did we talk about last time? StdAudio

Preview:

Citation preview

CS 121Week 8 - Monday

Last time

What did we talk about last time?StdAudio

Questions?

Project 3

StdDraw

StdDraw

StdDraw is a library of Java code developed by Robert Sedgewick and Kevin Wayne

StdDraw allows you to draw output on the screen easily

You can draw points, lines, and polygons in various colors

You can clear and resize the drawing area and even save the results

StdDraw is not standard Java that everyone uses, but it’s a nice tool for graphics

Lines and Points

Lines and points

The simplest things you can draw with StdDraw are lines and points

The first thing you should be aware of is that the canvas is drawn like Quadrant I of a Cartesian plane

(0,0)

(0,1) (1,1)

(1,0)

Line and point methods

The following methods can be used to draw lines and points

Method Use

void line(double x0, double y0, double x1, double y1)

Draw a line from (x0,y0) to (x1,y1)

void point(double x, double y) Draw a point at (x,y)

Line example

Let’s draw a box then divide it into two halves, like so:

Circles and Polygons

Who wants to take all that time to make a square?

There are built in commands for drawing: Circles Squares Arbitrary polygons Filled versions of each one of these

We won’t bother with the arbitrary polygons

It is also possible to set the color

Shape methods

Here are some methods for drawing circles and squares and setting the color for doing so:Method Use

void circle(double x, double y, double r)

Draw a circle centered at (x,y) with radius r

void filledCircle(double x, double y, double r)

Draw a filled circle centered at (x,y) with radius r

void square(double x, double y, double r)

Draw a square centered at (x,y) with edges 2r

void filledSquare(double x, double y, double r)

Draw a filled square centered at (x,y) with edges 2r

void setPenColor(Color c) Start drawing with color c

Colors

Eventually you will be able to define your own colors

For now you are limited to 13 presets

For example, to make something magenta, you would use the value StdDraw.MAGENTA

BLACK BLUE CYAN DARK_GRAY GRAY

GREEN LIGHT_GRAY MAGENTA ORANGE PINK

RED WHITE YELLOW

Screen saver?

Let’s write some code for making 100 circles at random locations with random sizes and random colors

Location is easy Size is easy, we just decide on the

range of sizes we want and do some math

Color is more painful We need a switch statement with 13

choices

What about a chessboard?

We just want to make a pattern of black and white squares on the screen

Hint: We need two loops

Controlling the Draw Area

Controls

A number of methods are given to give us more control over the display

Method Use

void setXscale(double x0, double x1) Set the x scale

void setYscale(double y0, double y1) Set the y scale

void setPenRadius(double r) Set the pen radius

void setCanvasSize(int w, int h) Set canvas size

void clear() Clear canvas to white

void clear(Color c) Clear canvas to color c

void show(int delay) Delay for delay ms

Scales

As you have seen, the default scale of the canvas is in the range [0,1] for both x and y

We can use the setXscale() method to set the minimum and maximum x values

We can use the setYscale() method to set the minimum and maximum y values

Useful for plotting functions

Canvas size

Note that changing the scale doesn’t change the size of the window, just what is shown in it

If you want to change the size of the window, use the setCanvasSize() method to set the width and the height of the canvas in terms of screen pixels

What is this show() thing?

The show() method lets you specify a delay in milliseconds before things are drawn on the screen

You can use it to slow down or speed up animations

Applications

Cannon simulator

Can we simulate a cannon being fired?

Let the user enter an initial velocity in m/s

Let the user an angle between 0° and 90°

Assume each iteration takes 1/10 of a second

Assume an initial height of 20 m We draw the path of the cannon ball

as it flies through the air Let’s also set the x and y scales to

both be [0,100]

Plotting functions

Plotting functions is really useful Getting smooth curves is hard Instead, we just pick a whole bunch

of x points and figure out the function value We can just draw dots to plot those

values We can connect them with lines for a

more connected look Let’s write some code to draw cubic

polynomials

Function plotting algorithm

1. Ask the user for the coefficients of the four terms (ax3 + bx2 + cx + d)

2. Ask the user for an x range3. Run through the function and find the

minimum and maximum y values hit4. Rescale the drawing area to show

everything5. Plot the function

Upcoming

Next time…

Static methods

Reminders

Read Chapter 8 of the textbookGet an early start on Project 3

It's harder than the previous two!

Recommended