File:  [OS/2 SDKs] / pmsdk / samples / shapes / sdata.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Thu Aug 9 12:28:12 2018 UTC (7 years, 9 months ago) by root
Branches: msft, MAIN
CVS tags: pmsdk-1988, HEAD
Microsoft OS/2 SDK PM 08-08-1988

/*--------------------------------------------------------*\
    SDATA.C - object definitions, initialization data
	      and table of shapes
\*--------------------------------------------------------*/

#include <stddef.h>
#include <os2.h>
#include "sstruct.h"


/*--------------------------------------------------------*\
    Object Definitions
\*--------------------------------------------------------*/

POINT3D rgpt3Cube [] =
    { { 10, 10, 10}, {-10, 10, 10}, {-10,-10, 10}, { 10,-10, 10},
      { 10, 10,-10}, {-10, 10,-10}, {-10,-10,-10}, { 10,-10,-10} };
LINE rglineCube [] =
    { {0,1}, {1,2}, {2,3}, {3,0},
      {0,4}, {1,5}, {2,6}, {3,7},
      {7,4}, {4,5}, {5,6}, {6,7}, {-1,-1} };
FACE rgfaceCube [] =
    { 0,1,2,3,-2,
      0,3,7,4,-2,
      3,2,6,7,-2,
      7,6,5,4,-2,
      2,1,5,6,-2,
      4,5,1,0,-2,
      -3 };
OBJECT objectCube =
    { 8, rgpt3Cube, rglineCube, rgfaceCube };

POINT3D rgpt3Pyramid [] =
    { { 10,-10, 10}, {-10,-10, 10}, {-10,-10,-10}, { 10,-10,-10},
      {  0, 10,  0} };
LINE rglinePyramid [] =
    { {0,1}, {1,2}, {2,3}, {3,0},
      {0,4}, {4,1}, {2,4}, {4,3}, {-1,-1} };
FACE rgfacePyramid [] =
    { 0,1,2,3,-2,
      4,0,3,-2,
      4,3,2,-2,
      4,2,1,-2,
      4,1,0,-2,
      -3 };
OBJECT objectPyramid =
    { 5, rgpt3Pyramid, rglinePyramid, rgfacePyramid };

POINT3D rgpt3Cage [] =
    { { 10,  5, 15}, {	5, 10, 15}, { -5, 10, 15}, {-10,  5, 15},
      {-10, -5, 15}, { -5,-10, 15}, {  5,-10, 15}, { 10, -5, 15},
      { 10,  5,-15}, {	5, 10,-15}, { -5, 10,-15}, {-10,  5,-15},
      {-10, -5,-15}, { -5,-10,-15}, {  5,-10,-15}, { 10, -5,-15} };
LINE rglineCage [] =
    { { 0, 1}, { 1, 2}, { 2, 3}, { 3, 4},
      { 4, 5}, { 5, 6}, { 6, 7}, { 7, 0}, { 0, 8},
      { 8, 9}, { 9,10}, {10,11}, {11,12},
      {12,13}, {13,14}, {14,15}, {15, 8},
      { 1, 9}, { 2,10}, { 3,11}, { 4,12},
      { 5,13}, { 6,14}, { 7,15}, {-1,-1} };
FACE rgfaceCage [] =
    { 0,1,2,3,4,5,6,7,-2,
      15,14,13,12,11,10,9,8,-2,
      1,0,8,9,-2,
      2,1,9,10,-2,
      3,2,10,11,-2,
      4,3,11,12,-2,
      5,4,12,13,-2,
      6,5,13,14,-2,
      7,6,14,15,-2,
      0,7,15,8,-2,
      -3 };
OBJECT objectCage =
    { 16, rgpt3Cage, rglineCage, rgfaceCage };

POINT3D rgpt3Charlie [] =
    { { 15,  5,  5}, {	5, 15,	5}, { -5, 15,  5}, {-15,  5,  5},
      {-15, -5,  5}, { -5,-15,	5}, {  5,-15,  5}, { 15, -5,  5},
      { 15,  5, -5}, {	5, 15, -5}, { -5, 15, -5}, {-15,  5, -5},
      {-15, -5, -5}, { -5,-15, -5}, {  5,-15, -5}, { 15, -5, -5},
      {  5,  5, 15}, { -5,  5, 15}, { -5, -5, 15}, {  5, -5, 15},
      {  5,  5,-15}, { -5,  5,-15}, { -5, -5,-15}, {  5, -5,-15} };
