jgtrosh

Prout 4 Diop

Mar 9th, 2015
284
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.44 KB | None | 0 0
  1. int IsoSurfacer::ComputeSimpleIntersection(vtkCell *tet) {
  2.     vtkCell *edge;
  3.     double *p = new double[3];
  4.     vtkIdType *ids = new vtkIdType[6],
  5.               *edges = new vtkIdType[8];
  6.     int idn = 0;
  7.     for (unsigned i=0; i<6; i++) {
  8.         edge = tet->GetEdge(i);
  9.         if (!IsCellOnLevelSet(edge)) continue;
  10.         edges[2*idn]   = edge->GetPointId(0);
  11.         edges[2*idn+1] = edge->GetPointId(1);
  12.         ComputeEdgeIntersection(edge->GetPointId(0),
  13.                                 edge->GetPointId(1), p);
  14.         ids[idn] = Output->GetPoints()->InsertNextPoint(p);
  15.         idn++;
  16.         if (idn==4) {
  17.             ReOrderTetEdges(edges, ids);
  18.             break;
  19.         }
  20.     }
  21.     Output->InsertNextCell(VTK_POLYGON, idn, ids);
  22.     delete[] ids;
  23.     delete[] edges;
  24.     delete[] p;
  25.     return 0;
  26. }
  27.  
  28. int IsoSurfacer::ReOrderTetEdges(
  29.         vtkIdType *edges, vtkIdType *ids) const {
  30.     int i;
  31.     vtkIdType buf1, buf2, buf3;
  32.     if (edges[2] != edges[0]
  33.      && edges[2] != edges[1]
  34.      && edges[3] != edges[0]
  35.      && edges[3] != edges[1]) {
  36.         buf1 = edges[2];
  37.         buf2 = edges[3];
  38.         buf3 = ids[1];
  39.         edges[2] = edges[4];
  40.         edges[3] = edges[5];
  41.         ids[1] = ids[2];
  42.         edges[4] = buf1;
  43.         edges[5] = buf2;
  44.         ids[2] = buf3;
  45.         return 0;
  46.     }
  47.     if (edges[4] != edges[2]
  48.      && edges[4] != edges[3]
  49.      && edges[5] != edges[2]
  50.      && edges[5] != edges[3]) {
  51.         buf1 = edges[4];
  52.         buf2 = edges[5];
  53.         buf3 = ids[2];
  54.         edges[4] = edges[6];
  55.         edges[5] = edges[7];
  56.         ids[2] = ids[3];
  57.         edges[6] = buf1;
  58.         edges[7] = buf2;
  59.         ids[3] = buf3;
  60.     }
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment