Einführungskurs PostScript, Teil 4
Bézier-Kurven in PostScript
PostScript ermöglicht das Zeichnen kubischer Bézier-Kurven, die durch Angabe der 4 Kontrollpunkte spezifiziert werden.
Befehle:
x2 y2 x3 y3 x4 y4
curvetodie Parameter geben den 2., 3, und 4. Kontrollpunkt (Endpunkt) an - als Anfangspunkt wird der aktuelle Punkt genommen.
Beispiel:
100 100 moveto
200 200 300 200 400 100 curveto
stroke
showpage
Ergebnis:
Ersetzung der zweiten Zeile durch
200 200 380 250 400 100 curveto
setzt den dritten Kontrollpunkt weiter nach rechts und nach oben:
(aus Weltner 1991)
Zusammenfassung zu Linienattributen
Der Befehl
stroke benutzt Umgebungsvariablen, die vom Benutzer abgefragt und verändert werden können.
Befehl zum Setzen |
Befehl zum Abfragen |
Wirkung |
setdash |
currentdash |
Linienmuster |
setflat |
currentflat |
Kurvengenauigkeit |
setgray |
currentgray |
Grauwert |
setlinecap |
currentlinecap |
Form der Enden |
setlinejoin |
currentlinejoin |
Linienverknüpfung |
setlinewidth |
currentlinewidth |
Linienstärke |
setmiterlimit |
currentmiterlimit |
Parameter zum Abschneiden spitzer Ecken |
Die bisher noch nicht eingeführten Parameter werden kurz erklärt:
Linienenden (
setlinecap):3 mögliche Werte:
0 = abgeschnitten (default)
1 = abgerundet
2 = verlängert und abgeschnitten
Beispiel:
Linienverknüpfungs-Modus (
setlinejoin)0 = spitze Ecken
1 = abgerundete Ecken
2 = abgekantete Ecken
Konditionales Kappen (Abkanten) der Ecken bei spitzen Winkeln:
bei LineJoin-Wert von 0 (spitze Ecken) kann ein Schwellenwert festgelegt werden, der bei spitzen Ecken Kappung (wie bei LineJoin = 2) bewirkt
"miterlimit", Befehl
setmiterlimitin typografischer Einheit angegeben (Verhältnis zwischen der Länge der spitzen Ecke und der Linienbreite), aber umrechenbar in Grad:
(Grenzwinkel / 2)
sin = 1/miterlimit
Miterwert |
Winkel |
|
1 |
180° |
schneidet immer ab |
Annäherungsgenauigkeit für gekrümmte Kurven
Ein weiterer Umgebungsparameter, "flatness", legt fest,
mit wievielen Geradensegmenten ein gekrümmtes Linienstück
modelliert wird.
Kleine flatness = hohe Genauigkeit.
Einstellung des Wertes:
setflatAbfrage:
/b 10 string def
currentflat
b cvs print
Der Defaultwert ist für die meisten Anwendungen ausreichend.