Figure 4: A class to represent a view set

class CScenView : public CView
{
public:

   // Partial listing, Perspective transform
   // variables
   ...
   double m_ScvViewPtZ;  // View point 
                         // Z distance

   // Rotation of object world about Y axis

   double m_ScvDegAngle;
   double m_ScvAngle;     // Radians

   double m_ScvYdrop;   // View Y drop
   double m_ScvZoffset; // View Z offset
   double m_ScvXoffset; // View X offset
   ...
   double m_ScreenGainX;  
   double m_ScreenGainY;  
  
   // Normalised (0.0 to 1.0) origin point
  
   double m_NormWoX;
   double m_NormWoY;

   int m_WorgIy;      // Device origin point
   int m_WorgIx;      // in pixels

   double m_WorgSx;   // Camera world screen
   double m_WorgTy;   // origin values

   double m_ObjPosX;  // Perspective Thing
   double m_ObjPosY;  // position
   double m_ObjPosZ;    

   double m_ObjPtX;   // Perspective input 
   double m_ObjPtY;   // 3-D point
   double m_ObjPtZ;    

   // Perspective output (S x axis, T y axis)  

   double m_ScreenS;
   double m_ScreenT;

   int m_DeviceIx;  // Screen point
   int m_DeviceIy;

   int m_DeviceHorizon;
  
   // perspective transform matrix
   double m_ScPerspective[4][4];  

   double m_ScnObjCoords[4]; // Object coords

   double m_rpc[4]; // Object coord 
                    // output array
 
   // Implementation

public:
   ...

   void InitDisplayScene();
   void PerspectiveInit();
   void PerspectiveTr();
};