<< Chapter < Page | Chapter >> Page > |
Implementation of the algorithm
The algorithm is implemented by the code in a conventional for loop, which begins in Listing 4 .
Listing 4 . Beginning of the for loop. |
---|
for(int cnt = 0;cnt<pixels.length;cnt++){
pixel = pixels[cnt];green = pixel.getGreen();blue = pixel.getBlue(); |
The loop iterates through the array of Pixel data, modifying the colors in one pixel during each iteration.
The length property of the array object
Every array object in Java contains a length property that contains the number of elements in the array. The value of this property is used in theconditional clause in the for loop in Listing 4 to establish when the end of the array has been reached in order to terminate the loop.
Get reference to the next Pixel object
The first statement inside the for loop in Listing 4 gets a reference to a Pixel object from the next array element. That reference is stored in the local variable of type Pixel named pixel that was declared in Listing 3 .
Get the red and green color values for the current pixel
Having gotten a reference to the Pixel object, the next statement calls the getGreen method on that reference to get and save the value of the green color component in the current pixel.
Similarly, the statement following that one gets and saves the value of the blue color component in the current pixel.
Both values are returned as type int , and can range in value from 0 up to and including 255.
Objective is to scale the green and blue color values
Recall that the objective is to scale the green and blue color values on a column by column basis, going from left to right across the image shown in Figure 1 in order to produce the output image shown in Figure 2 .
Organization of the pixel data
The pixel data is stored in the array on a row by row basis. In other words, the first width elements contain references to pixels in the first row of pixels going from left to right across the screen. The next width elements contain references to pixels in the second row of pixels, etc.
Compute the column number and scale factors
Listing 5 uses the modulus operator to compute the column number for each Pixel object.
Listing 5 . Compute the column number and scale factors. |
---|
//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; |
An exercise for the student
Knowing the column number in which the pixel is located, the next step is to compute the green and blue scale factors necessary to satisfy the algorithm.
I will leave it as an exercise for the student to think about how the expressions contained in the last two statements in Listing 5 cause the two scale factors to vary linearly from left to right across the image in accordance with the requirements of the algorithm. (Think about the equation of a straight line from your high school math classes.)
Apply the scale factors
The Pixel class contains methods named setRed , setGreen , and setBlue that can be called to set the color values for the pixel represented by a Pixel object.
Notification Switch
Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?