FACE rgfaceCharlie [] =
    { 1,0,8,9,-2,
      2,1,9,10,-2,
      3,2,10,11,-2,
      4,3,11,12,-2,
      5,4,12,13,-2,
      6,5,13,14,-2,
      7,6,14,15,-2,
      0,7,15,8,-2,
      0,16,19,7,-2,
      1,16,0,-2,
      2,17,16,1,-2,
      3,17,2,-2,
      4,18,17,3,-2,
      5,18,4,-2,
      6,19,18,5,-2,
      7,19,6,-2,
      20,8,15,23,-2,
      20,9,8,-2,
      21,10,9,20,-2,
      21,11,10,-2,
      22,12,11,21,-2,
      22,13,12,-2,
      23,14,13,22,-2,
      23,15,14,-2,
      16,17,18,19,-2,
      23,22,21,20,-2,
      -3 };
OBJECT objectCharlie =
    { 24, rgpt3Charlie, NULL, rgfaceCharlie };

POINT3D rgpt3Dodeca [] =
    {{ 85,  0,112}, { 26, 81,112}, {-69, 50,112}, {-69,-50,112}, { 26,-81,112},
     {138,  0, 27}, { 43,131, 27}, {-111, 81, 27},{-111,-81, 27},{ 43,-131, 27},
     {-138, 0,-27}, {-43,-131,-27},{ 111,-81,-27},{ 111, 81,-27},{-43, 131,-27},
     {-85,  0,-112},{-26,-81,-112},{ 69,-50,-112},{ 69, 50,-112},{-26, 81,-112}
    };
LINE rglineDodeca [] =
    { {0,1}, {1,2}, {2,3}, {3,4}, {4,0},
      {0,5}, {5,13}, {13,6}, {6,1},
      {6,14}, {14,7}, {7,2},
      {7,10}, {10,8}, {8,3},
      {8,11}, {11,9}, {9,4},
      {9,12}, {12,5},
      {10,15}, {15,16}, {16,11},
      {16,17}, {17,12},
      {17,18}, {18,13},
      {18,19}, {19,14},
      {19,15},
      {-1,-1} };
FACE rgfaceDodeca [] =
    { 0,1,2,3,4,-2,
      0,5,13,6,1,-2,
      1,6,14,7,2,-2,
      2,7,10,8,3,-2,
      3,8,11,9,4,-2,
      4,9,12,5,0,-2,
      10,15,16,11,8,-2,
      11,16,17,12,9,-2,
      12,17,18,13,5,-2,
      13,18,19,14,6,-2,
      14,19,15,10,7,-2,
      19,18,17,16,15,-2,
      -3 };
OBJECT objectDodeca =
    { 20, rgpt3Dodeca, rglineDodeca, rgfaceDodeca };

POINT3D rgpt3Icosa [] =
    { {0,0,112}, {80,58,50}, {-30,94,50}, {-99,0,50},
      {-30,-94,50}, {80,-58,50}, {-80,-58,-50}, {30,-94,-50},
      {99,0,-50}, {30,94,-50}, {-80,58,-50}, {0,0,-112}
    };
LINE rglineIcosa [] =
    { {1,0}, {0,2}, {2,1}, {0,3}, {3,2},
      {0,4}, {4,3}, {0,5}, {5,1}, {5,4},
      {3,6}, {6,4}, {4,7}, {7,5}, {7,6},
      {1,8}, {8,5}, {8,7}, {1,9}, {9,2},
      {9,8}, {2,10}, {10,3}, {6,10}, {10,9},
      {6,11}, {11,7}, {8,11}, {11,9}, {11,10},
      {-1,-1} };
