Define :
/SQUARE {
2 index 2 index moveto % X Y rmoveto
0 index 2 div 0 rmoveto % L/2 0 rmoveto
0 index 2 div 0 exch rmoveto % 0 L/2 rmoveto
0 index neg 0 rlineto % -L 0 rlineto
0 index neg 0 exch rlineto % 0 -L rlineto
0 index 0 rlineto % +L 0 rlineto
0 index 0 exch rlineto % 0 +L rlineto
clear
} def
Detail :
X Y L SQUARE
STACK
3 2 1 0
X Y L
2 index X Y L X
2 index 2 index X Y L X Y
2 index 2 index moveto X Y L -> X Y moveto
0 index X Y L L
0 index 2 div X Y L L/2
0 index 2 div 0 X Y L L/2 0
0 index 2 div 0 rmoveto X Y L -> L/2 0 rmoveto
0 index 2 div 0 X Y L L/2 0
0 index 2 div 0 exch X Y L 0 L/2
0 index 2 div 0 exch rmoveto X Y L -> 0 L/2 rmoveto
..
0 index neg 0 rlineto X Y L -> -L 0 rlineto
..
0 index neg 0 exch rlineto X Y L -> 0 -L rlineto
..
0 index 0 rlineto X Y L -> L 0 rlineto
..
0 index 0 exch rlineto X Y L -> 0 L rlineto
clear
|
|