Revised: Sat Apr 02 20:06:54 CDT 2016
This page is included in the following Books:
Table of contents
Preface
This module contains review questions and answers keyed to the module titled Java3006: Implementing a space-wise linear color-modification algorithm .
The questions and the answers are connected by hyperlinks to make it easy for you to navigate from the question to the answer and back again.
Questions
Question 1 .
True or False? The program shown in Listing 1 will transform the image shown in Figure 1 into the image shown in Figure 2 (or to an image that looks very similar to the image shown in Figure 2 ).
Listing 1 . Source code for Java3006r. |
---|
/*File Java3006r Copyright 2013 R.G.Baldwin
*********************************************************/public class Java3006r{
public static void main(String[]args){
Java3006rRunner obj = new Java3006rRunner();obj.run();
System.out.println(obj.getPicture());}//end main
}//end class Java3006r//======================================================//
class Java3006rRunner{//Instantiate the Picture object.
private Picture pic = new Picture("Java3006r.jpg");
public Java3006rRunner(){//constructorSystem.out.println("Dick Baldwin");
}//end constructor//----------------------------------------------------//
//Accessor methodpublic Picture getPicture(){return pic;}
//----------------------------------------------------////This method is where the action is.
public void run(){pic.addMessage("Dick Baldwin",10,20);
//Display a PictureExplorer object.pic.explore();
//Get an array of Pixel objects.Pixel[] pixels = pic.getPixels();//Declare working variables
Pixel pixel = null;int green = 0;
int blue = 0;int width = pic.getWidth();
double greenScale = 0;double blueScale = 0;
//Scale the blue and green color components according// to the algorithm given above.
//Do not scale the red component.for(int cnt = 0;cnt<pixels.length;cnt++){
//Get blue and green values for current pixel.pixel = pixels[cnt];green = pixel.getGreen();
blue = pixel.getBlue();//Compute the column number and use it to compute
// the scale factor.int col = cnt%width;
greenScale = (double)(width - col)/width;blueScale = (double)(col)/width;
//Apply the scale factor.pixel.setGreen((int)(green * greenScale));
pixel.setBlue((int)(blue * blueScale));}//end for loop
//Display a PictureExplorer object.pic.explore();
}//end run method}//end class Java3006rRunner |
Figure 1 - The image from Java3006r.jpg.
Figure 2 - Possible output image.
Question 2
True or False? The output shown in Figure 2 was produced by calling the show method of Ericson's Picture class.
Question 3
True or False? A call to Ericson's getPixels method returns a reference to a one-dimensional array object. The elements in the array are references to Pixel objects, where each Pixel object represents a single pixel in an image.