package p5;
import anar.*;


// import java.util.*;


import processing.core.PApplet;

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

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


  Obj     obj;
  Sliders mySlider;


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

    initForm();
  }


  void initForm(){

    int numOfSides = 20;
    int numOfLoops = 10;
    float theta = 2*PI/ (numOfSides*2);


    // starting point
    Pt a = Anar.Pt(100,0);
    Pt b = Anar.Pt(50,0);

    // rotation
    RotateZ rot = new RotateZ(theta);
    b.apply(rot);

    Translate t = new Translate(0,0,1);

    Scale s = new Scale(.99f,.99f,.99f);


    // construction of shape
    obj = new Obj();


    // create square
    Pts f = new Pts();

    f.add(a);
    f.add(b);

    for (int i = 0; i<numOfSides*numOfLoops; i++){
      a = Anar.Pt(a);
      b = Anar.Pt(b);

      a.apply(rot);
      a.apply(rot);
      a.apply(t);
      a.apply(s);

      b.apply(rot);
      b.apply(rot);
      b.apply(t);
      b.apply(s);


      f.add(a);
      f.add(b);
    }


    Pts f2 = new Pts(f);
    f2.translate(0,0,5);
    f2.render = new RenderPtsLine(new AColor(255,0,0));

    obj.add(f);
    obj.add(f2);


    // define sliders for shape
    mySlider = new Sliders(obj);
    Anar.camTarget(obj);
  }


  public void draw(){
    background(153);

    obj.draw();
    mySlider.draw();
  }


  // interactivity related stuff
  public void keyPressed(){
    initForm();
  }

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

