import javax.swing.*;   // JFrame
import java.awt.event.*; // Timer
import java.awt.*; // Graphics
public class Sinewave extends JFrame implements ActionListener
{
// equation values:
public static double x = 0.0;
public static double y = 0.0;
public static double z = 0.0;
public static double q = 0.0;

// plottable values:
public static int pixelx = 0;
public static int pixely = 0;
public static int pixelz = 0;
public static int pixelq = 0;

public Timer myTimer;

public Sinewave()
   {
   setSize(800, 800);
   setVisible(true);
   setDefaultCloseOperation(EXIT_ON_CLOSE);;
   myTimer = new Timer( 10, this );
   myTimer.start();
   } // end constructor

public void paint (Graphics g)
   {
   // move the y=0 axis to the middle of the screen
   g.translate(0, 400);

   x = x + .01; 
   y = Math.sin( Math.pow(x,2) ); // y=sin(x-squared)
   z = Math.tan( x );
	q = Math.cos( x );

   //SCALING 
   pixelx =(int)(100.0*x); // for x = .1, pixelx = 10, x =.2, pixelx = 20, etc..
   pixely =(int)(300.0*y); // pixely goes -300 to +300 for y = -1 to +1
   pixelz =(int)(300.0*z);
	pixelq =(int)(300.0*q); 

   // draw sin curve
   g.setColor(Color.red);
   g.fillOval( pixelx, pixely, 10, 10);
   // draw tan curve
   g.setColor(Color.blue);
   g.fillOval( pixelx, pixelz, 10, 10);
   // draw cos curve
   g.setColor(Color.green);
   g.fillOval( pixelx, pixelq, 10, 10);

   // draw x axis at y = 0
   g.setColor( Color.black );
   g.fillOval( pixelx, 0, 5, 5);
   } // end paint


public static void main( String [] args )
   {
   Sinewave app = new Sinewave();
   } // end main
public void actionPerformed( ActionEvent e )
   {
   repaint();
   }
} // end class sinewave
