|
|
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));
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.