### Slides

```Week 8 - Monday


What did we talk about last time?
StdAudio





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


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,1)
(1,1)
(0,0)
(1,0)

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)

Let’s draw a box then divide it into two
halves, like so:

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

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
void filledCircle(double x,
double y, double r)
Draw a filled circle centered
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



Eventually you will be able to define your own
colors
For now you are limited to 13 presets
BLACK
BLUE
CYAN
DARK_GRAY
GRAY
GREEN
LIGHT_GRAY
MAGENTA
ORANGE
PINK
RED
WHITE
YELLOW
For example, to make something magenta, you
would use the value StdDraw.MAGENTA




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


We just want to make a pattern of black and
white squares on the screen
Hint: We need two loops

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 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




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


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


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







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 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
1.
2.
3.
4.
5.
Ask the user for the coefficients of the four
terms (ax3 + bx2 + cx + d)
Ask the user for an x range
Run through the function and find the
minimum and maximum y values hit
Rescale the drawing area to show
everything
Plot the function

Static methods


Read Chapter 8 of the textbook
Get an early start on Project 3
 It's harder than the previous two!
```