I remember something like this from Newmann and Sproull.
So I made these for my write-up at
http://computergraphics.stackexchange.com/questions/391/what-are-affine-transformations
josh@cadabra ~/affine
$ for i in `ls -1 *.ps` ; do echo ====== $i ============ ; cat $i ; echo ============ ; done
======
ident.ps ============
%!
/axis {
currentpoint 4 {
2 copy moveto
50 0 lineto
90 rotate
} repeat pop pop
} def
/shape {
20 0 moveto
30 20 lineto
40 0 lineto
closepath
} def
100 100 translate
gsave
currentlinewidth 1.5 mul setlinewidth
1 0 0 setrgbcolor
0 0 moveto axis shape stroke
grestore
0 0 moveto axis shape stroke
showpage
============
======
rotate.ps ============
%!
/axis {
currentpoint 4 {
2 copy moveto
50 0 lineto
90 rotate
} repeat pop pop
} def
/shape {
20 0 moveto
30 20 lineto
40 0 lineto
closepath
} def
100 100 translate
gsave
12 rotate
currentlinewidth 1.5 mul setlinewidth
1 0 0 setrgbcolor
0 0 moveto axis shape stroke
grestore
0 0 moveto axis shape stroke
showpage
============
======
scale.ps ============
%!
/axis {
currentpoint 4 {
2 copy moveto
50 0 lineto
90 rotate
} repeat pop pop
} def
/shape {
20 0 moveto
30 20 lineto
40 0 lineto
closepath
} def
100 100 translate
gsave
1.5 1.5 scale
currentlinewidth 1.5 mul setlinewidth
1 0 0 setrgbcolor
0 0 moveto axis shape stroke
grestore
0 0 moveto axis shape stroke
showpage
============
======
skewx.ps ============
%!
/axis {
currentpoint 4 {
2 copy moveto
50 0 lineto
90 rotate
} repeat pop pop
} def
/shape {
20 0 moveto
30 20 lineto
40 0 lineto
closepath
} def
100 100 translate
gsave
[1 .7 0 1 0 0] concat
currentlinewidth 1.5 mul setlinewidth
1 0 0 setrgbcolor
0 0 moveto axis shape stroke
grestore
0 0 moveto axis shape stroke
showpage
============
======
skewy.ps ============
%!
/axis {
currentpoint 4 {
2 copy moveto
50 0 lineto
90 rotate
} repeat pop pop
} def
/shape {
20 0 moveto
30 20 lineto
40 0 lineto
closepath
} def
100 100 translate
gsave
[1 0 .7 1 0 0] concat
currentlinewidth 1.5 mul setlinewidth
1 0 0 setrgbcolor
0 0 moveto axis shape stroke
grestore
0 0 moveto axis shape stroke
showpage
============
======
translate.ps ============
%!
/axis {
currentpoint 4 {
2 copy moveto
50 0 lineto
90 rotate
} repeat pop pop
} def
/shape {
20 0 moveto
30 20 lineto
40 0 lineto
closepath
} def
100 100 translate
gsave
15 15 translate
currentlinewidth 1.5 mul setlinewidth
1 0 0 setrgbcolor
0 0 moveto axis shape stroke
grestore
0 0 moveto axis shape stroke
showpage
============
josh@cadabra ~/affine
$