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
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
Abbildung 1: Die Teilbilder p, q, r und s, aus denen das Gesamtbild zusammengesetzt wird.
Abbildung 2: Das Gesamtbild.