#define BFACE_COL 1.0, 0.0, 0.0 /* backface polygon color (r, g, b) */ #define DEF_HAND_FILL_COL 0.5, 0.5, 0.5 /* polygon fill color (r, g, b) */ #define DEF_PERIM_COL 0.0, 0.0, 1.0 /* polygon perimeter color (r, g, b) */ #define DEF_BCKGR_COL 0.0, 0.0, 0.0 /* screen background color (r, g, b) */ #define BULB_FILL_COL 0.8, 0.8, 0.8 /* tube fill color (r, g, b) */ #define TUBE_FILL_COL 0.5, 0.5, 0.7 /* tube fill color (r, g, b) */ #define CAP_FILL_COL 0.5, 0.5, 0.9 /* tube end fill color (r, g, b) */ #define BASE_FILL_COL 1.0, 1.0, 1.0 /* tube end fill color (r, g, b) */ #define FINGER_FACETS 8 #define FINGER_POINTS 4 /* works!!!!!!!!!! */ static float inner_knuckle[][4][6] = { /* Inner Knuckle Facet 1 */ -0.15, 0.3, -0.75, -0.5, 1.0, 0.0, -0.15, 0.3, 0.5, -0.5, 1.0, 0.0, 0.15, 0.3, 0.5, 0.5, 1.0, 0.0, 0.15, 0.3, -0.75, 0.5, 1.0, 0.0, /* Inner Knuckle Facet 2 */ -0.3, 0.15, -0.75, -1.0, 0.5, 0.0, -0.3, 0.15, 0.5, -1.0, 0.5, 0.0, -0.15, 0.3, 0.5, -0.5, 1.0, 0.0, -0.15, 0.3, -0.75, -0.5, 1.0, 0.0, /* Inner Knuckle Facet 3 */ -0.3, -0.15, -0.75, -1.0, -0.5, 0.0, -0.3, -0.15, 0.5, -1.0, -0.5, 0.0, -0.3, 0.15, 0.5, -1.0, 0.5, 0.0, -0.3, 0.15, -0.75, -1.0, 0.5, 0.0, /* Inner Knuckle Facet 4 */ -0.15, -0.3, -0.75, -0.5, -1.0, 0.0, -0.15, -0.3, 0.5, -0.5, -1.0, 0.0, -0.3, -0.15, 0.5, -1.0, -0.5, 0.0, -0.3, -0.15, -0.75, -1.0, -0.5, 0.0, /* Inner Knuckle Facet 5 */ 0.15, -0.3, -0.75, 0.5, -1.0, 0.0, 0.15, -0.3, 0.5, 0.5, -1.0, 0.0, -0.15, -0.3, 0.5, -0.5, -1.0, 0.0, -0.15, -0.3, -0.75, -0.5, -1.0, 0.0, /* Inner Knuckle Facet 6 */ 0.3, -0.15, -0.75, 1.0, -0.5, 0.0, 0.3, -0.15, 0.5, 1.0, -0.5, 0.0, 0.15, -0.3, 0.5, 0.5, -1.0, 0.0, 0.15, -0.3, -0.75, 0.5, -1.0, 0.0, /* Inner Knuckle Facet 7 */ 0.3, 0.15, -0.75, 1.0, 0.5, 0.0, 0.3, 0.15, 0.5, 1.0, 0.5, 0.0, 0.3, -0.15, 0.5, 1.0, -0.5, 0.0, 0.3, -0.15, -0.75, 1.0, -0.5, 0.0, /* Inner Knuckle Facet 8 */ 0.15, 0.3, -0.75, 0.5, 1.0, 0.0, 0.15, 0.3, 0.5, 0.5, 1.0, 0.0, 0.3, 0.15, 0.5, 1.0, 0.5, 0.0, 0.3, 0.15, -0.75, 1.0, 0.5, 0.0 }; static float outer_knuckle[][4][6] = { /* Outer Knuckle Facet 1 */ -0.15, 0.3, -0.40, -0.5, 1.0, 0.0, -0.15, 0.3, 1.40, -0.5, 1.0, 0.0, 0.15, 0.3, 1.40, 0.5, 1.0, 0.0, 0.15, 0.3, -0.40, 0.5, 1.0, 0.0, /* Outer Knuckle Facet 2 */ -0.3, 0.15, -0.40, -1.0, 0.5, 0.0, -0.3, 0.15, 1.40, -1.0, 0.5, 0.0, -0.15, 0.3, 1.40, -0.5, 1.0, 0.0, -0.15, 0.3, -0.40, -0.5, 1.0, 0.0, /* Outer Knuckle Facet 3 */ -0.3, -0.15, -0.40, -1.0, -0.5, 0.0, -0.3, -0.15, 1.40, -1.0, -0.5, 0.0, -0.3, 0.15, 1.40, -1.0, 0.5, 0.0, -0.3, 0.15, -0.40, -1.0, 0.5, 0.0, /* Outer Knuckle Facet 4 */ -0.15, -0.3, -0.40, -0.5, -1.0, 0.0, -0.15, -0.3, 1.40, -0.5, -1.0, 0.0, -0.3, -0.15, 1.40, -1.0, -0.5, 0.0, -0.3, -0.15, -0.40, -1.0, -0.5, 0.0, /* Outer Knuckle Facet 5 */ 0.15, -0.3, -0.40, 0.5, -1.0, 0.0, 0.15, -0.3, 1.40, 0.5, -1.0, 0.0, -0.15, -0.3, 1.40, -0.5, -1.0, 0.0, -0.15, -0.3, -0.40, -0.5, -1.0, 0.0, /* Outer Knuckle Facet 6 */ 0.3, -0.15, -0.40, 1.0, -0.5, 0.0, 0.3, -0.15, 1.40, 1.0, -0.5, 0.0, 0.15, -0.3, 1.40, 0.5, -1.0, 0.0, 0.15, -0.3, -0.40, 0.5, -1.0, 0.0, /* Outer Knuckle Facet 7 */ 0.3, 0.15, -0.40, 1.0, 0.5, 0.0, 0.3, 0.15, 1.40, 1.0, 0.5, 0.0, 0.3, -0.15, 1.40, 1.0, -0.5, 0.0, 0.3, -0.15, -0.40, 1.0, -0.5, 0.0, /* Outer Knuckle Facet 8 */ 0.15, 0.3, -0.40, 0.5, 1.0, 0.0, 0.15, 0.3, 1.40, 0.5, 1.0, 0.0, 0.3, 0.15, 1.40, 1.0, 0.5, 0.0, 0.3, 0.15, -0.40, 1.0, 0.5, 0.0 }; static float thumb_outer_knuckle[][4][6] = { /* Thumb Outer Knuckle Facet 1 */ -0.15, 0.3, -0.20, -0.5, 1.0, 0.0, -0.15, 0.3, 1.00, -0.5, 1.0, 0.0, 0.15, 0.3, 1.00, 0.5, 1.0, 0.0, 0.15, 0.3, -0.20, 0.5, 1.0, 0.0, /* Thumb Outer Knuckle Facet 2 */ -0.3, 0.15, -0.20, -1.0, 0.5, 0.0, -0.3, 0.15, 1.00, -1.0, 0.5, 0.0, -0.15, 0.3, 1.00, -0.5, 1.0, 0.0, -0.15, 0.3, -0.20, -0.5, 1.0, 0.0, /* Thumb Outer Knuckle Facet 3 */ -0.3, -0.15, -0.20, -1.0, -0.5, 0.0, -0.3, -0.15, 1.00, -1.0, -0.5, 0.0, -0.3, 0.15, 1.00, -1.0, 0.5, 0.0, -0.3, 0.15, -0.20, -1.0, 0.5, 0.0, /* Thumb Outer Knuckle Facet 4 */ -0.15, -0.3, -0.20, -0.5, -1.0, 0.0, -0.15, -0.3, 1.00, -0.5, -1.0, 0.0, -0.3, -0.15, 1.00, -1.0, -0.5, 0.0, -0.3, -0.15, -0.20, -1.0, -0.5, 0.0, /* Thumb Outer Knuckle Facet 5 */ 0.15, -0.3, -0.20, 0.5, -1.0, 0.0, 0.15, -0.3, 1.00, 0.5, -1.0, 0.0, -0.15, -0.3, 1.00, -0.5, -1.0, 0.0, -0.15, -0.3, -0.20, -0.5, -1.0, 0.0, /* Thumb Outer Knuckle Facet 6 */ 0.3, -0.15, -0.20, 1.0, -0.5, 0.0, 0.3, -0.15, 1.00, 1.0, -0.5, 0.0, 0.15, -0.3, 1.00, 0.5, -1.0, 0.0, 0.15, -0.3, -0.20, 0.5, -1.0, 0.0, /* Thumb Outer Knuckle Facet 7 */ 0.3, 0.15, -0.20, 1.0, 0.5, 0.0, 0.3, 0.15, 1.00, 1.0, 0.5, 0.0, 0.3, -0.15, 1.00, 1.0, -0.5, 0.0, 0.3, -0.15, -0.20, 1.0, -0.5, 0.0, /* Thumb Outer Knuckle Facet 8 */ 0.15, 0.3, -0.20, 0.5, 1.0, 0.0, 0.15, 0.3, 1.00, 0.5, 1.0, 0.0, 0.3, 0.15, 1.00, 1.0, 0.5, 0.0, 0.3, 0.15, -0.20, 1.0, 0.5, 0.0 }; #define KNUCKLE_END_POINTS 8 static float inner_knuckle_end[][8][6] = { /* Inner Base End */ 0.15, 0.3, -0.75, 0.0, 0.0, -1.0, 0.3, 0.15, -0.75, 0.0, 0.0, -1.0, 0.3, -0.15, -0.75, 0.0, 0.0, -1.0, 0.15, -0.3, -0.75, 0.0, 0.0, -1.0, -0.15, -0.3, -0.75, 0.0, 0.0, -1.0, -0.3, -0.15, -0.75, 0.0, 0.0, -1.0, -0.3, 0.15, -0.75, 0.0, 0.0, -1.0, -0.15, 0.3, -0.75, 0.0, 0.0, -1.0, /* Inner Cap End */ 0.15, 0.3, 0.5, 0.0, 0.0, -1.0, 0.3, 0.15, 0.5, 0.0, 0.0, -1.0, 0.3, -0.15, 0.5, 0.0, 0.0, -1.0, 0.15, -0.3, 0.5, 0.0, 0.0, -1.0, -0.15, -0.3, 0.5, 0.0, 0.0, -1.0, -0.3, -0.15, 0.5, 0.0, 0.0, -1.0, -0.3, 0.15, 0.5, 0.0, 0.0, -1.0, -0.15, 0.3, 0.5, 0.0, 0.0, -1.0 }; static float outer_knuckle_end[][8][6] = { /* Outer Base End */ 0.15, 0.3, -0.40, 0.0, 0.0, -1.0, 0.3, 0.15, -0.40, 0.0, 0.0, -1.0, 0.3, -0.15, -0.40, 0.0, 0.0, -1.0, 0.15, -0.3, -0.40, 0.0, 0.0, -1.0, -0.15, -0.3, -0.40, 0.0, 0.0, -1.0, -0.3, -0.15, -0.40, 0.0, 0.0, -1.0, -0.3, 0.15, -0.40, 0.0, 0.0, -1.0, -0.15, 0.3, -0.40, 0.0, 0.0, -1.0, /* Outer Cap End */ 0.15, 0.3, 1.40, 0.0, 0.0, -1.0, 0.3, 0.15, 1.40, 0.0, 0.0, -1.0, 0.3, -0.15, 1.40, 0.0, 0.0, -1.0, 0.15, -0.3, 1.40, 0.0, 0.0, -1.0, -0.15, -0.3, 1.40, 0.0, 0.0, -1.0, -0.3, -0.15, 1.40, 0.0, 0.0, -1.0, -0.3, 0.15, 1.40, 0.0, 0.0, -1.0, -0.15, 0.3, 1.40, 0.0, 0.0, -1.0 }; static float thumb_outer_knuckle_end[][8][6] = { /* Outer Base End */ 0.15, 0.3, -0.20, 0.0, 0.0, -1.0, 0.3, 0.15, -0.20, 0.0, 0.0, -1.0, 0.3, -0.15, -0.20, 0.0, 0.0, -1.0, 0.15, -0.3, -0.20, 0.0, 0.0, -1.0, -0.15, -0.3, -0.20, 0.0, 0.0, -1.0, -0.3, -0.15, -0.20, 0.0, 0.0, -1.0, -0.3, 0.15, -0.20, 0.0, 0.0, -1.0, -0.15, 0.3, -0.20, 0.0, 0.0, -1.0, /* Outer Cap End */ 0.15, 0.3, 1.0, 0.0, 0.0, -1.0, 0.3, 0.15, 1.0, 0.0, 0.0, -1.0, 0.3, -0.15, 1.0, 0.0, 0.0, -1.0, 0.15, -0.3, 1.0, 0.0, 0.0, -1.0, -0.15, -0.3, 1.0, 0.0, 0.0, -1.0, -0.3, -0.15, 1.0, 0.0, 0.0, -1.0, -0.3, 0.15, 1.0, 0.0, 0.0, -1.0, -0.15, 0.3, 1.0, 0.0, 0.0, -1.0 }; #define PALM_END_POINTS 8 static float palm_top_end[][8][3] = { 2.00, 0.20, 0.0, 0.80, 0.20, 0.0, -2.25, 0.125, 0.0, -3.75, 0.125, 0.0, -3.75, -0.125, 0.0, -2.25, -0.125, 0.0, 0.80, -0.20, 0.0, 2.00, -0.20, 0.0 };