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);