CindyScript Koordinatensystem - Cinderella Dokumentation
Description: The user's guide to the Interactive Geometry Software Cinderella

Zum Inhalt

# CindyScript Koordinatensystem

## Das Koordinatensystem von CindyScript

Es gibt eine wichtige Funktion von CindyScript, die das Erscheinungsbild von Zeichnungen, die durch das Skript behandelt werden, auf kontrollierte und globale Weise sofort verändert. Normalerweise ist das Koordinatensystem von CindyScript das gleiche wie das Koordinatensystem der geometrischen Konstruktion. Es ist jedoch möglich, das Koordinatensystem durch spezielle Operatoren zu transformieren. Dann wird alle Zeichnung in Bezug auf dieses modifizierte Bezugssystem durchgeführt. Bei der Verwendung der Transformationen muss Vorsicht geboten werden: Wenn viele von ihnen angewendet werden, kann es schwierig sein zu bestimmen, wo eine tatsächliche Zeichnung durchgeführt wird. Um die Verwendung der Transformationsoperatoren immer noch einfach zu gestalten, stellt CindyScript zwei Operatoren `gsave` und `grestore` zur Verfügung. Ähnlich wie PostScript-ähnliche Sprachen pushen/poppen diese Operatoren den aktuellen Zustand der Zeichnungs-Engine auf einen Stack. Dieser Zustand enthält (neben der grafischen Standard-Erscheinungsinformation) die gegenwärtige Koordinatentransformation. So kann eine zeitliche Verwendung von Koordinatensystemen durch eine `gsave()`...`grestore()`-Konstruktion eingeschlossen werden. Wir führen zunächst die Operatoren ein und geben dann ein kombiniertes Beispiel.

Vorsicht: In der aktuellen Version von Cinderella 2.6 ist die Anwendung der Transformationen noch nicht für Kreise implementiert. Für Kreise werden nur euklidische Transformationen (Rotationen, Translationen, Spiegelungen, Skalierungen) unterstützt. Affine und projektive Transformationen werden in einer späteren Version bereitgestellt.

#### Verschiebung des Koordinatensystems: `translate(<list>)`

Beschreibung: Dieser Operator geht davon aus, dass `<list>` die Form `[<real>,<real>]` hat und verschiebt das Zeichenkoordinatensystem um diesen Vektor.

#### Drehung des Koordinatensystems: `rotate(<real>)`

Beschreibung: Dieser Operator nimmt eine reelle Zahl `<real>` und dreht das aktuelle Zeichenkoordinatensystem um einen durch diese Zahl bestimmten Winkel. Der Winkel wird in rad angegeben. Wenn man Winkel in Grad verwenden möchte, kann man dies mit dem `°` Operator tun (dieser Operator multipliziert eine Zahl mit `pi/180`. So dreht `rotate(30°)` das Koordinatensystem um 30°.

#### Skalierung des Koordinatensystems: `scale(<real>)`

Beschreibung: Dieser Operator nimmt eine reelle Zahl `<real>` und skaliert das aktuelle Zeichenkoordinatensystem um diesen Faktor.

Beispiele: Die folgende Tabelle zeigt die Auswirkung der Anwendung verschiedener Transformationen vor dem Aufrufen eines Codes, der ein Quadrat mit Scheitelpunktkoordinaten `[0,0],[0,1],[1,1],[1,0]` zeichnet.

`translate([1,0]);` | `rotate(30°);` | `scale(2));`

Die folgende Tabelle zeigt verschiedene Kombinationen von Transformationen. Die Reihenfolge der Operationen mag ein wenig kontraintuiv erscheinen. Dies ergibt sich aus der Tatsache, dass die Operatoren das Koordinatensystem eher als die Objekte transformieren, die gezeichnet werden.

| --- | --- | --- | | | | | | `translate([1,0]); rotate(30°);` | `rotate(30°); translate([-0.5,-0.5]);` | `rotate(30°); scale(2)); translate([-0.5,-0.5]);` |

Rekursive oder iterierte Anwendung von Transformationen kann zu überraschenden Effekten führen. Das untenstehende Bild wurde durch das folgende Code-Stück generiert (vorausgesetzt, dass `square` eine Liste von Objekten ist, die das Einheitsquadrat zeichnen).

Diese Seite wurde automatisch mit KI (Claude) übersetzt und wartet noch auf Überprüfung. → Alle KI-übersetzten Seiten