    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.HC 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.HC.

    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.HC.

    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.HC or ::/Demo/Games/CastleFrankenstein.HC to see how to
    change the transform() callback for foreshortening.