FACE rgfaceIcosa [] =
    { 0,1,2,-2,
      0,2,3,-2,
      0,3,4,-2,
      0,4,5,-2,
      0,5,1,-2,
      11,10,9,-2,
      11,9,8,-2,
      11,8,7,-2,
      11,7,6,-2,
      11,6,10,-2,
      1,8,9,-2,
      2,1,9,-2,
      2,9,10,-2,
      3,2,10,-2,
      3,10,6,-2,
      4,3,6,-2,
      4,6,7,-2,
      5,4,7,-2,
      5,7,8,-2,
      1,5,8,-2,
      -3 };
OBJECT objectIcosa =
    { 12, rgpt3Icosa, rglineIcosa, rgfaceIcosa };

POINT3D rgpt3Micro [] =
    { {-12,-2,0}, {-12, 2,0}, {-11, 0,0}, {-10, 2,0}, {-10,-2,0},
      { -9,-2,0}, { -9, 2,0},
      { -6,-1,0}, { -7,-2,0}, { -8,-1,0}, { -8, 1,0}, { -7, 2,0}, { -6, 1,0},
      { -5,-2,0}, { -5, 2,0}, { -4, 2,0}, { -3, 1,0}, { -4, 0,0}, { -5, 0,0},
      { -3,-2,0},
      { -1,-2,0}, { -2,-1,0}, { -2, 1,0}, { -1, 2,0}, {  0, 1,0}, {  0,-1,0},
      {  1,-1,0}, {  2,-2,0}, {  3,-1,0}, {  1, 1,0}, {  2, 2,0}, {  3, 1,0},
      {  5,-2,0}, {  4,-1,0}, {  4, 1,0}, {  5, 2,0}, {  6, 1,0}, {  6,-1,0},
      {  7,-2,0}, {  7, 2,0}, {  9, 2,0}, {  7, 0,0}, {  9, 0,0},
      { 10, 2,0}, { 12, 2,0}, { 11, 2,0}, { 11,-2,0},
      {-13,-3,0}, {-13, 3,0}, { 13, 3,0}, { 13,-3,0}
    };
LINE rglineMicro [] =
    { {47,48}, {48,49}, {49,50}, {50,47},
      { 0, 1}, { 1, 2}, { 2, 3}, {3 , 4},
      { 5, 6},
      { 7, 8}, { 8, 9}, { 9,10}, {10,11}, {11,12},
      {13,14}, {14,15}, {15,16}, {16,17}, {17,18}, {17,19},
      {20,21}, {21,22}, {22,23}, {23,24}, {24,25}, {25,20},
      {26,27}, {27,28}, {28,29}, {29,30}, {30,31},
      {32,33}, {33,34}, {34,35}, {35,36}, {36,37}, {37,32},
      {38,39}, {39,40}, {41,42},
      {43,44}, {45,46},
      {-1,-1} };
FACE rgfaceMicro [] =
    { 47,48,49,50,-2,
      50,49,48,47,-1,
	0,1,2,3,4,-1,
	5,6,-1,
	7,8,9,10,11,12,-1,
	13,14,15,16,17,18,-1, 17,19,-1,
	20,21,22,23,24,25,20,-1,
	26,27,28,29,30,31,-1,
	32,33,34,35,36,37,32,-1,
	38,39,40,-1, 41,42,-1,
	43,44,-1, 45,46,-2,
      -3 };
OBJECT objectMicro =
    { 51, rgpt3Micro, rglineMicro, rgfaceMicro };

POINT3D rgpt3Die [] =
    { { 10, 10, 10}, {-10, 10, 10}, {-10,-10, 10}, { 10,-10, 10},
      { 10, 10,-10}, {-10, 10,-10}, {-10,-10,-10}, { 10,-10,-10},
      {  0,  6, 10}, {	0, -6, 10},
      {-10,  4,  3}, {-10,  0,	6}, {-10, -4,  3}, {-10,  4, -6},
      {-10, -4, -6},
      {  4, 10,  3}, {	0, 10,	6}, { -4, 10,  3}, {  0, 10,  0},
      { -4, 10, -3}, {	0, 10, -6}, {  4, 10, -3},
      { -4,-10,  6}, { -4,-10,	0}, {  4,-10,  0}, {  4,-10,  6},
      {  4,-10, -6},
      { 10,  4,  6}, { 10, -4,	6}, { 10, -4,  2}, { 10,  0,  2},
      { 10,  4, -2}, { 10,  0, -6}, { 10, -4, -3},
      {  0,  6,-10}, {	4,  3,-10}, {  4, -3,-10}, {  0, -6,-10},
      { -4, -3,-10}, {	0,  0,-10} };
