
PDE Download: LSys00bLinear.pde
JAVA Download: LSys00bLinear.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, prev;
Transform T;
Translate t;
Pt p;
RotateZ g, d;
Grammar grammar;
Sliders mySlide;
void setup(){
size(1000,500,OPENGL);
Anar.init(this);
Anar.drawAxis();
initGrammar();
initInterpret();
}
void initGrammar(){
grammar = new Grammar("fgfddfgf");
// here define the rules
// * means any kind of symbol
grammar.addRule("*f*","fgfddfgf");
println(grammar);
}
void initInterpret(){
turtle = Anar.Pt(0,0,0);
prev = turtle;
p = Anar.Pt(10,0,0);
g = new RotateZ(PI/6);
d = new RotateZ( -PI/6);
pts = new Pts();
pts.add(turtle);
t = new Translate(p);
T = new Transform(turtle,t);
drawGrammar();
}
void drawGrammar(){
for (int i = 0; i<grammar.numOfSymbols(); i++){
switch(grammar.symbol(i).charAt(0)){
case 'f':
prev = turtle;
turtle = Anar.Pt(turtle,T);
pts.add(turtle);
T = new Transform(t);
case 'g':
T.apply(new Transform(prev,turtle,g));
break;
case 'd':
T.apply(new Transform(prev,turtle,d));
break;
default:
break;
}
}
mySlide = new Sliders(pts);
}
void draw(){
background(153);
pts.draw();
mySlide.draw();
}
void keyPressed(){
if(key==' '){
grammar.step();
drawGrammar();
println(grammar);
}
if(key=='r'){
grammar.reset();
println(grammar);
}
}

|