Funktionale Geometrie

Die funktionale Geometrie wurde von Peter Henderson 1982 in seinem Artikel "Functional Geometry" beschrieben. Es handelt sich um eine Technik, mit der Bilder erzeugt werden können. Komplexere Bilder werden durch das Anwenden von Funktionen aus einfacheren Bildern erzeugt.

Begonnen wird mit elementaren Bildern, die durch eine Menge von Strecken in einem Rechteck beschrieben werden. Dazu wird eine Funktion

grid: integer ✕ integer ✕ List(linesegment) → picture

verwendet, die aus den Abmessungen des Rechtecks und der Liste der Strecken ein Bild erzeugt. Ein weiteres elementares Bild ist

nil,

das leere Bild.

Mehrere vorgegebene Funktionen erzeugen aus einfacheren Bildern anhand von zusätzlichen Angaben komplexere Bilder:

flip: picture → picture
beside: integer ✕ integer ✕ picture ✕ picture → picture
above: integer ✕ integer ✕ picture ✕ picture → picture
rot: picture → picture
overlay: picture ✕ picture → picture

Mit der Funktion flip erzeugt man ein Bild, indem das Ursprungsbild an der vertikalen Achse gespiegelt wird, die das Bild halbiert. Die Funktion beside ordnet zwei Bilder nebeneinander an, wobei das Verhältnis der Breiten der Bilder durch die beiden Ganzzahlen bestimmt wird. Analog dazu ordnet die Funktion above die Bilder übereinander an. Mit der Funktion rot erhält man ein Bild, das durch Drehung der Ursprungsbildes um 90° gegen den Uhrzeigersinn entsteht. Die Funktion overlay erzeugt aus zwei Bildern ein neues Bild, das alle Stecken der beiden Ursprungsbilder enthält.

Die funktionale Geometrie ist besonders geeignet, Bilder mit einer gewissen Regelmäßigkeit kompakt zu beschreiben. Peter Henderson illustriert das anhand eines Holzschnitts von M.C. Escher. Aus den vier elementaren Bildern p, q, r und s (siehe Abbildung 1) wird mit den drei Hilfsfunktionen

quartet(p1, p2, p3, p4) = above(1, 1, beside(1, 1, p1, p2), beside(1, 1, p3, p4))
cycle(p1) = quartet(p1, rot(rot(rot(p1))), rot(p1), rot(rot(p1)))
nonet(p1, p2, p3, p4, p5, p6, p7, p8, p9) = above(1, 2, beside(1, 2, p1, beside(1, 1, p2, p3)), above(1, 1, beside(1, 2, p4, beside(1, 1, p5, p6)), beside(1, 2, p7, beside(1, 1, p8, p9))))

und anhand der Definitionen

t = quartet(p, q, r, s)
u = cycle(rot(q))
side1 = quartet(nil, nil, rot(t), t)
side2 = quartet(sid1, side1, rot(t), t)
corner1 = quartet(nil, nil, nil, u)
corner2 = quartet(corner1, side1, rot(side1), u)
corner = nonet(corner2, side2, side2, rot(side2), u, rot(t), rot(side2), rot(t), rot(q))
squarelimit = cycle(corner)

das resultierende Bild (siehe Abbildung 2), was bemerkenswert ist.


Links

http://www.pen.k12.va.us/Div/Winchester/jhhs/math/lessons/calculus/escher.html
http://www.mcescher.com
http://www.frank-buss.de/lisp/functional.html


Quelle

http://eprints.soton.ac.uk/257577/1/funcgeo2.pdf


Anlage

Abbildung 1: Die Teilbilder p, q, r und s, aus denen das Gesamtbild zusammengesetzt wird.

Anlage

Abbildung 2: Das Gesamtbild.