This browser does not have a Java Plug-in.
Get the latest Java Plug-in here.

anar+

by   LaBelle + Nembrini
©2008

built with ( )
   examples index
Rotate: middle click or key[1]
Zoom in|out: wheel button or key[2]
AutoRotate: key[5]
(First Click inside the applet to enable keys)

This applet use OpenGL, you might have to install extra jogl libraries once to view this applet. You may have a look at image capture and video at the bottom of this page. You might accept security security permenently to remove the security prompts on each pages.



sourcecode


   PDE Download:   LSys00bSysTurtle.pde
   JAVA Download:   LSys00bSysTurtle.java


Click on anar+ terms to get the documentation.

import processing.opengl.*;
import anar.*;
 
 
 
import lsys.Grammar;
 
 
 
/*
 * Example for Anar library by Guillaume LaBelle + Julien Nembrini
 * http://anar.ch
 */
 
 
Pts         pts = new Pts();
 
Pt          turtle;
Transform[] T;
 
Grammar     grammar;
 
Sliders     mySlide;
 
void setup(){
    size(1000,500,OPENGL);
  Anar.init(this);
 
  Anar.drawAxis();
  initGrammar();
  interpretInit();
}
 
void initGrammar(){
  grammar = new Grammar("XYZyxz");
  // here define the rules
  // * means any kind of symbol
  grammar.addRule("*X*","XyXYX");
  grammar.addRule("*Y*","YxYXY");
  grammar.addRule("*Z*","ZxZXZ");
  grammar.addRule("*x*","xYxyx");
  grammar.addRule("*y*","yzyZy");
  grammar.addRule("*z*","zyzYz");
 
  println(grammar);
}
 
 
void interpretInit(){
 
  T = new Transform[6];
 
  T[0] = new Translate(10,0,0);
  T[1] = new Translate( -10,0,0);
  T[2] = new Translate(0,10,0);
  T[3] = new Translate(0, -10,0);
  T[4] = new Translate(0,0,10);
  T[5] = new Translate(0,0, -10);
 
  interpretGrammar();
}
 
void interpretGrammar(){
  pts = new Pts();
  turtle = Anar.Pt(0,0,0);
  pts.add(turtle);
 
  pts.stroke(255,0,0);
 
  for (int i = 0; i<grammar.numOfSymbols(); i++){
 
    Pt next = Anar.Pt(0,0,0);
 
    switch(grammar.symbol(i).charAt(0)){
      case 'X':
        next = Anar.Pt(turtle,T[0]);
      break;
      case 'Y':
        next = Anar.Pt(turtle,T[2]);
      break;
      case 'Z':
        next = Anar.Pt(turtle,T[4]);
      break;
      case 'x':
        next = Anar.Pt(turtle,T[1]);
      break;
      case 'y':
        next = Anar.Pt(turtle,T[3]);
      break;
      case 'z':
        next = Anar.Pt(turtle,T[5]);
      break;
      default:
      break;
 
    }
    pts.add(next);
    turtle = next;
  }
 
  Anar.camTarget(pts);
  mySlide = new Sliders(pts);
}
 
void draw(){
  background(153);
  pts.draw();
  mySlide.draw();
}
 
 
void keyPressed(){
  if(key==' '){
    grammar.step();
    interpretGrammar();
    println(grammar);
  }
  if(key=='r'){
    grammar.reset();
    interpretGrammar();
    println(grammar);
 
  }
}
 
 
 
 



screenshots