import sk.uniba.fmph.pocprak.simplegraphics.*;
import sk.uniba.fmph.pocprak.ioutils.*;
import java.util.Random;
import java.io.FileNotFoundException;
import sk.uniba.fmph.pocprak.genutils.wait;

public class Termalizuj {

  public static void main(String[] args) throws Exception {
    Killer.createKiller();
    int n=500;  //celkovy pocet oscilatorov
    
    //balik premennych charakterizujucich projektily a zrazkove parametre
    W.r=new Random(123456);
    Projektil.M=0.01;
    Projektil.EKIN=0.005;
    Oscilator.zrazky=true;
    Oscilator.rr.tau=0.01;  //stredna doba medzi zrazkami pre RuskuRuletu
    
    // inicializujeme oscilatory
    Oscilator.linear=true;
    Oscilator[] o = new Oscilator[n]; //pole oscilatorov, zatial prazdne

    for(int io=0;io<n;io++){

    double x0= 0.27+0.06*W.r.nextDouble();
    double p0= -0.02+0.04*W.r.nextDouble();
    o[io] = new Oscilator(x0,p0);

    }
    wait.calibrate();	//calibrate the wait methods for the particular computer
     
    //inicializujeme kresliacu plochu - fazovy priestor (x,p)
    Kreslic krxp=new Kreslic(new GrAxisX(-0.5,0.5,0.),new GrAxisY(-0.5,0.5,0.));
    krxp.nakresliOsi();

    W.t=0; //pociatocny globalny cas vynulovany;
    double deltat=0.00001;
    for(int io=0;io<n;io++)
         krxp.gr.drawPoint(o[io].x,o[io].p,2);

    while(W.t<10){
      for (int j = 0;j<1000;j++){
        for(int io=0;io<n;io++)o[io].makeStep(deltat);
        W.t = W.t + deltat;
      }
      wait.milis(50);
      krxp.gr.clearImage();

      for(int io=0;io<n;io++)krxp.gr.drawPoint(o[io].x,o[io].p,2);

      krxp.repaintall();
    }
    
    //  tu skoncila simulacia 10 sekundovej termalizacie oscilatorov
    
    
    // Najprv pozorujte simulaciu, potom na tomto mieste doplnte program:

    // Otvorte vystupny sybor "termalizacia.txt"
    // a zapiste don suradnice a hybnosti vsetkych n oscilatorov
    // vzdy do jedneho riadku udaje x a p pre jeden oscilator
    
    //  ?????????????????????????????????????
  }
}
