<< Chapter < Page | Chapter >> Page > |
y = x*x
double function(double xVal){
double yVal = xVal*xVal;return yVal;
}//end function
A plot of the output of the method named function would look like the curve shown in Figure 7 with no offsets if the x and y scaling values were set to one-half the width and height of the world respectively.
It will be instructive to see how this program uses offsets and scaling values to transform the image shown in Figure 7 into the image shown in Figure 6 .
The code fragment shown in Listing 7 shows the drawing parameters that were used to produce the output shown in Figure 6 .
double xOff = 0.25;//offset relative to 1.0
double yOff = -0.25;double xScale = 0.75*world.getWidth()/2;
double yScale = 1.25*world.getHeight()/2;
The parameters that were used to produce the output shown in Figure 7 are shown below:
double xOff = 0.0;//offset relative to 1.0
double yOff = -0.0;double xScale = 1.0*world.getWidth()/2;
double yScale = 1.0*world.getHeight()/2;
Note in particular that the offsets given by xOff and yOff are set to zero and the scale factors given by xScale and yScale are one-half the width and height of the world respectively.
Increasing the offsets for xOff and yOff to 0.25 and -0.25 respectively as shown in Figure 7 and making no other changes produces the output shown in Figure 8
In comparison with Figure 7 , changing the value of xOff to 0.25 caused the peak to move to the right (positive direction) one-fourth of the way from the center origin to the right edge of the world. (That change also caused a portion of the curve to fall outside the right boundary of the world.)
Similarly, changing the value of yOff to -0.25 caused the peak to move up (negative direction) one-fourth of the way from the center origin to the top edge of the world.
Following that, changing the values of xScale and yScale to the values shown in Listing 7 produces the graphic output shown in Figure 6 . The change in xScale decreased the total width of the curve and prevented it from exceeding the rightmost boundary of theworld. The change in yScale increased the overall height of the curve causing it to almost touch the lower boundary of the world.
The code in Listing 8 draws the blue parabolic function shown in Figure 6 .
double yVal = 0;
int row = 0;int col = 0;
double xVal = -1;turtle.setPenColor(Color.BLUE);
for(int cnt=0; cnt<=100;cnt++,xVal += 0.02){
//Get a y-value for the given x-value.yVal = function(xVal);
//Apply the offsets and scale the resultscol = (int)((xOff+xVal)*xScale);
row = (int)((yOff+yVal)*yScale);//Move to the first point without drawing a line because the// pen is not down. Translate the origin to the center in the
// process.turtle.moveTo(col + world.getWidth()/2,
row + world.getHeight()/2);//Lower the pen in order to draw a line from each point to the
// next point.turtle.penDown();
}//end for loop}//end run method
Notification Switch
Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?