72 lines
2.6 KiB
C
72 lines
2.6 KiB
C
/******************************************************************************\
|
|
*
|
|
* 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);
|