Exemple #1
0
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);
}
Exemple #2
0
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);
}