Henon-Attraktor (IFS)

Henon-Attraktor (IFS)

Dies ist ein sehr einfaches Beispiel für ein “Iteriertes Funktionen-System” (IFS), der sogenannte Henon-Attraktor, ohne auf die IFS-Klasse der igelgrafik-Seite zurückzugreifen. Dieses IFS benutzt nur eine einzige Funktion, die allerdings nicht kontrahierend ist.

Die plot-Funktion macht einen einzigen Punkt an der Stelle (x,y) Mit dem Igel kann man sie folgendermaßen programmieren (das ist allerdings sehr langsam, daher stellt die Umgebung hier eine schnellere Plot-Funktion zur Verfügung)

#{ plot = (x,y) ->
#{   stifthoch()
#{   nachhause()
#{   vor y
#{   rechts 90
#{   vor x
#{   stiftrunter()
#{   vor 1

Noch schneller geht es, wenn man in den “Canvas-Modus” schaltet. Dann kann man allerdings den Igel nicht mehr benutzen. Wenn man nur die Plot-Funktion benötigt, ist das aber die bessere Alternative:

#{ canvasmodus()

Hier kommt nun der eigentliche Code: Es wird eine Funktion f0 definiert, und diese wird dann immer wieder angewandt, auf den Punkt, den man im vorherigen Schritt erhalten hat. Alle diese Punkt (bis auf die ersten paar) werden gezeichnet.

f0 = (x,y) -> [ 1 - 1.4 * x * x + y, 0.3 * x ]

[x, y] = [0, 0]
bildschirmleer()

wiederhole 20, ->
  [x,y] = f0(x,y)

wiederhole 2000, ->
  [ x, y ] = f0(x, y)
  plot 100 * x, 200*y

versteckeigel()