public class Pokus3 {

  public static void main(String[] args){
    double t;
    double deltat=0.00001;

    Capacitor C = new Capacitor(100.);
    double R1 = 100;
    double R2 = 1000;
    
    Source zdroj = new Source(){
      public double U(double t){  //toto je deklaracia typu hidden class
        double U0 = 4;
        double omega = 2.*Math.PI*50;   //frekvencia 50 Hz
        return U0*Math.sin(omega*t);
      }
    };
    Osciloscope osc = new Osciloscope(-0.5,4.5,0.5,deltat);
    Killer.createKiller();
    osc.autodraw(1000);
    //zadanie pociatocneho stavu
    t=0;
    double UR1=zdroj.U(t)-C.U();
    double i1 = UR1/R1;    //toto je hodnota prudu keby nebolo diody
    //teraz vplyv diody
    if(i1<0){ //diodou nemoze prechadzat v opacnom smere!!!
      //opravte nasledujuci riadok !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
      i1 = i1;
      UR1=0;
    }
    double UR2 = C.U();
    double i2 = UR2/R2;
    double ic = i1-i2;

    //hlavna casova slucka
    while(t<10.){
      t=t+deltat;
      C.charge(ic,deltat);     //vypocita novu hodnotu naboja na kondenzatore
      UR1=zdroj.U(t)-C.U();
      i1 = UR1/R1;        //toto je hodnota prudu keby nebolo diody
      if(i1<0){     //diodou nemoze prechadzat v opacnom smere!!!
        i1 = 0;
        UR1=0;
      }
      UR2 = C.U(); //na odpore R2 je rovnake napatie ako na kondenzatore
      i2 = UR2/R2;
      ic = i1-i2;  //tu sa vypocital novy prud kondenzatorom

      osc.add(t,UR2);
    }
  }
}
