Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Fraktale in PostScript

Ähnliche Präsentationen


Präsentation zum Thema: "Fraktale in PostScript"—  Präsentation transkript:

1 Fraktale in PostScript
Sebastian Redl Manuel Pöter Helmut Petritsch

2 Fraktale Künstliche oder natürliche Gebilde, geometrische Muster
Erzeugt durch rekursive Ersetzungen z.B. Drachenkurve: F → R oder F → L R → + R - - L + L → - R + + L – Daraus resultiert + R - - L + + ( + R - - L + ) - - ( - R + + L - ) +

3 Verbesserungen Stack Overflow Exception bei der 13. Iteration
Ersetzungsregeln generisch durch Verwendung von HashTable Optimierung bei der Verwendung von Winkelfunktionen /+ { ang rotate } def /- { ang neg rotate } def

4 Lösung 1 – Rekursives Ersetzen
Problem: Stacktiefe beschränkt (~ Elemente) Arrays beschränkt (max Elemente)

5 Lösung 1 – Rekursives Ersetzen
Ersetzung von R und L im Array durch Sub-Arrays  statt einem Array mit vielen Element - viele Arrays mit wenig Elementen

6 Ersetzungsfunktion /replaceDict << /R { [ /+ /R /- /- /L /+ ] } /L { [ /- /R /+ /+ /L /- ] } /+ { /+ } /- { /- } >> def /replFunc { << /arraytype { replFunc } /nametype { cvx exec } >> begin [ exch { dup type exec } forall ] end } def

7 Lösung 2 – Direktes Zeichnen
R und L sind rekursive Funktionsaufrufe. Für die letzte Rekursion wird ein Dictionary verwendet, in dem R und L Zeichenbefehle sind. /recurseDict << … >> def /drawDict << … >> def

8 Generieren der Dictionaries
/LSystem_Dict << /R { + R - - L + } /L { - R + + L - } >> def /recurseDict << LSystem_Dict { [ exch /drawRecurse cvx ] cvx } forall /drawDict << /F { Zeichenbefehle } def LSystem_Dict { pop { F } } forall

9 Rekursion /drawRecurse { exch dup 0 eq { drawDict begin } if dup 1 sub 3 2 roll exec pop dup 0 eq { end } if } def /start { L } def recurseDict begin start end

10 Danke für die Aufmerksamkeit
Fragen?


Herunterladen ppt "Fraktale in PostScript"

Ähnliche Präsentationen


Google-Anzeigen