<< Chapter < Page | Chapter >> Page > |
Listing 34 shows the methods called from the code in Listing 33 to actually draw the tic marks on the axes.
Listing 34. Drawing tic marks. |
---|
void xTics(Graphics g){
double xDoub = 0;int x = 0;
//Get the ends of the tic marks.int topEnd = getTheY(xTicLen/2);
int bottomEnd =getTheY(-xTicLen/2);
//If the vertical size of the// plotting area is small, the
// calculated tic size may be too// small. In that case, set it to
// 10 pixels.if(topEnd<5){
topEnd = 5;bottomEnd = -5;
}//end if//Loop and draw a series of short
// lines to serve as tic marks.// Begin with the positive x-axis
// moving to the right from zero.while(xDoub<xMax){
x = getTheX(xDoub);g.drawLine(x,topEnd,x,bottomEnd);
xDoub += xTicInt;}//end while
//Now do the negative x-axis moving// to the left from zero
xDoub = 0;while(xDoub>xMin){
x = getTheX(xDoub);g.drawLine(x,topEnd,x,bottomEnd);
xDoub -= xTicInt;}//end while
}//end xTics//---------------------------------//
//Method to draw tic marks on y-axisvoid yTics(Graphics g){
double yDoub = 0;int y = 0;
int rightEnd = getTheX(yTicLen/2);int leftEnd = getTheX(-yTicLen/2);
//Loop and draw a series of short// lines to serve as tic marks.
// Begin with the positive y-axis// moving up from zero.
while(yDoub<yMax){
y = getTheY(yDoub);g.drawLine(rightEnd,y,leftEnd,y);
yDoub += yTicInt;}//end while
//Now do the negative y-axis moving// down from zero.
yDoub = 0;while(yDoub>yMin){
y = getTheY(yDoub);g.drawLine(rightEnd,y,leftEnd,y);
yDoub -= yTicInt;}//end while
}//end yTics |
Again, I am going to let the comments suffice to explain this code.
As mentioned earlier, methods named getTheX and getTheY are used to convert coordinate values from type double to integer values in pixels. Those two methods are shown in Listing 35 .
Listing 35. The getTheX and getTheY methods. |
---|
//This method translates and scales
// a double y value to plot properly// in the integer coordinate system.
// In addition to scaling, it causes// the positive direction of the
// y-axis to be from bottom to top.int getTheY(double y){
double yDoub = (yMax+yMin)-y;int yInt = (int)(yDoub*yScale);
return yInt;}//end getTheY
//---------------------------------////This method scales a double x value
// to plot properly in the integer// coordinate system.
int getTheX(double x){return (int)(x*xScale);
}//end getTheX//---------------------------------//
}//end inner class MyCanvas//===================================//
}//end class GUI |
Listing 35 also marks the end of the inner class named MyCanvas and the end of the class named GUI .
Listing 36 defines a test class named junk that implements the interface named GraphIntfc01 .
Listing 36. The test class named junk. |
---|
//Sample test class. Required for
// compilation and stand-alone// testing.
class junk implements GraphIntfc01{public int getNmbr(){
//Return number of functions to// process. Must not exceed 5.
return 4;}//end getNmbr
public double f1(double x){return (x*x*x)/200.0;
}//end f1public double f2(double x){
return -(x*x*x)/200.0;
}//end f2public double f3(double x){
return (x*x)/200.0;}//end f3
public double f4(double x){return 50*Math.cos(x/10.0);
}//end f4public double f5(double x){
return 100*Math.sin(x/20.0);}//end f5
}//end sample class junk |
Notification Switch
Would you like to follow the 'Digital signal processing - dsp' conversation and receive update notifications?