po polsku
Poni¿ej zostan± omówione proste i bardziej
skomplikowane graficzne kszta³ty, które mo¿na
konstruowaæ w PostScripcie, a mianowicie ³uki i krzywe.
Operator arc jest jednym z najprostszych
operatorów PostScriptu, stosowanych do rysowania tych
kszta³tów graficznych.
Operator arc kre¶li w wybranym miejscu strony
³uki o zadanej d³ugo¶ci i promieniu. W po³±czeniu z
operatorem lineto mo¿na stosowaæ go do
rysowania wycinków kó³ o danym promieniu i w dowolnym
po³o¿eniu. Uzyskany kszta³t mo¿na zamalowaæ dowolnym
kolorem za pomoc± operatorów fill i stroke.
Ponadto ³±cz±c dzia³anie operatora arc z
dzia³aniem operatora scale, mo¿na rysowaæ
elipsy.
W porównaniu z kre¶leniem
prostok±tów w którym potrzeba a¿ piêciu operacji
PostScriptu, konstruowanie okrêgów jest banalnie proste.
Narysowanie okrêgu o dowolnym promieniu i w dowolnym po³o¿eniu
uzyskuje siê, wywo³uj±c operator arc z piêcioma
argumentami. Opisuj± one odpowiednia: wspó³rzêdne x i
y ¶rodka okrêgu, promieñ oraz k±ty pocz±tku i koñca
³uku. W przypadku okrêgów, k±ty pocz±tku i koñca s±
odpowiednio równe 0 i 360°.
Przedstawiony poni¿ej program kre¶li na ¶rodku strony
okr±g o promieniu trzech cali.
306 396 translate
0 0 216 0 360 arc
stroke
showpage
Poniewa¿ u¿yli¶my tu operatora translate
w celu przesuniêcia pocz±tku uk³adu wspó³rzêdnych
do punktu bêd±cego ¶rodkiem strony, zadane wspó³rzêdne
¶rodka okrêgu maj± warto¶æ 0,0.
Kre¶l±c krzyw± za pomoc± operatora arc od 0°
do 180° w kierunku przeciwnym do ruchu wskazówek zegara,
narysowane zostanie pó³kole.
306 396 translate
/Helvetica-Bold findfont 72 scalefont setfont
newpath
0 0 216 0 180 arc
stroke
220 0 moveto
(0\312) show
-220 0 moveto
(180\312) show
showpage
Zmieniaj±c odpowiednio k±t pocz±tkowy i koñcowy
kre¶lonej krzywej uzyskaæ mo¿na dowolny wycinek ko³a.
Ko³a
mo¿na ³atwo przekszta³ciæ w elipsy, skaluj±c je nierównomiernie,
operatorem scale i ka¿demu ko³u nadamy kszta³t
eliptyczny
306 396 translate
0 252 translate
gsave
.5 1 scale
0 0 72 0 360 arc fill
grestore
0 -180 translate
gsave
2 1 scale
0 0 72 0 360 arc fill
grestore
0 -180 translate
gsave
.25 .50 scale
0 0 72 0 360 arc fill
grestore
0 -180 translate
gsave
4 1 scale
0 0 72 0 180 arc
closepath fill
grestore
showpage
Zmianê orientacji ka¿dej rysowanej elipsy mo¿na uzyskaæ,
stosuj±c instrukcjê arc.
Szczególn± odmian± operatora arc jest arcto,
który s³u¿y do ³±czenia linii fragmentami ³uków.
Mimo ¿e trudniejszy w u¿yciu, jest bardzo przydatny do
rysowania na przyk³ad prostok±tów z zaokr±glonymi
rogami lub do kre¶lenia dwóch równoleg³ych odcinków
po³±czonych ³ukami. Operator arcto ³±czy
odcinek z ³ukiem o dowolnym promieniu i k±cie.
Operator arcto wymaga piêciu argumentów.
Cztery pierwsze argumenty s± wspó³rzêdnymi x, y dwóch
punktów. Razem z punktem bie¿±cym wyznaczaj± dwie
linie proste, do których bêdzie styczny ³uk. Pi±ty
argument okre¶la promieñ tego ³uku. Operator clear
jest stosowany w celu odrzucenia niektórych zbêdnych
informacji generowanych przez interpretator PostScriptu
po wykonaniu arcto.
To, czy kre¶lony przez arcto ³uk bêdzie
poprzedzony odcinkiem, czy nie, zale¿y od odleg³o¶ci
miêdzy punktami i od promienia ³uku. W przedstawionym
przyk³adzie u¿ywamy ³uków zarówno z odcinkami
prostych, jak i bez. W wyniku uzyskujemy dwa równoleg³e
odcinki po³±czone pó³okrêgami.
108 108 translate
0 576 translate
0 36 moveto
0 72 216 72 36 arcto clear
stroke
0 -144 translate
36 72 moveto
216 72 216 0 36 arcto clear
stroke
0 -144 translate
216 36 moveto
216 0 0 0 36 arcto clear
stroke
0 -144 translate
180 0 moveto
0 0 0 72 36 arcto clear
stroke
0 -144 translate
newpath
0 36 moveto
0 72 216 72 36 arcto clear
216 72 216 0 36 arcto clear
216 0 0 0 36 arcto clear
0 0 0 72 36 arcto clear
stroke
showpage
Operator curveto jest bardzo elastycznym a
zarazem jednym z trudniejszych w u¿yciu operatorów
PostScriptu.
Na rysunku poni¿ej widaæ dwie krzywe, uzyskane za pomoc±
operatora curveto
Operator curveto wymaga sze¶ciu argumentów.
Wykonanie instrukcji moveto ustala punkt pocz±tkowy
krzywej, a ostatnia para argumentów okre¶la punkt koñcowy.
Pozosta³e dwie pary liczb, bêd±ce wspó³rzêdnymi x,
y, opisuj± po³o¿enie punktów kontrolnych.
306 396 translate
gsave
-200 0 moveto
100 150 150 -150 200 0 curveto
stroke
grestore
showpage
zanotowane.pldoc.pisz.plpdf.pisz.plpajaa1981.pev.pl