Transformations Examples

Try it.

%!
% Example to demonstrate translate, rotate, and scale

% operator box: xcoord ycoord box -
% Creates one inch box at xcoord, ycoord
/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)
  30 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