package p5;
import anar.*;




import processing.core.PApplet;

public class Test03rLorentz extends PApplet {

  /*
   * Example for Anar library by Guillaume LaBelle + Julien Nembrini
   * http://anar.ch
   */


  Obj myObj;

  Param a, b, c, h;


  public void setup(){
    size(800,400,OPENGL);
    Anar.init(this);
    Anar.drawAxis();

    a = new Param(10,0,40,"a");
    b = new Param(28,0,100,"b");
    c = new Param(8/3f,0,10,"c");
    h = new Param(0.01f,0,0.1f,"h");

    Anar.sliders(a);
    Anar.sliders(b);
    Anar.sliders(c);
    Anar.sliders(h);


    initForm();
  }


  public void initForm(){
    myObj = new Obj();


    Pt base = Anar.Pt(0.1f,0,0);
    myObj.add(base);


    for (int i = 0; i<10000; i++){
      float x1 = base.x()+h.get()*a.get()* (base.y()-base.x());
      float y1 = base.y()+h.get()* (base.x()* (b.get()-base.z())-base.y());
      float z1 = base.z()+h.get()* (base.x()*base.y()-c.get()*base.z());

      Pt newBase = Anar.Pt(x1,y1,z1);
      Pts line = new Pts(base,newBase);

      // if(i%2==0)
      line.stroke(i%250);

      myObj.add(line);
      base = newBase;


    }

    Anar.camTarget(myObj);

  }


  public void draw(){
    background(155);
    myObj.draw();
  }


  public void keyPressed(){
    if(key==' ')
      initForm();
  }


  public static void main(String[] args){
    PApplet.main(new String[]{Test03rLorentz.class.getName()});
  }
}

