Geometrische Funktionen

Calc stellt einige Funktionen bereit, die nicht Zahlen, Listen oder andere Datenstrukturen als Ergebnisse liefern, sondern Bilder. Diese Funktionen entsprechen zum größten Teil denen, die Peter Henderson in seiner Arbeit "Functional Geometry" beschreibt.

KONSTRUKTION EINES BILDES AUS PUNKTEN

Die Funktion grid erwartet drei Argumente. Die ersten beiden Argumente müssen positive Zahlen sein, sie geben die Breite und Höhe eines Bildes an. Das dritte Argument ist eine Liste von Linienzügen. Ein Linienzug ist eine Liste von Punkten, wobei ein Punkt durch eine zweielementige Liste seiner Koordinaten (erst x, dann y) repräsentiert wird. Der Koordinatenursprung befindet sich in der linken, unteren Ecke des Bildes. Ein Aufruf der Funktion liefert ein Bild mit den angegebenen Abmessungen, das die Linienzüge darstellt.

VERÄNDERTE KOPIEN EINES BILDES

Die Funktion rotate-left erwartet ein Bild als Argument. Sie liefert eine um 90 Grad gegen den Uhrzeigersinn gedrehte Kopie des Bildes als Resultat.

Die Funktion flip nimmt ein Bild und liefert eine seitenverkehrte Kopie (aus links wird rechts und umgekehrt).

Die Funktion scale erwartet eine positive Zahl und ein Bild. Sie liefert eine vergrößerte oder verkleinerte Kopie des Bildes.

Die Funktion translate hat zwei nicht-negative Zahlen und ein Bild als Argumente. Die Zahlen werden als Verschiebevektor interpretiert. Ein Aufruf der Funktion liefert eine verschobene Kopie des Eingabebildes.

KOMBINATION MEHRERER BILDER

Die Funktion above erwartet zwei positive Zahlen und zwei Bilder als Argumente. Sie ordnet die Bilder übereinander an, wobei das Verhältnis der Höhen durch die beiden Zahlen festgelegt ist.

Die Funktion beside arbeitet wie die Funktion above, ordnet die Bilder aber nebeneinander an.

Die Funktion overlay nimmt zwei Bilder entgegen und kombiniert diese ohne Skalierung oder Verschiebung, beide werden an der selben Position gezeichnet.

BEISPIELE

Beispiele für die Verwendung dieser Funktionen finden sich in Square Limit und der Schildkröten-Grafik und ihrer Anwendungen (siehe Drachenkurve und Penrose-Parkettierung).


Anlage

Ergebnis von (grid 13 13
  (quote (((1 11) (11 11) (11 10)
           (2 10) (2 6) (6 6) (6 5)
           (2 5) (2 1) (1 1) (1 11)))))

Anlage

Resultat der Anwendung von rotate-left auf das Bild @A1

Anlage

Resultat der Anwendung von flip auf das Bild @A1

Anlage

Ergebnis von (rotate-left (flip @A1))

Anlage

Ergebnis von (above 1 1 @A1 @A1)

Anlage

(beside 1 1 @A1 @A1) liefert dieses Bild

Anlage

Resultat von (above 1 1 (beside 1 1 @A1 @A1) @A1)

henderson.sheet.xml