import sk.uniba.fmph.pocprak.simplegraphics.*;
import sk.uniba.fmph.pocprak.ioutils.*;
import sk.uniba.fmph.pocprak.genutils.wait;

public class Model1 {

  public static void main(String[] args) {
    Killer.createKiller();

    Oscilator o = new Oscilator(0.3, 0);
    W.t = 0; //pociatocny globalny cas vynulovany;
    Kreslic krx = new Kreslic(new GrAxisX( -0.5, 0.5, 0.), null);
    krx.nakresliOsi();
    Kreslic krtx = new Kreslic(new GrAxisX(0., 10., 0.),
                               new GrAxisY( -0.5, 0.5, 0));
    krtx.nakresliOsi();
    Kreslic krxp = new Kreslic(new GrAxisX( -0.5, 0.5, 0.),
                               new GrAxisY( -0.5, 0.5, 0.));
    krxp.nakresliOsi();

    double deltat = 0.0001;
    krx.gr.drawPoint(o.x, 0, 3);
    krtx.gr.drawPoint(W.t, o.x);
    krxp.gr.drawPoint(o.x, o.p, 3);

    krx.repaintall();
    krtx.repaintall();
    krxp.repaintall();
    
    //SimpleIO.waitForEnter("Rozmiestnite si okna a stlacte Enter");
    wait.calibrate();	//calibrate the wait methods for the particular computer
    for (int i = 0; i < 1000; i++) {
      for (int j = 0;j < 50; j++) {
        o.makeStep(deltat);
        W.t = W.t + deltat;
      }
      wait.milis(50);
      krx.gr.clearImage();//takto sa animacia nerobi, bude to blikat, ale je to jednoduche
      krxp.gr.clearImage();//takto sa animacia nerobi, bude to blikat, ale je to jednoduche

      krx.gr.drawPoint(o.x, 0, 3);
      krtx.gr.drawPoint(W.t, o.x);
      krxp.gr.drawPoint(o.x, o.p, 3);

      krx.repaintall();
      krtx.repaintall();
      krxp.repaintall();
    }
    //SimpleIO.waitForEnter("Stlacte Enter na zatvorennie okien a programu");
    //System.exit(0);

  }
}
