void FillArrayWithIsosurface(void) { int n, total = 0; // Make room for 12 triangles triangle *triangles = malloc(12 * sizeof(triangle)); if(triangles == NULL){ perror("Triangles array NULL"); return; } for(int k = 0; k < nz - 1; k++) { for(int j = 0; j < ny - 1; j++) { for(int i = 0; i < nx - 1; i++) { // For each cell generate the triangles n = generate_cell_triangles(triangles, get_cell(i, j, k), isovalue); for(int c = 0; c < n; c++){ // Add alle the vertices from the triangle AddVertexToArray(triangles[c].p[0], triangles[c].n[0]); AddVertexToArray(triangles[c].p[1], triangles[c].n[1]); AddVertexToArray(triangles[c].p[2], triangles[c].n[2]); } total += n; } } } printf("Num triangles generated for isosurface: %d\n", total); free(triangles); }
void FillArrayWithIsosurface(void) { cell c; vec3 v, n; triangle triangles[12]; int amt, amt_total = 0; for (int k = 0; k < nx; k++) { for (int j = 0; j < ny; j++) { for (int i = 0; i < nz; i++) { c = get_cell(i, j, k); amt = generate_cell_triangles(triangles, c, isovalue); amt_total += amt; for (int a = 0; a < amt; a++) { for (int b = 0; b < 3; b++) { v = triangles[a].p[b]; n = triangles[a].n[b]; AddVertexToArray(v, n); } } } } } printf("\nTRIANGLE COUNT = %d\n", amt_total); }