<< Chapter < Page | Chapter >> Page > |
The program named Circle02 shown in Listing 19 produces the graphic output shown in Figure 11 .
The bottom half of the circle in Figure 11 was drawn using the second approach : accessing and setting pixel colors. As you can see, the quality is rather poor in comparison with the upperhalf that was drawn by using a turtle to graph the function.
For example, if the curve is anything other than a straight line, a considerable programming effort is usually required to cause the line width tobe greater than one pixel using this approach. Also, when you use this approach, if you want to produce a solid line, you must make certain that you don't skipany pixels when setting the pixel colors to represent the line. You can avoid both of these issues by using a turtle to draw the lines in your graph.
There are situations, however, where this approach will produce satisfactory results with less programming effort than would be the case using a turtle todraw the lines, so you should not discount this method entirely.
I will explain the programming differences involved in using this approach to draw the BLUE half circle as compared to the approach used in the program named Circle01 .
The code in Listing 12 is new compared to the code for the program named Circle01 .
private Picture pic = world.getPicture();
private Pixel pixel = null;
This code appears near the top of Listing 19 . The first statement gets a reference to the white Picture object that forms a background image in the World object.
The second statement in Listing 12 declares a variable of type Pixel that will be used as a working variable later.
The code in Listing 13 replaces the code that causes the turtle to move and draw a line segment in Listing 11 . This code translates the origin to the center and sets the color of a pixel on the circumference of the half circle to thecolor BLUE.
pixel = pic.getPixel(col + world.getWidth()/2,
row + world.getHeight()/2);pixel.setColor(Color.BLUE);
Note however that pixel colors are only set for the values of col that are computed in Listing 11 . If there are gaps in the column numbers, there will be gaps in the line as shown in Figure 11 . The turtle approach, on the other hand, draws the line across such gaps. If the gaps are large, the curvemay be jagged with the turtle approach, but there won't be empty gaps as in Figure 11 .
Figure 11 also illustrates the difference between having easy control over the line width and not having easy control over the line width. As mentionedabove, unless the curve is a straight line, it can be very difficult to control the line width with this approach.
Once again, however, there are situations where the approach of setting pixel colors will provide satisfactory results with minimum effort, so you shouldalways keep this approach as an option.
That is probably all that needs to be said about the program named Circle02 .
Notification Switch
Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?