%! % Example of rotation... draws 36 lines in a circular pattern 0 10 360 { % Go from 0 to 360 degrees in 10 degree steps newpath % Start a new path gsave % Keep rotations temporary 144 144 moveto rotate % Rotate by degrees on stack from 'for' 72 0 rlineto stroke grestore % Get back the unrotated state } for % Iterate over angles showpage /box { newpath moveto 72 0 rlineto 0 72 rlineto -72 0 rlineto closepath } def % Specify font for text labels /Helvetica findfont 40 scalefont setfont gsave 40 40 translate % Set origin to (40, 40) 0 0 box stroke % Draw box at new origin... 77 0 moveto (Translated) show % and label grestore gsave 100 150 translate % Translate origin to (100, 150) 30 rotate % Rotate counter-clockwise by 30 degrees 0 0 box stroke % Draw box... 75 0 moveto (Translated & Rotated) show % and label grestore gsave 40 300 translate % Translate to (40, 300) 0.5 1 scale % Reduce x coord by 1/2, y coord left alone 0 0 box stroke % Draw box... 75 0 moveto (Translated & Squished) show % and label grestore gsave 100 450 translate % Set origin to (300, 300) 45 rotate % Rotate coordinates by 45 degrees 0.5 1 scale % Scale coordinates 0 0 box stroke % Draw box 75 0 moveto (Everything) show grestore showpage