package p5;
import anar.*;




import processing.core.PApplet;

/**
 * @author goo
 */
public class Test03aTurtleCurvedB extends PApplet {

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


  Obj     all = new Obj();

  Sliders mySliders;


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

    // Setup DEFAULT rendering of our scene
    Pts.globalRender = new RenderPtsAll();
    Pt.globalRender = new RenderPtCross(new AColor(255,155,155),1);
    Anar.drawAxis(true);
    CSpline.globalRender.splineRes.set(12);

    initForm();
  }


  void initForm(){

    // //////////////////////////////////////////
    // //////////////////////////////////////////
    // Initial SHAPE

    all = new Obj();


    Transform t = new Transform();
    t.add(new Translate(10,0,0));
    t.add(new RotateY((float)Math.PI/6));
    t.add(new RotateX((float)Math.PI/6));


    Pts line = new Pts();
    Pt ori = Anar.Pt(0,0,0);
    Pt last = ori;

    for (int i = 0; i<10; i++){

      Transform oriT = new Transform(ori,t);
      Transform reallign = new Transform(last,ori,oriT);

      PtDER newPt = Anar.Pt(ori);
      newPt.apply(reallign);
      line.add(newPt);

      last = ori;
      ori = newPt;
      // System.out.flush();
      // println(Anar.rndi(tz.size()));
    }

    CSpline nCs = new CSpline(line,.1f);
    all.add(nCs);

    Translate tt = new Translate(10,0.1f,0.1f);

    for (int i = 0; i<20; i++){
      CSpline nC2 = new CSpline(new Pts(nCs),.1f);
      nC2.apply(tt);
      all.add(nC2);
      nCs = nC2;
    }


    // //////////////////////////////////////////
    // HIRARCHY

    Anar.camTarget(all);
    // println(all.parentList());

    mySliders = new Sliders(t);
    mySliders.add(tt);

  }


  public void draw(){
    background(200);

    all.draw();

    mySliders.draw();
  }


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

}

