This page is optimized for mobile devices, if you would prefer the desktop version just
click here
Drawing tic marks
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.
The getTheX and getTheY methods
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 .
The test class named junk
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 |
Read also:
OpenStax, Digital signal processing - dsp. OpenStax CNX. Jan 06, 2016 Download for free at https://legacy.cnx.org/content/col11642/1.38
Google Play and the Google Play logo are trademarks of Google Inc.