package p5;
import anar.*;


// import Goo.*;

import processing.core.PApplet;


public class Test02jFaceNinjaAutoExplore extends PApplet {

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


  Obj obj; // = new Obj();

  public void setup(){
    size(800,400,OPENGL);
    frameRate(200);

    Anar.init(this);
    initShape();

    Pts.globalRender = new RenderPtsAll();
  }


  void initShape(){

    obj = new Obj();
    int n1 = Anar.rndi(4,20);
    // int n2 = (int)((float)Math.random()*50)+3;
    // int n3 = (int)((float)Math.random()*50)+3;
    // int n4 = (int)((float)Math.random()*50)+3;
    // int n5 = (int)((float)Math.random()*50)+3;

    float n2 = (float)Anar.rnd( -width/2f,width/2f);
    float n3 = (float)Anar.rnd( -width/2f,width/2f);


    Face face = new Face();

    Pt origin = Anar.Pt(0,0,0);
    float theta = 2*(float)Math.PI/n1;

    RotateZ rt = new RotateZ(theta);

    // //////////////////////////
    Transform tw = new Transform();
    tw.translate(Anar.PtNull(Anar.rndi(n2),Anar.rndi(n2),Anar.rndi(n2)));

    // //////////////////////////
    Transform th = new Transform();
    th.add(rt);
    th.translate(Anar.PtNull(Anar.rndi(n3),Anar.rndi(n3),Anar.rndi(n3)));


    Transform rt2x = new Transform();
    rt2x.add(rt);
    // rt2x.add(rt);


    // //////////////////////////
    Pt previousA = Anar.Pt(origin,tw);
    Pt previousB = Anar.Pt(origin,th);
    Pt previousC = Anar.Pt(origin,th);
    previousC.translate(Anar.rnd( -10,100),Anar.rnd( -10,100),Anar.rnd( -10,100));

    face.add(previousA);
    face.add(previousB);
    face.add(previousC);

    for (int i = 1; i<n1; i++){
      PtDER pA = Anar.Pt(previousA);
      PtDER pB = Anar.Pt(previousB);
      PtDER pC = Anar.Pt(previousC);


      pA.apply(rt2x);
      pB.apply(rt2x);
      pC.apply(rt2x);


      face.add(pA);
      face.add(pB);
      face.add(pC);

      previousA = pA;
      previousB = pB;
      previousC = pC;
    }


    obj.add(face);
    // prnt(face.parentList());
  }


  public void draw(){
    background(190);
    obj.draw();
  }


  void prnt(Object s){
    super.println(s);
    super.println("-----------------------------");
  }

  public void keyPressed(){
    initShape();
  }


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

