In der Maske sind zwei Eingabefelder, die rekursive Funktion und die Tiefe der zu erzeugenden Struktur. | ![]() |
Dabei erinnert das System an ein 3-dimensionales Turtle-System.
Beispiel:
set(s,{depth = 4:5;ELSE:ss}), set(ss,s * 0.71), set(r,s / (PI * 4)), cyl(r,r,s,0,deg(90),0,s / 2,0,0), go(s), turn(deg(80 + drand() * 4 - 2),deg(-25 + drand() * 4 - 2),deg(-20 + drand() * 4 - 2)), f(), turn(deg(10 + rand() * 4 - 2),deg(45 + drand() * 4 - 2),deg(50 + drand() * 4 - 2)), f()
set() | setzt eine Variable auf einen Wert | set([Varialbenname],[Ausdruck]) |
go() | geht um die angegebene Länge nach vorn (Y-Richtung) | go([Ausdruck]) |
go() | geht um den angegebene Vektor nach vorn | go([Ausdruck],[Ausdruck],[Ausdruck]) |
turn() | dreht (den Turtle) um die angegebenen Winkel | turn([Ausdruck],[Ausdruck],[Ausdruck]) |
f() | ist der rekursive Aufruf der Funktion | f() |
cyl() | erzeugt einen Zylinder | cyl(9 * [Ausdruck]) |
box() | erzeugt einen Quader | box(9 * [Ausdruck]) |
sphere() | erzeugt eine Kugel | sphere(9 * [Ausdruck]) |
cone() | erzeugt einen Kegel | cone(10 * [Ausdruck]) |
object() | erzeugt eines der oben genannten Objekte | object([Typ],10 * [Ausdruck]) |
Die Objekte werden mit Breite, Höhe, Tiefe, Drehung X, Drehung Y, Drehung Z, Verschiebung X, Verschiebung Y, Verschiebung Z erzeugt. Zusätzlich kann für den Kegel noch der Radius angegeben werden.
[Ausdruck] ist ein beliebiger numerischer Ausdruck für 'evaluate'
[Typ] ist ein [Ausdruck], welcher die Nummer des Objektes
angibt:
0 : Kein Objekt
1 : Kugel
2 : Zylinder
3 : Kegel
4 : Quader
Erläuterung des Beispiels:
Es beginnt mit der Initialisierung der drei benutzten Variablen s, ss
und r. s wird auf 4 gesetzt, wenn die Ebene (depth) gleich 4 ist, sonst
auf ss. Die Ebene ist die aktuelle Rekursionstiefe. Diese beginnt hier
im Beispiel mit 4. ss ist s * 0.71 und r ist s / (PI * 4). Dann wird ein
Zylinder mit Breite und Höhe r, Tiefe s erzeugt, der 90° um die
Y-Achse gedreht und auf der X-Achse um s / 2 verschoben ist. Danach geht
das System um s in Y-Richtung, wird etwas zufällig gedreht. Jetzt
folgt der 1. rekursive Aufruf, wieder eine Drehung und schließlich
der 2. rekursive Aufruf. Bei jedem Wechsel in die nächste Ebene durch
einen rekursiven Aufruf, wird die Variable depth oder auch d um 1 erniedrigt.
Bei Tiefe 0 wird die Rekursion abgebrochen.
Dortmund, 22.9.1999