The only significant change to this program relative to the program named VectorAdd05 is shown in Listing 9 .
Listing 9 . Abbreviated listing of the drawOffScreen method. |
---|
void drawOffScreen(Graphics2D g2D){
//Code deleted for brevity.g2D.setColor(Color.RED);//Change drawing color to RED.//Translate the geometric object and save the points// that define the translated object in the same
// array object.for(int cnt = 0;cnt<numberPoints;cnt++){
points[cnt].setData(
0,points[cnt].getData(0) + vector.getData(0));
points[cnt].setData(
1,points[cnt].getData(1) + vector.getData(1));
if(drawPoints){//Draw points if true.points[cnt].draw(g2D);}//end if
}//end for loop//Code deleted for brevity}//end drawOffScreen |
Compare this code with an earlier listing
You should compare the code in Listing 9 with the code in Listing 6 . The code in Listing 9 does not call the addVectorToPoint method to instantiate a new set of GM2D04.Point objects. Instead, it uses lower-level methods from the game-math library to modify the x and y attribute values that definethe locations of the existing GM2D04.Point objects.
As you can see, the code in Listing 9 is somewhat more complex than the code in Listing 6 . However, the code in Listing 9 possibly entails lower overhead at runtime. First, it doesn't call the addVectorToPoint method that hides the programming details behind a single method call. Second, the code in Listing 9 doesn't instantiate new objects of the GM2D04.Point class, as is the case in Listing 6 .
A middle ground
A middle ground that is not illustrated here might be to use a method like the addVectorToPoint method to hide the details, but to have that method change the x and y attribute values in the existing points instead ofinstantiating new objects. None of the three approaches is either right or wrong. There are pros and cons to all three approaches. This is indicative ofthe kinds of decisions that must be made by developers who design class libraries containing classes and methods to accomplish common tasks.
End of the program discussion
That ends the discussion of the program named VectorAdd05a .
The program named VectorAdd06
This is an update to the program named VectorAdd05 . The behavior of this program is similar to the earlier program except that instead of displayinga static view of the translated geometric object when the Replot button is clicked, this program animates the geometric object causing it to move fromits original location shown in Figure 4 to a new location in 100 incremental steps along a straight line path.
Figure 4 Starting point for the hexagon in VectorAdd06.
The final position
The final position for the translated hexagon depends on the user input values for the vector. Figure 5 shows one possible ending point for the translated hexagon.
Figure 5 Possible ending point for the hexagon in VectorAdd06.
The animation loop
The animation loop sleeps for ten milliseconds during each of the 100 iterations. Therefore, approximately one second (1000 milliseconds and possibly more) is required for the object to make the trip from its initial location to its new location. Once it reaches the new location, the program isready for the user to change input values and click the Replot button again.