PostScript verwendet die Postfix-Notation. Beispiel:
10 10 movetoDie beiden Operanden stehen also links vom Operator.
10 10 moveto 100 100 linetoist gleichbedeutend mit
100 100 10 10 moveto linetoDer moveto Operator nimmt sich die beiden 10, weil diese zuletzt in den Stack gestellt wurden.
10 heisst übrigens 10 typografische Punkte = 10/72 Zoll. 10 10 moveto macht eine Bewegung zum Punkt (10,10) im Koordinatensystem. Der Nullpunkt befindet sich auf dem Papierblatt links unten. Mit 100 100 lineto definieren wir eine Linie vom aktuellen Punkt (10,10) zur neuen Position (100,100). Damit haben Sie allerdings noch keinen Strich ausgezogen, sondern erst einen sogenannten Pfad gebildet.
70 90 add 2 divergibt
(70 + 90) over 2 = 80.
Für die Berechnung dieses Mittelwertes könnte man auch eine Formel definieren:
/mittelwert { add 2 div } def
Der Aufruf der Formel erfolgt nun mit:
70 90 mittelwertAls Resultat wird wieder 80 in den Stack gestellt.
Auch Variablen lassen sich definieren:
/x 100 defNun erhöhen wir den Wert der Variable x um 1:
/x x 1 add defIm folgenden Beispiel verwenden wir die Variable zahl als Zähler. Immer wenn der Zähler 5 erreicht hat, führen wir eine bestimmte Aktion durch (show) und wir setzen den Zähler wieder auf Null zurück.
/zahl 0 def % Zaehler
/@m { moveto
/zahl zahl 1 add def
zahl 5 ge % groesser/gleich 5 ?
{gsave
(XXX) show
/zahl 0 def
grestore} if
} def
Formel für die Berechnung des Tangens:
/tan { dup sin exch cos div } def
Rufen wir diese Formel auf:
30 tan % AufrufZuerst wird der Operand dupliziert: 30 30. Der Operator sin nimmt nun die oberste 30 und gibt als Resultat 0.5 zurück. Stack-Zustand: 30 0.5. exch vertauscht die beiden Objekte: 0.5 30. Jetzt kommt der Operator cos zum Zug: 0.5 0.866. Und zuletzt dividiert der Operator div 0.5 durch 0.866:
0.5 over 0.866 = 0.577
Als Ergebnis enthält der Stack den Wert 0.577.
/zentrieren
{ dup
stringwidth pop 2 div % Laenge halbieren
4 -1 roll
exch sub % und subtrahieren
3 -1 roll
moveto
}
def
% Aufruf:
128 72 (Dampfschiffseilanbinder) zentrieren
Mit diesem Aufruf möchten wir den String, d.h. die Zeichenkette,
an der Koordinatenposition (128,72) zentrieren.
Zustand des Stacks nach Ausführung des dup
Operators:
128
72
(Dampfschiffseilanbinder)
(Dampfschiffseilanbinder)
Wir nehmen an, der String (Dampfschiffseilanbinder)
sei 100 typografische Punkte lang.
Zustand des Stacks nach stringwidth pop 2 div:
128
72
(Dampfschiffseilanbinder)
50
Zustand des Stacks nach 4 -1 roll:
72
(Dampfschiffseilanbinder)
50
128
Zustand des Stacks nach exch sub:
72
(Dampfschiffseilanbinder)
78
Zustand des Stacks nach 3 -1 roll:
(Dampfschiffseilanbinder)
78
72
Die zwei numerischen Objekte werden nun vom moveto
Operator konsumiert.
Zustand des Stacks nach der Ausführung der Prozedur zentrieren:
(Dampfschiffseilanbinder)
Last update: 20-MAR-00/vo