It will be useful to imagine an "enclosing sphere" for our scene geometry; e.g., one which circumscribes the MC region of interest. The radius, r, of such a circumscribing sphere would be half the diagonal length of the MC region of interest.
Since we really just need a rough size estimate, a perfectly acceptable alternative to a circumscribing sphere is to set r = max(Δx/2, Δy/2, Δz/2), where the Δs are the corresponding "max - min" values of the MC region of interest.
We will simply use r below without worrying about how it was computed.
Here is an interactive tool for understanding view orientations and projections, as well as how they relate to one another: metaview: (If you have problems running this application, see the browser and platform-specific instructions on this page.)
The "primary line of sight" is defined as the direction from the eye point to the center point, and it will become the negative z-axis of the eye coordinate (EC) system.
IMPORTANT OBSERVATION: Establishing the primary line of sight (and hence the eye coordinate z-axis) in this way means the z-axis passes through the center of the scene. The generation of the projection transformation described next relies on this assumption!
RECALL: At this stage, we no longer are working in MC; rather we are operating in EC. The units of MC and EC are the same (hence the value we computed for the radius of the enclosing sphere is still valid), but the MC and EC axes generally have different positions and orientations.
The center of our circumscribing sphere as measured in EC is (0, 0, -d). WHY?
Set ecXmin = ecYmin = -r; ecXmax = ecYmax = r, and make sure ecZmin and ecZmax are set so as to avoid unwanted depth clipping. For example, "ecZmin = -d - r" and "ecZmax = -d + r" are not unreasonable starting points. (WHY?) A reasonable value for ecZpp might be ecZmax. (WHY?)
Finally: