You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
347 lines
16 KiB
347 lines
16 KiB
// Copyright (C) 2018, Dominik Wodniok
|
|
// This software may be modified and distributed under the terms
|
|
// of the BSD 3-Clause license.
|
|
// See the LICENSE.txt file for details.
|
|
|
|
/// \file dualmc_table.tpp
|
|
/// \author Dominik Wodniok
|
|
/// \date 2009
|
|
|
|
|
|
// Coordinate system
|
|
//
|
|
// y
|
|
// |
|
|
// |
|
|
// |
|
|
// 0-----x
|
|
// /
|
|
// /
|
|
// z
|
|
//
|
|
|
|
// Cell Corners
|
|
// (Corners are voxels. Number correspond to Morton codes of corner coordinates)
|
|
//
|
|
// 2-------------------3
|
|
// /| /|
|
|
// / | / |
|
|
// / | / |
|
|
// 6-------------------7 |
|
|
// | | | |
|
|
// | | | |
|
|
// | | | |
|
|
// | | | |
|
|
// | 0---------------|---1
|
|
// | / | /
|
|
// | / | /
|
|
// |/ |/
|
|
// 4-------------------5
|
|
//
|
|
|
|
|
|
// Cell Edges
|
|
//
|
|
// o--------4----------o
|
|
// /| /|
|
|
// 7 | 5 |
|
|
// / | / |
|
|
// o--------6----------o |
|
|
// | 8 | 9
|
|
// | | | |
|
|
// | | | |
|
|
// 11 | 10 |
|
|
// | o--------0------|---o
|
|
// | / | /
|
|
// | 3 | 1
|
|
// |/ |/
|
|
// o--------2----------o
|
|
//
|
|
|
|
// Encodes the edge vertices for the 256 marching cubes cases.
|
|
// A marching cube case produces up to four faces and ,thus, up to four
|
|
// dual points.
|
|
template<class T>
|
|
int32_t const DualMC<T>::dualPointsList[256][4] = {
|
|
{0, 0, 0, 0}, // 0
|
|
{EDGE0|EDGE3|EDGE8, 0, 0, 0}, // 1
|
|
{EDGE0|EDGE1|EDGE9, 0, 0, 0}, // 2
|
|
{EDGE1|EDGE3|EDGE8|EDGE9, 0, 0, 0}, // 3
|
|
{EDGE4|EDGE7|EDGE8, 0, 0, 0}, // 4
|
|
{EDGE0|EDGE3|EDGE4|EDGE7, 0, 0, 0}, // 5
|
|
{EDGE0|EDGE1|EDGE9, EDGE4|EDGE7|EDGE8, 0, 0}, // 6
|
|
{EDGE1|EDGE3|EDGE4|EDGE7|EDGE9, 0, 0, 0}, // 7
|
|
{EDGE4|EDGE5|EDGE9, 0, 0, 0}, // 8
|
|
{EDGE0|EDGE3|EDGE8, EDGE4|EDGE5|EDGE9, 0, 0}, // 9
|
|
{EDGE0|EDGE1|EDGE4|EDGE5, 0, 0, 0}, // 10
|
|
{EDGE1|EDGE3|EDGE4|EDGE5|EDGE8, 0, 0, 0}, // 11
|
|
{EDGE5|EDGE7|EDGE8|EDGE9, 0, 0, 0}, // 12
|
|
{EDGE0|EDGE3|EDGE5|EDGE7|EDGE9, 0, 0, 0}, // 13
|
|
{EDGE0|EDGE1|EDGE5|EDGE7|EDGE8, 0, 0, 0}, // 14
|
|
{EDGE1|EDGE3|EDGE5|EDGE7, 0, 0, 0}, // 15
|
|
{EDGE2|EDGE3|EDGE11, 0, 0, 0}, // 16
|
|
{EDGE0|EDGE2|EDGE8|EDGE11, 0, 0, 0}, // 17
|
|
{EDGE0|EDGE1|EDGE9, EDGE2|EDGE3|EDGE11, 0, 0}, // 18
|
|
{EDGE1|EDGE2|EDGE8|EDGE9|EDGE11, 0, 0, 0}, // 19
|
|
{EDGE4|EDGE7|EDGE8, EDGE2|EDGE3|EDGE11, 0, 0}, // 20
|
|
{EDGE0|EDGE2|EDGE4|EDGE7|EDGE11, 0, 0, 0}, // 21
|
|
{EDGE0|EDGE1|EDGE9, EDGE4|EDGE7|EDGE8, EDGE2|EDGE3|EDGE11, 0}, // 22
|
|
{EDGE1|EDGE2|EDGE4|EDGE7|EDGE9|EDGE11, 0, 0, 0}, // 23
|
|
{EDGE4|EDGE5|EDGE9, EDGE2|EDGE3|EDGE11, 0, 0}, // 24
|
|
{EDGE0|EDGE2|EDGE8|EDGE11, EDGE4|EDGE5|EDGE9, 0, 0}, // 25
|
|
{EDGE0|EDGE1|EDGE4|EDGE5, EDGE2|EDGE3|EDGE11, 0, 0}, // 26
|
|
{EDGE1|EDGE2|EDGE4|EDGE5|EDGE8|EDGE11, 0, 0, 0}, // 27
|
|
{EDGE5|EDGE7|EDGE8|EDGE9, EDGE2|EDGE3|EDGE11, 0, 0}, // 28
|
|
{EDGE0|EDGE2|EDGE5|EDGE7|EDGE9|EDGE11, 0, 0, 0}, // 29
|
|
{EDGE0|EDGE1|EDGE5|EDGE7|EDGE8, EDGE2|EDGE3|EDGE11, 0, 0}, // 30
|
|
{EDGE1|EDGE2|EDGE5|EDGE7|EDGE11, 0, 0, 0}, // 31
|
|
{EDGE1|EDGE2|EDGE10, 0, 0, 0}, // 32
|
|
{EDGE0|EDGE3|EDGE8, EDGE1|EDGE2|EDGE10, 0, 0}, // 33
|
|
{EDGE0|EDGE2|EDGE9|EDGE10, 0, 0, 0}, // 34
|
|
{EDGE2|EDGE3|EDGE8|EDGE9|EDGE10, 0, 0, 0}, // 35
|
|
{EDGE4|EDGE7|EDGE8, EDGE1|EDGE2|EDGE10, 0, 0}, // 36
|
|
{EDGE0|EDGE3|EDGE4|EDGE7, EDGE1|EDGE2|EDGE10, 0, 0}, // 37
|
|
{EDGE0|EDGE2|EDGE9|EDGE10, EDGE4|EDGE7|EDGE8, 0, 0}, // 38
|
|
{EDGE2|EDGE3|EDGE4|EDGE7|EDGE9|EDGE10, 0, 0, 0}, // 39
|
|
{EDGE4|EDGE5|EDGE9, EDGE1|EDGE2|EDGE10, 0, 0}, // 40
|
|
{EDGE0|EDGE3|EDGE8, EDGE4|EDGE5|EDGE9, EDGE1|EDGE2|EDGE10, 0}, // 41
|
|
{EDGE0|EDGE2|EDGE4|EDGE5|EDGE10, 0, 0, 0}, // 42
|
|
{EDGE2|EDGE3|EDGE4|EDGE5|EDGE8|EDGE10, 0, 0, 0}, // 43
|
|
{EDGE5|EDGE7|EDGE8|EDGE9, EDGE1|EDGE2|EDGE10, 0, 0}, // 44
|
|
{EDGE0|EDGE3|EDGE5|EDGE7|EDGE9, EDGE1|EDGE2|EDGE10, 0, 0}, // 45
|
|
{EDGE0|EDGE2|EDGE5|EDGE7|EDGE8|EDGE10, 0, 0, 0}, // 46
|
|
{EDGE2|EDGE3|EDGE5|EDGE7|EDGE10, 0, 0, 0}, // 47
|
|
{EDGE1|EDGE3|EDGE10|EDGE11, 0, 0, 0}, // 48
|
|
{EDGE0|EDGE1|EDGE8|EDGE10|EDGE11, 0, 0, 0}, // 49
|
|
{EDGE0|EDGE3|EDGE9|EDGE10|EDGE11, 0, 0, 0}, // 50
|
|
{EDGE8|EDGE9|EDGE10|EDGE11, 0, 0, 0}, // 51
|
|
{EDGE4|EDGE7|EDGE8, EDGE1|EDGE3|EDGE10|EDGE11, 0, 0}, // 52
|
|
{EDGE0|EDGE1|EDGE4|EDGE7|EDGE10|EDGE11, 0, 0, 0}, // 53
|
|
{EDGE0|EDGE3|EDGE9|EDGE10|EDGE11, EDGE4|EDGE7|EDGE8, 0, 0}, // 54
|
|
{EDGE4|EDGE7|EDGE9|EDGE10|EDGE11, 0, 0, 0}, // 55
|
|
{EDGE4|EDGE5|EDGE9, EDGE1|EDGE3|EDGE10|EDGE11, 0, 0}, // 56
|
|
{EDGE0|EDGE1|EDGE8|EDGE10|EDGE11, EDGE4|EDGE5|EDGE9, 0, 0}, // 57
|
|
{EDGE0|EDGE3|EDGE4|EDGE5|EDGE10|EDGE11, 0, 0, 0}, // 58
|
|
{EDGE4|EDGE5|EDGE8|EDGE10|EDGE11, 0, 0, 0}, // 59
|
|
{EDGE5|EDGE7|EDGE8|EDGE9, EDGE1|EDGE3|EDGE10|EDGE11, 0, 0}, // 60
|
|
{EDGE0|EDGE1|EDGE5|EDGE7|EDGE9|EDGE10|EDGE11, 0, 0, 0}, // 61
|
|
{EDGE0|EDGE3|EDGE5|EDGE7|EDGE8|EDGE10|EDGE11, 0, 0, 0}, // 62
|
|
{EDGE5|EDGE7|EDGE10|EDGE11, 0, 0, 0}, // 63
|
|
{EDGE6|EDGE7|EDGE11, 0, 0, 0}, // 64
|
|
{EDGE0|EDGE3|EDGE8, EDGE6|EDGE7|EDGE11, 0, 0}, // 65
|
|
{EDGE0|EDGE1|EDGE9, EDGE6|EDGE7|EDGE11, 0, 0}, // 66
|
|
{EDGE1|EDGE3|EDGE8|EDGE9, EDGE6|EDGE7|EDGE11, 0, 0}, // 67
|
|
{EDGE4|EDGE6|EDGE8|EDGE11, 0, 0, 0}, // 68
|
|
{EDGE0|EDGE3|EDGE4|EDGE6|EDGE11, 0, 0, 0}, // 69
|
|
{EDGE0|EDGE1|EDGE9, EDGE4|EDGE6|EDGE8|EDGE11, 0, 0}, // 70
|
|
{EDGE1|EDGE3|EDGE4|EDGE6|EDGE9|EDGE11, 0, 0, 0}, // 71
|
|
{EDGE4|EDGE5|EDGE9, EDGE6|EDGE7|EDGE11, 0, 0}, // 72
|
|
{EDGE0|EDGE3|EDGE8, EDGE4|EDGE5|EDGE9, EDGE6|EDGE7|EDGE11, 0}, // 73
|
|
{EDGE0|EDGE1|EDGE4|EDGE5, EDGE6|EDGE7|EDGE11, 0, 0}, // 74
|
|
{EDGE1|EDGE3|EDGE4|EDGE5|EDGE8, EDGE6|EDGE7|EDGE11, 0, 0}, // 75
|
|
{EDGE5|EDGE6|EDGE8|EDGE9|EDGE11, 0, 0, 0}, // 76
|
|
{EDGE0|EDGE3|EDGE5|EDGE6|EDGE9|EDGE11, 0, 0, 0}, // 77
|
|
{EDGE0|EDGE1|EDGE5|EDGE6|EDGE8|EDGE11, 0, 0, 0}, // 78
|
|
{EDGE1|EDGE3|EDGE5|EDGE6|EDGE11, 0, 0, 0}, // 79
|
|
{EDGE2|EDGE3|EDGE6|EDGE7, 0, 0, 0}, // 80
|
|
{EDGE0|EDGE2|EDGE6|EDGE7|EDGE8, 0, 0, 0}, // 81
|
|
{EDGE0|EDGE1|EDGE9, EDGE2|EDGE3|EDGE6|EDGE7, 0, 0}, // 82
|
|
{EDGE1|EDGE2|EDGE6|EDGE7|EDGE8|EDGE9, 0, 0, 0}, // 83
|
|
{EDGE2|EDGE3|EDGE4|EDGE6|EDGE8, 0, 0, 0}, // 84
|
|
{EDGE0|EDGE2|EDGE4|EDGE6, 0, 0, 0}, // 85
|
|
{EDGE0|EDGE1|EDGE9, EDGE2|EDGE3|EDGE4|EDGE6|EDGE8, 0, 0}, // 86
|
|
{EDGE1|EDGE2|EDGE4|EDGE6|EDGE9, 0, 0, 0}, // 87
|
|
{EDGE4|EDGE5|EDGE9, EDGE2|EDGE3|EDGE6|EDGE7, 0, 0}, // 88
|
|
{EDGE0|EDGE2|EDGE6|EDGE7|EDGE8, EDGE4|EDGE5|EDGE9, 0, 0}, // 89
|
|
{EDGE0|EDGE1|EDGE4|EDGE5, EDGE2|EDGE3|EDGE6|EDGE7, 0, 0}, // 90
|
|
{EDGE1|EDGE2|EDGE4|EDGE5|EDGE6|EDGE7|EDGE8, 0, 0, 0}, // 91
|
|
{EDGE2|EDGE3|EDGE5|EDGE6|EDGE8|EDGE9, 0, 0, 0}, // 92
|
|
{EDGE0|EDGE2|EDGE5|EDGE6|EDGE9, 0, 0, 0}, // 93
|
|
{EDGE0|EDGE1|EDGE2|EDGE3|EDGE5|EDGE6|EDGE8, 0, 0, 0}, // 94
|
|
{EDGE1|EDGE2|EDGE5|EDGE6, 0, 0, 0}, // 95
|
|
{EDGE1|EDGE2|EDGE10, EDGE6|EDGE7|EDGE11, 0, 0}, // 96
|
|
{EDGE0|EDGE3|EDGE8, EDGE1|EDGE2|EDGE10, EDGE6|EDGE7|EDGE11, 0}, // 97
|
|
{EDGE0|EDGE2|EDGE9|EDGE10, EDGE6|EDGE7|EDGE11, 0, 0}, // 98
|
|
{EDGE2|EDGE3|EDGE8|EDGE9|EDGE10, EDGE6|EDGE7|EDGE11, 0, 0}, // 99
|
|
{EDGE4|EDGE6|EDGE8|EDGE11, EDGE1|EDGE2|EDGE10, 0, 0}, // 100
|
|
{EDGE0|EDGE3|EDGE4|EDGE6|EDGE11, EDGE1|EDGE2|EDGE10, 0, 0}, // 101
|
|
{EDGE0|EDGE2|EDGE9|EDGE10, EDGE4|EDGE6|EDGE8|EDGE11, 0, 0}, // 102
|
|
{EDGE2|EDGE3|EDGE4|EDGE6|EDGE9|EDGE10|EDGE11, 0, 0, 0}, // 103
|
|
{EDGE4|EDGE5|EDGE9, EDGE1|EDGE2|EDGE10, EDGE6|EDGE7|EDGE11, 0}, // 104
|
|
{EDGE0|EDGE3|EDGE8, EDGE4|EDGE5|EDGE9, EDGE1|EDGE2|EDGE10, EDGE6|EDGE7|EDGE11}, // 105
|
|
{EDGE0|EDGE2|EDGE4|EDGE5|EDGE10, EDGE6|EDGE7|EDGE11, 0, 0}, // 106
|
|
{EDGE2|EDGE3|EDGE4|EDGE5|EDGE8|EDGE10, EDGE6|EDGE7|EDGE11, 0, 0}, // 107
|
|
{EDGE5|EDGE6|EDGE8|EDGE9|EDGE11, EDGE1|EDGE2|EDGE10, 0, 0}, // 108
|
|
{EDGE0|EDGE3|EDGE5|EDGE6|EDGE9|EDGE11, EDGE1|EDGE2|EDGE10, 0, 0}, // 109
|
|
{EDGE0|EDGE2|EDGE5|EDGE6|EDGE8|EDGE10|EDGE11, 0, 0, 0}, // 110
|
|
{EDGE2|EDGE3|EDGE5|EDGE6|EDGE10|EDGE11, 0, 0, 0}, // 111
|
|
{EDGE1|EDGE3|EDGE6|EDGE7|EDGE10, 0, 0, 0}, // 112
|
|
{EDGE0|EDGE1|EDGE6|EDGE7|EDGE8|EDGE10, 0, 0, 0}, // 113
|
|
{EDGE0|EDGE3|EDGE6|EDGE7|EDGE9|EDGE10, 0, 0, 0}, // 114
|
|
{EDGE6|EDGE7|EDGE8|EDGE9|EDGE10, 0, 0, 0}, // 115
|
|
{EDGE1|EDGE3|EDGE4|EDGE6|EDGE8|EDGE10, 0, 0, 0}, // 116
|
|
{EDGE0|EDGE1|EDGE4|EDGE6|EDGE10, 0, 0, 0}, // 117
|
|
{EDGE0|EDGE3|EDGE4|EDGE6|EDGE8|EDGE9|EDGE10, 0, 0, 0}, // 118
|
|
{EDGE4|EDGE6|EDGE9|EDGE10, 0, 0, 0}, // 119
|
|
{EDGE4|EDGE5|EDGE9, EDGE1|EDGE3|EDGE6|EDGE7|EDGE10, 0, 0}, // 120
|
|
{EDGE0|EDGE1|EDGE6|EDGE7|EDGE8|EDGE10, EDGE4|EDGE5|EDGE9, 0, 0}, // 121
|
|
{EDGE0|EDGE3|EDGE4|EDGE5|EDGE6|EDGE7|EDGE10, 0, 0, 0}, // 122
|
|
{EDGE4|EDGE5|EDGE6|EDGE7|EDGE8|EDGE10, 0, 0, 0}, // 123
|
|
{EDGE1|EDGE3|EDGE5|EDGE6|EDGE8|EDGE9|EDGE10, 0, 0, 0}, // 124
|
|
{EDGE0|EDGE1|EDGE5|EDGE6|EDGE9|EDGE10, 0, 0, 0}, // 125
|
|
{EDGE0|EDGE3|EDGE8, EDGE5|EDGE6|EDGE10, 0, 0}, // 126
|
|
{EDGE5|EDGE6|EDGE10, 0, 0, 0}, // 127
|
|
{EDGE5|EDGE6|EDGE10, 0, 0, 0}, // 128
|
|
{EDGE0|EDGE3|EDGE8, EDGE5|EDGE6|EDGE10, 0, 0}, // 129
|
|
{EDGE0|EDGE1|EDGE9, EDGE5|EDGE6|EDGE10, 0, 0}, // 130
|
|
{EDGE1|EDGE3|EDGE8|EDGE9, EDGE5|EDGE6|EDGE10, 0, 0}, // 131
|
|
{EDGE4|EDGE7|EDGE8, EDGE5|EDGE6|EDGE10, 0, 0}, // 132
|
|
{EDGE0|EDGE3|EDGE4|EDGE7, EDGE5|EDGE6|EDGE10, 0, 0}, // 133
|
|
{EDGE0|EDGE1|EDGE9, EDGE4|EDGE7|EDGE8, EDGE5|EDGE6|EDGE10, 0}, // 134
|
|
{EDGE1|EDGE3|EDGE4|EDGE7|EDGE9, EDGE5|EDGE6|EDGE10, 0, 0}, // 135
|
|
{EDGE4|EDGE6|EDGE9|EDGE10, 0, 0, 0}, // 136
|
|
{EDGE0|EDGE3|EDGE8, EDGE4|EDGE6|EDGE9|EDGE10, 0, 0}, // 137
|
|
{EDGE0|EDGE1|EDGE4|EDGE6|EDGE10, 0, 0, 0}, // 138
|
|
{EDGE1|EDGE3|EDGE4|EDGE6|EDGE8|EDGE10, 0, 0, 0}, // 139
|
|
{EDGE6|EDGE7|EDGE8|EDGE9|EDGE10, 0, 0, 0}, // 140
|
|
{EDGE0|EDGE3|EDGE6|EDGE7|EDGE9|EDGE10, 0, 0, 0}, // 141
|
|
{EDGE0|EDGE1|EDGE6|EDGE7|EDGE8|EDGE10, 0, 0, 0}, // 142
|
|
{EDGE1|EDGE3|EDGE6|EDGE7|EDGE10, 0, 0, 0}, // 143
|
|
{EDGE2|EDGE3|EDGE11, EDGE5|EDGE6|EDGE10, 0, 0}, // 144
|
|
{EDGE0|EDGE2|EDGE8|EDGE11, EDGE5|EDGE6|EDGE10, 0, 0}, // 145
|
|
{EDGE0|EDGE1|EDGE9, EDGE2|EDGE3|EDGE11, EDGE5|EDGE6|EDGE10, 0}, // 146
|
|
{EDGE1|EDGE2|EDGE8|EDGE9|EDGE11, EDGE5|EDGE6|EDGE10, 0, 0}, // 147
|
|
{EDGE4|EDGE7|EDGE8, EDGE2|EDGE3|EDGE11, EDGE5|EDGE6|EDGE10, 0}, // 148
|
|
{EDGE0|EDGE2|EDGE4|EDGE7|EDGE11, EDGE5|EDGE6|EDGE10, 0, 0}, // 149
|
|
{EDGE0|EDGE1|EDGE9, EDGE4|EDGE7|EDGE8, EDGE2|EDGE3|EDGE11, EDGE5|EDGE6|EDGE10}, // 150
|
|
{EDGE1|EDGE2|EDGE4|EDGE7|EDGE9|EDGE11, EDGE5|EDGE6|EDGE10, 0, 0}, // 151
|
|
{EDGE4|EDGE6|EDGE9|EDGE10, EDGE2|EDGE3|EDGE11, 0, 0}, // 152
|
|
{EDGE0|EDGE2|EDGE8|EDGE11, EDGE4|EDGE6|EDGE9|EDGE10, 0, 0}, // 153
|
|
{EDGE0|EDGE1|EDGE4|EDGE6|EDGE10, EDGE2|EDGE3|EDGE11, 0, 0}, // 154
|
|
{EDGE1|EDGE2|EDGE4|EDGE6|EDGE8|EDGE10|EDGE11, 0, 0, 0}, // 155
|
|
{EDGE6|EDGE7|EDGE8|EDGE9|EDGE10, EDGE2|EDGE3|EDGE11, 0, 0}, // 156
|
|
{EDGE0|EDGE2|EDGE6|EDGE7|EDGE9|EDGE10|EDGE11, 0, 0, 0}, // 157
|
|
{EDGE0|EDGE1|EDGE6|EDGE7|EDGE8|EDGE10, EDGE2|EDGE3|EDGE11, 0, 0}, // 158
|
|
{EDGE1|EDGE2|EDGE6|EDGE7|EDGE10|EDGE11, 0, 0, 0}, // 159
|
|
{EDGE1|EDGE2|EDGE5|EDGE6, 0, 0, 0}, // 160
|
|
{EDGE0|EDGE3|EDGE8, EDGE1|EDGE2|EDGE5|EDGE6, 0, 0}, // 161
|
|
{EDGE0|EDGE2|EDGE5|EDGE6|EDGE9, 0, 0, 0}, // 162
|
|
{EDGE2|EDGE3|EDGE5|EDGE6|EDGE8|EDGE9, 0, 0, 0}, // 163
|
|
{EDGE4|EDGE7|EDGE8, EDGE1|EDGE2|EDGE5|EDGE6, 0, 0}, // 164
|
|
{EDGE0|EDGE3|EDGE4|EDGE7, EDGE1|EDGE2|EDGE5|EDGE6, 0, 0}, // 165
|
|
{EDGE0|EDGE2|EDGE5|EDGE6|EDGE9, EDGE4|EDGE7|EDGE8, 0, 0}, // 166
|
|
{EDGE2|EDGE3|EDGE4|EDGE5|EDGE6|EDGE7|EDGE9, 0, 0, 0}, // 167
|
|
{EDGE1|EDGE2|EDGE4|EDGE6|EDGE9, 0, 0, 0}, // 168
|
|
{EDGE0|EDGE3|EDGE8, EDGE1|EDGE2|EDGE4|EDGE6|EDGE9, 0, 0}, // 169
|
|
{EDGE0|EDGE2|EDGE4|EDGE6, 0, 0, 0}, // 170
|
|
{EDGE2|EDGE3|EDGE4|EDGE6|EDGE8, 0, 0, 0}, // 171
|
|
{EDGE1|EDGE2|EDGE6|EDGE7|EDGE8|EDGE9, 0, 0, 0}, // 172
|
|
{EDGE0|EDGE1|EDGE2|EDGE3|EDGE6|EDGE7|EDGE9, 0, 0, 0}, // 173
|
|
{EDGE0|EDGE2|EDGE6|EDGE7|EDGE8, 0, 0, 0}, // 174
|
|
{EDGE2|EDGE3|EDGE6|EDGE7, 0, 0, 0}, // 175
|
|
{EDGE1|EDGE3|EDGE5|EDGE6|EDGE11, 0, 0, 0}, // 176
|
|
{EDGE0|EDGE1|EDGE5|EDGE6|EDGE8|EDGE11, 0, 0, 0}, // 177
|
|
{EDGE0|EDGE3|EDGE5|EDGE6|EDGE9|EDGE11, 0, 0, 0}, // 178
|
|
{EDGE5|EDGE6|EDGE8|EDGE9|EDGE11, 0, 0, 0}, // 179
|
|
{EDGE4|EDGE7|EDGE8, EDGE1|EDGE3|EDGE5|EDGE6|EDGE11, 0, 0}, // 180
|
|
{EDGE0|EDGE1|EDGE4|EDGE5|EDGE6|EDGE7|EDGE11, 0, 0, 0}, // 181
|
|
{EDGE0|EDGE3|EDGE5|EDGE6|EDGE9|EDGE11, EDGE4|EDGE7|EDGE8, 0, 0}, // 182
|
|
{EDGE4|EDGE5|EDGE6|EDGE7|EDGE9|EDGE11, 0, 0, 0}, // 183
|
|
{EDGE1|EDGE3|EDGE4|EDGE6|EDGE9|EDGE11, 0, 0, 0}, // 184
|
|
{EDGE0|EDGE1|EDGE4|EDGE6|EDGE8|EDGE9|EDGE11, 0, 0, 0}, // 185
|
|
{EDGE0|EDGE3|EDGE4|EDGE6|EDGE11, 0, 0, 0}, // 186
|
|
{EDGE4|EDGE6|EDGE8|EDGE11, 0, 0, 0}, // 187
|
|
{EDGE1|EDGE3|EDGE6|EDGE7|EDGE8|EDGE9|EDGE11, 0, 0, 0}, // 188
|
|
{EDGE0|EDGE1|EDGE9, EDGE6|EDGE7|EDGE11, 0, 0}, // 189
|
|
{EDGE0|EDGE3|EDGE6|EDGE7|EDGE8|EDGE11, 0, 0, 0}, // 190
|
|
{EDGE6|EDGE7|EDGE11, 0, 0, 0}, // 191
|
|
{EDGE5|EDGE7|EDGE10|EDGE11, 0, 0, 0}, // 192
|
|
{EDGE0|EDGE3|EDGE8, EDGE5|EDGE7|EDGE10|EDGE11, 0, 0}, // 193
|
|
{EDGE0|EDGE1|EDGE9, EDGE5|EDGE7|EDGE10|EDGE11, 0, 0}, // 194
|
|
{EDGE1|EDGE3|EDGE8|EDGE9, EDGE5|EDGE7|EDGE10|EDGE11, 0, 0}, // 195
|
|
{EDGE4|EDGE5|EDGE8|EDGE10|EDGE11, 0, 0, 0}, // 196
|
|
{EDGE0|EDGE3|EDGE4|EDGE5|EDGE10|EDGE11, 0, 0, 0}, // 197
|
|
{EDGE0|EDGE1|EDGE9, EDGE4|EDGE5|EDGE8|EDGE10|EDGE11, 0, 0}, // 198
|
|
{EDGE1|EDGE3|EDGE4|EDGE5|EDGE9|EDGE10|EDGE11, 0, 0, 0}, // 199
|
|
{EDGE4|EDGE7|EDGE9|EDGE10|EDGE11, 0, 0, 0}, // 200
|
|
{EDGE0|EDGE3|EDGE8, EDGE4|EDGE7|EDGE9|EDGE10|EDGE11, 0, 0}, // 201
|
|
{EDGE0|EDGE1|EDGE4|EDGE7|EDGE10|EDGE11, 0, 0, 0}, // 202
|
|
{EDGE1|EDGE3|EDGE4|EDGE7|EDGE8|EDGE10|EDGE11, 0, 0, 0}, // 203
|
|
{EDGE8|EDGE9|EDGE10|EDGE11, 0, 0, 0}, // 204
|
|
{EDGE0|EDGE3|EDGE9|EDGE10|EDGE11, 0, 0, 0}, // 205
|
|
{EDGE0|EDGE1|EDGE8|EDGE10|EDGE11, 0, 0, 0}, // 206
|
|
{EDGE1|EDGE3|EDGE10|EDGE11, 0, 0, 0}, // 207
|
|
{EDGE2|EDGE3|EDGE5|EDGE7|EDGE10, 0, 0, 0}, // 208
|
|
{EDGE0|EDGE2|EDGE5|EDGE7|EDGE8|EDGE10, 0, 0, 0}, // 209
|
|
{EDGE0|EDGE1|EDGE9, EDGE2|EDGE3|EDGE5|EDGE7|EDGE10, 0, 0}, // 210
|
|
{EDGE1|EDGE2|EDGE5|EDGE7|EDGE8|EDGE9|EDGE10, 0, 0, 0}, // 211
|
|
{EDGE2|EDGE3|EDGE4|EDGE5|EDGE8|EDGE10, 0, 0, 0}, // 212
|
|
{EDGE0|EDGE2|EDGE4|EDGE5|EDGE10, 0, 0, 0}, // 213
|
|
{EDGE0|EDGE1|EDGE9, EDGE2|EDGE3|EDGE4|EDGE5|EDGE8|EDGE10, 0, 0}, // 214
|
|
{EDGE1|EDGE2|EDGE4|EDGE5|EDGE9|EDGE10, 0, 0, 0}, // 215
|
|
{EDGE2|EDGE3|EDGE4|EDGE7|EDGE9|EDGE10, 0, 0, 0}, // 216
|
|
{EDGE0|EDGE2|EDGE4|EDGE7|EDGE8|EDGE9|EDGE10, 0, 0, 0}, // 217
|
|
{EDGE0|EDGE1|EDGE2|EDGE3|EDGE4|EDGE7|EDGE10, 0, 0, 0}, // 218
|
|
{EDGE4|EDGE7|EDGE8, EDGE1|EDGE2|EDGE10, 0, 0}, // 219
|
|
{EDGE2|EDGE3|EDGE8|EDGE9|EDGE10, 0, 0, 0}, // 220
|
|
{EDGE0|EDGE2|EDGE9|EDGE10, 0, 0, 0}, // 221
|
|
{EDGE0|EDGE1|EDGE2|EDGE3|EDGE8|EDGE10, 0, 0, 0}, // 222
|
|
{EDGE1|EDGE2|EDGE10, 0, 0, 0}, // 223
|
|
{EDGE1|EDGE2|EDGE5|EDGE7|EDGE11, 0, 0, 0}, // 224
|
|
{EDGE0|EDGE3|EDGE8, EDGE1|EDGE2|EDGE5|EDGE7|EDGE11, 0, 0}, // 225
|
|
{EDGE0|EDGE2|EDGE5|EDGE7|EDGE9|EDGE11, 0, 0, 0}, // 226
|
|
{EDGE2|EDGE3|EDGE5|EDGE7|EDGE8|EDGE9|EDGE11, 0, 0, 0}, // 227
|
|
{EDGE1|EDGE2|EDGE4|EDGE5|EDGE8|EDGE11, 0, 0, 0}, // 228
|
|
{EDGE0|EDGE1|EDGE2|EDGE3|EDGE4|EDGE5|EDGE11, 0, 0, 0}, // 229
|
|
{EDGE0|EDGE2|EDGE4|EDGE5|EDGE8|EDGE9|EDGE11, 0, 0, 0}, // 230
|
|
{EDGE4|EDGE5|EDGE9, EDGE2|EDGE3|EDGE11, 0, 0}, // 231
|
|
{EDGE1|EDGE2|EDGE4|EDGE7|EDGE9|EDGE11, 0, 0, 0}, // 232
|
|
{EDGE0|EDGE3|EDGE8, EDGE1|EDGE2|EDGE4|EDGE7|EDGE9|EDGE11, 0, 0}, // 233
|
|
{EDGE0|EDGE2|EDGE4|EDGE7|EDGE11, 0, 0, 0}, // 234
|
|
{EDGE2|EDGE3|EDGE4|EDGE7|EDGE8|EDGE11, 0, 0, 0}, // 235
|
|
{EDGE1|EDGE2|EDGE8|EDGE9|EDGE11, 0, 0, 0}, // 236
|
|
{EDGE0|EDGE1|EDGE2|EDGE3|EDGE9|EDGE11, 0, 0, 0}, // 237
|
|
{EDGE0|EDGE2|EDGE8|EDGE11, 0, 0, 0}, // 238
|
|
{EDGE2|EDGE3|EDGE11, 0, 0, 0}, // 239
|
|
{EDGE1|EDGE3|EDGE5|EDGE7, 0, 0, 0}, // 240
|
|
{EDGE0|EDGE1|EDGE5|EDGE7|EDGE8, 0, 0, 0}, // 241
|
|
{EDGE0|EDGE3|EDGE5|EDGE7|EDGE9, 0, 0, 0}, // 242
|
|
{EDGE5|EDGE7|EDGE8|EDGE9, 0, 0, 0}, // 243
|
|
{EDGE1|EDGE3|EDGE4|EDGE5|EDGE8, 0, 0, 0}, // 244
|
|
{EDGE0|EDGE1|EDGE4|EDGE5, 0, 0, 0}, // 245
|
|
{EDGE0|EDGE3|EDGE4|EDGE5|EDGE8|EDGE9, 0, 0, 0}, // 246
|
|
{EDGE4|EDGE5|EDGE9, 0, 0, 0}, // 247
|
|
{EDGE1|EDGE3|EDGE4|EDGE7|EDGE9, 0, 0, 0}, // 248
|
|
{EDGE0|EDGE1|EDGE4|EDGE7|EDGE8|EDGE9, 0, 0, 0}, // 249
|
|
{EDGE0|EDGE3|EDGE4|EDGE7, 0, 0, 0}, // 250
|
|
{EDGE4|EDGE7|EDGE8, 0, 0, 0}, // 251
|
|
{EDGE1|EDGE3|EDGE8|EDGE9, 0, 0, 0}, // 252
|
|
{EDGE0|EDGE1|EDGE9, 0, 0, 0}, // 253
|
|
{EDGE0|EDGE3|EDGE8, 0, 0, 0}, // 254
|
|
{0, 0, 0, 0} // 255
|
|
};
|
|
|
|
/// Encodes the ambiguous face of cube configurations, which
|
|
/// can cause non-manifold meshes.
|
|
/// Non-problematic configurations have a value of 255.
|
|
/// The first bit of each value actually encodes a positive or negative
|
|
/// direction while the second and third bit enumerate the axis.
|
|
template<class T>
|
|
uint8_t const DualMC<T>::problematicConfigs[256] = {
|
|
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
|
|
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
|
|
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
|
|
255,255,255,255,255,255,255,255,255,255,255,255,255,1,0,255,
|
|
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
|
|
255,255,255,255,255,255,255,255,255,255,255,3,255,255,2,255,
|
|
255,255,255,255,255,255,255,5,255,255,255,255,255,255,5,5,
|
|
255,255,255,255,255,255,4,255,255,255,3,3,1,1,255,255,
|
|
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
|
|
255,255,255,255,255,255,255,255,255,255,255,5,255,5,255,5,
|
|
255,255,255,255,255,255,255,3,255,255,255,255,255,2,255,255,
|
|
255,255,255,255,255,3,255,3,255,4,255,255,0,255,0,255,
|
|
255,255,255,255,255,255,255,1,255,255,255,0,255,255,255,255,
|
|
255,255,255,1,255,255,255,1,255,4,2,255,255,255,2,255,
|
|
255,255,255,0,255,2,4,255,255,255,255,0,255,2,255,255,
|
|
255,255,255,255,255,255,4,255,255,4,255,255,255,255,255,255
|
|
};
|
|
|