
public class ComputeMap implements Runnable
{

  private Map mymap;
  private DrawIterate mydraw;
  private BifurcateApplet myapp;
  private double a1 = 0.0, a2 = 4.0;

    ComputeMap (Map mref, DrawIterate dref, BifurcateApplet bref)
  {
    mymap = mref;
    mydraw = dref;
    myapp = bref;
  }

  public void run ()
  {

    double avalue, incr;
    int number = 100;
    int WARM = 100;
    int i, j;
    int ITERATE = 32;
    double iter[];

      iter = new double[ITERATE];

    while (true)
      {

	myapp.runner.suspend ();
	mydraw.clearScreen ();
	incr = (a2 - a1) / number;

	for (i = 0; i <= number; i++)
	  {

	    avalue = a1 + i * incr;
	    mymap.setA (avalue);
	    mymap.setX (0.1);

	    for (j = 0; j < WARM; j++)
	      mymap.iterate ();

	    for (j = 0; j < ITERATE; j++)
	      {
		mymap.iterate ();
		mydraw.addPoints (avalue, mymap.getX ());
	      }


	    try
	    {
	      Thread.sleep (10);
	    }
	    catch (InterruptedException e)
	    {
	    }

	  }
      }

  }

  public void setA1 (double z)
  {
    a1 = z;
    return;
  }

  public void setA2 (double z)
  {
    a2 = z;
    return;
  }

  public double getA1 ()
  {
    return (a1);
  }

  public double getA2 ()
  {
    return (a2);
  }


}

