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

## Presentation on theme: "Week 8 - Monday.  What did we talk about last time?  StdAudio."— Presentation transcript:

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,0) (0,1)(1,1) (1,0)

 The following methods can be used to draw lines and points MethodUse 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: MethodUse 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

 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 BLACKBLUECYANDARK_GRAYGRAY GREENLIGHT_GRAYMAGENTAORANGEPINK REDWHITEYELLOW

 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 MethodUse 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

 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. Ask the user for the coefficients of the four terms (ax 3 + bx 2 + cx + d) 2. Ask the user for an x range 3. Run through the function and find the minimum and maximum y values hit 4. Rescale the drawing area to show everything 5. 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!