<< Chapter < Page
  Digital signal processing - dsp     Page 22 / 25
Chapter >> Page >

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

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  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.

Notification Switch

Would you like to follow the 'Digital signal processing - dsp' conversation and receive update notifications?

Ask