in questo caso è ovvio:
i punti da colorare sono quelli contenuti dai segmenti
se la figura fosse più complessa?
con due quadrati dentro un quadrato?
figure innestate
possibilità:
colorare tutto il quadrato grande
colorare il quadrato grande ma non quelli piccoli
colorare il quadrato grande ma non uno di quelli piccoli
si può fare in tutti i modi
verso di rotazione
il quadrato si può disegnare nei due versi
orario o antiorario
esempio: il quadrato grande e uno piccolo in senso orario
l'altro piccolo in senso antiorario
cosa succede se si colorano?
effetto del verso di rotazione
% un quadrato disegnato in senso orario
10 10 moveto
10 90 lineto
90 90 lineto
90 10 lineto
closepath
% un quadrato al suo interno, disegnato in senso orario
20 20 moveto
20 40 lineto
40 40 lineto
40 20 lineto
closepath
% un altro quadrato al suo interno, disegnato in senso antiorario
60 60 moveto
80 60 lineto
80 80 lineto
60 80 lineto
closepath
fill
se i quadrati venissero disegnati, riempiti (fill):
disegno
…
% i due quadrati non vengono disegnati
% diventano la maschera
clip
newpath
initmatrix
% disegno parzialmente fuori dalla maschera
0.0 0.0 0.0 setrgbcolor
20 100 30 0 360 arc fill
100 120 30 0 360 arc fill
…
showpage
/Courier % nome del font in cima alla pila
findfont % trova il font
15 scalefont % grandezza dei caratteri 15
setfont % usare questo font
10 180 moveto % posizione
(paro) show % disegna stringa
/Times-Roman findfont % altro font
20 scalefont % grandezza 20
setfont
(la) show % disegna di seguito
carica un altro font (Times-Roman)
lo usa per disegnare altri due caratteri: "la"
se non c'è una moveto,
la successiva scritta è di seguito
ampiezza del testo
centrare il testo
allineare il testo a sinistra
disegnare un rettangolo intorno al testo
…
serve la lunghezza del testo sulla pagina
dipende dal font caricato e dalla stringa
font monospace e proporzionali
monospace
esempio: Courier
tutti i caratteri della stessa larghezza:
i m
proporzionali
esempio: Times-Roman
caratteri di diversa largheza:
i m
ampiezza del testo
monospace
dipende solo della lunghezza della stringa
proporzionali
dipende dai singoli caratteri
complicato farlo tutte le volte
esiste una funzione postscript che determina l'ampiezza
trovare l'ampiezza del testo
(testo) stringwidth
risultato: due numeri
quanto si sposta il cursore se il testo viene disegnato
/blockquote>
esempio di ampiezza
% carica il font
/Courier findfont 20 scalefont setfont
% trova l'ampiezza di una stringa sul disegno
(testo) stringwidth % come cambiano x e y del cursore
% se "testo" viene stampato
pstack
clear
% carica il font
/Courier findfont 20 scalefont setfont
% disegna "testo"
10 10 moveto
(testo) show
% linea lunga quanto "testo"
10 10 moveto % posizione iniziale del testo
10 % x di partenza
(testo) stringwidth pop % spostamento x se "testo" venisse stampato
add % somma la x di partenza e lo spostamento
10 % y di partenza
lineto % linea
stroke