[vtkusers] cutting through unstructured grid

Bill Lorensen wlorens1 at nycap.rr.com
Sat Dec 9 16:19:34 EST 2000


Philippe,
         When I originally implemented Marching Cubes in 1984, I generated polygons rather than triangles. The problem is that most renderers (including OpenGL) do not handle non-planar polygons consistently. In 1984, I wrote my own renderer which I recall did handle non-planar polygons. But the problem is more difficult if you want to interpolate color and texture coords.


Bill

At 09:25 PM 12/7/00 +0100, Philippe Guerville wrote:
>Simon:
>
>vtkCutter ask each cell to compute the intersection with the plane using the
>marching cubes algorithm (The Visualization ToolKit 2nd Edition, p 161). The 256
>intersection cases are described using triangles (file
>common/vtkMarchingCubeCases.h triCases array). What I've done is to recombine
>triangles into polys and to change the function vtkHexahedron::Contour (file
>common/vtkHexahedron.cxx line 398).
>
>Change the file accordingly and recompile libVTKcommon.a
>
>typedef struct {
>        EDGE_LIST edges[16];
>} POLY_CASES;
>
>// number of edges, edges list, number of edges, edges list, ..., end (-1)
>static POLY_CASES polyCases[] = {
>{{ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  0
>{{ 3, 0, 3, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  1
>{{ 3, 0, 9, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  2
>{{ 4, 1, 3, 8, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  3
>{{ 3, 1, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  4
>{{ 3, 0, 3, 8, 3, 1, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  5
>{{ 4, 9, 11, 2, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  6
>{{ 5, 2, 3, 8, 9, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  7
>{{ 3, 3, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  8
>{{ 4, 0, 2, 10, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  9
>{{ 3, 1, 0, 9, 3, 2, 10, 3, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  10
>{{ 5, 1, 2, 10, 8, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  11
>{{ 4, 3, 1, 11, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  12
>{{ 5, 0, 1, 11, 10, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  13
>{{ 5, 3, 0, 9, 11, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  14
>{{ 4, 9, 11, 10, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  15
>{{ 3, 4, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  16
>{{ 4, 4, 0, 3, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  17
>{{ 3, 0, 9, 1, 3, 8, 7, 4, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  18
>{{ 5, 4, 9, 1, 3, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  19
>{{ 3, 1, 11, 2, 3, 8, 7, 4, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  20
>{{ 4, 3, 7, 4, 0, 3, 1, 11, 2, -1, -1, -1, -1, -1, -1, -1 }}, //  21
>{{ 4, 9, 11, 2, 0, 3, 8, 7, 4, -1, -1, -1, -1, -1, -1, -1 }}, //  22
>{{ 6, 2, 3, 7, 4, 9, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  23
>{{ 3, 8, 7, 4, 3, 3, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  24
>{{ 5, 10, 7, 4, 0, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  25
>{{ 3, 9, 1, 0, 3, 8, 7, 4, 3, 2, 10, 3, -1, -1, -1, -1 }}, //  26
>{{ 6, 4, 9, 1, 2, 10, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  27
>{{ 4, 3, 1, 11, 10, 3, 7, 4, 8, -1, -1, -1, -1, -1, -1, -1 }}, //  28
>{{ 6, 1, 11, 10, 7, 4, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  29
>{{ 3, 4, 8, 7, 5, 9, 11, 10, 3, 0, -1, -1, -1, -1, -1, -1 }}, //  30
>{{ 5, 4, 9, 11, 10, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  31
>{{ 3, 9, 4, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  32
>{{ 3, 9, 4, 5, 3, 0, 3, 8, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  33
>{{ 4, 0, 4, 5, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  34
>{{ 5, 8, 4, 5, 1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  35
>{{ 3, 1, 11, 2, 3, 9, 4, 5, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  36
>{{ 3, 3, 8, 0, 3, 1, 11, 2, 3, 4, 5, 9, -1, -1, -1, -1 }}, //  37
>{{ 5, 5, 11, 2, 0, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  38
>{{ 6, 2, 3, 8, 4, 5, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  39
>{{ 3, 9, 4, 5, 3, 2, 10, 3, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  40
>{{ 4, 0, 2, 10, 8, 3, 4, 5, 9, -1, -1, -1, -1, -1, -1, -1 }}, //  41
>{{ 4, 0, 4, 5, 1, 3, 2, 10, 3, -1, -1, -1, -1, -1, -1, -1 }}, //  42
>{{ 6, 2, 10, 8, 4, 5, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  43
>{{ 4, 11, 10, 3, 1, 3, 9, 4, 5, -1, -1, -1, -1, -1, -1, -1 }}, //  44
>{{ 3, 4, 5, 9, 5, 0, 1, 11, 10, 8, -1, -1, -1, -1, -1, -1 }}, //  45
>{{ 6, 5, 11, 10, 3, 0, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  46
>{{ 5, 5, 11, 10, 8, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  47
>{{ 4, 9, 8, 7, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  48
>{{ 5, 9, 0, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  49
>{{ 5, 0, 8, 7, 5, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  50
>{{ 4, 1, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  51
>{{ 4, 9, 8, 7, 5, 3, 11, 2, 1, -1, -1, -1, -1, -1, -1, -1 }}, //  52
>{{ 3, 11, 2, 1, 5, 9, 0, 3, 7, 5, -1, -1, -1, -1, -1, -1 }}, //  53
>{{ 6, 8, 7, 5, 11, 2, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  54
>{{ 5, 2, 3, 7, 5, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  55
>{{ 4, 7, 5, 9, 8, 3, 3, 2, 10, -1, -1, -1, -1, -1, -1, -1 }}, //  56
>{{ 6, 9, 0, 2, 10, 7, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  57
>{{ 3, 2, 10, 3, 5, 0, 8, 7, 5, 1, -1, -1, -1, -1, -1, -1 }}, //  58
>{{ 5, 10, 7, 5, 1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  59
>{{ 4, 9, 8, 7, 5, 4, 11, 10, 3, 1, -1, -1, -1, -1, -1, -1 }}, //  60
>{{ 6, 5, 9, 0, 11, 10, 7, 3, 1, 11, 0, -1, -1, -1, -1, -1 }}, //  61
>{{ 6, 10, 3, 0, 7, 5, 11, 3, 8, 7, 0, -1, -1, -1, -1, -1 }}, //  62
>{{ 4, 10, 7, 5, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  63
>{{ 3, 11, 5, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  64
>{{ 3, 0, 3, 8, 3, 5, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  65
>{{ 3, 9, 1, 0, 3, 5, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  66
>{{ 4, 1, 3, 8, 9, 3, 5, 6, 11, -1, -1, -1, -1, -1, -1, -1 }}, //  67
>{{ 4, 1, 5, 6, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  68
>{{ 4, 1, 5, 6, 2, 3, 3, 8, 0, -1, -1, -1, -1, -1, -1, -1 }}, //  69
>{{ 5, 9, 5, 6, 2, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  70
>{{ 6, 5, 6, 2, 3, 8, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  71
>{{ 3, 2, 10, 3, 3, 11, 5, 6, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  72
>{{ 4, 10, 8, 0, 2, 3, 11, 5, 6, -1, -1, -1, -1, -1, -1, -1 }}, //  73
>{{ 3, 0, 9, 1, 3, 2, 10, 3, 3, 5, 6, 11, -1, -1, -1, -1 }}, //  74
>{{ 3, 5, 6, 11, 5, 1, 2, 10, 8, 9, -1, -1, -1, -1, -1, -1 }}, //  75
>{{ 5, 6, 10, 3, 1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  76
>{{ 6, 0, 1, 5, 6, 10, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  77
>{{ 6, 3, 0, 9, 5, 6, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  78
>{{ 5, 6, 10, 8, 9, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  79
>{{ 3, 5, 6, 11, 3, 4, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  80
>{{ 4, 4, 0, 3, 7, 3, 6, 11, 5, -1, -1, -1, -1, -1, -1, -1 }}, //  81
>{{ 3, 1, 0, 9, 3, 5, 6, 11, 3, 8, 7, 4, -1, -1, -1, -1 }}, //  82
>{{ 3, 11, 5, 6, 5, 1, 3, 7, 4, 9, -1, -1, -1, -1, -1, -1 }}, //  83
>{{ 4, 6, 2, 1, 5, 3, 4, 8, 7, -1, -1, -1, -1, -1, -1, -1 }}, //  84
>{{ 4, 1, 5, 6, 2, 4, 3, 7, 4, 0, -1, -1, -1, -1, -1, -1 }}, //  85
>{{ 3, 8, 7, 4, 5, 9, 5, 6, 2, 0, -1, -1, -1, -1, -1, -1 }}, //  86
>{{ 6, 7, 4, 9, 6, 2, 3, 3, 5, 6, 9, -1, -1, -1, -1, -1 }}, //  87
>{{ 3, 3, 2, 10, 3, 7, 4, 8, 3, 11, 5, 6, -1, -1, -1, -1 }}, //  88
>{{ 3, 5, 6, 11, 5, 4, 0, 2, 10, 7, -1, -1, -1, -1, -1, -1 }}, //  89
>{{ 3, 0, 9, 1, 3, 4, 8, 7, 3, 2, 10, 3, 3, 5, 6, 11 }}, //  90
>{{ 6, 9, 1, 2, 10, 7, 4, 3, 5, 6, 11, -1, -1, -1, -1, -1 }}, //  91
>{{ 3, 8, 7, 4, 5, 3, 1, 5, 6, 10, -1, -1, -1, -1, -1, -1 }}, //  92
>{{ 6, 5, 6, 10, 4, 0, 1, 3, 7, 4, 10, -1, -1, -1, -1, -1 }}, //  93
>{{ 6, 0, 9, 5, 6, 10, 3, 3, 8, 7, 4, -1, -1, -1, -1, -1 }}, //  94
>{{ 5, 6, 10, 7, 9, 5, 3, 4, 9, 7, -1, -1, -1, -1, -1, -1 }}, //  95
>{{ 4, 11, 9, 4, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  96
>{{ 4, 4, 6, 11, 9, 3, 0, 3, 8, -1, -1, -1, -1, -1, -1, -1 }}, //  97
>{{ 5, 11, 1, 0, 4, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  98
>{{ 6, 8, 4, 6, 11, 1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  99
>{{ 5, 1, 9, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  100
>{{ 3, 3, 8, 0, 5, 1, 9, 4, 6, 2, -1, -1, -1, -1, -1, -1 }}, //  101
>{{ 4, 0, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  102
>{{ 5, 8, 4, 6, 2, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  103
>{{ 4, 11, 9, 4, 6, 3, 10, 3, 2, -1, -1, -1, -1, -1, -1, -1 }}, //  104
>{{ 4, 0, 2, 10, 8, 4, 4, 6, 11, 9, -1, -1, -1, -1, -1, -1 }}, //  105
>{{ 3, 3, 2, 10, 5, 0, 4, 6, 11, 1, -1, -1, -1, -1, -1, -1 }}, //  106
>{{ 6, 6, 11, 1, 10, 8, 4, 3, 2, 10, 1, -1, -1, -1, -1, -1 }}, //  107
>{{ 6, 9, 4, 6, 10, 3, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  108
>{{ 6, 8, 0, 1, 4, 6, 10, 3, 9, 4, 1, -1, -1, -1, -1, -1 }}, //  109
>{{ 5, 3, 0, 4, 6, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  110
>{{ 4, 6, 10, 8, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  111
>{{ 5, 7, 6, 11, 9, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  112
>{{ 6, 0, 3, 7, 6, 11, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  113
>{{ 6, 11, 1, 0, 8, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  114
>{{ 5, 11, 1, 3, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  115
>{{ 6, 1, 9, 8, 7, 6, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  116
>{{ 6, 2, 1, 9, 3, 7, 6, 3, 0, 3, 9, -1, -1, -1, -1, -1 }}, //  117
>{{ 5, 7, 6, 2, 0, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  118
>{{ 4, 7, 6, 2, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  119
>{{ 3, 2, 10, 3, 5, 11, 9, 8, 7, 6, -1, -1, -1, -1, -1, -1 }}, //  120
>{{ 6, 2, 10, 7, 11, 9, 0, 3, 6, 11, 7, -1, -1, -1, -1, -1 }}, //  121
>{{ 6, 1, 0, 8, 7, 6, 11, 3, 2, 10, 3, -1, -1, -1, -1, -1 }}, //  122
>{{ 5, 10, 7, 6, 1, 2, 3, 11, 1, 6, -1, -1, -1, -1, -1, -1 }}, //  123
>{{ 6, 8, 7, 6, 3, 1, 9, 3, 10, 3, 6, -1, -1, -1, -1, -1 }}, //  124
>{{ 3, 0, 1, 9, 3, 10, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  125
>{{ 5, 7, 6, 10, 0, 8, 3, 3, 0, 10, -1, -1, -1, -1, -1, -1 }}, //  126
>{{ 3, 7, 6, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  127
>{{ 3, 7, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  128
>{{ 3, 3, 8, 0, 3, 10, 6, 7, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  129
>{{ 3, 0, 9, 1, 3, 10, 6, 7, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  130
>{{ 4, 8, 9, 1, 3, 3, 10, 6, 7, -1, -1, -1, -1, -1, -1, -1 }}, //  131
>{{ 3, 11, 2, 1, 3, 6, 7, 10, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  132
>{{ 3, 1, 11, 2, 3, 3, 8, 0, 3, 6, 7, 10, -1, -1, -1, -1 }}, //  133
>{{ 4, 2, 0, 9, 11, 3, 6, 7, 10, -1, -1, -1, -1, -1, -1, -1 }}, //  134
>{{ 3, 6, 7, 10, 5, 2, 3, 8, 9, 11, -1, -1, -1, -1, -1, -1 }}, //  135
>{{ 4, 7, 3, 2, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  136
>{{ 5, 7, 8, 0, 2, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  137
>{{ 4, 2, 6, 7, 3, 3, 0, 9, 1, -1, -1, -1, -1, -1, -1, -1 }}, //  138
>{{ 6, 1, 2, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  139
>{{ 5, 11, 6, 7, 3, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  140
>{{ 6, 11, 6, 7, 8, 0, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  141
>{{ 6, 0, 9, 11, 6, 7, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  142
>{{ 5, 7, 8, 9, 11, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  143
>{{ 4, 6, 4, 8, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  144
>{{ 5, 3, 10, 6, 4, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  145
>{{ 4, 8, 10, 6, 4, 3, 9, 1, 0, -1, -1, -1, -1, -1, -1, -1 }}, //  146
>{{ 6, 9, 1, 3, 10, 6, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  147
>{{ 4, 6, 4, 8, 10, 3, 2, 1, 11, -1, -1, -1, -1, -1, -1, -1 }}, //  148
>{{ 3, 1, 11, 2, 5, 3, 10, 6, 4, 0, -1, -1, -1, -1, -1, -1 }}, //  149
>{{ 4, 4, 8, 10, 6, 4, 0, 9, 11, 2, -1, -1, -1, -1, -1, -1 }}, //  150
>{{ 6, 11, 2, 3, 6, 4, 9, 3, 10, 6, 3, -1, -1, -1, -1, -1 }}, //  151
>{{ 5, 8, 3, 2, 6, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  152
>{{ 4, 0, 2, 6, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  153
>{{ 3, 1, 0, 9, 5, 2, 6, 4, 8, 3, -1, -1, -1, -1, -1, -1 }}, //  154
>{{ 5, 1, 2, 6, 4, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  155
>{{ 6, 8, 3, 1, 11, 6, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  156
>{{ 5, 11, 6, 4, 0, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  157
>{{ 6, 4, 8, 3, 9, 11, 6, 3, 0, 9, 3, -1, -1, -1, -1, -1 }}, //  158
>{{ 4, 11, 6, 4, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  159
>{{ 3, 4, 5, 9, 3, 7, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  160
>{{ 3, 0, 3, 8, 3, 4, 5, 9, 3, 10, 6, 7, -1, -1, -1, -1 }}, //  161
>{{ 4, 5, 1, 0, 4, 3, 7, 10, 6, -1, -1, -1, -1, -1, -1, -1 }}, //  162
>{{ 3, 10, 6, 7, 5, 8, 4, 5, 1, 3, -1, -1, -1, -1, -1, -1 }}, //  163
>{{ 3, 9, 4, 5, 3, 11, 2, 1, 3, 7, 10, 6, -1, -1, -1, -1 }}, //  164
>{{ 3, 6, 7, 10, 3, 1, 11, 2, 3, 0, 3, 8, 3, 4, 5, 9 }}, //  165
>{{ 3, 7, 10, 6, 5, 5, 11, 2, 0, 4, -1, -1, -1, -1, -1, -1 }}, //  166
>{{ 6, 3, 8, 4, 5, 11, 2, 3, 10, 6, 7, -1, -1, -1, -1, -1 }}, //  167
>{{ 4, 7, 3, 2, 6, 3, 5, 9, 4, -1, -1, -1, -1, -1, -1, -1 }}, //  168
>{{ 3, 9, 4, 5, 5, 0, 2, 6, 7, 8, -1, -1, -1, -1, -1, -1 }}, //  169
>{{ 4, 3, 2, 6, 7, 4, 1, 0, 4, 5, -1, -1, -1, -1, -1, -1 }}, //  170
>{{ 6, 6, 7, 8, 5, 1, 2, 3, 4, 5, 8, -1, -1, -1, -1, -1 }}, //  171
>{{ 3, 9, 4, 5, 5, 11, 6, 7, 3, 1, -1, -1, -1, -1, -1, -1 }}, //  172
>{{ 6, 1, 11, 6, 7, 8, 0, 3, 9, 4, 5, -1, -1, -1, -1, -1 }}, //  173
>{{ 6, 4, 5, 11, 7, 3, 0, 3, 6, 7, 11, -1, -1, -1, -1, -1 }}, //  174
>{{ 5, 7, 8, 4, 11, 6, 3, 5, 11, 4, -1, -1, -1, -1, -1, -1 }}, //  175
>{{ 5, 6, 5, 9, 8, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  176
>{{ 6, 3, 10, 6, 5, 9, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  177
>{{ 6, 0, 8, 10, 6, 5, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  178
>{{ 5, 6, 5, 1, 3, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  179
>{{ 3, 1, 11, 2, 5, 9, 8, 10, 6, 5, -1, -1, -1, -1, -1, -1 }}, //  180
>{{ 6, 0, 3, 10, 6, 5, 9, 3, 1, 11, 2, -1, -1, -1, -1, -1 }}, //  181
>{{ 6, 10, 6, 5, 2, 0, 8, 3, 11, 2, 5, -1, -1, -1, -1, -1 }}, //  182
>{{ 5, 6, 5, 11, 3, 10, 3, 2, 3, 11, -1, -1, -1, -1, -1, -1 }}, //  183
>{{ 6, 5, 9, 8, 3, 2, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  184
>{{ 5, 9, 0, 2, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  185
>{{ 6, 1, 0, 8, 2, 6, 5, 3, 3, 2, 8, -1, -1, -1, -1, -1 }}, //  186
>{{ 4, 1, 2, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  187
>{{ 6, 1, 11, 6, 9, 8, 3, 3, 5, 9, 6, -1, -1, -1, -1, -1 }}, //  188
>{{ 5, 11, 6, 5, 0, 1, 3, 9, 0, 5, -1, -1, -1, -1, -1, -1 }}, //  189
>{{ 3, 0, 8, 3, 3, 5, 11, 6, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  190
>{{ 3, 11, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  191
>{{ 4, 10, 11, 5, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  192
>{{ 4, 10, 11, 5, 7, 3, 8, 0, 3, -1, -1, -1, -1, -1, -1, -1 }}, //  193
>{{ 4, 5, 7, 10, 11, 3, 1, 0, 9, -1, -1, -1, -1, -1, -1, -1 }}, //  194
>{{ 4, 11, 5, 7, 10, 4, 9, 1, 3, 8, -1, -1, -1, -1, -1, -1 }}, //  195
>{{ 5, 10, 2, 1, 5, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  196
>{{ 3, 0, 3, 8, 5, 1, 5, 7, 10, 2, -1, -1, -1, -1, -1, -1 }}, //  197
>{{ 6, 9, 5, 7, 10, 2, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  198
>{{ 6, 7, 10, 2, 8, 9, 5, 3, 3, 8, 2, -1, -1, -1, -1, -1 }}, //  199
>{{ 5, 2, 11, 5, 7, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  200
>{{ 6, 8, 0, 2, 11, 5, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  201
>{{ 3, 9, 1, 0, 5, 5, 7, 3, 2, 11, -1, -1, -1, -1, -1, -1 }}, //  202
>{{ 6, 9, 1, 2, 5, 7, 8, 3, 11, 5, 2, -1, -1, -1, -1, -1 }}, //  203
>{{ 4, 1, 5, 7, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  204
>{{ 5, 0, 1, 5, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  205
>{{ 5, 9, 5, 7, 3, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  206
>{{ 4, 9, 5, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  207
>{{ 5, 5, 4, 8, 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  208
>{{ 6, 5, 4, 0, 3, 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  209
>{{ 3, 0, 9, 1, 5, 8, 10, 11, 5, 4, -1, -1, -1, -1, -1, -1 }}, //  210
>{{ 6, 11, 5, 4, 1, 3, 10, 3, 9, 1, 4, -1, -1, -1, -1, -1 }}, //  211
>{{ 6, 2, 1, 5, 4, 8, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  212
>{{ 6, 0, 3, 10, 1, 5, 4, 3, 2, 1, 10, -1, -1, -1, -1, -1 }}, //  213
>{{ 6, 0, 9, 5, 8, 10, 2, 3, 4, 8, 5, -1, -1, -1, -1, -1 }}, //  214
>{{ 3, 9, 5, 4, 3, 2, 3, 10, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  215
>{{ 6, 2, 11, 5, 4, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  216
>{{ 5, 5, 4, 0, 2, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  217
>{{ 6, 3, 2, 11, 5, 4, 8, 3, 0, 9, 1, -1, -1, -1, -1, -1 }}, //  218
>{{ 5, 5, 4, 9, 2, 11, 3, 1, 2, 9, -1, -1, -1, -1, -1, -1 }}, //  219
>{{ 5, 8, 3, 1, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  220
>{{ 4, 0, 1, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  221
>{{ 5, 8, 3, 0, 5, 4, 3, 9, 5, 0, -1, -1, -1, -1, -1, -1 }}, //  222
>{{ 3, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  223
>{{ 5, 4, 7, 10, 11, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  224
>{{ 3, 0, 3, 8, 5, 4, 7, 10, 11, 9, -1, -1, -1, -1, -1, -1 }}, //  225
>{{ 6, 1, 0, 4, 7, 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  226
>{{ 6, 3, 8, 4, 10, 11, 1, 3, 7, 10, 4, -1, -1, -1, -1, -1 }}, //  227
>{{ 6, 4, 7, 10, 2, 1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  228
>{{ 6, 9, 4, 7, 10, 2, 1, 3, 0, 3, 8, -1, -1, -1, -1, -1 }}, //  229
>{{ 5, 10, 2, 0, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  230
>{{ 5, 10, 2, 3, 4, 7, 3, 8, 4, 3, -1, -1, -1, -1, -1, -1 }}, //  231
>{{ 6, 2, 11, 9, 4, 7, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  232
>{{ 6, 9, 4, 7, 0, 2, 11, 3, 8, 0, 7, -1, -1, -1, -1, -1 }}, //  233
>{{ 6, 3, 2, 11, 0, 4, 7, 3, 1, 0, 11, -1, -1, -1, -1, -1 }}, //  234
>{{ 3, 1, 2, 11, 3, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  235
>{{ 5, 4, 7, 3, 1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  236
>{{ 5, 4, 7, 8, 1, 9, 3, 0, 1, 8, -1, -1, -1, -1, -1, -1 }}, //  237
>{{ 4, 4, 7, 3, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  238
>{{ 3, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  239
>{{ 4, 9, 8, 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  240
>{{ 5, 3, 10, 11, 9, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  241
>{{ 5, 0, 8, 10, 11, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  242
>{{ 4, 3, 10, 11, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  243
>{{ 5, 1, 9, 8, 10, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  244
>{{ 5, 3, 10, 2, 9, 0, 3, 1, 9, 2, -1, -1, -1, -1, -1, -1 }}, //  245
>{{ 4, 0, 8, 10, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  246
>{{ 3, 3, 10, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  247
>{{ 5, 2, 11, 9, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  248
>{{ 4, 9, 0, 2, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  249
>{{ 5, 2, 11, 1, 8, 3, 3, 0, 8, 1, -1, -1, -1, -1, -1, -1 }}, //  250
>{{ 3, 1, 2, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  251
>{{ 4, 1, 9, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  252
>{{ 3, 0, 1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  253
>{{ 3, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}, //  254
>{{ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }}}; //
>255
>
>
>// New version using polys instead of triangles.
>void vtkHexahedron::Contour(float value, vtkScalars *cellScalars,
>                             vtkPointLocator *locator,
>                             vtkCellArray *vtkNotUsed(verts),
>                             vtkCellArray *vtkNotUsed(lines),
>                             vtkCellArray *polys,
>                             vtkPointData *inPd, vtkPointData *outPd,
>                             vtkCellData *inCd, int cellId, vtkCellData *outCd)
>{
>   static int CASE_MASK[8] = {1,2,4,8,16,32,64,128};
>   POLY_CASES *polyCase;
>   EDGE_LIST  *edge;
>   int i, j, index, *vert;
>   int e1, e2, newCellId;
>   int pts[6]; //   Max hexagon
>   float t, x1[3], x2[3], x[3], deltaScalar;
>
>   //   Build the case table
>   for ( i=0, index = 0; i < 8; i++)
>     {
>     if (cellScalars->GetScalar(i) >= value)
>       {
>       index |= CASE_MASK[i];
>       }
>     }
>
>   polyCase = polyCases + index;
>   edge = polyCase->edges;
>
>   while(edge[0] > -1){
>     int nb = *edge++;
>     int p=0;
>     for (i=0; i<nb; i++) //   insert poly
>       {
>       vert = edges[edge[i]];
>       //   calculate a preferred interpolation direction
>       deltaScalar = (cellScalars->GetScalar(vert[1]) -
>                      cellScalars->GetScalar(vert[0]));
>       if (deltaScalar > 0)
>         {
>         e1 = vert[0]; e2 = vert[1];
>         }
>       else
>         {
>         e1 = vert[1]; e2 = vert[0];
>         deltaScalar = -deltaScalar;
>         }
>
>       //   linear interpolation
>       if (deltaScalar == 0.0)
>         {
>         t = 0.0;
>         }
>       else
>         {
>         t = (value - cellScalars->GetScalar(e1)) / deltaScalar;
>         }
>
>       this->Points->GetPoint(e1, x1);
>       this->Points->GetPoint(e2, x2);
>
>       for (j=0; j<3; j++)
>         {
>         x[j] = x1[j] + t * (x2[j] - x1[j]);
>         }
>       if ( locator->InsertUniquePoint(x, pts[p]) )
>         {
>         if ( outPd )
>           {
>           int p1 = this->PointIds->GetId(e1);
>           int p2 = this->PointIds->GetId(e2);
>           outPd->InterpolateEdge(inPd,pts[p],p1,p2,t);
>           }
>         }
>       //   check for degenerate poly
>       if(p==0)
>         p++;
>       else if(pts[p] !=  pts[p-1])
>         p++;
>       }
>
>     //   check for degenerate poly
>     if(pts[0] ==  pts[p-1])
>       p--;
>     if(p>2){
>       newCellId = polys->InsertNextCell(p,pts);
>       outCd->CopyData(inCd,cellId,newCellId);
>     }
>
>     edge += nb;
>   }
>}
>
>If you are interested, I've done the same for wedge, pyramide and tetra.
>
>     Philippe Guerville
>     philippe.guerville at cea.fr






More information about the vtkusers mailing list