[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