/******************************************************************************\
*
* 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);