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).
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).
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)))))
Resultat der Anwendung von rotate-left auf das Bild @A1
Resultat der Anwendung von flip auf das Bild @A1
Ergebnis von (rotate-left (flip @A1))
Ergebnis von (above 1 1 @A1 @A1)
(beside 1 1 @A1 @A1) liefert dieses Bild
Resultat von (above 1 1 (beside 1 1 @A1 @A1) @A1)
henderson.sheet.xml