PAINT.H
/******************************************************************************\ 
* 
*                               MODULE: PAINT.H 
* 
\******************************************************************************/ 
 
 
 
/******************************************************************************\ 
*                             SYMBOLIC CONSTANTS 
\******************************************************************************/ 
 
#define  NUMVERTICES  8 /* number of polyhedron vertices */ 
#define  NUMFACETS    6 /* number of polyhedron facets   */ 
 
#define  MAX_POINTS_PER_FACET 4 
 
 
 
/******************************************************************************\ 
*                                  TYPEDEFs 
\******************************************************************************/ 
 
typedef struct 
{ 
  LONG x, y, z; 
 
} POINT3D; 
 
 
 
/******************************************************************************\ 
*                          GLOBAL VARIABLES 
\******************************************************************************/ 
 
// 
//  This particular set of vertices "gNormalizedVertices" and corresponding 
//    facets "gaiFacets" describe a normalized cube centered about the 
//    origin ([0,0,0] in 3-space). The gaiFacet array is made up of a series 
//    of indices into the array of vertices, each describing an individual 
//    facet (eg. a polygon), and are separated by -1. Note that the facets 
//    are decribed in COUNTERCLOCKWISE (relative to the viewer) order so we 
//    can consistently find the normal to any given facet. (The normal 
//    is used to determine facet visibilty.) 
// 
 
static POINT3D gNormalizedVertices[NUMVERTICES] = {{ 1, 1, 1}, { 1,-1, 1}, 
                                                   {-1,-1, 1}, {-1, 1, 1}, 
                                                   { 1, 1,-1}, { 1,-1,-1}, 
                                                   {-1,-1,-1}, {-1, 1,-1}  }; 
 
 
static int gaiFacets[30] = { 3, 2, 1, 0, -1, 
                             4, 5, 6, 7, -1, 
                             0, 1, 5, 4, -1, 
                             6, 2, 3, 7, -1, 
                             7, 3, 0, 4, -1, 
                             5, 1, 2, 6, -1  }; 
 
POINT3D gXformedVertices[NUMVERTICES]; 
 
float   gM[2][3]; /* the transformation matrix */ 
 
 
 
/******************************************************************************\ 
*                         FUNCTION PROTOTYPES 
\******************************************************************************/ 
 
void TransformVertices (HWND, RECT *, PSPINCUBEINFO, LONG); 
void ComputeRotationTransformation (float, float, float);