LINE rglineDie [] =
    { {0,1}, {1,2}, {2,3}, {3,0}, {8,9},
      {0,3}, {3,7}, {7,4}, {4,0}, {27,28}, {28,29}, {29,30}, {30,31},
	{31,32}, {32,33},
      {3,2}, {2,6}, {6,7}, {7,3}, {22,23}, {23,24}, {25,26},
      {7,6}, {6,5}, {5,4}, {4,7}, {34,35}, {35,36}, {36,37}, {37,38},
	{38,39}, {39,36},
      {2,1}, {1,5}, {5,6}, {6,2}, {10,11}, {11,12}, {12,13}, {13,14},
      {4,5}, {5,1}, {1,0}, {0,4}, {15,16}, {16,17}, {17,18}, {18,19},
	{19,20}, {20,21},
      {-1,-1} };
FACE rgfaceDie [] =
    { 0,1,2,3,-1,  8,9, -2,
      0,3,7,4,-1,  27,28,29,30,31,32,33, -2,
      3,2,6,7,-1,  22,23,24,-1, 25,26, -2,
      7,6,5,4,-1,  34,35,36,37,38,39,36, -2,
      2,1,5,6,-1,  10,11,12,13,14, -2,
      4,5,1,0,-1,  15,16,17,18,19,20,21, -2,
      -3 };
OBJECT objectDie =
    { 40, rgpt3Die, rglineDie, rgfaceDie };

POINT3D rgpt3Diamond [] =
    { { 16,  0, 10}, { 14,  8, 10}, {  8, 14, 10},
      {  0, 16, 10}, { -8, 14, 10}, {-14,  8, 10},
      {-16,  0, 10}, {-14, -8, 10}, { -8,-14, 10},
      {  0,-16, 10}, {	8,-14, 10}, { 14, -8, 10},
      { 20,  0,  3}, { 17, 10,	3}, { 10, 17,  3},
      {  0, 20,  3}, {-10, 17,	3}, {-17, 10,  3},
      {-20,  0,  3}, {-17,-10,	3}, {-10,-17,  3},
      {  0,-20,  3}, { 10,-17,	3}, { 17,-10,  3},
      {  0,  0,-20} };
FACE rgfaceDiamond [] =
    { 0,1,2,3,4,5,6,7,8,9,10,11,-2,
      1,0,12,13,-2,
      2,1,13,14,-2,
      3,2,14,15,-2,
      4,3,15,16,-2,
      5,4,16,17,-2,
      6,5,17,18,-2,
      7,6,18,19,-2,
      8,7,19,20,-2,
      9,8,20,21,-2,
      10,9,21,22,-2,
      11,10,22,23,-2,
      0,11,23,12,-2,
      24,13,12,-2,
      24,14,13,-2,
      24,15,14,-2,
      24,16,15,-2,
      24,17,16,-2,
      24,18,17,-2,
      24,19,18,-2,
      24,20,19,-2,
      24,21,20,-2,
      24,22,21,-2,
      24,23,22,-2,
      24,12,23,-2,
      -3 };
OBJECT objectDiamond =
    { 25, rgpt3Diamond, NULL, rgfaceDiamond };

POINT3D rgpt3Disc [] =
    { { 20,  0, 0}, { 14, 14, 0}, {  0, 20, 0}, {-14, 14, 0},
      {-20,  0, 0}, {-14,-14, 0}, {  0,-20, 0}, { 14,-14, 0},
      {  0,  0, 8}, {  0,  0,-8} };
