package p5;
import anar.*;




import processing.core.PApplet;

public class Test04zTurtleMulti extends PApplet {

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

  boolean  penDown      = true;
  boolean  cameraFollow = false;

//  Obj      traces       = new Obj();
  Turtle[] turtle;

  Param    f;
  Param    XY;
  Param    XZ;

  public void setup(){

    size(800,400,OPENGL);
    Anar.chy(this);
    Anar.drawAxis(true);
    
    ParamCycle.clock = new ClockFCms();    

    f = new ParamCycle(1/4f,5/2f,1/4f,new Param(20,0,200));
    XY = new ParamCycle(0.01f, -.1f,.1f,new Param(70,0,200));
    XZ = new ParamCycle(0.01f, -.1f,.1f,new Param(100,0,200));

    Anar.sliders.add(f);
    Anar.sliders.add(XY);
    Anar.sliders.add(XZ);

    turtle = new Turtle[10];

    int n = turtle.length;
    int d = 20;

    for (int i = 0; i<turtle.length; i++){
      turtle[i] = new Turtle(Anar.Pt(d*sin(2*PI*i/n),d*cos(2*PI*i/n),0),Anar.Pt(0,0,1),Anar.Pt(sin(2*PI*i/n),cos(2*PI*i/n),0));
//      Pts t = new Pts();
//      traces.add(t);
    }
  }


  public void draw(){
    background(200);
    Anar.draw();
//    traces.draw();
    

    for (int i = 0; i<turtle.length; i++){
      turtle[i].ROTATEXZ(XZ);
      turtle[i].ROTATEXY(XY);
      turtle[i].FORWARD(f);
      turtle[i].draw();
    }
    
    if(cameraFollow)
      turtle[0].setCameraOnTurtle();
  }


  public void keyPressed(){
    if(key==' ')
      for (int i = 0; i<turtle.length; i++)
        if(turtle[i].penState)
          turtle[i].PENUP();
        else
          turtle[i].PENDOWN();

    if(key=='q')
      cameraFollow = cameraFollow ? false:true;

    if(key=='c')
      for (int i = 0; i<turtle.length; i++)
        turtle[i].CLEAN();
    
    if(key=='t')
      for (int i = 0; i<turtle.length; i++)
        turtle[i].drawingFromTail();
    
    if(key=='h')
      for (int i = 0; i<turtle.length; i++)
        turtle[i].drawingFromHead();
    
    
  }


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

