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 curveto
dx2 dy2 dx3 dy3 dx4 dy4 rcurveto % relative Positionierung

die 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 setmiterlimit

in 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
1.414
2
2.61
3.86
7.66
11.47
22.92

180°
90°
60°
45°
30°
15°
10°

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: setflat

Abfrage:

/b 10 string def
currentflat
b cvs print

Der Defaultwert ist für die meisten Anwendungen ausreichend.