source: proiecte/pmake3d/make3d_original/Make3dSingleImageStanford_version0.1/third_party/vrippack-0.31/src/march/edge.cc @ 37

Last change on this file since 37 was 37, checked in by (none), 14 years ago

Added original make3d

File size: 1.3 KB
Line 
1/*
2 * Name:         edge.c
3 *
4 * Coded:        Brian Curless 10/24/95
5 *
6 * Comment:      Initializes edge table containing triangle locations.
7 */
8
9
10#include <stdio.h>
11#include <stdlib.h>
12#include <limits.h>
13#include "mc.h"
14#include "lorensen_cases.h"
15
16
17/* This version of InitEdgeTable uses Bill Lorensen's edge table */
18
19
20void InitEdgeTable()
21{
22  int i, ntris;
23  Index index;
24  EDGE_LIST *edges, edge;
25
26  for (index = 0; index < 256; index++) {
27
28      edges = poly_cases[index].edges;
29      ntris = 0;
30      while (ntris < 5) {
31          if (edges[ntris*4] == 0 && edges[ntris*4+1] == 0 
32              && edges[ntris*4+2] == 0)
33              break;
34
35          ntris++;
36      }
37
38      TheEdgeTable[index].Ntriangles = ntris;
39      if (ntris == 0)
40          continue;
41
42
43      TheEdgeTable[index].TriangleList =
44          (Triple *) calloc(ntris, sizeof(Triple));
45
46      for (i = 0; i < 12; i++)
47          (TheEdgeTable[index].edge)[i] = FALSE;
48
49      for (i = 0; i < ntris; i++) {
50          edge = edges[i*4]-1;
51          TheEdgeTable[index].TriangleList[i].A = edge;
52          TheEdgeTable[index].edge[edge] = TRUE;
53
54          edge = edges[i*4+1]-1;
55          TheEdgeTable[index].TriangleList[i].B = edge;
56          TheEdgeTable[index].edge[edge] = TRUE;
57
58          edge = edges[i*4+2]-1;
59          TheEdgeTable[index].TriangleList[i].C = edge;
60          TheEdgeTable[index].edge[edge] = TRUE;
61      }
62  }
63} /* InitEdgeTable */
Note: See TracBrowser for help on using the repository browser.