#include "vizual.h" /* #include "cell_table.h" (in vizual.h) */ /* place vertex data into CUBEFAX structure */ void fill_cfax(Cube_data * Cube, int flag, int index, float TEMP_VERT[13][3], float TEMP_NORM[13][3]) { int p; /*loop variable */ int n; /*index into TEMP_VERT array */ int num = 0; /*polygon number index into TEMP_NORM for flat shading */ cube_info *CUBEFAX; CUBEFAX = Cube->data; /* make old code work w/ new structure */ /* DEBUG fprintf(stderr,"%d npoly %d flag\n",CUBEFAX[NTHRESH].npoly,flag); END DEBUG */ CUBEFAX[NTHRESH].npoly = cell_table[index].npolys; /* this is for gradient shading (3 normals per polygon) */ if (flag > 1) { for (p = 0, num = 0; num < CUBEFAX[NTHRESH].npoly; num++) { poly_info *CP; /* NOTE: normals recorded by edge */ /* avoid a little redundant calculation: dpg */ CP = &(CUBEFAX[NTHRESH].poly[num]); n = cell_table[index].polys[p]; CP->v1[0] = TEMP_VERT[n][0]; CP->v1[1] = TEMP_VERT[n][1]; CP->v1[2] = TEMP_VERT[n][2]; CP->n1[0] = (TEMP_NORM[n][0] + 1.) * 127; CP->n1[1] = (TEMP_NORM[n][1] + 1.) * 127; CP->n1[2] = (TEMP_NORM[n][2] + 1.) * 127; p++; n = cell_table[index].polys[p]; CP->v2[0] = TEMP_VERT[n][0]; CP->v2[1] = TEMP_VERT[n][1]; CP->v2[2] = TEMP_VERT[n][2]; CP->n2[0] = (TEMP_NORM[n][0] + 1.) * 127; CP->n2[1] = (TEMP_NORM[n][1] + 1.) * 127; CP->n2[2] = (TEMP_NORM[n][2] + 1.) * 127; p++; n = cell_table[index].polys[p]; CP->v3[0] = TEMP_VERT[n][0]; CP->v3[1] = TEMP_VERT[n][1]; CP->v3[2] = TEMP_VERT[n][2]; CP->n3[0] = (TEMP_NORM[n][0] + 1.) * 127; CP->n3[1] = (TEMP_NORM[n][1] + 1.) * 127; CP->n3[2] = (TEMP_NORM[n][2] + 1.) * 127; p++; } } else if (flag == 1) { /* this is for flat shading (NOTE: 1 normal per polygon) */ for (p = 0, num = 0; num < CUBEFAX[NTHRESH].npoly; num++) { poly_info *CP; /* avoid a little redundant calculation: dpg */ CP = &(CUBEFAX[NTHRESH].poly[num]); n = cell_table[index].polys[p]; CP->v1[0] = TEMP_VERT[n][0]; CP->v1[1] = TEMP_VERT[n][1]; CP->v1[2] = TEMP_VERT[n][2]; p++; n = cell_table[index].polys[p]; CP->v2[0] = TEMP_VERT[n][0]; CP->v2[1] = TEMP_VERT[n][1]; CP->v2[2] = TEMP_VERT[n][2]; p++; n = cell_table[index].polys[p]; CP->v3[0] = TEMP_VERT[n][0]; CP->v3[1] = TEMP_VERT[n][1]; CP->v3[2] = TEMP_VERT[n][2]; p++; /* NOTE: in calc_fnorm() flat shaded normals recorded by polygon */ /*now assigning the normal for this polygon */ CP->n1[0] = (TEMP_NORM[num][0] + 1.) * 127; CP->n1[1] = (TEMP_NORM[num][1] + 1.) * 127; CP->n1[2] = (TEMP_NORM[num][2] + 1.) * 127; } } }