CDC's have a 4x4 matrix for rotating, scaling, skewing and shifting in 3 dimensions.    To make the graphics routines use the 
transform, you must set the DCF_TRANSFORMATION flag.

The matrix consists of ints that have been scaled 32 bits (GR_SCALE).   See ::/Demo/Lectures/FixedPoint.CC to learn why.

See Mat4x4IdentEqu(), Mat4x4IdentNew(), Mat4x4Equ() and Mat4x4New().    See Mat4x4RotX(), Mat4x4RotY(), Mat4x4RotZ() and 
Mat4x4Scale() to rotate about axes and scale.  Combine them with Mat4x4MulMat4x4Equ()/Mat4x4MulMat4x4New() and assign them to 
the CDC.dc with DCMat4x4Set().  See ::/Demo/Graphics/Box.CC.

You can rotate single points using Mat4x4MulXYZ().

The 4th dimension allows a neat trick where you can place pos shifts (translations), into the matrix and Mat4x4MulMat4x4Equ/
Mat4x4MulMat4x4New them to combine rotation/shift operations.  Normally, you can't combine pos shift operations.    See 
Mat4x4TranslationEqu() and ::/Demo/Graphics/Transform.CC.

Finally, CDC's have an x, y and z which is an additional shift (translation).

The transformation is implemented as a callback on the CDC's transform() member.    The default transform() callback is 
DCTransform().  See ::/Demo/Games/Talons.CC or ::/Demo/Games/CastleFrankenstein.CC to see how to change the transform() 
callback for foreshortening.