FACE rgfaceDisc [] =
    { 0,1,8,-2,
      1,2,8,-2,
      2,3,8,-2,
      3,4,8,-2,
      4,5,8,-2,
      5,6,8,-2,
      6,7,8,-2,
      7,0,8,-2,
      1,0,9,-2,
      2,1,9,-2,
      3,2,9,-2,
      4,3,9,-2,
      5,4,9,-2,
      6,5,9,-2,
      7,6,9,-2,
      0,7,9,-2,
      -3 };
OBJECT objectDisc =
    { 10, rgpt3Disc, NULL, rgfaceDisc };


/*--------------------------------------------------------*\
    Initialization Data
\*--------------------------------------------------------*/

INIT initDefault =
    {	1000,			   /* view distance */
	{   0,	 0,   0 },	   /* initial angle */
	{   2,	 2,   2 },	   /* angular velocity */
	{ 700, 700, 700 },	   /* size factor */
	{ 200, 200, 200 },	   /* size variation */
	{   0,	 0,   0 },	   /* size variation initial angle */
	{   5,	 5,   5 }	   /* size variation angular velocity */
    };

INIT initStretch =
    {	1500,			   /* view distance */
	{   0,	 0,   0 },	   /* initial angle */
	{   1,	 1,   0 },	   /* angular velocity */
	{ 500, 700, 900 },	   /* size factor */
	{ 350, 250, 150 },	   /* size variation */
	{   0, 120, 240 },	   /* size variation initial angle */
	{   7,	 7,   7 }	   /* size variation angular velocity */
    };

INIT initDodeca =
    {	1500,			   /* view distance */
	{   0,	30,   0 },	   /* initial angle */
	{   1,	 0,   1 },	   /* angular velocity */
	{  90,	90,  90 },	   /* size factor */
	{  20,	20,  20 },	   /* size variation */
	{   0,	 0,   0 },	   /* size variation initial angle */
	{   5,	 5,   5 }	   /* size variation angular velocity */
    };

INIT initIcosa =
    {	1500,			   /* view distance */
	{   0,	30,   0 },	   /* initial angle */
	{   1,	 0,   1 },	   /* angular velocity */
	{ 130, 130, 130 },	   /* size factor */
	{  30,	30,  30 },	   /* size variation */
	{   0,	 0,   0 },	   /* size variation initial angle */
	{   5,	 5,   5 }	   /* size variation angular velocity */
    };

INIT initMicro =
    {	1000,			   /* view distance */
	{   0,	 0,   0 },	   /* initial angle */
	{   5,	 0,   0 },	   /* angular velocity */
	{1300,2800,   0 },	   /* size factor */
	{ 300, 300,   0 },	   /* size variation */
	{   0, 180,   0 },	   /* size variation initial angle */
	{   5,	 5,   0 }	   /* size variation angular velocity */
    };

INIT initSpinning =
    {	1000,			   /* view distance */
	{ 290,	 0,   0 },	   /* initial angle */
	{   0,	 4,   0 },	   /* angular velocity */
	{ 550, 550, 550 },	   /* size factor */
	{ 150, 150, 150 },	   /* size variation */
	{   0,	 0,   0 },	   /* size variation initial angle */
	{   5,	 5,   5 }	   /* size variation angular velocity */
    };


/*--------------------------------------------------------*\
    Main table of shapes
\*--------------------------------------------------------*/

extern SHAPE rgshape [] =
    { { "Cube", 	   &objectCube,        &initStretch    },
      { "Charlie",	   &objectCharlie,     &initDefault    },
      { "Cage", 	   &objectCage,        &initSpinning   },
      { "Dodecahedron",    &objectDodeca,      &initDodeca     },
      { "Disc", 	   &objectDisc,        &initSpinning   },
      { "Die",		   &objectDie,	       &initDefault    },
      { "Diamond",	   &objectDiamond,     &initSpinning   },
      { "Icosahedron",	   &objectIcosa,       &initIcosa      },
      { "Microsoft",	   &objectMicro,       &initMicro      },
      { "Pyramid",	   &objectPyramid,     &initDefault    },
      { "Susan",	   &objectCharlie,     &initStretch    }
    };

/* number of shapes in table */

extern INT shapeMax = (sizeof rgshape / sizeof (SHAPE));

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.