File indexing completed on 2024-04-28 03:40:49

0001 // Aqsis
0002 // Copyright (C) 2006, Paul C. Gregory
0003 //
0004 // Contact: pgregory@aqsis.org
0005 //
0006 // This library is free software; you can redistribute it and/or
0007 // modify it under the terms of the GNU General Public
0008 // License as published by the Free Software Foundation; either
0009 // version 2 of the License, or (at your option) any later version.
0010 //
0011 // This library is distributed in the hope that it will be useful,
0012 // but WITHOUT ANY WARRANTY; without even the implied warranty of
0013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0014 // General Public License for more details.
0015 //
0016 // You should have received a copy of the GNU General Public
0017 // License along with this library; if not, write to the Free Software
0018 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
0019 
0020 
0021 
0022 /** \file
0023     \brief   LookUpTable for the MarchingCubes 33 Algorithm
0024     \author Thomas Lewiner <thomas.lewiner@polytechnique.org>
0025     \author Math Dept, PUC-Rio
0026     \version 0.2
0027     \date    12/08/2002
0028 */
0029 
0030 //________________________________________________
0031 
0032 
0033 
0034 #ifndef _LOOKUPTABLE_H_
0035 #define _LOOKUPTABLE_H_
0036 
0037 
0038 
0039 
0040 
0041 //_____________________________________________________________________________
0042 /**
0043  * \brief case mapping
0044  * For each of the possible vertex states listed in this table there is a
0045  * specific triangulation of the edge intersection points.  The table lists
0046  * all of them in the form of 0-5 edge triples with the list terminated by
0047  * the invalid value -1.  For example: case[3] list the 2 triangles
0048  * formed when cube[0] and cube[1] are inside of the surface, but the rest of
0049  * the cube is not.
0050  *
0051  * Cube description:
0052  *         7 ________ 6           _____6__             ________
0053  *         /|       /|         7/|       /|          /|       /|
0054  *       /  |     /  |        /  |     /5 |        /  6     /  |
0055  *   4 /_______ /    |      /__4____ /    10     /_______3/    |
0056  *    |     |  |5    |     |    11  |     |     |     |  |   2 |
0057  *    |    3|__|_____|2    |     |__|__2__|     | 4   |__|_____|
0058  *    |    /   |    /      8   3/   9    /      |    /   |    /
0059  *    |  /     |  /        |  /     |  /1       |  /     5  /
0060  *    |/_______|/          |/___0___|/          |/_1_____|/
0061  *   0          1        0          1
0062  */
0063 //-----------------------------------------------------------------------------
0064 static const int cases[256][2] = {
0065 /*   0:                          */  {  0, -1 },
0066 /*   1: 0,                       */  {  1,  0 },
0067 /*   2:    1,                    */  {  1,  1 },
0068 /*   3: 0, 1,                    */  {  2,  0 },
0069 /*   4:       2,                 */  {  1,  2 },
0070 /*   5: 0,    2,                 */  {  3,  0 },
0071 /*   6:    1, 2,                 */  {  2,  3 },
0072 /*   7: 0, 1, 2,                 */  {  5,  0 },
0073 /*   8:          3,              */  {  1,  3 },
0074 /*   9: 0,       3,              */  {  2,  1 },
0075 /*  10:    1,    3,              */  {  3,  3 },
0076 /*  11: 0, 1,    3,              */  {  5,  1 },
0077 /*  12:       2, 3,              */  {  2,  5 },
0078 /*  13: 0,    2, 3,              */  {  5,  4 },
0079 /*  14:    1, 2, 3,              */  {  5,  9 },
0080 /*  15: 0, 1, 2, 3,              */  {  8,  0 },
0081 /*  16:             4,           */  {  1,  4 },
0082 /*  17: 0,          4,           */  {  2,  2 },
0083 /*  18:    1,       4,           */  {  3,  4 },
0084 /*  19: 0, 1,       4,           */  {  5,  2 },
0085 /*  20:       2,    4,           */  {  4,  2 },
0086 /*  21: 0,    2,    4,           */  {  6,  2 },
0087 /*  22:    1, 2,    4,           */  {  6,  9 },
0088 /*  23: 0, 1, 2,    4,           */  { 11,  0 },
0089 /*  24:          3, 4,           */  {  3,  8 },
0090 /*  25: 0,       3, 4,           */  {  5,  5 },
0091 /*  26:    1,    3, 4,           */  {  7,  3 },
0092 /*  27: 0, 1,    3, 4,           */  {  9,  1 },
0093 /*  28:       2, 3, 4,           */  {  6, 16 },
0094 /*  29: 0,    2, 3, 4,           */  { 14,  3 },
0095 /*  30:    1, 2, 3, 4,           */  { 12, 12 },
0096 /*  31: 0, 1, 2, 3, 4,           */  {  5, 24 },
0097 /*  32:                5,        */  {  1,  5 },
0098 /*  33: 0,             5,        */  {  3,  1 },
0099 /*  34:    1,          5,        */  {  2,  4 },
0100 /*  35: 0, 1,          5,        */  {  5,  3 },
0101 /*  36:       2,       5,        */  {  3,  6 },
0102 /*  37: 0,    2,       5,        */  {  7,  0 },
0103 /*  38:    1, 2,       5,        */  {  5, 10 },
0104 /*  39: 0, 1, 2,       5,        */  {  9,  0 },
0105 /*  40:          3,    5,        */  {  4,  3 },
0106 /*  41: 0,       3,    5,        */  {  6,  4 },
0107 /*  42:    1,    3,    5,        */  {  6, 11 },
0108 /*  43: 0, 1,    3,    5,        */  { 14,  1 },
0109 /*  44:       2, 3,    5,        */  {  6, 17 },
0110 /*  45: 0,    2, 3,    5,        */  { 12,  4 },
0111 /*  46:    1, 2, 3,    5,        */  { 11,  6 },
0112 /*  47: 0, 1, 2, 3,    5,        */  {  5, 25 },
0113 /*  48:             4, 5,        */  {  2,  8 },
0114 /*  49: 0,          4, 5,        */  {  5,  7 },
0115 /*  50:    1,       4, 5,        */  {  5, 12 },
0116 /*  51: 0, 1,       4, 5,        */  {  8,  1 },
0117 /*  52:       2,    4, 5,        */  {  6, 18 },
0118 /*  53: 0,    2,    4, 5,        */  { 12,  5 },
0119 /*  54:    1, 2,    4, 5,        */  { 14,  7 },
0120 /*  55: 0, 1, 2,    4, 5,        */  {  5, 28 },
0121 /*  56:          3, 4, 5,        */  {  6, 21 },
0122 /*  57: 0,       3, 4, 5,        */  { 11,  4 },
0123 /*  58:    1,    3, 4, 5,        */  { 12, 15 },
0124 /*  59: 0, 1,    3, 4, 5,        */  {  5, 30 },
0125 /*  60:       2, 3, 4, 5,        */  { 10,  5 },
0126 /*  61: 0,    2, 3, 4, 5,        */  {  6, 32 },
0127 /*  62:    1, 2, 3, 4, 5,        */  {  6, 39 },
0128 /*  63: 0, 1, 2, 3, 4, 5,        */  {  2, 12 },
0129 /*  64:                   6,     */  {  1,  6 },
0130 /*  65: 0,                6,     */  {  4,  0 },
0131 /*  66:    1,             6,     */  {  3,  5 },
0132 /*  67: 0, 1,             6,     */  {  6,  0 },
0133 /*  68:       2,          6,     */  {  2,  6 },
0134 /*  69: 0,    2,          6,     */  {  6,  3 },
0135 /*  70:    1, 2,          6,     */  {  5, 11 },
0136 /*  71: 0, 1, 2,          6,     */  { 14,  0 },
0137 /*  72:          3,       6,     */  {  3,  9 },
0138 /*  73: 0,       3,       6,     */  {  6,  5 },
0139 /*  74:    1,    3,       6,     */  {  7,  4 },
0140 /*  75: 0, 1,    3,       6,     */  { 12,  1 },
0141 /*  76:       2, 3,       6,     */  {  5, 14 },
0142 /*  77: 0,    2, 3,       6,     */  { 11,  3 },
0143 /*  78:    1, 2, 3,       6,     */  {  9,  4 },
0144 /*  79: 0, 1, 2, 3,       6,     */  {  5, 26 },
0145 /*  80:             4,    6,     */  {  3, 10 },
0146 /*  81: 0,          4,    6,     */  {  6,  6 },
0147 /*  82:    1,       4,    6,     */  {  7,  5 },
0148 /*  83: 0, 1,       4,    6,     */  { 12,  2 },
0149 /*  84:       2,    4,    6,     */  {  6, 19 },
0150 /*  85: 0,    2,    4,    6,     */  { 10,  1 },
0151 /*  86:    1, 2,    4,    6,     */  { 12, 13 },
0152 /*  87: 0, 1, 2,    4,    6,     */  {  6, 24 },
0153 /*  88:          3, 4,    6,     */  {  7,  7 },
0154 /*  89: 0,       3, 4,    6,     */  { 12,  9 },
0155 /*  90:    1,    3, 4,    6,     */  { 13,  1 },
0156 /*  91: 0, 1,    3, 4,    6,     */  {  7,  9 },
0157 /*  92:       2, 3, 4,    6,     */  { 12, 20 },
0158 /*  93: 0,    2, 3, 4,    6,     */  {  6, 33 },
0159 /*  94:    1, 2, 3, 4,    6,     */  {  7, 13 },
0160 /*  95: 0, 1, 2, 3, 4,    6,     */  {  3, 12 },
0161 /*  96:                5, 6,     */  {  2, 10 },
0162 /*  97: 0,             5, 6,     */  {  6,  7 },
0163 /*  98:    1,          5, 6,     */  {  5, 13 },
0164 /*  99: 0, 1,          5, 6,     */  { 11,  2 },
0165 /* 100:       2,       5, 6,     */  {  5, 16 },
0166 /* 101: 0,    2,       5, 6,     */  { 12,  7 },
0167 /* 102:    1, 2,       5, 6,     */  {  8,  3 },
0168 /* 103: 0, 1, 2,       5, 6,     */  {  5, 29 },
0169 /* 104:          3,    5, 6,     */  {  6, 22 },
0170 /* 105: 0,       3,    5, 6,     */  { 10,  2 },
0171 /* 106:    1,    3,    5, 6,     */  { 12, 17 },
0172 /* 107: 0, 1,    3,    5, 6,     */  {  6, 27 },
0173 /* 108:       2, 3,    5, 6,     */  { 14,  9 },
0174 /* 109: 0,    2, 3,    5, 6,     */  {  6, 34 },
0175 /* 110:    1, 2, 3,    5, 6,     */  {  5, 39 },
0176 /* 111: 0, 1, 2, 3,    5, 6,     */  {  2, 14 },
0177 /* 112:             4, 5, 6,     */  {  5, 20 },
0178 /* 113: 0,          4, 5, 6,     */  { 14,  5 },
0179 /* 114:    1,       4, 5, 6,     */  {  9,  5 },
0180 /* 115: 0, 1,       4, 5, 6,     */  {  5, 32 },
0181 /* 116:       2,    4, 5, 6,     */  { 11, 10 },
0182 /* 117: 0,    2,    4, 5, 6,     */  {  6, 35 },
0183 /* 118:    1, 2,    4, 5, 6,     */  {  5, 41 },
0184 /* 119: 0, 1, 2,    4, 5, 6,     */  {  2, 16 },
0185 /* 120:          3, 4, 5, 6,     */  { 12, 23 },
0186 /* 121: 0,       3, 4, 5, 6,     */  {  6, 37 },
0187 /* 122:    1,    3, 4, 5, 6,     */  {  7, 14 },
0188 /* 123: 0, 1,    3, 4, 5, 6,     */  {  3, 16 },
0189 /* 124:       2, 3, 4, 5, 6,     */  {  6, 46 },
0190 /* 125: 0,    2, 3, 4, 5, 6,     */  {  4,  6 },
0191 /* 126:    1, 2, 3, 4, 5, 6,     */  {  3, 21 },
0192 /* 127: 0, 1, 2, 3, 4, 5, 6,     */  {  1,  8 },
0193 /* 128:                      7,  */  {  1,  7 },
0194 /* 129: 0,                   7,  */  {  3,  2 },
0195 /* 130:    1,                7,  */  {  4,  1 },
0196 /* 131: 0, 1,                7,  */  {  6,  1 },
0197 /* 132:       2,             7,  */  {  3,  7 },
0198 /* 133: 0,    2,             7,  */  {  7,  1 },
0199 /* 134:    1, 2,             7,  */  {  6, 10 },
0200 /* 135: 0, 1, 2,             7,  */  { 12,  0 },
0201 /* 136:          3,          7,  */  {  2,  7 },
0202 /* 137: 0,       3,          7,  */  {  5,  6 },
0203 /* 138:    1,    3,          7,  */  {  6, 12 },
0204 /* 139: 0, 1,    3,          7,  */  { 11,  1 },
0205 /* 140:       2, 3,          7,  */  {  5, 15 },
0206 /* 141: 0,    2, 3,          7,  */  {  9,  2 },
0207 /* 142:    1, 2, 3,          7,  */  { 14,  6 },
0208 /* 143: 0, 1, 2, 3,          7,  */  {  5, 27 },
0209 /* 144:             4,       7,  */  {  2,  9 },
0210 /* 145: 0,          4,       7,  */  {  5,  8 },
0211 /* 146:    1,       4,       7,  */  {  6, 13 },
0212 /* 147: 0, 1,       4,       7,  */  { 14,  2 },
0213 /* 148:       2,    4,       7,  */  {  6, 20 },
0214 /* 149: 0,    2,    4,       7,  */  { 12,  6 },
0215 /* 150:    1, 2,    4,       7,  */  { 10,  3 },
0216 /* 151: 0, 1, 2,    4,       7,  */  {  6, 25 },
0217 /* 152:          3, 4,       7,  */  {  5, 18 },
0218 /* 153: 0,       3, 4,       7,  */  {  8,  2 },
0219 /* 154:    1,    3, 4,       7,  */  { 12, 16 },
0220 /* 155: 0, 1,    3, 4,       7,  */  {  5, 31 },
0221 /* 156:       2, 3, 4,       7,  */  { 11,  9 },
0222 /* 157: 0,    2, 3, 4,       7,  */  {  5, 34 },
0223 /* 158:    1, 2, 3, 4,       7,  */  {  6, 40 },
0224 /* 159: 0, 1, 2, 3, 4,       7,  */  {  2, 13 },
0225 /* 160:                5,    7,  */  {  3, 11 },
0226 /* 161: 0,             5,    7,  */  {  7,  2 },
0227 /* 162:    1,          5,    7,  */  {  6, 14 },
0228 /* 163: 0, 1,          5,    7,  */  { 12,  3 },
0229 /* 164:       2,       5,    7,  */  {  7,  6 },
0230 /* 165: 0,    2,       5,    7,  */  { 13,  0 },
0231 /* 166:    1, 2,       5,    7,  */  { 12, 14 },
0232 /* 167: 0, 1, 2,       5,    7,  */  {  7,  8 },
0233 /* 168:          3,    5,    7,  */  {  6, 23 },
0234 /* 169: 0,       3,    5,    7,  */  { 12, 10 },
0235 /* 170:    1,    3,    5,    7,  */  { 10,  4 },
0236 /* 171: 0, 1,    3,    5,    7,  */  {  6, 28 },
0237 /* 172:       2, 3,    5,    7,  */  { 12, 21 },
0238 /* 173: 0,    2, 3,    5,    7,  */  {  7, 10 },
0239 /* 174:    1, 2, 3,    5,    7,  */  {  6, 41 },
0240 /* 175: 0, 1, 2, 3,    5,    7,  */  {  3, 13 },
0241 /* 176:             4, 5,    7,  */  {  5, 21 },
0242 /* 177: 0,          4, 5,    7,  */  {  9,  3 },
0243 /* 178:    1,       4, 5,    7,  */  { 11,  8 },
0244 /* 179: 0, 1,       4, 5,    7,  */  {  5, 33 },
0245 /* 180:       2,    4, 5,    7,  */  { 12, 22 },
0246 /* 181: 0,    2,    4, 5,    7,  */  {  7, 11 },
0247 /* 182:    1, 2,    4, 5,    7,  */  {  6, 42 },
0248 /* 183: 0, 1, 2,    4, 5,    7,  */  {  3, 14 },
0249 /* 184:          3, 4, 5,    7,  */  { 14, 11 },
0250 /* 185: 0,       3, 4, 5,    7,  */  {  5, 36 },
0251 /* 186:    1,    3, 4, 5,    7,  */  {  6, 44 },
0252 /* 187: 0, 1,    3, 4, 5,    7,  */  {  2, 17 },
0253 /* 188:       2, 3, 4, 5,    7,  */  {  6, 47 },
0254 /* 189: 0,    2, 3, 4, 5,    7,  */  {  3, 18 },
0255 /* 190:    1, 2, 3, 4, 5,    7,  */  {  4,  7 },
0256 /* 191: 0, 1, 2, 3, 4, 5,    7,  */  {  1,  9 },
0257 /* 192:                   6, 7,  */  {  2, 11 },
0258 /* 193: 0,                6, 7,  */  {  6,  8 },
0259 /* 194:    1,             6, 7,  */  {  6, 15 },
0260 /* 195: 0, 1,             6, 7,  */  { 10,  0 },
0261 /* 196:       2,          6, 7,  */  {  5, 17 },
0262 /* 197: 0,    2,          6, 7,  */  { 12,  8 },
0263 /* 198:    1, 2,          6, 7,  */  { 11,  7 },
0264 /* 199: 0, 1, 2,          6, 7,  */  {  6, 26 },
0265 /* 200:          3,       6, 7,  */  {  5, 19 },
0266 /* 201: 0,       3,       6, 7,  */  { 14,  4 },
0267 /* 202:    1,    3,       6, 7,  */  { 12, 18 },
0268 /* 203: 0, 1,    3,       6, 7,  */  {  6, 29 },
0269 /* 204:       2, 3,       6, 7,  */  {  8,  4 },
0270 /* 205: 0,    2, 3,       6, 7,  */  {  5, 35 },
0271 /* 206:    1, 2, 3,       6, 7,  */  {  5, 40 },
0272 /* 207: 0, 1, 2, 3,       6, 7,  */  {  2, 15 },
0273 /* 208:             4,    6, 7,  */  {  5, 22 },
0274 /* 209: 0,          4,    6, 7,  */  { 11,  5 },
0275 /* 210:    1,       4,    6, 7,  */  { 12, 19 },
0276 /* 211: 0, 1,       4,    6, 7,  */  {  6, 30 },
0277 /* 212:       2,    4,    6, 7,  */  { 14, 10 },
0278 /* 213: 0,    2,    4,    6, 7,  */  {  6, 36 },
0279 /* 214:    1, 2,    4,    6, 7,  */  {  6, 43 },
0280 /* 215: 0, 1, 2,    4,    6, 7,  */  {  4,  4 },
0281 /* 216:          3, 4,    6, 7,  */  {  9,  7 },
0282 /* 217: 0,       3, 4,    6, 7,  */  {  5, 37 },
0283 /* 218:    1,    3, 4,    6, 7,  */  {  7, 15 },
0284 /* 219: 0, 1,    3, 4,    6, 7,  */  {  3, 17 },
0285 /* 220:       2, 3, 4,    6, 7,  */  {  5, 44 },
0286 /* 221: 0,    2, 3, 4,    6, 7,  */  {  2, 19 },
0287 /* 222:    1, 2, 3, 4,    6, 7,  */  {  3, 22 },
0288 /* 223: 0, 1, 2, 3, 4,    6, 7,  */  {  1, 10 },
0289 /* 224:                5, 6, 7,  */  {  5, 23 },
0290 /* 225: 0,             5, 6, 7,  */  { 12, 11 },
0291 /* 226:    1,          5, 6, 7,  */  { 14,  8 },
0292 /* 227: 0, 1,          5, 6, 7,  */  {  6, 31 },
0293 /* 228:       2,       5, 6, 7,  */  {  9,  6 },
0294 /* 229: 0,    2,       5, 6, 7,  */  {  7, 12 },
0295 /* 230:    1, 2,       5, 6, 7,  */  {  5, 42 },
0296 /* 231: 0, 1, 2,       5, 6, 7,  */  {  3, 15 },
0297 /* 232:          3,    5, 6, 7,  */  { 11, 11 },
0298 /* 233: 0,       3,    5, 6, 7,  */  {  6, 38 },
0299 /* 234:    1,    3,    5, 6, 7,  */  {  6, 45 },
0300 /* 235: 0, 1,    3,    5, 6, 7,  */  {  4,  5 },
0301 /* 236:       2, 3,    5, 6, 7,  */  {  5, 45 },
0302 /* 237: 0,    2, 3,    5, 6, 7,  */  {  3, 19 },
0303 /* 238:    1, 2, 3,    5, 6, 7,  */  {  2, 21 },
0304 /* 239: 0, 1, 2, 3,    5, 6, 7,  */  {  1, 11 },
0305 /* 240:             4, 5, 6, 7,  */  {  8,  5 },
0306 /* 241: 0,          4, 5, 6, 7,  */  {  5, 38 },
0307 /* 242:    1,       4, 5, 6, 7,  */  {  5, 43 },
0308 /* 243: 0, 1,       4, 5, 6, 7,  */  {  2, 18 },
0309 /* 244:       2,    4, 5, 6, 7,  */  {  5, 46 },
0310 /* 245: 0,    2,    4, 5, 6, 7,  */  {  3, 20 },
0311 /* 246:    1, 2,    4, 5, 6, 7,  */  {  2, 22 },
0312 /* 247: 0, 1, 2,    4, 5, 6, 7,  */  {  1, 12 },
0313 /* 248:          3, 4, 5, 6, 7,  */  {  5, 47 },
0314 /* 249: 0,       3, 4, 5, 6, 7,  */  {  2, 20 },
0315 /* 250:    1,    3, 4, 5, 6, 7,  */  {  3, 23 },
0316 /* 251: 0, 1,    3, 4, 5, 6, 7,  */  {  1, 13 },
0317 /* 252:       2, 3, 4, 5, 6, 7,  */  {  2, 23 },
0318 /* 253: 0,    2, 3, 4, 5, 6, 7,  */  {  1, 14 },
0319 /* 254:    1, 2, 3, 4, 5, 6, 7,  */  {  1, 15 },
0320 /* 255: 0, 1, 2, 3, 4, 5, 6, 7,  */  {  0, -1 }
0321 };
0322 //_____________________________________________________________________________
0323 
0324 
0325 //_____________________________________________________________________________
0326 /**
0327  * \brief tiling table for case 1
0328  * For each of the case above, the specific triangulation of the edge
0329  * intersection points is given.
0330  * When a case is ambiguous, there is an auxiliary table that contains
0331  * the face number to test and the tiling table contains the specific
0332  * triangulations depending on the results
0333  * A minus sign means to invert the result of the test.
0334  */
0335 //-----------------------------------------------------------------------------
0336 static const int tiling1[16][3] = {
0337 /*   1: 0,                       */  {  0,  8,  3 },
0338 /*   2:    1,                    */  {  0,  1,  9 },
0339 /*   4:       2,                 */  {  1,  2, 10 },
0340 /*   8:          3,              */  {  3, 11,  2 },
0341 /*  16:             4,           */  {  4,  7,  8 },
0342 /*  32:                5,        */  {  9,  5,  4 },
0343 /*  64:                   6,     */  { 10,  6,  5 },
0344 /* 128:                      7,  */  {  7,  6, 11 },
0345 /* 127: 0, 1, 2, 3, 4, 5, 6,     */  {  7, 11,  6 },
0346 /* 191: 0, 1, 2, 3, 4, 5,    7,  */  { 10,  5,  6 },
0347 /* 223: 0, 1, 2, 3, 4,    6, 7,  */  {  9,  4,  5 },
0348 /* 239: 0, 1, 2, 3,    5, 6, 7,  */  {  4,  8,  7 },
0349 /* 247: 0, 1, 2,    4, 5, 6, 7,  */  {  3,  2, 11 },
0350 /* 251: 0, 1,    3, 4, 5, 6, 7,  */  {  1, 10,  2 },
0351 /* 253: 0,    2, 3, 4, 5, 6, 7,  */  {  0,  9,  1 },
0352 /* 254:    1, 2, 3, 4, 5, 6, 7,  */  {  0,  3,  8 }
0353 };
0354 //_____________________________________________________________________________
0355 
0356 
0357 //_____________________________________________________________________________
0358 /**
0359  * \brief tiling table for case 2
0360  * For each of the case above, the specific triangulation of the edge
0361  * intersection points is given.
0362  * When a case is ambiguous, there is an auxiliary table that contains
0363  * the face number to test and the tiling table contains the specific
0364  * triangulations depending on the results
0365  * A minus sign means to invert the result of the test.
0366  */
0367 //-----------------------------------------------------------------------------
0368 static const int tiling2[24][6] = {
0369 /*   3: 0, 1,                    */  {  1,  8,  3,  9,  8,  1 },
0370 /*   9: 0,       3,              */  {  0, 11,  2,  8, 11,  0 },
0371 /*  17: 0,          4,           */  {  4,  3,  0,  7,  3,  4 },
0372 /*   6:    1, 2,                 */  {  9,  2, 10,  0,  2,  9 },
0373 /*  34:    1,          5,        */  {  0,  5,  4,  1,  5,  0 },
0374 /*  12:       2, 3,              */  {  3, 10,  1, 11, 10,  3 },
0375 /*  68:       2,          6,     */  {  1,  6,  5,  2,  6,  1 },
0376 /* 136:          3,          7,  */  {  7,  2,  3,  6,  2,  7 },
0377 /*  48:             4, 5,        */  {  9,  7,  8,  5,  7,  9 },
0378 /* 144:             4,       7,  */  {  6,  8,  4, 11,  8,  6 },
0379 /*  96:                5, 6,     */  { 10,  4,  9,  6,  4, 10 },
0380 /* 192:                   6, 7,  */  { 11,  5, 10,  7,  5, 11 },
0381 /*  63: 0, 1, 2, 3, 4, 5,        */  { 11, 10,  5,  7, 11,  5 },
0382 /* 159: 0, 1, 2, 3, 4,       7,  */  { 10,  9,  4,  6, 10,  4 },
0383 /* 111: 0, 1, 2, 3,    5, 6,     */  {  6,  4,  8, 11,  6,  8 },
0384 /* 207: 0, 1, 2, 3,       6, 7,  */  {  9,  8,  7,  5,  9,  7 },
0385 /* 119: 0, 1, 2,    4, 5, 6,     */  {  7,  3,  2,  6,  7,  2 },
0386 /* 187: 0, 1,    3, 4, 5,    7,  */  {  1,  5,  6,  2,  1,  6 },
0387 /* 243: 0, 1,       4, 5, 6, 7,  */  {  3,  1, 10, 11,  3, 10 },
0388 /* 221: 0,    2, 3, 4,    6, 7,  */  {  0,  4,  5,  1,  0,  5 },
0389 /* 249: 0,       3, 4, 5, 6, 7,  */  {  9, 10,  2,  0,  9,  2 },
0390 /* 238:    1, 2, 3,    5, 6, 7,  */  {  4,  0,  3,  7,  4,  3 },
0391 /* 246:    1, 2,    4, 5, 6, 7,  */  {  0,  2, 11,  8,  0, 11 },
0392 /* 252:       2, 3, 4, 5, 6, 7,  */  {  1,  3,  8,  9,  1,  8 }
0393 };
0394 //_____________________________________________________________________________
0395 
0396 //_____________________________________________________________________________
0397 /**
0398  * \brief test table for case 3
0399  * One face to test
0400  * When the test on the specified face is positive : 4 first triangles
0401  * When the test on the specified face is negative : 2 last triangles
0402  *
0403  * For each of the case above, the specific triangulation of the edge
0404  * intersection points is given.
0405  * When a case is ambiguous, there is an auxiliary table that contains
0406  * the face number to test and the tiling table contains the specific
0407  * triangulations depending on the results
0408  * A minus sign means to invert the result of the test.
0409  */
0410 //-----------------------------------------------------------------------------
0411 static const int test3[24] = {
0412 /*   5: 0,    2,                 */    5,
0413 /*  33: 0,             5,        */    1,
0414 /* 129: 0,                   7,  */    4,
0415 /*  10:    1,    3,              */    5,
0416 /*  18:    1,       4,           */    1,
0417 /*  66:    1,             6,     */    2,
0418 /*  36:       2,       5,        */    2,
0419 /* 132:       2,             7,  */    3,
0420 /*  24:          3, 4,           */    4,
0421 /*  72:          3,       6,     */    3,
0422 /*  80:             4,    6,     */    6,
0423 /* 160:                5,    7,  */    6,
0424 /*  95: 0, 1, 2, 3, 4,    6,     */   -6,
0425 /* 175: 0, 1, 2, 3,    5,    7,  */   -6,
0426 /* 183: 0, 1, 2,    4, 5,    7,  */   -3,
0427 /* 231: 0, 1, 2,       5, 6, 7,  */   -4,
0428 /* 123: 0, 1,    3, 4, 5, 6,     */   -3,
0429 /* 219: 0, 1,    3, 4,    6, 7,  */   -2,
0430 /* 189: 0,    2, 3, 4, 5,    7,  */   -2,
0431 /* 237: 0,    2, 3,    5, 6, 7,  */   -1,
0432 /* 245: 0,    2,    4, 5, 6, 7,  */   -5,
0433 /* 126:    1, 2, 3, 4, 5, 6,     */   -4,
0434 /* 222:    1, 2, 3, 4,    6, 7,  */   -1,
0435 /* 250:    1,    3, 4, 5, 6, 7,  */   -5
0436 };
0437 
0438 //_____________________________________________________________________________
0439 /**
0440  * \brief tiling table for case 3.1
0441  * For each of the case above, the specific triangulation of the edge
0442  * intersection points is given.
0443  * When a case is ambiguous, there is an auxiliary table that contains
0444  * the face number to test and the tiling table contains the specific
0445  * triangulations depending on the results
0446  * A minus sign means to invert the result of the test.
0447  */
0448 //-----------------------------------------------------------------------------
0449 static const int tiling3_1[24][6] = {
0450 /*   5: 0,    2,                 */  {  0,  8,  3,  1,  2, 10 },
0451 /*  33: 0,             5,        */  {  9,  5,  4,  0,  8,  3 },
0452 /* 129: 0,                   7,  */  {  3,  0,  8, 11,  7,  6 },
0453 /*  10:    1,    3,              */  {  1,  9,  0,  2,  3, 11 },
0454 /*  18:    1,       4,           */  {  0,  1,  9,  8,  4,  7 },
0455 /*  66:    1,             6,     */  {  9,  0,  1,  5, 10,  6 },
0456 /*  36:       2,       5,        */  {  1,  2, 10,  9,  5,  4 },
0457 /* 132:       2,             7,  */  { 10,  1,  2,  6, 11,  7 },
0458 /*  24:          3, 4,           */  {  8,  4,  7,  3, 11,  2 },
0459 /*  72:          3,       6,     */  {  2,  3, 11, 10,  6,  5 },
0460 /*  80:             4,    6,     */  {  5, 10,  6,  4,  7,  8 },
0461 /* 160:                5,    7,  */  {  4,  9,  5,  7,  6, 11 },
0462 /*  95: 0, 1, 2, 3, 4,    6,     */  {  5,  9,  4, 11,  6,  7 },
0463 /* 175: 0, 1, 2, 3,    5,    7,  */  {  6, 10,  5,  8,  7,  4 },
0464 /* 183: 0, 1, 2,    4, 5,    7,  */  { 11,  3,  2,  5,  6, 10 },
0465 /* 231: 0, 1, 2,       5, 6, 7,  */  {  7,  4,  8,  2, 11,  3 },
0466 /* 123: 0, 1,    3, 4, 5, 6,     */  {  2,  1, 10,  7, 11,  6 },
0467 /* 219: 0, 1,    3, 4,    6, 7,  */  { 10,  2,  1,  4,  5,  9 },
0468 /* 189: 0,    2, 3, 4, 5,    7,  */  {  1,  0,  9,  6, 10,  5 },
0469 /* 237: 0,    2, 3,    5, 6, 7,  */  {  9,  1,  0,  7,  4,  8 },
0470 /* 245: 0,    2,    4, 5, 6, 7,  */  {  0,  9,  1, 11,  3,  2 },
0471 /* 126:    1, 2, 3, 4, 5, 6,     */  {  8,  0,  3,  6,  7, 11 },
0472 /* 222:    1, 2, 3, 4,    6, 7,  */  {  4,  5,  9,  3,  8,  0 },
0473 /* 250:    1,    3, 4, 5, 6, 7,  */  {  3,  8,  0, 10,  2,  1 }
0474 };
0475 
0476 //_____________________________________________________________________________
0477 /**
0478  * \brief tiling table for case 3.2
0479  * For each of the case above, the specific triangulation of the edge
0480  * intersection points is given.
0481  * When a case is ambiguous, there is an auxiliary table that contains
0482  * the face number to test and the tiling table contains the specific
0483  * triangulations depending on the results
0484  * A minus sign means to invert the result of the test.
0485  */
0486 //-----------------------------------------------------------------------------
0487 static const int tiling3_2[24][12] = {
0488 /*   5: 0,    2,                 */  { 10,  3,  2, 10,  8,  3, 10,  1,  0,  8, 10,  0 },
0489 /*  33: 0,             5,        */  {  3,  4,  8,  3,  5,  4,  3,  0,  9,  5,  3,  9 },
0490 /* 129: 0,                   7,  */  {  6,  8,  7,  6,  0,  8,  6, 11,  3,  0,  6,  3 },
0491 /*  10:    1,    3,              */  { 11,  0,  3, 11,  9,  0, 11,  2,  1,  9, 11,  1 },
0492 /*  18:    1,       4,           */  {  7,  9,  4,  7,  1,  9,  7,  8,  0,  1,  7,  0 },
0493 /*  66:    1,             6,     */  {  6,  1, 10,  6,  0,  1,  9,  0,  6,  9,  6,  5 },
0494 /*  36:       2,       5,        */  {  4, 10,  5,  4,  2, 10,  4,  9,  1,  2,  4,  1 },
0495 /* 132:       2,             7,  */  {  7,  2, 11,  7,  1,  2,  7,  6, 10,  1,  7, 10 },
0496 /*  24:          3, 4,           */  {  2,  7, 11,  2,  4,  7,  2,  3,  8,  4,  2,  8 },
0497 /*  72:          3,       6,     */  {  5, 11,  6,  5,  3, 11,  5, 10,  2,  3,  5,  2 },
0498 /*  80:             4,    6,     */  {  8,  6,  7,  8, 10,  6,  8,  4,  5, 10,  8,  5 },
0499 /* 160:                5,    7,  */  { 11,  5,  6, 11,  9,  5, 11,  7,  4,  9, 11,  4 },
0500 /*  95: 0, 1, 2, 3, 4,    6,     */  {  6,  5, 11,  5,  9, 11,  4,  7, 11,  4, 11,  9 },
0501 /* 175: 0, 1, 2, 3,    5,    7,  */  {  7,  6,  8,  6, 10,  8,  5,  4,  8,  5,  8, 10 },
0502 /* 183: 0, 1, 2,    4, 5,    7,  */  {  6, 11,  5, 11,  3,  5,  2, 10,  5,  2,  5,  3 },
0503 /* 231: 0, 1, 2,       5, 6, 7,  */  { 11,  7,  2,  7,  4,  2,  8,  3,  2,  8,  2,  4 },
0504 /* 123: 0, 1,    3, 4, 5, 6,     */  { 11,  2,  7,  2,  1,  7, 10,  6,  7, 10,  7,  1 },
0505 /* 219: 0, 1,    3, 4,    6, 7,  */  {  5, 10,  4, 10,  2,  4,  1,  9,  4,  1,  4,  2 },
0506 /* 189: 0,    2, 3, 4, 5,    7,  */  { 10,  1,  6,  1,  0,  6,  6,  0,  9,  5,  6,  9 },
0507 /* 237: 0,    2, 3,    5, 6, 7,  */  {  4,  9,  7,  9,  1,  7,  0,  8,  7,  0,  7,  1 },
0508 /* 245: 0,    2,    4, 5, 6, 7,  */  {  3,  0, 11,  0,  9, 11,  1,  2, 11,  1, 11,  9 },
0509 /* 126:    1, 2, 3, 4, 5, 6,     */  {  7,  8,  6,  8,  0,  6,  3, 11,  6,  3,  6,  0 },
0510 /* 222:    1, 2, 3, 4,    6, 7,  */  {  8,  4,  3,  4,  5,  3,  9,  0,  3,  9,  3,  5 },
0511 /* 250:    1,    3, 4, 5, 6, 7,  */  {  2,  3, 10,  3,  8, 10,  0,  1, 10,  0, 10,  8 }
0512 };
0513 //_____________________________________________________________________________
0514 
0515 
0516 
0517 //_____________________________________________________________________________
0518 /**
0519  * \brief test table for case 4
0520  * Interior to test
0521  * When the test on the interior is negative : 2 first triangles
0522  * When the test on the interior is positive : 6 last triangles
0523  *
0524  * For each of the case above, the specific triangulation of the edge
0525  * intersection points is given.
0526  * When a case is ambiguous, there is an auxiliary table that contains
0527  * the face number to test and the tiling table contains the specific
0528  * triangulations depending on the results
0529  * A minus sign means to invert the result of the test.
0530  */
0531 //-----------------------------------------------------------------------------
0532 static const int test4[8] = {
0533 /*  65: 0,                6,     */   7,
0534 /* 130:    1,                7,  */   7,
0535 /*  20:       2,    4,           */   7,
0536 /*  40:          3,    5,        */   7,
0537 /* 215: 0, 1, 2,    4,    6, 7,  */  -7,
0538 /* 235: 0, 1,    3,    5, 6, 7,  */  -7,
0539 /* 125: 0,    2, 3, 4, 5, 6,     */  -7,
0540 /* 190:    1, 2, 3, 4, 5,    7,  */  -7
0541 };
0542 
0543 //_____________________________________________________________________________
0544 /**
0545  * \brief tiling table for case 4.1
0546  * For each of the case above, the specific triangulation of the edge
0547  * intersection points is given.
0548  * When a case is ambiguous, there is an auxiliary table that contains
0549  * the face number to test and the tiling table contains the specific
0550  * triangulations depending on the results
0551  * A minus sign means to invert the result of the test.
0552  */
0553 //-----------------------------------------------------------------------------
0554 static const int tiling4_1[8][6] = {
0555 /*  65: 0,                6,     */  {  0,  8,  3,  5, 10,  6 },
0556 /* 130:    1,                7,  */  {  0,  1,  9, 11,  7,  6 },
0557 /*  20:       2,    4,           */  {  1,  2, 10,  8,  4,  7 },
0558 /*  40:          3,    5,        */  {  9,  5,  4,  2,  3, 11 },
0559 /* 215: 0, 1, 2,    4,    6, 7,  */  {  4,  5,  9, 11,  3,  2 },
0560 /* 235: 0, 1,    3,    5, 6, 7,  */  { 10,  2,  1,  7,  4,  8 },
0561 /* 125: 0,    2, 3, 4, 5, 6,     */  {  9,  1,  0,  6,  7, 11 },
0562 /* 190:    1, 2, 3, 4, 5,    7,  */  {  3,  8,  0,  6, 10,  5 }
0563 };
0564 
0565 //_____________________________________________________________________________
0566 /**
0567  * \brief tiling table for case 4.2
0568  * For each of the case above, the specific triangulation of the edge
0569  * intersection points is given.
0570  * When a case is ambiguous, there is an auxiliary table that contains
0571  * the face number to test and the tiling table contains the specific
0572  * triangulations depending on the results
0573  * A minus sign means to invert the result of the test.
0574  */
0575 //-----------------------------------------------------------------------------
0576 static const int tiling4_2[8][18] = {
0577 /*  65: 0,                6,     */  {  8,  5,  0,  5,  8,  6,  3,  6,  8,  6,  3, 10,  0, 10,  3, 10,  0,  5 },
0578 /* 130:    1,                7,  */  {  9,  6,  1,  6,  9,  7,  0,  7,  9,  7,  0, 11,  1, 11,  0, 11,  1,  6 },
0579 /*  20:       2,    4,           */  { 10,  7,  2,  7, 10,  4,  1,  4, 10,  4,  1,  8,  2,  8,  1,  8,  2,  7 },
0580 /*  40:          3,    5,        */  { 11,  4,  3,  4, 11,  5,  2,  5, 11,  5,  2,  9,  3,  9,  2,  9,  3,  4 },
0581 /* 215: 0, 1, 2,    4,    6, 7,  */  {  3,  4, 11,  5, 11,  4, 11,  5,  2,  9,  2,  5,  2,  9,  3,  4,  3,  9 },
0582 /* 235: 0, 1,    3,    5, 6, 7,  */  {  2,  7, 10,  4, 10,  7, 10,  4,  1,  8,  1,  4,  1,  8,  2,  7,  2,  8 },
0583 /* 125: 0,    2, 3, 4, 5, 6,     */  {  1,  6,  9,  7,  9,  6,  9,  7,  0, 11,  0,  7,  0, 11,  1,  6,  1, 11 },
0584 /* 190:    1, 2, 3, 4, 5,    7,  */  {  0,  5,  8,  6,  8,  5,  8,  6,  3, 10,  3,  6,  3, 10,  0,  5,  0, 10 }
0585 };
0586 //_____________________________________________________________________________
0587 
0588 
0589 //_____________________________________________________________________________
0590 /**
0591  * \brief tiling table for case 5
0592  * For each of the case above, the specific triangulation of the edge
0593  * intersection points is given.
0594  * When a case is ambiguous, there is an auxiliary table that contains
0595  * the face number to test and the tiling table contains the specific
0596  * triangulations depending on the results
0597  * A minus sign means to invert the result of the test.
0598  */
0599 //-----------------------------------------------------------------------------
0600 static const int tiling5[48][9] = {
0601 /*   7: 0, 1, 2,                 */  {  2,  8,  3,  2, 10,  8, 10,  9,  8 },
0602 /*  11: 0, 1,    3,              */  {  1, 11,  2,  1,  9, 11,  9,  8, 11 },
0603 /*  19: 0, 1,       4,           */  {  4,  1,  9,  4,  7,  1,  7,  3,  1 },
0604 /*  35: 0, 1,          5,        */  {  8,  5,  4,  8,  3,  5,  3,  1,  5 },
0605 /*  13: 0,    2, 3,              */  {  0, 10,  1,  0,  8, 10,  8, 11, 10 },
0606 /*  25: 0,       3, 4,           */  { 11,  4,  7, 11,  2,  4,  2,  0,  4 },
0607 /* 137: 0,       3,          7,  */  {  7,  0,  8,  7,  6,  0,  6,  2,  0 },
0608 /*  49: 0,          4, 5,        */  {  9,  3,  0,  9,  5,  3,  5,  7,  3 },
0609 /* 145: 0,          4,       7,  */  {  3,  6, 11,  3,  0,  6,  0,  4,  6 },
0610 /*  14:    1, 2, 3,              */  {  3,  9,  0,  3, 11,  9, 11, 10,  9 },
0611 /*  38:    1, 2,       5,        */  {  5,  2, 10,  5,  4,  2,  4,  0,  2 },
0612 /*  70:    1, 2,          6,     */  {  9,  6,  5,  9,  0,  6,  0,  2,  6 },
0613 /*  50:    1,       4, 5,        */  {  0,  7,  8,  0,  1,  7,  1,  5,  7 },
0614 /*  98:    1,          5, 6,     */  { 10,  0,  1, 10,  6,  0,  6,  4,  0 },
0615 /*  76:       2, 3,       6,     */  {  6,  3, 11,  6,  5,  3,  5,  1,  3 },
0616 /* 140:       2, 3,          7,  */  { 10,  7,  6, 10,  1,  7,  1,  3,  7 },
0617 /* 100:       2,       5, 6,     */  {  1,  4,  9,  1,  2,  4,  2,  6,  4 },
0618 /* 196:       2,          6, 7,  */  { 11,  1,  2, 11,  7,  1,  7,  5,  1 },
0619 /* 152:          3, 4,       7,  */  {  8,  2,  3,  8,  4,  2,  4,  6,  2 },
0620 /* 200:          3,       6, 7,  */  {  2,  5, 10,  2,  3,  5,  3,  7,  5 },
0621 /* 112:             4, 5, 6,     */  {  7, 10,  6,  7,  8, 10,  8,  9, 10 },
0622 /* 176:             4, 5,    7,  */  {  6,  9,  5,  6, 11,  9, 11,  8,  9 },
0623 /* 208:             4,    6, 7,  */  {  5,  8,  4,  5, 10,  8, 10, 11,  8 },
0624 /* 224:                5, 6, 7,  */  {  4, 11,  7,  4,  9, 11,  9, 10, 11 },
0625 /*  31: 0, 1, 2, 3, 4,           */  {  4,  7, 11,  4, 11,  9,  9, 11, 10 },
0626 /*  47: 0, 1, 2, 3,    5,        */  {  5,  4,  8,  5,  8, 10, 10,  8, 11 },
0627 /*  79: 0, 1, 2, 3,       6,     */  {  6,  5,  9,  6,  9, 11, 11,  9,  8 },
0628 /* 143: 0, 1, 2, 3,          7,  */  {  7,  6, 10,  7, 10,  8,  8, 10,  9 },
0629 /*  55: 0, 1, 2,    4, 5,        */  {  2, 10,  5,  2,  5,  3,  3,  5,  7 },
0630 /* 103: 0, 1, 2,       5, 6,     */  {  8,  3,  2,  8,  2,  4,  4,  2,  6 },
0631 /*  59: 0, 1,    3, 4, 5,        */  { 11,  2,  1, 11,  1,  7,  7,  1,  5 },
0632 /* 155: 0, 1,    3, 4,       7,  */  {  1,  9,  4,  1,  4,  2,  2,  4,  6 },
0633 /* 115: 0, 1,       4, 5, 6,     */  { 10,  6,  7, 10,  7,  1,  1,  7,  3 },
0634 /* 179: 0, 1,       4, 5,    7,  */  {  6, 11,  3,  6,  3,  5,  5,  3,  1 },
0635 /* 157: 0,    2, 3, 4,       7,  */  { 10,  1,  0, 10,  0,  6,  6,  0,  4 },
0636 /* 205: 0,    2, 3,       6, 7,  */  {  0,  8,  7,  0,  7,  1,  1,  7,  5 },
0637 /* 185: 0,       3, 4, 5,    7,  */  {  9,  5,  6,  9,  6,  0,  0,  6,  2 },
0638 /* 217: 0,       3, 4,    6, 7,  */  {  5, 10,  2,  5,  2,  4,  4,  2,  0 },
0639 /* 241: 0,          4, 5, 6, 7,  */  {  3,  0,  9,  3,  9, 11, 11,  9, 10 },
0640 /* 110:    1, 2, 3,    5, 6,     */  {  3, 11,  6,  3,  6,  0,  0,  6,  4 },
0641 /* 206:    1, 2, 3,       6, 7,  */  {  9,  0,  3,  9,  3,  5,  5,  3,  7 },
0642 /* 118:    1, 2,    4, 5, 6,     */  {  7,  8,  0,  7,  0,  6,  6,  0,  2 },
0643 /* 230:    1, 2,       5, 6, 7,  */  { 11,  7,  4, 11,  4,  2,  2,  4,  0 },
0644 /* 242:    1,       4, 5, 6, 7,  */  {  0,  1, 10,  0, 10,  8,  8, 10, 11 },
0645 /* 220:       2, 3, 4,    6, 7,  */  {  8,  4,  5,  8,  5,  3,  3,  5,  1 },
0646 /* 236:       2, 3,    5, 6, 7,  */  {  4,  9,  1,  4,  1,  7,  7,  1,  3 },
0647 /* 244:       2,    4, 5, 6, 7,  */  {  1,  2, 11,  1, 11,  9,  9, 11,  8 },
0648 /* 248:          3, 4, 5, 6, 7,  */  {  2,  3,  8,  2,  8, 10, 10,  8,  9 }
0649 };
0650 //_____________________________________________________________________________
0651 
0652 
0653 //_____________________________________________________________________________
0654 /**
0655  * \brief test table for case 6
0656  * 1 face to test + eventually the interior
0657  * When the test on the specified face is positive : 5 first triangles
0658  * When the test on the specified face is negative :
0659  * - if the test on the interior is negative : 3 middle triangles
0660  * - if the test on the interior is positive : 8 last triangles
0661  * The support edge for the interior test is marked as the 3rd column.
0662  *
0663  * For each of the case above, the specific triangulation of the edge
0664  * intersection points is given.
0665  * When a case is ambiguous, there is an auxiliary table that contains
0666  * the face number to test and the tiling table contains the specific
0667  * triangulations depending on the results
0668  * A minus sign means to invert the result of the test.
0669  */
0670 //-----------------------------------------------------------------------------
0671 static const int test6[48][3] = {
0672 /*  67: 0, 1,             6,     */  {  2,  7,  10  },
0673 /* 131: 0, 1,                7,  */  {  4,  7,  11  },
0674 /*  21: 0,    2,    4,           */  {  5,  7,   1  },
0675 /*  69: 0,    2,          6,     */  {  5,  7,   3  },
0676 /*  41: 0,       3,    5,        */  {  1,  7,   9  },
0677 /*  73: 0,       3,       6,     */  {  3,  7,  10  },
0678 /*  81: 0,          4,    6,     */  {  6,  7,   5  },
0679 /*  97: 0,             5, 6,     */  {  1,  7,   8  },
0680 /* 193: 0,                6, 7,  */  {  4,  7,   8  },
0681 /*  22:    1, 2,    4,           */  {  1,  7,   8  },
0682 /* 134:    1, 2,             7,  */  {  3,  7,  11  },
0683 /*  42:    1,    3,    5,        */  {  5,  7,   2  },
0684 /* 138:    1,    3,          7,  */  {  5,  7,   0  },
0685 /* 146:    1,       4,       7,  */  {  1,  7,   9  },
0686 /* 162:    1,          5,    7,  */  {  6,  7,   6  },
0687 /* 194:    1,             6, 7,  */  {  2,  7,   9  },
0688 /*  28:       2, 3, 4,           */  {  4,  7,   8  },
0689 /*  44:       2, 3,    5,        */  {  2,  7,   9  },
0690 /*  52:       2,    4, 5,        */  {  2,  7,  10  },
0691 /*  84:       2,    4,    6,     */  {  6,  7,   7  },
0692 /* 148:       2,    4,       7,  */  {  3,  7,  10  },
0693 /*  56:          3, 4, 5,        */  {  4,  7,  11  },
0694 /* 104:          3,    5, 6,     */  {  3,  7,  11  },
0695 /* 168:          3,    5,    7,  */  {  6,  7,   4  },
0696 /*  87: 0, 1, 2,    4,    6,     */  { -6, -7,   4  },
0697 /* 151: 0, 1, 2,    4,       7,  */  { -3, -7,  11  },
0698 /* 199: 0, 1, 2,          6, 7,  */  { -4, -7,  11  },
0699 /* 107: 0, 1,    3,    5, 6,     */  { -3, -7,  10  },
0700 /* 171: 0, 1,    3,    5,    7,  */  { -6, -7,   7  },
0701 /* 203: 0, 1,    3,       6, 7,  */  { -2, -7,  10  },
0702 /* 211: 0, 1,       4,    6, 7,  */  { -2, -7,   9  },
0703 /* 227: 0, 1,          5, 6, 7,  */  { -4, -7,   8  },
0704 /*  61: 0,    2, 3, 4, 5,        */  { -2, -7,   9  },
0705 /*  93: 0,    2, 3, 4,    6,     */  { -6, -7,   6  },
0706 /* 109: 0,    2, 3,    5, 6,     */  { -1, -7,   9  },
0707 /* 117: 0,    2,    4, 5, 6,     */  { -5, -7,   0  },
0708 /* 213: 0,    2,    4,    6, 7,  */  { -5, -7,   2  },
0709 /* 121: 0,       3, 4, 5, 6,     */  { -3, -7,  11  },
0710 /* 233: 0,       3,    5, 6, 7,  */  { -1, -7,   8  },
0711 /*  62:    1, 2, 3, 4, 5,        */  { -4, -7,   8  },
0712 /* 158:    1, 2, 3, 4,       7,  */  { -1, -7,   8  },
0713 /* 174:    1, 2, 3,    5,    7,  */  { -6, -7,   5  },
0714 /* 182:    1, 2,    4, 5,    7,  */  { -3, -7,  10  },
0715 /* 214:    1, 2,    4,    6, 7,  */  { -1, -7,   9  },
0716 /* 186:    1,    3, 4, 5,    7,  */  { -5, -7,   3  },
0717 /* 234:    1,    3,    5, 6, 7,  */  { -5, -7,   1  },
0718 /* 124:       2, 3, 4, 5, 6,     */  { -4, -7,  11  },
0719 /* 188:       2, 3, 4, 5,    7,  */  { -2, -7,  10  }
0720 };
0721 
0722 //_____________________________________________________________________________
0723 /**
0724  * \brief tiling table for case 6.1.1
0725  * For each of the case above, the specific triangulation of the edge
0726  * intersection points is given.
0727  * When a case is ambiguous, there is an auxiliary table that contains
0728  * the face number to test and the tiling table contains the specific
0729  * triangulations depending on the results
0730  * A minus sign means to invert the result of the test.
0731  */
0732 //-----------------------------------------------------------------------------
0733 static const int tiling6_1_1[48][9] = {
0734 /*  67: 0, 1,             6,     */  {  6,  5, 10,  3,  1,  8,  9,  8,  1 },
0735 /* 131: 0, 1,                7,  */  { 11,  7,  6,  9,  3,  1,  3,  9,  8 },
0736 /*  21: 0,    2,    4,           */  {  1,  2, 10,  7,  0,  4,  0,  7,  3 },
0737 /*  69: 0,    2,          6,     */  {  3,  0,  8,  5,  2,  6,  2,  5,  1 },
0738 /*  41: 0,       3,    5,        */  {  5,  4,  9,  2,  0, 11,  8, 11,  0 },
0739 /*  73: 0,       3,       6,     */  { 10,  6,  5,  8,  2,  0,  2,  8, 11 },
0740 /*  81: 0,          4,    6,     */  { 10,  6,  5,  0,  4,  3,  7,  3,  4 },
0741 /*  97: 0,             5, 6,     */  {  3,  0,  8,  6,  4, 10,  9, 10,  4 },
0742 /* 193: 0,                6, 7,  */  {  8,  3,  0, 10,  7,  5,  7, 10, 11 },
0743 /*  22:    1, 2,    4,           */  {  8,  4,  7, 10,  0,  2,  0, 10,  9 },
0744 /* 134:    1, 2,             7,  */  {  7,  6, 11,  0,  2,  9, 10,  9,  2 },
0745 /*  42:    1,    3,    5,        */  {  2,  3, 11,  4,  1,  5,  1,  4,  0 },
0746 /* 138:    1,    3,          7,  */  {  0,  1,  9,  6,  3,  7,  3,  6,  2 },
0747 /* 146:    1,       4,       7,  */  {  9,  0,  1, 11,  4,  6,  4, 11,  8 },
0748 /* 162:    1,          5,    7,  */  { 11,  7,  6,  1,  5,  0,  4,  0,  5 },
0749 /* 194:    1,             6, 7,  */  {  0,  1,  9,  7,  5, 11, 10, 11,  5 },
0750 /*  28:       2, 3, 4,           */  {  4,  7,  8,  1,  3, 10, 11, 10,  3 },
0751 /*  44:       2, 3,    5,        */  {  9,  5,  4, 11,  1,  3,  1, 11, 10 },
0752 /*  52:       2,    4, 5,        */  { 10,  1,  2,  8,  5,  7,  5,  8,  9 },
0753 /*  84:       2,    4,    6,     */  {  8,  4,  7,  2,  6,  1,  5,  1,  6 },
0754 /* 148:       2,    4,       7,  */  {  1,  2, 10,  4,  6,  8, 11,  8,  6 },
0755 /*  56:          3, 4, 5,        */  {  2,  3, 11,  5,  7,  9,  8,  9,  7 },
0756 /* 104:          3,    5, 6,     */  { 11,  2,  3,  9,  6,  4,  6,  9, 10 },
0757 /* 168:          3,    5,    7,  */  {  9,  5,  4,  3,  7,  2,  6,  2,  7 },
0758 /*  87: 0, 1, 2,    4,    6,     */  {  4,  5,  9,  2,  7,  3,  7,  2,  6 },
0759 /* 151: 0, 1, 2,    4,       7,  */  {  3,  2, 11,  4,  6,  9, 10,  9,  6 },
0760 /* 199: 0, 1, 2,          6, 7,  */  { 11,  3,  2,  9,  7,  5,  7,  9,  8 },
0761 /* 107: 0, 1,    3,    5, 6,     */  { 10,  2,  1,  8,  6,  4,  6,  8, 11 },
0762 /* 171: 0, 1,    3,    5,    7,  */  {  7,  4,  8,  1,  6,  2,  6,  1,  5 },
0763 /* 203: 0, 1,    3,       6, 7,  */  {  2,  1, 10,  7,  5,  8,  9,  8,  5 },
0764 /* 211: 0, 1,       4,    6, 7,  */  {  4,  5,  9,  3,  1, 11, 10, 11,  1 },
0765 /* 227: 0, 1,          5, 6, 7,  */  {  8,  7,  4, 10,  3,  1,  3, 10, 11 },
0766 /*  61: 0,    2, 3, 4, 5,        */  {  9,  1,  0, 11,  5,  7,  5, 11, 10 },
0767 /*  93: 0,    2, 3, 4,    6,     */  {  6,  7, 11,  0,  5,  1,  5,  0,  4 },
0768 /* 109: 0,    2, 3,    5, 6,     */  {  1,  0,  9,  6,  4, 11,  8, 11,  4 },
0769 /* 117: 0,    2,    4, 5, 6,     */  {  9,  1,  0,  7,  3,  6,  2,  6,  3 },
0770 /* 213: 0,    2,    4,    6, 7,  */  { 11,  3,  2,  5,  1,  4,  0,  4,  1 },
0771 /* 121: 0,       3, 4, 5, 6,     */  { 11,  6,  7,  9,  2,  0,  2,  9, 10 },
0772 /* 233: 0,       3,    5, 6, 7,  */  {  7,  4,  8,  2,  0, 10,  9, 10,  0 },
0773 /*  62:    1, 2, 3, 4, 5,        */  {  0,  3,  8,  5,  7, 10, 11, 10,  7 },
0774 /* 158:    1, 2, 3, 4,       7,  */  {  8,  0,  3, 10,  4,  6,  4, 10,  9 },
0775 /* 174:    1, 2, 3,    5,    7,  */  {  5,  6, 10,  3,  4,  0,  4,  3,  7 },
0776 /* 182:    1, 2,    4, 5,    7,  */  {  5,  6, 10,  0,  2,  8, 11,  8,  2 },
0777 /* 214:    1, 2,    4,    6, 7,  */  {  9,  4,  5, 11,  0,  2,  0, 11,  8 },
0778 /* 186:    1,    3, 4, 5,    7,  */  {  8,  0,  3,  6,  2,  5,  1,  5,  2 },
0779 /* 234:    1,    3,    5, 6, 7,  */  { 10,  2,  1,  4,  0,  7,  3,  7,  0 },
0780 /* 124:       2, 3, 4, 5, 6,     */  {  6,  7, 11,  1,  3,  9,  8,  9,  3 },
0781 /* 188:       2, 3, 4, 5,    7,  */  { 10,  5,  6,  8,  1,  3,  1,  8,  9 }
0782 };
0783 
0784 //_____________________________________________________________________________
0785 /**
0786  * \brief tiling table for case 6.1.2
0787  * For each of the case above, the specific triangulation of the edge
0788  * intersection points is given.
0789  * When a case is ambiguous, there is an auxiliary table that contains
0790  * the face number to test and the tiling table contains the specific
0791  * triangulations depending on the results
0792  * A minus sign means to invert the result of the test.
0793  */
0794 //-----------------------------------------------------------------------------
0795 static const int tiling6_1_2[48][21] = {
0796 /*  67: 0, 1,             6,     */  {  1, 10,  3,  6,  3, 10,  3,  6,  8,  5,  8,  6,  8,  5,  9,  1,  9,  5, 10,  1,  5 },
0797 /* 131: 0, 1,                7,  */  {  1, 11,  3, 11,  1,  6,  9,  6,  1,  6,  9,  7,  8,  7,  9,  7,  8,  3,  7,  3, 11 },
0798 /*  21: 0,    2,    4,           */  {  4,  1,  0,  1,  4, 10,  7, 10,  4, 10,  7,  2,  3,  2,  7,  2,  3,  0,  2,  0,  1 },
0799 /*  69: 0,    2,          6,     */  {  6,  3,  2,  3,  6,  8,  5,  8,  6,  8,  5,  0,  1,  0,  5,  0,  1,  2,  0,  2,  3 },
0800 /*  41: 0,       3,    5,        */  {  0,  9,  2,  5,  2,  9,  2,  5, 11,  4, 11,  5, 11,  4,  8,  0,  8,  4,  9,  0,  4 },
0801 /*  73: 0,       3,       6,     */  {  0, 10,  2, 10,  0,  5,  8,  5,  0,  5,  8,  6, 11,  6,  8,  6, 11,  2,  6,  2, 10 },
0802 /*  81: 0,          4,    6,     */  {  4,  5,  0, 10,  0,  5,  0, 10,  3,  6,  3, 10,  3,  6,  7,  4,  7,  6,  5,  4,  6 },
0803 /*  97: 0,             5, 6,     */  {  4,  8,  6,  3,  6,  8,  6,  3, 10,  0, 10,  3, 10,  0,  9,  4,  9,  0,  8,  4,  0 },
0804 /* 193: 0,                6, 7,  */  {  5,  8,  7,  8,  5,  0, 10,  0,  5,  0, 10,  3, 11,  3, 10,  3, 11,  7,  3,  7,  8 },
0805 /*  22:    1, 2,    4,           */  {  2,  8,  0,  8,  2,  7, 10,  7,  2,  7, 10,  4,  9,  4, 10,  4,  9,  0,  4,  0,  8 },
0806 /* 134:    1, 2,             7,  */  {  2, 11,  0,  7,  0, 11,  0,  7,  9,  6,  9,  7,  9,  6, 10,  2, 10,  6, 11,  2,  6 },
0807 /*  42:    1,    3,    5,        */  {  5,  2,  1,  2,  5, 11,  4, 11,  5, 11,  4,  3,  0,  3,  4,  3,  0,  1,  3,  1,  2 },
0808 /* 138:    1,    3,          7,  */  {  7,  0,  3,  0,  7,  9,  6,  9,  7,  9,  6,  1,  2,  1,  6,  1,  2,  3,  1,  3,  0 },
0809 /* 146:    1,       4,       7,  */  {  6,  9,  4,  9,  6,  1, 11,  1,  6,  1, 11,  0,  8,  0, 11,  0,  8,  4,  0,  4,  9 },
0810 /* 162:    1,          5,    7,  */  {  5,  6,  1, 11,  1,  6,  1, 11,  0,  7,  0, 11,  0,  7,  4,  5,  4,  7,  6,  5,  7 },
0811 /* 194:    1,             6, 7,  */  {  5,  9,  7,  0,  7,  9,  7,  0, 11,  1, 11,  0, 11,  1, 10,  5, 10,  1,  9,  5,  1 },
0812 /*  28:       2, 3, 4,           */  {  3,  8,  1,  4,  1,  8,  1,  4, 10,  7, 10,  4, 10,  7, 11,  3, 11,  7,  8,  3,  7 },
0813 /*  44:       2, 3,    5,        */  {  3,  9,  1,  9,  3,  4, 11,  4,  3,  4, 11,  5, 10,  5, 11,  5, 10,  1,  5,  1,  9 },
0814 /*  52:       2,    4, 5,        */  {  7, 10,  5, 10,  7,  2,  8,  2,  7,  2,  8,  1,  9,  1,  8,  1,  9,  5,  1,  5, 10 },
0815 /*  84:       2,    4,    6,     */  {  6,  7,  2,  8,  2,  7,  2,  8,  1,  4,  1,  8,  1,  4,  5,  6,  5,  4,  7,  6,  4 },
0816 /* 148:       2,    4,       7,  */  {  6, 10,  4,  1,  4, 10,  4,  1,  8,  2,  8,  1,  8,  2, 11,  6, 11,  2, 10,  6,  2 },
0817 /*  56:          3, 4, 5,        */  {  7, 11,  5,  2,  5, 11,  5,  2,  9,  3,  9,  2,  9,  3,  8,  7,  8,  3, 11,  7,  3 },
0818 /* 104:          3,    5, 6,     */  {  4, 11,  6, 11,  4,  3,  9,  3,  4,  3,  9,  2, 10,  2,  9,  2, 10,  6,  2,  6, 11 },
0819 /* 168:          3,    5,    7,  */  {  7,  4,  3,  9,  3,  4,  3,  9,  2,  5,  2,  9,  2,  5,  6,  7,  6,  5,  4,  7,  5 },
0820 /*  87: 0, 1, 2,    4,    6,     */  {  3,  4,  7,  4,  3,  9,  2,  9,  3,  9,  2,  5,  6,  5,  2,  5,  6,  7,  5,  7,  4 },
0821 /* 151: 0, 1, 2,    4,       7,  */  {  6, 11,  4,  3,  4, 11,  4,  3,  9,  2,  9,  3,  9,  2, 10,  6, 10,  2, 11,  6,  2 },
0822 /* 199: 0, 1, 2,          6, 7,  */  {  5, 11,  7, 11,  5,  2,  9,  2,  5,  2,  9,  3,  8,  3,  9,  3,  8,  7,  3,  7, 11 },
0823 /* 107: 0, 1,    3,    5, 6,     */  {  4, 10,  6, 10,  4,  1,  8,  1,  4,  1,  8,  2, 11,  2,  8,  2, 11,  6,  2,  6, 10 },
0824 /* 171: 0, 1,    3,    5,    7,  */  {  2,  7,  6,  7,  2,  8,  1,  8,  2,  8,  1,  4,  5,  4,  1,  4,  5,  6,  4,  6,  7 },
0825 /* 203: 0, 1,    3,       6, 7,  */  {  5, 10,  7,  2,  7, 10,  7,  2,  8,  1,  8,  2,  8,  1,  9,  5,  9,  1, 10,  5,  1 },
0826 /* 211: 0, 1,       4,    6, 7,  */  {  1,  9,  3,  4,  3,  9,  3,  4, 11,  5, 11,  4, 11,  5, 10,  1, 10,  5,  9,  1,  5 },
0827 /* 227: 0, 1,          5, 6, 7,  */  {  1,  8,  3,  8,  1,  4, 10,  4,  1,  4, 10,  7, 11,  7, 10,  7, 11,  3,  7,  3,  8 },
0828 /*  61: 0,    2, 3, 4, 5,        */  {  7,  9,  5,  9,  7,  0, 11,  0,  7,  0, 11,  1, 10,  1, 11,  1, 10,  5,  1,  5,  9 },
0829 /*  93: 0,    2, 3, 4,    6,     */  {  1,  6,  5,  6,  1, 11,  0, 11,  1, 11,  0,  7,  4,  7,  0,  7,  4,  5,  7,  5,  6 },
0830 /* 109: 0,    2, 3,    5, 6,     */  {  4,  9,  6,  1,  6,  9,  6,  1, 11,  0, 11,  1, 11,  0,  8,  4,  8,  0,  9,  4,  0 },
0831 /* 117: 0,    2,    4, 5, 6,     */  {  3,  0,  7,  9,  7,  0,  7,  9,  6,  1,  6,  9,  6,  1,  2,  3,  2,  1,  0,  3,  1 },
0832 /* 213: 0,    2,    4,    6, 7,  */  {  1,  2,  5, 11,  5,  2,  5, 11,  4,  3,  4, 11,  4,  3,  0,  1,  0,  3,  2,  1,  3 },
0833 /* 121: 0,       3, 4, 5, 6,     */  {  0, 11,  2, 11,  0,  7,  9,  7,  0,  7,  9,  6, 10,  6,  9,  6, 10,  2,  6,  2, 11 },
0834 /* 233: 0,       3,    5, 6, 7,  */  {  0,  8,  2,  7,  2,  8,  2,  7, 10,  4, 10,  7, 10,  4,  9,  0,  9,  4,  8,  0,  4 },
0835 /*  62:    1, 2, 3, 4, 5,        */  {  7,  8,  5,  0,  5,  8,  5,  0, 10,  3, 10,  0, 10,  3, 11,  7, 11,  3,  8,  7,  3 },
0836 /* 158:    1, 2, 3, 4,       7,  */  {  6,  8,  4,  8,  6,  3, 10,  3,  6,  3, 10,  0,  9,  0, 10,  0,  9,  4,  0,  4,  8 },
0837 /* 174:    1, 2, 3,    5,    7,  */  {  0,  5,  4,  5,  0, 10,  3, 10,  0, 10,  3,  6,  7,  6,  3,  6,  7,  4,  6,  4,  5 },
0838 /* 182:    1, 2,    4, 5,    7,  */  {  2, 10,  0,  5,  0, 10,  0,  5,  8,  6,  8,  5,  8,  6, 11,  2, 11,  6, 10,  2,  6 },
0839 /* 214:    1, 2,    4,    6, 7,  */  {  2,  9,  0,  9,  2,  5, 11,  5,  2,  5, 11,  4,  8,  4, 11,  4,  8,  0,  4,  0,  9 },
0840 /* 186:    1,    3, 4, 5,    7,  */  {  2,  3,  6,  8,  6,  3,  6,  8,  5,  0,  5,  8,  5,  0,  1,  2,  1,  0,  3,  2,  0 },
0841 /* 234:    1,    3,    5, 6, 7,  */  {  0,  1,  4, 10,  4,  1,  4, 10,  7,  2,  7, 10,  7,  2,  3,  0,  3,  2,  1,  0,  2 },
0842 /* 124:       2, 3, 4, 5, 6,     */  {  3, 11,  1,  6,  1, 11,  1,  6,  9,  7,  9,  6,  9,  7,  8,  3,  8,  7, 11,  3,  7 },
0843 /* 188:       2, 3, 4, 5,    7,  */  {  3, 10,  1, 10,  3,  6,  8,  6,  3,  6,  8,  5,  9,  5,  8,  5,  9,  1,  5,  1, 10 }
0844 };
0845 
0846 //_____________________________________________________________________________
0847 /**
0848  * \brief tiling table for case 6.2
0849  * For each of the case above, the specific triangulation of the edge
0850  * intersection points is given.
0851  * When a case is ambiguous, there is an auxiliary table that contains
0852  * the face number to test and the tiling table contains the specific
0853  * triangulations depending on the results
0854  * A minus sign means to invert the result of the test.
0855  */
0856 //-----------------------------------------------------------------------------
0857 static const int tiling6_2[48][15] = {
0858 /*  67: 0, 1,             6,     */  {  1, 10,  3,  6,  3, 10,  3,  6,  8,  5,  8,  6,  8,  5,  9 },
0859 /* 131: 0, 1,                7,  */  {  1, 11,  3, 11,  1,  6,  9,  6,  1,  6,  9,  7,  8,  7,  9 },
0860 /*  21: 0,    2,    4,           */  {  4,  1,  0,  1,  4, 10,  7, 10,  4, 10,  7,  2,  3,  2,  7 },
0861 /*  69: 0,    2,          6,     */  {  6,  3,  2,  3,  6,  8,  5,  8,  6,  8,  5,  0,  1,  0,  5 },
0862 /*  41: 0,       3,    5,        */  {  0,  9,  2,  5,  2,  9,  2,  5, 11,  4, 11,  5, 11,  4,  8 },
0863 /*  73: 0,       3,       6,     */  {  0, 10,  2, 10,  0,  5,  8,  5,  0,  5,  8,  6, 11,  6,  8 },
0864 /*  81: 0,          4,    6,     */  {  4,  5,  0, 10,  0,  5,  0, 10,  3,  6,  3, 10,  3,  6,  7 },
0865 /*  97: 0,             5, 6,     */  {  4,  8,  6,  3,  6,  8,  6,  3, 10,  0, 10,  3, 10,  0,  9 },
0866 /* 193: 0,                6, 7,  */  {  5,  8,  7,  8,  5,  0, 10,  0,  5,  0, 10,  3, 11,  3, 10 },
0867 /*  22:    1, 2,    4,           */  {  2,  8,  0,  8,  2,  7, 10,  7,  2,  7, 10,  4,  9,  4, 10 },
0868 /* 134:    1, 2,             7,  */  {  2, 11,  0,  7,  0, 11,  0,  7,  9,  6,  9,  7,  9,  6, 10 },
0869 /*  42:    1,    3,    5,        */  {  5,  2,  1,  2,  5, 11,  4, 11,  5, 11,  4,  3,  0,  3,  4 },
0870 /* 138:    1,    3,          7,  */  {  7,  0,  3,  0,  7,  9,  6,  9,  7,  9,  6,  1,  2,  1,  6 },
0871 /* 146:    1,       4,       7,  */  {  6,  9,  4,  9,  6,  1, 11,  1,  6,  1, 11,  0,  8,  0, 11 },
0872 /* 162:    1,          5,    7,  */  {  5,  6,  1, 11,  1,  6,  1, 11,  0,  7,  0, 11,  0,  7,  4 },
0873 /* 194:    1,             6, 7,  */  {  5,  9,  7,  0,  7,  9,  7,  0, 11,  1, 11,  0, 11,  1, 10 },
0874 /*  28:       2, 3, 4,           */  {  3,  8,  1,  4,  1,  8,  1,  4, 10,  7, 10,  4, 10,  7, 11 },
0875 /*  44:       2, 3,    5,        */  {  3,  9,  1,  9,  3,  4, 11,  4,  3,  4, 11,  5, 10,  5, 11 },
0876 /*  52:       2,    4, 5,        */  {  7, 10,  5, 10,  7,  2,  8,  2,  7,  2,  8,  1,  9,  1,  8 },
0877 /*  84:       2,    4,    6,     */  {  6,  7,  2,  8,  2,  7,  2,  8,  1,  4,  1,  8,  1,  4,  5 },
0878 /* 148:       2,    4,       7,  */  {  6, 10,  4,  1,  4, 10,  4,  1,  8,  2,  8,  1,  8,  2, 11 },
0879 /*  56:          3, 4, 5,        */  {  7, 11,  5,  2,  5, 11,  5,  2,  9,  3,  9,  2,  9,  3,  8 },
0880 /* 104:          3,    5, 6,     */  {  4, 11,  6, 11,  4,  3,  9,  3,  4,  3,  9,  2, 10,  2,  9 },
0881 /* 168:          3,    5,    7,  */  {  7,  4,  3,  9,  3,  4,  3,  9,  2,  5,  2,  9,  2,  5,  6 },
0882 /*  87: 0, 1, 2,    4,    6,     */  {  3,  4,  7,  4,  3,  9,  2,  9,  3,  9,  2,  5,  6,  5,  2 },
0883 /* 151: 0, 1, 2,    4,       7,  */  {  6, 11,  4,  3,  4, 11,  4,  3,  9,  2,  9,  3,  9,  2, 10 },
0884 /* 199: 0, 1, 2,          6, 7,  */  {  5, 11,  7, 11,  5,  2,  9,  2,  5,  2,  9,  3,  8,  3,  9 },
0885 /* 107: 0, 1,    3,    5, 6,     */  {  4, 10,  6, 10,  4,  1,  8,  1,  4,  1,  8,  2, 11,  2,  8 },
0886 /* 171: 0, 1,    3,    5,    7,  */  {  2,  7,  6,  7,  2,  8,  1,  8,  2,  8,  1,  4,  5,  4,  1 },
0887 /* 203: 0, 1,    3,       6, 7,  */  {  5, 10,  7,  2,  7, 10,  7,  2,  8,  1,  8,  2,  8,  1,  9 },
0888 /* 211: 0, 1,       4,    6, 7,  */  {  1,  9,  3,  4,  3,  9,  3,  4, 11,  5, 11,  4, 11,  5, 10 },
0889 /* 227: 0, 1,          5, 6, 7,  */  {  1,  8,  3,  8,  1,  4, 10,  4,  1,  4, 10,  7, 11,  7, 10 },
0890 /*  61: 0,    2, 3, 4, 5,        */  {  7,  9,  5,  9,  7,  0, 11,  0,  7,  0, 11,  1, 10,  1, 11 },
0891 /*  93: 0,    2, 3, 4,    6,     */  {  1,  6,  5,  6,  1, 11,  0, 11,  1, 11,  0,  7,  4,  7,  0 },
0892 /* 109: 0,    2, 3,    5, 6,     */  {  4,  9,  6,  1,  6,  9,  6,  1, 11,  0, 11,  1, 11,  0,  8 },
0893 /* 117: 0,    2,    4, 5, 6,     */  {  3,  0,  7,  9,  7,  0,  7,  9,  6,  1,  6,  9,  6,  1,  2 },
0894 /* 213: 0,    2,    4,    6, 7,  */  {  1,  2,  5, 11,  5,  2,  5, 11,  4,  3,  4, 11,  4,  3,  0 },
0895 /* 121: 0,       3, 4, 5, 6,     */  {  0, 11,  2, 11,  0,  7,  9,  7,  0,  7,  9,  6, 10,  6,  9 },
0896 /* 233: 0,       3,    5, 6, 7,  */  {  0,  8,  2,  7,  2,  8,  2,  7, 10,  4, 10,  7, 10,  4,  9 },
0897 /*  62:    1, 2, 3, 4, 5,        */  {  7,  8,  5,  0,  5,  8,  5,  0, 10,  3, 10,  0, 10,  3, 11 },
0898 /* 158:    1, 2, 3, 4,       7,  */  {  6,  8,  4,  8,  6,  3, 10,  3,  6,  3, 10,  0,  9,  0, 10 },
0899 /* 174:    1, 2, 3,    5,    7,  */  {  0,  5,  4,  5,  0, 10,  3, 10,  0, 10,  3,  6,  7,  6,  3 },
0900 /* 182:    1, 2,    4, 5,    7,  */  {  2, 10,  0,  5,  0, 10,  0,  5,  8,  6,  8,  5,  8,  6, 11 },
0901 /* 214:    1, 2,    4,    6, 7,  */  {  2,  9,  0,  9,  2,  5, 11,  5,  2,  5, 11,  4,  8,  4, 11 },
0902 /* 186:    1,    3, 4, 5,    7,  */  {  2,  3,  6,  8,  6,  3,  6,  8,  5,  0,  5,  8,  5,  0,  1 },
0903 /* 234:    1,    3,    5, 6, 7,  */  {  0,  1,  4, 10,  4,  1,  4, 10,  7,  2,  7, 10,  7,  2,  3 },
0904 /* 124:       2, 3, 4, 5, 6,     */  {  3, 11,  1,  6,  1, 11,  1,  6,  9,  7,  9,  6,  9,  7,  8 },
0905 /* 188:       2, 3, 4, 5,    7,  */  {  3, 10,  1, 10,  3,  6,  8,  6,  3,  6,  8,  5,  9,  5,  8 }
0906 };
0907 //_____________________________________________________________________________
0908 
0909 
0910 
0911 //_____________________________________________________________________________
0912 /**
0913  * \brief test table for case 7
0914  * 3 faces to test + eventually the interior
0915  * When the tests on the 3 specified faces are positive :
0916  * - if the test on the interior is positive : 5 first triangles
0917  * - if the test on the interior is negative : 9 next triangles
0918  * When the tests on the first  and the second specified faces are positive : 9 next triangles
0919  * When the tests on the first  and the third  specified faces are positive : 9 next triangles
0920  * When the tests on the second and the third  specified faces are positive : 9 next triangles
0921  * When the test on the first  specified face is positive : 5 next triangles
0922  * When the test on the second specified face is positive : 5 next triangles
0923  * When the test on the third  specified face is positive : 5 next triangles
0924  * When the tests on the 3 specified faces are negative : 3 last triangles
0925  * The support edge for the interior test is marked as the 5th column.
0926  *
0927  * For each of the case above, the specific triangulation of the edge
0928  * intersection points is given.
0929  * When a case is ambiguous, there is an auxiliary table that contains
0930  * the face number to test and the tiling table contains the specific
0931  * triangulations depending on the results
0932  * A minus sign means to invert the result of the test.
0933  */
0934 //-----------------------------------------------------------------------------
0935 static const int test7[16][5] = {
0936 /*  37: 0,    2,       5,        */  {  1,  2,  5,  7,   1 },
0937 /* 133: 0,    2,             7,  */  {  3,  4,  5,  7,   3 },
0938 /* 161: 0,             5,    7,  */  {  4,  1,  6,  7,   4 },
0939 /*  26:    1,    3, 4,           */  {  4,  1,  5,  7,   0 },
0940 /*  74:    1,    3,       6,     */  {  2,  3,  5,  7,   2 },
0941 /*  82:    1,       4,    6,     */  {  1,  2,  6,  7,   5 },
0942 /* 164:       2,       5,    7,  */  {  2,  3,  6,  7,   6 },
0943 /*  88:          3, 4,    6,     */  {  3,  4,  6,  7,   7 },
0944 /* 167: 0, 1, 2,       5,    7,  */  { -3, -4, -6, -7,   7 },
0945 /*  91: 0, 1,    3, 4,    6,     */  { -2, -3, -6, -7,   6 },
0946 /* 173: 0,    2, 3,    5,    7,  */  { -1, -2, -6, -7,   5 },
0947 /* 181: 0,    2,    4, 5,    7,  */  { -2, -3, -5, -7,   2 },
0948 /* 229: 0,    2,       5, 6, 7,  */  { -4, -1, -5, -7,   0 },
0949 /*  94:    1, 2, 3, 4,    6,     */  { -4, -1, -6, -7,   4 },
0950 /* 122:    1,    3, 4, 5, 6,     */  { -3, -4, -5, -7,   3 },
0951 /* 218:    1,    3, 4,    6, 7,  */  { -1, -2, -5, -7,   1 }
0952 };
0953 
0954 //_____________________________________________________________________________
0955 /**
0956  * \brief tiling table for case 7.1
0957  * For each of the case above, the specific triangulation of the edge
0958  * intersection points is given.
0959  * When a case is ambiguous, there is an auxiliary table that contains
0960  * the face number to test and the tiling table contains the specific
0961  * triangulations depending on the results
0962  * A minus sign means to invert the result of the test.
0963  */
0964 //-----------------------------------------------------------------------------
0965 static const int tiling7_1[16][9] = {
0966 /*  37: 0,    2,       5,        */  {  9,  5,  4, 10,  1,  2,  8,  3,  0 },
0967 /* 133: 0,    2,             7,  */  { 11,  7,  6,  8,  3,  0, 10,  1,  2 },
0968 /* 161: 0,             5,    7,  */  {  3,  0,  8,  5,  4,  9,  7,  6, 11 },
0969 /*  26:    1,    3, 4,           */  {  8,  4,  7,  9,  0,  1, 11,  2,  3 },
0970 /*  74:    1,    3,       6,     */  { 10,  6,  5, 11,  2,  3,  9,  0,  1 },
0971 /*  82:    1,       4,    6,     */  {  0,  1,  9,  6,  5, 10,  4,  7,  8 },
0972 /* 164:       2,       5,    7,  */  {  1,  2, 10,  7,  6, 11,  5,  4,  9 },
0973 /*  88:          3, 4,    6,     */  {  2,  3, 11,  4,  7,  8,  6,  5, 10 },
0974 /* 167: 0, 1, 2,       5,    7,  */  { 11,  3,  2,  8,  7,  4, 10,  5,  6 },
0975 /*  91: 0, 1,    3, 4,    6,     */  { 10,  2,  1, 11,  6,  7,  9,  4,  5 },
0976 /* 173: 0,    2, 3,    5,    7,  */  {  9,  1,  0, 10,  5,  6,  8,  7,  4 },
0977 /* 181: 0,    2,    4, 5,    7,  */  {  5,  6, 10,  3,  2, 11,  1,  0,  9 },
0978 /* 229: 0,    2,       5, 6, 7,  */  {  7,  4,  8,  1,  0,  9,  3,  2, 11 },
0979 /*  94:    1, 2, 3, 4,    6,     */  {  8,  0,  3,  9,  4,  5, 11,  6,  7 },
0980 /* 122:    1,    3, 4, 5, 6,     */  {  6,  7, 11,  0,  3,  8,  2,  1, 10 },
0981 /* 218:    1,    3, 4,    6, 7,  */  {  4,  5,  9,  2,  1, 10,  0,  3,  8 }
0982 };
0983 
0984 //_____________________________________________________________________________
0985 /**
0986  * \brief tiling table for case 7.2
0987  * For each of the case above, the specific triangulation of the edge
0988  * intersection points is given.
0989  * When a case is ambiguous, there is an auxiliary table that contains
0990  * the face number to test and the tiling table contains the specific
0991  * triangulations depending on the results
0992  * A minus sign means to invert the result of the test.
0993  */
0994 //-----------------------------------------------------------------------------
0995 static const int tiling7_2[16][3][15] = {
0996 /*  37: 0,    2,       5,        */  {
0997  /* 1,0 */ {  1,  2, 10,  3,  4,  8,  4,  3,  5,  0,  5,  3,  5,  0,  9 },
0998  /* 0,1 */ {  3,  0,  8,  9,  1,  4,  2,  4,  1,  4,  2,  5, 10,  5,  2 },
0999  /* 1,1 */ {  9,  5,  4,  0, 10,  1, 10,  0,  8, 10,  8,  2,  3,  2,  8 }
1000 },
1001 /* 133: 0,    2,             7,  */  {
1002  /* 1,0 */ {  3,  0,  8,  1,  6, 10,  6,  1,  7,  2,  7,  1,  7,  2, 11 },
1003  /* 0,1 */ {  1,  2, 10, 11,  3,  6,  0,  6,  3,  6,  0,  7,  8,  7,  0 },
1004  /* 1,1 */ { 11,  7,  6,  2,  8,  3,  8,  2, 10,  8, 10,  0,  1,  0, 10 }
1005 },
1006 /* 161: 0,             5,    7,  */  {
1007  /* 1,0 */ {  9,  5,  4, 11,  3,  6,  0,  6,  3,  6,  0,  7,  8,  7,  0 },
1008  /* 0,1 */ { 11,  7,  6,  3,  4,  8,  4,  3,  5,  0,  5,  3,  5,  0,  9 },
1009  /* 1,1 */ {  3,  0,  8,  4,  9,  7, 11,  7,  9,  5, 11,  9, 11,  5,  6 }
1010 },
1011 /*  26:    1,    3, 4,           */  {
1012  /* 1,0 */ {  0,  1,  9,  2,  7, 11,  7,  2,  4,  3,  4,  2,  4,  3,  8 },
1013  /* 0,1 */ {  2,  3, 11,  8,  0,  7,  1,  7,  0,  7,  1,  4,  9,  4,  1 },
1014  /* 1,1 */ {  8,  4,  7,  3,  9,  0,  9,  3, 11,  9, 11,  1,  2,  1, 11 }
1015 },
1016 /*  74:    1,    3,       6,     */  {
1017  /* 1,0 */ {  2,  3, 11,  0,  5,  9,  5,  0,  6,  1,  6,  0,  6,  1, 10 },
1018  /* 0,1 */ {  0,  1,  9, 10,  2,  5,  3,  5,  2,  5,  3,  6, 11,  6,  3 },
1019  /* 1,1 */ {  6,  5, 10,  1, 11,  2, 11,  1,  9, 11,  9,  3,  0,  3,  9 }
1020 },
1021 /*  82:    1,       4,    6,     */  {
1022  /* 1,0 */ {  6,  5, 10,  8,  0,  7,  1,  7,  0,  7,  1,  4,  9,  4,  1 },
1023  /* 0,1 */ {  8,  4,  7,  0,  5,  9,  5,  0,  6,  1,  6,  0,  6,  1, 10 },
1024  /* 1,1 */ {  0,  1,  9,  5, 10,  4,  8,  4, 10,  6,  8, 10,  8,  6,  7 }
1025 },
1026 /* 164:       2,       5,    7,  */  {
1027  /* 1,0 */ { 11,  7,  6,  9,  1,  4,  2,  4,  1,  4,  2,  5, 10,  5,  2 },
1028  /* 0,1 */ {  9,  5,  4,  1,  6, 10,  6,  1,  7,  2,  7,  1,  7,  2, 11 },
1029  /* 1,1 */ {  1,  2, 10,  6, 11,  5,  9,  5, 11,  7,  9, 11,  9,  7,  4 }
1030 },
1031 /*  88:          3, 4,    6,     */  {
1032  /* 1,0 */ {  8,  4,  7, 10,  2,  5,  3,  5,  2,  5,  3,  6, 11,  6,  3 },
1033  /* 0,1 */ {  6,  5, 10,  2,  7, 11,  7,  2,  4,  3,  4,  2,  4,  3,  8 },
1034  /* 1,1 */ {  2,  3, 11,  7,  8,  6, 10,  6,  8,  4, 10,  8, 10,  4,  5 }
1035 },
1036 /* 167: 0, 1, 2,       5,    7,  */  {
1037  /* 1,0 */ {  7,  4,  8,  5,  2, 10,  2,  5,  3,  6,  3,  5,  3,  6, 11 },
1038  /* 0,1 */ { 10,  5,  6, 11,  7,  2,  4,  2,  7,  2,  4,  3,  8,  3,  4 },
1039  /* 1,1 */ { 11,  3,  2,  6,  8,  7,  8,  6, 10,  8, 10,  4,  5,  4, 10 }
1040 },
1041 /*  91: 0, 1,    3, 4,    6,     */  {
1042  /* 1,0 */ {  6,  7, 11,  4,  1,  9,  1,  4,  2,  5,  2,  4,  2,  5, 10 },
1043  /* 0,1 */ {  4,  5,  9, 10,  6,  1,  7,  1,  6,  1,  7,  2, 11,  2,  7 },
1044  /* 1,1 */ { 10,  2,  1,  5, 11,  6, 11,  5,  9, 11,  9,  7,  4,  7,  9 }
1045 },
1046 /* 173: 0,    2, 3,    5,    7,  */  {
1047  /* 1,0 */ { 10,  5,  6,  7,  0,  8,  0,  7,  1,  4,  1,  7,  1,  4,  9 },
1048  /* 0,1 */ {  7,  4,  8,  9,  5,  0,  6,  0,  5,  0,  6,  1, 10,  1,  6 },
1049  /* 1,1 */ {  9,  1,  0,  4, 10,  5, 10,  4,  8, 10,  8,  6,  7,  6,  8 }
1050 },
1051 /* 181: 0,    2,    4, 5,    7,  */  {
1052  /* 1,0 */ { 11,  3,  2,  9,  5,  0,  6,  0,  5,  0,  6,  1, 10,  1,  6 },
1053  /* 0,1 */ {  9,  1,  0,  5,  2, 10,  2,  5,  3,  6,  3,  5,  3,  6, 11 },
1054  /* 1,1 */ { 10,  5,  6,  2, 11,  1,  9,  1, 11,  3,  9, 11,  9,  3,  0 }
1055 },
1056 /* 229: 0,    2,       5, 6, 7,  */  {
1057  /* 1,0 */ {  9,  1,  0, 11,  7,  2,  4,  2,  7,  2,  4,  3,  8,  3,  4 },
1058  /* 0,1 */ { 11,  3,  2,  7,  0,  8,  0,  7,  1,  4,  1,  7,  1,  4,  9 },
1059  /* 1,1 */ {  7,  4,  8,  0,  9,  3, 11,  3,  9,  1, 11,  9, 11,  1,  2 }
1060 },
1061 /*  94:    1, 2, 3, 4,    6,     */  {
1062  /* 1,0 */ {  4,  5,  9,  6,  3, 11,  3,  6,  0,  7,  0,  6,  0,  7,  8 },
1063  /* 0,1 */ {  6,  7, 11,  8,  4,  3,  5,  3,  4,  3,  5,  0,  9,  0,  5 },
1064  /* 1,1 */ {  8,  0,  3,  7,  9,  4,  9,  7, 11,  9, 11,  5,  6,  5, 11 }
1065 },
1066 /* 122:    1,    3, 4, 5, 6,     */  {
1067  /* 1,0 */ {  8,  0,  3, 10,  6,  1,  7,  1,  6,  1,  7,  2, 11,  2,  7 },
1068  /* 0,1 */ { 10,  2,  1,  6,  3, 11,  3,  6,  0,  7,  0,  6,  0,  7,  8 },
1069  /* 1,1 */ {  6,  7, 11,  3,  8,  2, 10,  2,  8,  0, 10,  8, 10,  0,  1 }
1070 },
1071 /* 218:    1,    3, 4,    6, 7,  */  {
1072  /* 1,0 */ { 10,  2,  1,  8,  4,  3,  5,  3,  4,  3,  5,  0,  9,  0,  5 },
1073  /* 0,1 */ {  8,  0,  3,  4,  1,  9,  1,  4,  2,  5,  2,  4,  2,  5, 10 },
1074  /* 1,1 */ {  4,  5,  9,  1, 10,  0,  8,  0, 10,  2,  8, 10,  8,  2,  3 } }
1075 };
1076 
1077 //_____________________________________________________________________________
1078 /**
1079  * \brief tiling table for case 7.3
1080  * For each of the case above, the specific triangulation of the edge
1081  * intersection points is given.
1082  * When a case is ambiguous, there is an auxiliary table that contains
1083  * the face number to test and the tiling table contains the specific
1084  * triangulations depending on the results
1085  * A minus sign means to invert the result of the test.
1086  */
1087 //-----------------------------------------------------------------------------
1088 static const int tiling7_3[16][3][27] = {
1089 /*  37: 0,    2,       5,        */  {
1090  /* 1,0 */ { 12,  2, 10, 12, 10,  5, 12,  5,  4, 12,  4,  8, 12,  8,  3, 12,  3,  0, 12,  0,  9, 12,  9,  1, 12,  1,  2 },
1091  /* 0,1 */ { 12,  5,  4, 12,  4,  8, 12,  8,  3, 12,  3,  2, 12,  2, 10, 12, 10,  1, 12,  1,  0, 12,  0,  9, 12,  9,  5 },
1092  /* 1,1 */ {  5,  4, 12, 10,  5, 12,  2, 10, 12,  3,  2, 12,  8,  3, 12,  0,  8, 12,  1,  0, 12,  9,  1, 12,  4,  9, 12 }
1093 },
1094 /* 133: 0,    2,             7,  */  {
1095  /* 1,0 */ { 12,  0,  8, 12,  8,  7, 12,  7,  6, 12,  6, 10, 12, 10,  1, 12,  1,  2, 12,  2, 11, 12, 11,  3, 12,  3,  0 },
1096  /* 0,1 */ { 12,  7,  6, 12,  6, 10, 12, 10,  1, 12,  1,  0, 12,  0,  8, 12,  8,  3, 12,  3,  2, 12,  2, 11, 12, 11,  7 },
1097  /* 1,1 */ {  7,  6, 12,  8,  7, 12,  0,  8, 12,  1,  0, 12, 10,  1, 12,  2, 10, 12,  3,  2, 12, 11,  3, 12,  6, 11, 12 }
1098 },
1099 /* 161: 0,             5,    7,  */  {
1100  /* 1,0 */ {  9,  5, 12,  0,  9, 12,  3,  0, 12, 11,  3, 12,  6, 11, 12,  7,  6, 12,  8,  7, 12,  4,  8, 12,  5,  4, 12 },
1101  /* 0,1 */ {  3,  0, 12, 11,  3, 12,  6, 11, 12,  5,  6, 12,  9,  5, 12,  4,  9, 12,  7,  4, 12,  8,  7, 12,  0,  8, 12 },
1102  /* 1,1 */ { 12,  3,  0, 12,  0,  9, 12,  9,  5, 12,  5,  6, 12,  6, 11, 12, 11,  7, 12,  7,  4, 12,  4,  8, 12,  8,  3 }
1103 },
1104 /*  26:    1,    3, 4,           */  {
1105  /* 1,0 */ { 12,  1,  9, 12,  9,  4, 12,  4,  7, 12,  7, 11, 12, 11,  2, 12,  2,  3, 12,  3,  8, 12,  8,  0, 12,  0,  1 },
1106  /* 0,1 */ { 12,  4,  7, 12,  7, 11, 12, 11,  2, 12,  2,  1, 12,  1,  9, 12,  9,  0, 12,  0,  3, 12,  3,  8, 12,  8,  4 },
1107  /* 1,1 */ {  4,  7, 12,  9,  4, 12,  1,  9, 12,  2,  1, 12, 11,  2, 12,  3, 11, 12,  0,  3, 12,  8,  0, 12,  7,  8, 12 }
1108 },
1109 /*  74:    1,    3,       6,     */  {
1110  /* 1,0 */ { 12,  3, 11, 12, 11,  6, 12,  6,  5, 12,  5,  9, 12,  9,  0, 12,  0,  1, 12,  1, 10, 12, 10,  2, 12,  2,  3 },
1111  /* 0,1 */ { 12,  6,  5, 12,  5,  9, 12,  9,  0, 12,  0,  3, 12,  3, 11, 12, 11,  2, 12,  2,  1, 12,  1, 10, 12, 10,  6 },
1112  /* 1,1 */ {  6,  5, 12, 11,  6, 12,  3, 11, 12,  0,  3, 12,  9,  0, 12,  1,  9, 12,  2,  1, 12, 10,  2, 12,  5, 10, 12 }
1113 },
1114 /*  82:    1,       4,    6,     */  {
1115  /* 1,0 */ { 10,  6, 12,  1, 10, 12,  0,  1, 12,  8,  0, 12,  7,  8, 12,  4,  7, 12,  9,  4, 12,  5,  9, 12,  6,  5, 12 },
1116  /* 0,1 */ {  0,  1, 12,  8,  0, 12,  7,  8, 12,  6,  7, 12, 10,  6, 12,  5, 10, 12,  4,  5, 12,  9,  4, 12,  1,  9, 12 },
1117  /* 1,1 */ { 12,  0,  1, 12,  1, 10, 12, 10,  6, 12,  6,  7, 12,  7,  8, 12,  8,  4, 12,  4,  5, 12,  5,  9, 12,  9,  0 }
1118 },
1119 /* 164:       2,       5,    7,  */  {
1120  /* 1,0 */ { 11,  7, 12,  2, 11, 12,  1,  2, 12,  9,  1, 12,  4,  9, 12,  5,  4, 12, 10,  5, 12,  6, 10, 12,  7,  6, 12 },
1121  /* 0,1 */ {  1,  2, 12,  9,  1, 12,  4,  9, 12,  7,  4, 12, 11,  7, 12,  6, 11, 12,  5,  6, 12, 10,  5, 12,  2, 10, 12 },
1122  /* 1,1 */ { 12,  1,  2, 12,  2, 11, 12, 11,  7, 12,  7,  4, 12,  4,  9, 12,  9,  5, 12,  5,  6, 12,  6, 10, 12, 10,  1 }
1123 },
1124 /*  88:          3, 4,    6,     */  {
1125  /* 1,0 */ {  8,  4, 12,  3,  8, 12,  2,  3, 12, 10,  2, 12,  5, 10, 12,  6,  5, 12, 11,  6, 12,  7, 11, 12,  4,  7, 12 },
1126  /* 0,1 */ {  2,  3, 12, 10,  2, 12,  5, 10, 12,  4,  5, 12,  8,  4, 12,  7,  8, 12,  6,  7, 12, 11,  6, 12,  3, 11, 12 },
1127  /* 1,1 */ { 12,  2,  3, 12,  3,  8, 12,  8,  4, 12,  4,  5, 12,  5, 10, 12, 10,  6, 12,  6,  7, 12,  7, 11, 12, 11,  2 }
1128 },
1129 /* 167: 0, 1, 2,       5,    7,  */  {
1130  /* 1,0 */ { 12,  4,  8, 12,  8,  3, 12,  3,  2, 12,  2, 10, 12, 10,  5, 12,  5,  6, 12,  6, 11, 12, 11,  7, 12,  7,  4 },
1131  /* 0,1 */ { 12,  3,  2, 12,  2, 10, 12, 10,  5, 12,  5,  4, 12,  4,  8, 12,  8,  7, 12,  7,  6, 12,  6, 11, 12, 11,  3 },
1132  /* 1,1 */ {  3,  2, 12,  8,  3, 12,  4,  8, 12,  5,  4, 12, 10,  5, 12,  6, 10, 12,  7,  6, 12, 11,  7, 12,  2, 11, 12 }
1133 },
1134 /*  91: 0, 1,    3, 4,    6,     */  {
1135  /* 1,0 */ { 12,  7, 11, 12, 11,  2, 12,  2,  1, 12,  1,  9, 12,  9,  4, 12,  4,  5, 12,  5, 10, 12, 10,  6, 12,  6,  7 },
1136  /* 0,1 */ { 12,  2,  1, 12,  1,  9, 12,  9,  4, 12,  4,  7, 12,  7, 11, 12, 11,  6, 12,  6,  5, 12,  5, 10, 12, 10,  2 },
1137  /* 1,1 */ {  2,  1, 12, 11,  2, 12,  7, 11, 12,  4,  7, 12,  9,  4, 12,  5,  9, 12,  6,  5, 12, 10,  6, 12,  1, 10, 12 }
1138 },
1139 /* 173: 0,    2, 3,    5,    7,  */  {
1140  /* 1,0 */ { 12,  6, 10, 12, 10,  1, 12,  1,  0, 12,  0,  8, 12,  8,  7, 12,  7,  4, 12,  4,  9, 12,  9,  5, 12,  5,  6 },
1141  /* 0,1 */ { 12,  1,  0, 12,  0,  8, 12,  8,  7, 12,  7,  6, 12,  6, 10, 12, 10,  5, 12,  5,  4, 12,  4,  9, 12,  9,  1 },
1142  /* 1,1 */ {  1,  0, 12, 10,  1, 12,  6, 10, 12,  7,  6, 12,  8,  7, 12,  4,  8, 12,  5,  4, 12,  9,  5, 12,  0,  9, 12 }
1143 },
1144 /* 181: 0,    2,    4, 5,    7,  */  {
1145  /* 1,0 */ { 11,  3, 12,  6, 11, 12,  5,  6, 12,  9,  5, 12,  0,  9, 12,  1,  0, 12, 10,  1, 12,  2, 10, 12,  3,  2, 12 },
1146  /* 0,1 */ {  5,  6, 12,  9,  5, 12,  0,  9, 12,  3,  0, 12, 11,  3, 12,  2, 11, 12,  1,  2, 12, 10,  1, 12,  6, 10, 12 },
1147  /* 1,1 */ { 12,  5,  6, 12,  6, 11, 12, 11,  3, 12,  3,  0, 12,  0,  9, 12,  9,  1, 12,  1,  2, 12,  2, 10, 12, 10,  5 }
1148 },
1149 /* 229: 0,    2,       5, 6, 7,  */  {
1150  /* 1,0 */ {  9,  1, 12,  4,  9, 12,  7,  4, 12, 11,  7, 12,  2, 11, 12,  3,  2, 12,  8,  3, 12,  0,  8, 12,  1,  0, 12 },
1151  /* 0,1 */ {  7,  4, 12, 11,  7, 12,  2, 11, 12,  1,  2, 12,  9,  1, 12,  0,  9, 12,  3,  0, 12,  8,  3, 12,  4,  8, 12 },
1152  /* 1,1 */ { 12,  7,  4, 12,  4,  9, 12,  9,  1, 12,  1,  2, 12,  2, 11, 12, 11,  3, 12,  3,  0, 12,  0,  8, 12,  8,  7 }
1153 },
1154 /*  94:    1, 2, 3, 4,    6,     */  {
1155  /* 1,0 */ { 12,  5,  9, 12,  9,  0, 12,  0,  3, 12,  3, 11, 12, 11,  6, 12,  6,  7, 12,  7,  8, 12,  8,  4, 12,  4,  5 },
1156  /* 0,1 */ { 12,  0,  3, 12,  3, 11, 12, 11,  6, 12,  6,  5, 12,  5,  9, 12,  9,  4, 12,  4,  7, 12,  7,  8, 12,  8,  0 },
1157  /* 1,1 */ {  0,  3, 12,  9,  0, 12,  5,  9, 12,  6,  5, 12, 11,  6, 12,  7, 11, 12,  4,  7, 12,  8,  4, 12,  3,  8, 12 }
1158 },
1159 /* 122:    1,    3, 4, 5, 6,     */  {
1160  /* 1,0 */ {  8,  0, 12,  7,  8, 12,  6,  7, 12, 10,  6, 12,  1, 10, 12,  2,  1, 12, 11,  2, 12,  3, 11, 12,  0,  3, 12 },
1161  /* 0,1 */ {  6,  7, 12, 10,  6, 12,  1, 10, 12,  0,  1, 12,  8,  0, 12,  3,  8, 12,  2,  3, 12, 11,  2, 12,  7, 11, 12 },
1162  /* 1,1 */ { 12,  6,  7, 12,  7,  8, 12,  8,  0, 12,  0,  1, 12,  1, 10, 12, 10,  2, 12,  2,  3, 12,  3, 11, 12, 11,  6 }
1163 },
1164 /* 218:    1,    3, 4,    6, 7,  */  {
1165  /* 1,0 */ { 10,  2, 12,  5, 10, 12,  4,  5, 12,  8,  4, 12,  3,  8, 12,  0,  3, 12,  9,  0, 12,  1,  9, 12,  2,  1, 12 },
1166  /* 0,1 */ {  4,  5, 12,  8,  4, 12,  3,  8, 12,  2,  3, 12, 10,  2, 12,  1, 10, 12,  0,  1, 12,  9,  0, 12,  5,  9, 12 },
1167  /* 1,1 */ { 12,  4,  5, 12,  5, 10, 12, 10,  2, 12,  2,  3, 12,  3,  8, 12,  8,  0, 12,  0,  1, 12,  1,  9, 12,  9,  4 } }
1168 };
1169 
1170 //_____________________________________________________________________________
1171 /**
1172  * \brief tiling table for case 7.4.1
1173  * For each of the case above, the specific triangulation of the edge
1174  * intersection points is given.
1175  * When a case is ambiguous, there is an auxiliary table that contains
1176  * the face number to test and the tiling table contains the specific
1177  * triangulations depending on the results
1178  * A minus sign means to invert the result of the test.
1179  */
1180 //-----------------------------------------------------------------------------
1181 static const int tiling7_4_1[16][15] = {
1182 /*  37: 0,    2,       5,        */  {  3,  4,  8,  4,  3, 10,  2, 10,  3,  4, 10,  5,  9,  1,  0 },
1183 /* 133: 0,    2,             7,  */  {  1,  6, 10,  6,  1,  8,  0,  8,  1,  6,  8,  7, 11,  3,  2 },
1184 /* 161: 0,             5,    7,  */  { 11,  3,  6,  9,  6,  3,  6,  9,  5,  0,  9,  3,  7,  4,  8 },
1185 /*  26:    1,    3, 4,           */  {  2,  7, 11,  7,  2,  9,  1,  9,  2,  7,  9,  4,  8,  0,  3 },
1186 /*  74:    1,    3,       6,     */  {  0,  5,  9,  5,  0, 11,  3, 11,  0,  5, 11,  6, 10,  2,  1 },
1187 /*  82:    1,       4,    6,     */  {  8,  0,  7, 10,  7,  0,  7, 10,  6,  1, 10,  0,  4,  5,  9 },
1188 /* 164:       2,       5,    7,  */  {  9,  1,  4, 11,  4,  1,  4, 11,  7,  2, 11,  1,  5,  6, 10 },
1189 /*  88:          3, 4,    6,     */  { 10,  2,  5,  8,  5,  2,  5,  8,  4,  3,  8,  2,  6,  7, 11 },
1190 /* 167: 0, 1, 2,       5,    7,  */  {  5,  2, 10,  2,  5,  8,  4,  8,  5,  2,  8,  3, 11,  7,  6 },
1191 /*  91: 0, 1,    3, 4,    6,     */  {  4,  1,  9,  1,  4, 11,  7, 11,  4,  1, 11,  2, 10,  6,  5 },
1192 /* 173: 0,    2, 3,    5,    7,  */  {  7,  0,  8,  0,  7, 10,  6, 10,  7,  0, 10,  1,  9,  5,  4 },
1193 /* 181: 0,    2,    4, 5,    7,  */  {  9,  5,  0, 11,  0,  5,  0, 11,  3,  6, 11,  5,  1,  2, 10 },
1194 /* 229: 0,    2,       5, 6, 7,  */  { 11,  7,  2,  9,  2,  7,  2,  9,  1,  4,  9,  7,  3,  0,  8 },
1195 /*  94:    1, 2, 3, 4,    6,     */  {  6,  3, 11,  3,  6,  9,  5,  9,  6,  3,  9,  0,  8,  4,  7 },
1196 /* 122:    1,    3, 4, 5, 6,     */  { 10,  6,  1,  8,  1,  6,  1,  8,  0,  7,  8,  6,  2,  3, 11 },
1197 /* 218:    1,    3, 4,    6, 7,  */  {  8,  4,  3, 10,  3,  4,  3, 10,  2,  5, 10,  4,  0,  1,  9 }
1198 };
1199 
1200 //_____________________________________________________________________________
1201 /**
1202  * \brief tiling table for case 7.4.2
1203  * For each of the case above, the specific triangulation of the edge
1204  * intersection points is given.
1205  * When a case is ambiguous, there is an auxiliary table that contains
1206  * the face number to test and the tiling table contains the specific
1207  * triangulations depending on the results
1208  * A minus sign means to invert the result of the test.
1209  */
1210 //-----------------------------------------------------------------------------
1211 static const int tiling7_4_2[16][27] = {
1212 /*  37: 0,    2,       5,        */  {   9,  4,  8,  4,  9,  5, 10,  5,  9,  1, 10,  9, 10,  1,  2,  0,  2,  1,  2,  0,  3,  8,  3,  0,  9,  8,  0 },
1213 /* 133: 0,    2,             7,  */  {  11,  6, 10,  6, 11,  7,  8,  7, 11,  3,  8, 11,  8,  3,  0,  2,  0,  3,  0,  2,  1, 10,  1,  2, 11, 10,  2 },
1214 /* 161: 0,             5,    7,  */  {  11,  3,  8,  0,  8,  3,  8,  0,  9,  8,  9,  4,  5,  4,  9,  4,  5,  7,  6,  7,  5,  7,  6, 11,  7, 11,  8 },
1215 /*  26:    1,    3, 4,           */  {   8,  7, 11,  7,  8,  4,  9,  4,  8,  0,  9,  8,  9,  0,  1,  3,  1,  0,  1,  3,  2, 11,  2,  3,  8, 11,  3 },
1216 /*  74:    1,    3,       6,     */  {  10,  5,  9,  5, 10,  6, 11,  6, 10,  2, 11, 10, 11,  2,  3,  1,  3,  2,  3,  1,  0,  9,  0,  1, 10,  9,  1 },
1217 /*  82:    1,       4,    6,     */  {   8,  0,  9,  1,  9,  0,  9,  1, 10,  9, 10,  5,  6,  5, 10,  5,  6,  4,  7,  4,  6,  4,  7,  8,  4,  8,  9 },
1218 /* 164:       2,       5,    7,  */  {   9,  1, 10,  2, 10,  1, 10,  2, 11, 10, 11,  6,  7,  6, 11,  6,  7,  5,  4,  5,  7,  5,  4,  9,  5,  9, 10 },
1219 /*  88:          3, 4,    6,     */  {  10,  2, 11,  3, 11,  2, 11,  3,  8, 11,  8,  7,  4,  7,  8,  7,  4,  6,  5,  6,  4,  6,  5, 10,  6, 10, 11 },
1220 /* 167: 0, 1, 2,       5,    7,  */  {  11,  2, 10,  2, 11,  3,  8,  3, 11,  7,  8, 11,  8,  7,  4,  6,  4,  7,  4,  6,  5, 10,  5,  6, 11, 10,  6 },
1221 /*  91: 0, 1,    3, 4,    6,     */  {  10,  1,  9,  1, 10,  2, 11,  2, 10,  6, 11, 10, 11,  6,  7,  5,  7,  6,  7,  5,  4,  9,  4,  5, 10,  9,  5 },
1222 /* 173: 0,    2, 3,    5,    7,  */  {   9,  0,  8,  0,  9,  1, 10,  1,  9,  5, 10,  9, 10,  5,  6,  4,  6,  5,  6,  4,  7,  8,  7,  4,  9,  8,  4 },
1223 /* 181: 0,    2,    4, 5,    7,  */  {   9,  5, 10,  6, 10,  5, 10,  6, 11, 10, 11,  2,  3,  2, 11,  2,  3,  1,  0,  1,  3,  1,  0,  9,  1,  9, 10 },
1224 /* 229: 0,    2,       5, 6, 7,  */  {  11,  7,  8,  4,  8,  7,  8,  4,  9,  8,  9,  0,  1,  0,  9,  0,  1,  3,  2,  3,  1,  3,  2, 11,  3, 11,  8 },
1225 /*  94:    1, 2, 3, 4,    6,     */  {   8,  3, 11,  3,  8,  0,  9,  0,  8,  4,  9,  8,  9,  4,  5,  7,  5,  4,  5,  7,  6, 11,  6,  7,  8, 11,  7 },
1226 /* 122:    1,    3, 4, 5, 6,     */  {  10,  6, 11,  7, 11,  6, 11,  7,  8, 11,  8,  3,  0,  3,  8,  3,  0,  2,  1,  2,  0,  2,  1, 10,  2, 10, 11 },
1227 /* 218:    1,    3, 4,    6, 7,  */  {   8,  4,  9,  5,  9,  4,  9,  5, 10,  9, 10,  1,  2,  1, 10,  1,  2,  0,  3,  0,  2,  0,  3,  8,  0,  8,  9 }
1228 };
1229 //_____________________________________________________________________________
1230 
1231 
1232 //_____________________________________________________________________________
1233 /**
1234  * \brief tiling table for case 8
1235  * For each of the case above, the specific triangulation of the edge
1236  * intersection points is given.
1237  * When a case is ambiguous, there is an auxiliary table that contains
1238  * the face number to test and the tiling table contains the specific
1239  * triangulations depending on the results
1240  * A minus sign means to invert the result of the test.
1241  */
1242 //-----------------------------------------------------------------------------
1243 static const int tiling8[6][6] = {
1244 /*  15: 0, 1, 2, 3,              */  { 9,  8, 10, 10,  8, 11 },
1245 /*  51: 0, 1,       4, 5,        */  { 1,  5,  3,  3,  5,  7 },
1246 /* 153: 0,       3, 4,       7,  */  { 0,  4,  2,  4,  6,  2 },
1247 /* 102:    1, 2,       5, 6,     */  { 0,  2,  4,  4,  2,  6 },
1248 /* 204:       2, 3,       6, 7,  */  { 1,  3,  5,  3,  7,  5 },
1249 /* 240:             4, 5, 6, 7,  */  { 9, 10,  8, 10, 11,  8 }
1250 };
1251 //_____________________________________________________________________________
1252 
1253 
1254 //_____________________________________________________________________________
1255 /**
1256  * \brief tiling table for case 9
1257  * For each of the case above, the specific triangulation of the edge
1258  * intersection points is given.
1259  * When a case is ambiguous, there is an auxiliary table that contains
1260  * the face number to test and the tiling table contains the specific
1261  * triangulations depending on the results
1262  * A minus sign means to invert the result of the test.
1263  */
1264 //-----------------------------------------------------------------------------
1265 static const int tiling9[8][12] = {
1266 /*  39: 0, 1, 2,       5,        */  {  2, 10,  5,  3,  2,  5,  3,  5,  4,  3,  4,  8 },
1267 /*  27: 0, 1,    3, 4,           */  {  4,  7, 11,  9,  4, 11,  9, 11,  2,  9,  2,  1 },
1268 /* 141: 0,    2, 3,          7,  */  { 10,  7,  6,  1,  7, 10,  1,  8,  7,  1,  0,  8 },
1269 /* 177: 0,          4, 5,    7,  */  {  3,  6, 11,  0,  6,  3,  0,  5,  6,  0,  9,  5 },
1270 /*  78:    1, 2, 3,       6,     */  {  3, 11,  6,  0,  3,  6,  0,  6,  5,  0,  5,  9 },
1271 /* 114:    1,       4, 5, 6,     */  { 10,  6,  7,  1, 10,  7,  1,  7,  8,  1,  8,  0 },
1272 /* 228:       2,       5, 6, 7,  */  {  4, 11,  7,  9, 11,  4,  9,  2, 11,  9,  1,  2 },
1273 /* 216:          3, 4,    6, 7,  */  {  2,  5, 10,  3,  5,  2,  3,  4,  5,  3,  8,  4 }
1274 };
1275 //_____________________________________________________________________________
1276 
1277 
1278 
1279 //_____________________________________________________________________________
1280 /**
1281  * \brief test table for case 10
1282  * 2 faces to test + eventually the interior
1283  * When the tests on both specified faces are positive : 4 middle triangles (1)
1284  * When the test on the first  specified face is positive : 8 first triangles
1285  * When the test on the second specified face is positive : 8 next triangles
1286  * When the tests on both specified faces are negative :
1287  * - if the test on the interior is negative : 4 middle triangles
1288  * - if the test on the interior is positive : 8 last triangles
1289  *
1290  * For each of the case above, the specific triangulation of the edge
1291  * intersection points is given.
1292  * When a case is ambiguous, there is an auxiliary table that contains
1293  * the face number to test and the tiling table contains the specific
1294  * triangulations depending on the results
1295  * A minus sign means to invert the result of the test.
1296  */
1297 //-----------------------------------------------------------------------------
1298 static const int test10[6][3] = {
1299 /* 195: 0, 1,             6, 7,  */  {  2,  4,  7 },
1300 /*  85: 0,    2,    4,    6,     */  {  5,  6,  7 },
1301 /* 105: 0,       3,    5, 6,     */  {  1,  3,  7 },
1302 /* 150:    1, 2,    4,       7,  */  {  1,  3,  7 },
1303 /* 170:    1,    3,    5,    7,  */  {  5,  6,  7 },
1304 /*  60:       2, 3, 4, 5,        */  {  2,  4,  7 }
1305 };
1306 
1307 //_____________________________________________________________________________
1308 /**
1309  * \brief tiling table for case 10.1.1
1310  * For each of the case above, the specific triangulation of the edge
1311  * intersection points is given.
1312  * When a case is ambiguous, there is an auxiliary table that contains
1313  * the face number to test and the tiling table contains the specific
1314  * triangulations depending on the results
1315  * A minus sign means to invert the result of the test.
1316  */
1317 //-----------------------------------------------------------------------------
1318 static const int tiling10_1_1[6][12] = {
1319 /* 195: 0, 1,             6, 7,  */  {  5, 10,  7, 11,  7, 10,  8,  1,  9,  1,  8,  3 },
1320 /*  85: 0,    2,    4,    6,     */  {  1,  2,  5,  6,  5,  2,  4,  3,  0,  3,  4,  7 },
1321 /* 105: 0,       3,    5, 6,     */  { 11,  0,  8,  0, 11,  2,  4,  9,  6, 10,  6,  9 },
1322 /* 150:    1, 2,    4,       7,  */  {  9,  0, 10,  2, 10,  0,  6,  8,  4,  8,  6, 11 },
1323 /* 170:    1,    3,    5,    7,  */  {  7,  2,  3,  2,  7,  6,  0,  1,  4,  5,  4,  1 },
1324 /*  60:       2, 3, 4, 5,        */  {  7,  9,  5,  9,  7,  8, 10,  1, 11,  3, 11,  1 }
1325 };
1326 
1327 //_____________________________________________________________________________
1328 /**
1329  * \brief tiling table for case 10.1.1 inverted
1330  * For each of the case above, the specific triangulation of the edge
1331  * intersection points is given.
1332  * When a case is ambiguous, there is an auxiliary table that contains
1333  * the face number to test and the tiling table contains the specific
1334  * triangulations depending on the results
1335  * A minus sign means to invert the result of the test.
1336  */
1337 //-----------------------------------------------------------------------------
1338 static const int tiling10_1_1_[6][12] = {
1339 /* 195: 0, 1,             6, 7,  */  {  5,  9,  7,  8,  7,  9, 11,  1, 10,  1, 11,  3 },
1340 /*  85: 0,    2,    4,    6,     */  {  3,  2,  7,  6,  7,  2,  4,  1,  0,  1,  4,  5 },
1341 /* 105: 0,       3,    5, 6,     */  { 10,  0,  9,  0, 10,  2,  4,  8,  6, 11,  6,  8 },
1342 /* 150:    1, 2,    4,       7,  */  {  8,  0, 11,  2, 11,  0,  6,  9,  4,  9,  6, 10 },
1343 /* 170:    1,    3,    5,    7,  */  {  5,  2,  1,  2,  5,  6,  0,  3,  4,  7,  4,  3 },
1344 /*  60:       2, 3, 4, 5,        */  {  7, 10,  5, 10,  7, 11,  9,  1,  8,  3,  8,  1 }
1345 };
1346 
1347 //_____________________________________________________________________________
1348 /**
1349  * \brief tiling table for case 10.1.2
1350  * For each of the case above, the specific triangulation of the edge
1351  * intersection points is given.
1352  * When a case is ambiguous, there is an auxiliary table that contains
1353  * the face number to test and the tiling table contains the specific
1354  * triangulations depending on the results
1355  * A minus sign means to invert the result of the test.
1356  */
1357 //-----------------------------------------------------------------------------
1358 static const int tiling10_1_2[6][24] = {
1359 /* 195: 0, 1,             6, 7,  */  {  3, 11,  7,  3,  7,  8,  9,  8,  7,  5,  9,  7,  9,  5, 10,  9, 10,  1,  3,  1, 10, 11,  3, 10 },
1360 /*  85: 0,    2,    4,    6,     */  {  7,  6,  5,  7,  5,  4,  0,  4,  5,  1,  0,  5,  0,  1,  2,  0,  2,  3,  7,  3,  2,  6,  7,  2 },
1361 /* 105: 0,       3,    5, 6,     */  { 11,  2, 10,  6, 11, 10, 11,  6,  4, 11,  4,  8,  0,  8,  4,  9,  0,  4,  0,  9, 10,  0, 10,  2 },
1362 /* 150:    1, 2,    4,       7,  */  { 11,  2, 10, 11, 10,  6,  4,  6, 10,  9,  4, 10,  4,  9,  0,  4,  0,  8, 11,  8,  0,  2, 11,  0 },
1363 /* 170:    1,    3,    5,    7,  */  {  7,  6,  5,  4,  7,  5,  7,  4,  0,  7,  0,  3,  2,  3,  0,  1,  2,  0,  2,  1,  5,  2,  5,  6 },
1364 /*  60:       2, 3, 4, 5,        */  {  7,  8,  3, 11,  7,  3,  7, 11, 10,  7, 10,  5,  9,  5, 10,  1,  9, 10,  9,  1,  3,  9,  3,  8 }
1365 };
1366 
1367 //_____________________________________________________________________________
1368 /**
1369  * \brief tiling table for case 10.2
1370  * For each of the case above, the specific triangulation of the edge
1371  * intersection points is given.
1372  * When a case is ambiguous, there is an auxiliary table that contains
1373  * the face number to test and the tiling table contains the specific
1374  * triangulations depending on the results
1375  * A minus sign means to invert the result of the test.
1376  */
1377 //-----------------------------------------------------------------------------
1378 static const int tiling10_2[6][24] = {
1379 /* 195: 0, 1,             6, 7,  */  { 12,  5,  9, 12,  9,  8, 12,  8,  3, 12,  3,  1, 12,  1, 10, 12, 10, 11, 12, 11,  7, 12,  7,  5 },
1380 /*  85: 0,    2,    4,    6,     */  { 12,  1,  0, 12,  0,  4, 12,  4,  7, 12,  7,  3, 12,  3,  2, 12,  2,  6, 12,  6,  5, 12,  5,  1 },
1381 /* 105: 0,       3,    5, 6,     */  {  4,  8, 12,  6,  4, 12, 10,  6, 12,  9, 10, 12,  0,  9, 12,  2,  0, 12, 11,  2, 12,  8, 11, 12 },
1382 /* 150:    1, 2,    4,       7,  */  { 12,  9,  4, 12,  4,  6, 12,  6, 11, 12, 11,  8, 12,  8,  0, 12,  0,  2, 12,  2, 10, 12, 10,  9 },
1383 /* 170:    1,    3,    5,    7,  */  {  0,  3, 12,  4,  0, 12,  5,  4, 12,  1,  5, 12,  2,  1, 12,  6,  2, 12,  7,  6, 12,  3,  7, 12 },
1384 /*  60:       2, 3, 4, 5,        */  { 10,  5, 12, 11, 10, 12,  3, 11, 12,  1,  3, 12,  9,  1, 12,  8,  9, 12,  7,  8, 12,  5,  7, 12 }
1385 };
1386 
1387 //_____________________________________________________________________________
1388 /**
1389  * \brief tiling table for case 10.2 inverted
1390  * For each of the case above, the specific triangulation of the edge
1391  * intersection points is given.
1392  * When a case is ambiguous, there is an auxiliary table that contains
1393  * the face number to test and the tiling table contains the specific
1394  * triangulations depending on the results
1395  * A minus sign means to invert the result of the test.
1396  */
1397 //-----------------------------------------------------------------------------
1398 static const int tiling10_2_[6][24] = {
1399 /* 195: 0, 1,             6, 7,  */  {  8,  7, 12,  9,  8, 12,  1,  9, 12,  3,  1, 12, 11,  3, 12, 10, 11, 12,  5, 10, 12,  7,  5, 12 },
1400 /*  85: 0,    2,    4,    6,     */  {  4,  5, 12,  0,  4, 12,  3,  0, 12,  7,  3, 12,  6,  7, 12,  2,  6, 12,  1,  2, 12,  5,  1, 12 },
1401 /* 105: 0,       3,    5, 6,     */  { 12, 11,  6, 12,  6,  4, 12,  4,  9, 12,  9, 10, 12, 10,  2, 12,  2,  0, 12,  0,  8, 12,  8, 11 },
1402 /* 150:    1, 2,    4,       7,  */  {  6, 10, 12,  4,  6, 12,  8,  4, 12, 11,  8, 12,  2, 11, 12,  0,  2, 12,  9,  0, 12, 10,  9, 12 },
1403 /* 170:    1,    3,    5,    7,  */  { 12,  7,  4, 12,  4,  0, 12,  0,  1, 12,  1,  5, 12,  5,  6, 12,  6,  2, 12,  2,  3, 12,  3,  7 },
1404 /*  60:       2, 3, 4, 5,        */  { 12,  7, 11, 12, 11, 10, 12, 10,  1, 12,  1,  3, 12,  3,  8, 12,  8,  9, 12,  9,  5, 12,  5,  7 }
1405 };
1406 //_____________________________________________________________________________
1407 
1408 
1409 //_____________________________________________________________________________
1410 /**
1411  * \brief tiling table for case 11
1412  * For each of the case above, the specific triangulation of the edge
1413  * intersection points is given.
1414  * When a case is ambiguous, there is an auxiliary table that contains
1415  * the face number to test and the tiling table contains the specific
1416  * triangulations depending on the results
1417  * A minus sign means to invert the result of the test.
1418  */
1419 //-----------------------------------------------------------------------------
1420 static const int tiling11[12][12] = {
1421 /*  23: 0, 1, 2,    4,           */  { 2, 10,  9,  2,  9,  7,  2,  7,  3,  7,  9,  4 },
1422 /* 139: 0, 1,    3,          7,  */  { 1,  6,  2,  1,  8,  6,  1,  9,  8,  8,  7,  6 },
1423 /*  99: 0, 1,          5, 6,     */  { 8,  3,  1,  8,  1,  6,  8,  6,  4,  6,  1, 10 },
1424 /*  77: 0,    2, 3,       6,     */  { 0,  8, 11,  0, 11,  5,  0,  5,  1,  5, 11,  6 },
1425 /*  57: 0,       3, 4, 5,        */  { 9,  5,  7,  9,  7,  2,  9,  2,  0,  2,  7, 11 },
1426 /* 209: 0,          4,    6, 7,  */  { 5,  0,  4,  5, 11,  0,  5, 10, 11, 11,  3,  0 },
1427 /*  46:    1, 2, 3,    5,        */  { 5,  4,  0,  5,  0, 11,  5, 11, 10, 11,  0,  3 },
1428 /* 198:    1, 2,          6, 7,  */  { 9,  7,  5,  9,  2,  7,  9,  0,  2,  2, 11,  7 },
1429 /* 178:    1,       4, 5,    7,  */  { 0, 11,  8,  0,  5, 11,  0,  1,  5,  5,  6, 11 },
1430 /* 156:       2, 3, 4,       7,  */  { 8,  1,  3,  8,  6,  1,  8,  4,  6,  6, 10,  1 },
1431 /* 116:       2,    4, 5, 6,     */  { 1,  2,  6,  1,  6,  8,  1,  8,  9,  8,  6,  7 },
1432 /* 232:          3,    5, 6, 7,  */  { 2,  9, 10,  2,  7,  9,  2,  3,  7,  7,  4,  9 }
1433 };
1434 //_____________________________________________________________________________
1435 
1436 
1437 //_____________________________________________________________________________
1438 /**
1439  * \brief test table for case 12
1440  * 2 faces to test + eventually the interior
1441  * When the tests on both specified faces are positive : 4 middle triangles (1)
1442  * When the test on the first  specified face is positive : 8 first triangles
1443  * When the test on the second specified face is positive : 8 next triangles
1444  * When the tests on both specified faces are negative :
1445  * - if the test on the interior is negative : 4 middle triangles
1446  * - if the test on the interior is positive : 8 last triangles
1447  * The support edge for the interior test is marked as the 4th column.
1448  *
1449  * For each of the case above, the specific triangulation of the edge
1450  * intersection points is given.
1451  * When a case is ambiguous, there is an auxiliary table that contains
1452  * the face number to test and the tiling table contains the specific
1453  * triangulations depending on the results
1454  * A minus sign means to invert the result of the test.
1455  */
1456 //-----------------------------------------------------------------------------
1457 static const int test12[24][4] = {
1458 /* 135: 0, 1, 2,             7,  */  {  4,  3,  7,  11 },
1459 /*  75: 0, 1,    3,       6,     */  {  3,  2,  7,  10 },
1460 /*  83: 0, 1,       4,    6,     */  {  2,  6,  7,   5 },
1461 /* 163: 0, 1,          5,    7,  */  {  6,  4,  7,   7 },
1462 /*  45: 0,    2, 3,    5,        */  {  2,  1,  7,   9 },
1463 /*  53: 0,    2,    4, 5,        */  {  5,  2,  7,   1 },
1464 /* 149: 0,    2,    4,       7,  */  {  5,  3,  7,   2 },
1465 /* 101: 0,    2,       5, 6,     */  {  5,  1,  7,   0 },
1466 /* 197: 0,    2,          6, 7,  */  {  5,  4,  7,   3 },
1467 /*  89: 0,       3, 4,    6,     */  {  6,  3,  7,   6 },
1468 /* 169: 0,       3,    5,    7,  */  {  1,  6,  7,   4 },
1469 /* 225: 0,             5, 6, 7,  */  {  1,  4,  7,   8 },
1470 /*  30:    1, 2, 3, 4,           */  {  4,  1,  7,   8 },
1471 /*  86:    1, 2,    4,    6,     */  {  6,  1,  7,   4 },
1472 /* 166:    1, 2,       5,    7,  */  {  3,  6,  7,   6 },
1473 /*  58:    1,    3, 4, 5,        */  {  4,  5,  7,   3 },
1474 /* 154:    1,    3, 4,       7,  */  {  1,  5,  7,   0 },
1475 /* 106:    1,    3,    5, 6,     */  {  3,  5,  7,   2 },
1476 /* 202:    1,    3,       6, 7,  */  {  2,  5,  7,   1 },
1477 /* 210:    1,       4,    6, 7,  */  {  1,  2,  7,   9 },
1478 /*  92:       2, 3, 4,    6,     */  {  4,  6,  7,   7 },
1479 /* 172:       2, 3,    5,    7,  */  {  6,  2,  7,   5 },
1480 /* 180:       2,    4, 5,    7,  */  {  2,  3,  7,  10 },
1481 /* 120:          3, 4, 5, 6,     */  {  3,  4,  7,  11 }
1482 };
1483 
1484 //_____________________________________________________________________________
1485 /**
1486  * \brief tiling table for case 12.1.1
1487  * For each of the case above, the specific triangulation of the edge
1488  * intersection points is given.
1489  * When a case is ambiguous, there is an auxiliary table that contains
1490  * the face number to test and the tiling table contains the specific
1491  * triangulations depending on the results
1492  * A minus sign means to invert the result of the test.
1493  */
1494 //-----------------------------------------------------------------------------
1495 static const int tiling12_1_1[24][12] = {
1496 /* 135: 0, 1, 2,             7,  */  {  7,  6, 11, 10,  3,  2,  3, 10,  8,  9,  8, 10 },
1497 /*  75: 0, 1,    3,       6,     */  {  6,  5, 10,  9,  2,  1,  2,  9, 11,  8, 11,  9 },
1498 /*  83: 0, 1,       4,    6,     */  { 10,  6,  5,  7,  9,  4,  9,  7,  1,  3,  1,  7 },
1499 /* 163: 0, 1,          5,    7,  */  {  7,  6, 11,  4,  8,  5,  3,  5,  8,  5,  3,  1 },
1500 /*  45: 0,    2, 3,    5,        */  {  5,  4,  9,  8,  1,  0,  1,  8, 10, 11, 10,  8 },
1501 /*  53: 0,    2,    4, 5,        */  {  1,  2, 10,  0,  9,  3,  5,  3,  9,  3,  5,  7 },
1502 /* 149: 0,    2,    4,       7,  */  { 10,  1,  2,  0, 11,  3, 11,  0,  6,  4,  6,  0 },
1503 /* 101: 0,    2,       5, 6,     */  {  8,  3,  0,  2,  9,  1,  9,  2,  4,  6,  4,  2 },
1504 /* 197: 0,    2,          6, 7,  */  {  3,  0,  8,  2, 11,  1,  7,  1, 11,  1,  7,  5 },
1505 /*  89: 0,       3, 4,    6,     */  {  6,  5, 10,  7, 11,  4,  2,  4, 11,  4,  2,  0 },
1506 /* 169: 0,       3,    5,    7,  */  {  9,  5,  4,  6,  8,  7,  8,  6,  0,  2,  0,  6 },
1507 /* 225: 0,             5, 6, 7,  */  {  8,  3,  0,  7,  4, 11,  9, 11,  4, 11,  9, 10 },
1508 /*  30:    1, 2, 3, 4,           */  {  4,  7,  8, 11,  0,  3,  0, 11,  9, 10,  9, 11 },
1509 /*  86:    1, 2,    4,    6,     */  {  4,  7,  8,  5,  9,  6,  0,  6,  9,  6,  0,  2 },
1510 /* 166:    1, 2,       5,    7,  */  { 11,  7,  6,  4, 10,  5, 10,  4,  2,  0,  2,  4 },
1511 /*  58:    1,    3, 4, 5,        */  { 11,  2,  3,  1,  8,  0,  8,  1,  7,  5,  7,  1 },
1512 /* 154:    1,    3, 4,       7,  */  {  0,  1,  9,  3,  8,  2,  4,  2,  8,  2,  4,  6 },
1513 /* 106:    1,    3,    5, 6,     */  {  2,  3, 11,  1, 10,  0,  6,  0, 10,  0,  6,  4 },
1514 /* 202:    1,    3,       6, 7,  */  {  9,  0,  1,  3, 10,  2, 10,  3,  5,  7,  5,  3 },
1515 /* 210:    1,       4,    6, 7,  */  {  9,  0,  1,  4,  5,  8, 10,  8,  5,  8, 10, 11 },
1516 /*  92:       2, 3, 4,    6,     */  {  8,  4,  7,  5, 11,  6, 11,  5,  3,  1,  3,  5 },
1517 /* 172:       2, 3,    5,    7,  */  {  5,  4,  9,  6, 10,  7,  1,  7, 10,  7,  1,  3 },
1518 /* 180:       2,    4, 5,    7,  */  { 10,  1,  2,  5,  6,  9, 11,  9,  6,  9, 11,  8 },
1519 /* 120:          3, 4, 5, 6,     */  { 11,  2,  3,  6,  7, 10,  8, 10,  7, 10,  8,  9 }
1520 };
1521 
1522 //_____________________________________________________________________________
1523 /**
1524  * \brief tiling table for case 12.1.1 inverted
1525  * For each of the case above, the specific triangulation of the edge
1526  * intersection points is given.
1527  * When a case is ambiguous, there is an auxiliary table that contains
1528  * the face number to test and the tiling table contains the specific
1529  * triangulations depending on the results
1530  * A minus sign means to invert the result of the test.
1531  */
1532 //-----------------------------------------------------------------------------
1533 static const int tiling12_1_1_[24][12] = {
1534 /* 135: 0, 1, 2,             7,  */  {  3,  2, 11, 10,  7,  6,  7, 10,  8,  9,  8, 10 },
1535 /*  75: 0, 1,    3,       6,     */  {  2,  1, 10,  9,  6,  5,  6,  9, 11,  8, 11,  9 },
1536 /*  83: 0, 1,       4,    6,     */  {  9,  4,  5,  7, 10,  6, 10,  7,  1,  3,  1,  7 },
1537 /* 163: 0, 1,          5,    7,  */  {  7,  4,  8,  6, 11,  5,  3,  5, 11,  5,  3,  1 },
1538 /*  45: 0,    2, 3,    5,        */  {  1,  0,  9,  8,  5,  4,  5,  8, 10, 11, 10,  8 },
1539 /*  53: 0,    2,    4, 5,        */  {  1,  0,  9,  2, 10,  3,  5,  3, 10,  3,  5,  7 },
1540 /* 149: 0,    2,    4,       7,  */  { 11,  3,  2,  0, 10,  1, 10,  0,  6,  4,  6,  0 },
1541 /* 101: 0,    2,       5, 6,     */  {  9,  1,  0,  2,  8,  3,  8,  2,  4,  6,  4,  2 },
1542 /* 197: 0,    2,          6, 7,  */  {  3,  2, 11,  0,  8,  1,  7,  1,  8,  1,  7,  5 },
1543 /*  89: 0,       3, 4,    6,     */  {  6,  7, 11,  5, 10,  4,  2,  4, 10,  4,  2,  0 },
1544 /* 169: 0,       3,    5,    7,  */  {  8,  7,  4,  6,  9,  5,  9,  6,  0,  2,  0,  6 },
1545 /* 225: 0,             5, 6, 7,  */  {  8,  7,  4,  3,  0, 11,  9, 11,  0, 11,  9, 10 },
1546 /*  30:    1, 2, 3, 4,           */  {  0,  3,  8, 11,  4,  7,  4, 11,  9, 10,  9, 11 },
1547 /*  86:    1, 2,    4,    6,     */  {  4,  5,  9,  7,  8,  6,  0,  6,  8,  6,  0,  2 },
1548 /* 166:    1, 2,       5,    7,  */  { 10,  5,  6,  4, 11,  7, 11,  4,  2,  0,  2,  4 },
1549 /*  58:    1,    3, 4, 5,        */  {  8,  0,  3,  1, 11,  2, 11,  1,  7,  5,  7,  1 },
1550 /* 154:    1,    3, 4,       7,  */  {  0,  3,  8,  1,  9,  2,  4,  2,  9,  2,  4,  6 },
1551 /* 106:    1,    3,    5, 6,     */  {  2,  1, 10,  3, 11,  0,  6,  0, 11,  0,  6,  4 },
1552 /* 202:    1,    3,       6, 7,  */  { 10,  2,  1,  3,  9,  0,  9,  3,  5,  7,  5,  3 },
1553 /* 210:    1,       4,    6, 7,  */  {  9,  4,  5,  0,  1,  8, 10,  8,  1,  8, 10, 11 },
1554 /*  92:       2, 3, 4,    6,     */  { 11,  6,  7,  5,  8,  4,  8,  5,  3,  1,  3,  5 },
1555 /* 172:       2, 3,    5,    7,  */  {  5,  6, 10,  4,  9,  7,  1,  7,  9,  7,  1,  3 },
1556 /* 180:       2,    4, 5,    7,  */  { 10,  5,  6,  1,  2,  9, 11,  9,  2,  9, 11,  8 },
1557 /* 120:          3, 4, 5, 6,     */  { 11,  6,  7,  2,  3, 10,  8, 10,  3, 10,  8,  9 }
1558 };
1559 
1560 //_____________________________________________________________________________
1561 /**
1562  * \brief tiling table for case 12.1.2
1563  * For each of the case above, the specific triangulation of the edge
1564  * intersection points is given.
1565  * When a case is ambiguous, there is an auxiliary table that contains
1566  * the face number to test and the tiling table contains the specific
1567  * triangulations depending on the results
1568  * A minus sign means to invert the result of the test.
1569  */
1570 //-----------------------------------------------------------------------------
1571 static const int tiling12_1_2[24][24] = {
1572 /* 135: 0, 1, 2,             7,  */  {  7,  3, 11,  3,  7,  8,  9,  8,  7,  6,  9,  7,  9,  6, 10,  2, 10,  6, 11,  2,  6,  2, 11,  3 },
1573 /*  75: 0, 1,    3,       6,     */  {  6,  2, 10,  2,  6, 11,  8, 11,  6,  5,  8,  6,  8,  5,  9,  1,  9,  5, 10,  1,  5,  1, 10,  2 },
1574 /*  83: 0, 1,       4,    6,     */  { 10,  9,  5,  9, 10,  1,  3,  1, 10,  6,  3, 10,  3,  6,  7,  4,  7,  6,  5,  4,  6,  4,  5,  9 },
1575 /* 163: 0, 1,          5,    7,  */  {  7,  8, 11,  3, 11,  8, 11,  3,  1, 11,  1,  6,  5,  6,  1,  6,  5,  4,  6,  4,  7,  8,  7,  4 },
1576 /*  45: 0,    2, 3,    5,        */  {  5,  1,  9,  1,  5, 10, 11, 10,  5,  4, 11,  5, 11,  4,  8,  0,  8,  4,  9,  0,  4,  0,  9,  1 },
1577 /*  53: 0,    2,    4, 5,        */  {  1,  9, 10,  5, 10,  9, 10,  5,  7, 10,  7,  2,  3,  2,  7,  2,  3,  0,  2,  0,  1,  9,  1,  0 },
1578 /* 149: 0,    2,    4,       7,  */  { 10, 11,  2, 11, 10,  6,  4,  6, 10,  1,  4, 10,  4,  1,  0,  3,  0,  1,  2,  3,  1,  3,  2, 11 },
1579 /* 101: 0,    2,       5, 6,     */  {  8,  9,  0,  9,  8,  4,  6,  4,  8,  3,  6,  8,  6,  3,  2,  1,  2,  3,  0,  1,  3,  1,  0,  9 },
1580 /* 197: 0,    2,          6, 7,  */  {  3, 11,  8,  7,  8, 11,  8,  7,  5,  8,  5,  0,  1,  0,  5,  0,  1,  2,  0,  2,  3, 11,  3,  2 },
1581 /*  89: 0,       3, 4,    6,     */  {  6, 11, 10,  2, 10, 11, 10,  2,  0, 10,  0,  5,  4,  5,  0,  5,  4,  7,  5,  7,  6, 11,  6,  7 },
1582 /* 169: 0,       3,    5,    7,  */  {  9,  8,  4,  8,  9,  0,  2,  0,  9,  5,  2,  9,  2,  5,  6,  7,  6,  5,  4,  7,  5,  7,  4,  8 },
1583 /* 225: 0,             5, 6, 7,  */  {  8,  4,  0,  9,  0,  4,  0,  9, 10,  0, 10,  3, 11,  3, 10,  3, 11,  7,  3,  7,  8,  4,  8,  7 },
1584 /*  30:    1, 2, 3, 4,           */  {  4,  0,  8,  0,  4,  9, 10,  9,  4,  7, 10,  4, 10,  7, 11,  3, 11,  7,  8,  3,  7,  3,  8,  0 },
1585 /*  86:    1, 2,    4,    6,     */  {  4,  9,  8,  0,  8,  9,  8,  0,  2,  8,  2,  7,  6,  7,  2,  7,  6,  5,  7,  5,  4,  9,  4,  5 },
1586 /* 166:    1, 2,       5,    7,  */  { 11, 10,  6, 10, 11,  2,  0,  2, 11,  7,  0, 11,  0,  7,  4,  5,  4,  7,  6,  5,  7,  5,  6, 10 },
1587 /*  58:    1,    3, 4, 5,        */  { 11,  8,  3,  8, 11,  7,  5,  7, 11,  2,  5, 11,  5,  2,  1,  0,  1,  2,  3,  0,  2,  0,  3,  8 },
1588 /* 154:    1,    3, 4,       7,  */  {  0,  8,  9,  4,  9,  8,  9,  4,  6,  9,  6,  1,  2,  1,  6,  1,  2,  3,  1,  3,  0,  8,  0,  3 },
1589 /* 106:    1,    3,    5, 6,     */  {  2, 10, 11,  6, 11, 10, 11,  6,  4, 11,  4,  3,  0,  3,  4,  3,  0,  1,  3,  1,  2, 10,  2,  1 },
1590 /* 202:    1,    3,       6, 7,  */  {  9, 10,  1, 10,  9,  5,  7,  5,  9,  0,  7,  9,  7,  0,  3,  2,  3,  0,  1,  2,  0,  2,  1, 10 },
1591 /* 210:    1,       4,    6, 7,  */  {  9,  5,  1, 10,  1,  5,  1, 10, 11,  1, 11,  0,  8,  0, 11,  0,  8,  4,  0,  4,  9,  5,  9,  4 },
1592 /*  92:       2, 3, 4,    6,     */  {  8, 11,  7, 11,  8,  3,  1,  3,  8,  4,  1,  8,  1,  4,  5,  6,  5,  4,  7,  6,  4,  6,  7, 11 },
1593 /* 172:       2, 3,    5,    7,  */  {  5, 10,  9,  1,  9, 10,  9,  1,  3,  9,  3,  4,  7,  4,  3,  4,  7,  6,  4,  6,  5, 10,  5,  6 },
1594 /* 180:       2,    4, 5,    7,  */  { 10,  6,  2, 11,  2,  6,  2, 11,  8,  2,  8,  1,  9,  1,  8,  1,  9,  5,  1,  5, 10,  6, 10,  5 },
1595 /* 120:          3, 4, 5, 6,     */  { 11,  7,  3,  8,  3,  7,  3,  8,  9,  3,  9,  2, 10,  2,  9,  2, 10,  6,  2,  6, 11,  7, 11,  6 }
1596 };
1597 
1598 //_____________________________________________________________________________
1599 /**
1600  * \brief tiling table for case 12.2
1601  * For each of the case above, the specific triangulation of the edge
1602  * intersection points is given.
1603  * When a case is ambiguous, there is an auxiliary table that contains
1604  * the face number to test and the tiling table contains the specific
1605  * triangulations depending on the results
1606  * A minus sign means to invert the result of the test.
1607  */
1608 //-----------------------------------------------------------------------------
1609 static const int tiling12_2[24][24] = {
1610 /* 135: 0, 1, 2,             7,  */  {   9,  8, 12, 10,  9, 12,  2, 10, 12,  3,  2, 12, 11,  3, 12,  6, 11, 12,  7,  6, 12,  8,  7, 12 },
1611 /*  75: 0, 1,    3,       6,     */  {   8, 11, 12,  9,  8, 12,  1,  9, 12,  2,  1, 12, 10,  2, 12,  5, 10, 12,  6,  5, 12, 11,  6, 12 },
1612 /*  83: 0, 1,       4,    6,     */  {   3,  1, 12,  7,  3, 12,  4,  7, 12,  9,  4, 12,  5,  9, 12,  6,  5, 12, 10,  6, 12,  1, 10, 12 },
1613 /* 163: 0, 1,          5,    7,  */  {  12,  3,  1, 12,  1,  5, 12,  5,  6, 12,  6, 11, 12, 11,  7, 12,  7,  4, 12,  4,  8, 12,  8,  3 },
1614 /*  45: 0,    2, 3,    5,        */  {  11, 10, 12,  8, 11, 12,  0,  8, 12,  1,  0, 12,  9,  1, 12,  4,  9, 12,  5,  4, 12, 10,  5, 12 },
1615 /*  53: 0,    2,    4, 5,        */  {  12,  5,  7, 12,  7,  3, 12,  3,  2, 12,  2, 10, 12, 10,  1, 12,  1,  0, 12,  0,  9, 12,  9,  5 },
1616 /* 149: 0,    2,    4,       7,  */  {   4,  6, 12,  0,  4, 12,  1,  0, 12, 10,  1, 12,  2, 10, 12,  3,  2, 12, 11,  3, 12,  6, 11, 12 },
1617 /* 101: 0,    2,       5, 6,     */  {   6,  4, 12,  2,  6, 12,  3,  2, 12,  8,  3, 12,  0,  8, 12,  1,  0, 12,  9,  1, 12,  4,  9, 12 },
1618 /* 197: 0,    2,          6, 7,  */  {  12,  7,  5, 12,  5,  1, 12,  1,  0, 12,  0,  8, 12,  8,  3, 12,  3,  2, 12,  2, 11, 12, 11,  7 },
1619 /*  89: 0,       3, 4,    6,     */  {  12,  2,  0, 12,  0,  4, 12,  4,  5, 12,  5, 10, 12, 10,  6, 12,  6,  7, 12,  7, 11, 12, 11,  2 },
1620 /* 169: 0,       3,    5,    7,  */  {   2,  0, 12,  6,  2, 12,  7,  6, 12,  8,  7, 12,  4,  8, 12,  5,  4, 12,  9,  5, 12,  0,  9, 12 },
1621 /* 225: 0,             5, 6, 7,  */  {  12,  9, 10, 12, 10, 11, 12, 11,  7, 12,  7,  4, 12,  4,  8, 12,  8,  3, 12,  3,  0, 12,  0,  9 },
1622 /*  30:    1, 2, 3, 4,           */  {  10,  9, 12, 11, 10, 12,  7, 11, 12,  4,  7, 12,  8,  4, 12,  3,  8, 12,  0,  3, 12,  9,  0, 12 },
1623 /*  86:    1, 2,    4,    6,     */  {  12,  0,  2, 12,  2,  6, 12,  6,  7, 12,  7,  8, 12,  8,  4, 12,  4,  5, 12,  5,  9, 12,  9,  0 },
1624 /* 166:    1, 2,       5,    7,  */  {   0,  2, 12,  4,  0, 12,  5,  4, 12, 10,  5, 12,  6, 10, 12,  7,  6, 12, 11,  7, 12,  2, 11, 12 },
1625 /*  58:    1,    3, 4, 5,        */  {   5,  7, 12,  1,  5, 12,  0,  1, 12,  8,  0, 12,  3,  8, 12,  2,  3, 12, 11,  2, 12,  7, 11, 12 },
1626 /* 154:    1,    3, 4,       7,  */  {  12,  4,  6, 12,  6,  2, 12,  2,  3, 12,  3,  8, 12,  8,  0, 12,  0,  1, 12,  1,  9, 12,  9,  4 },
1627 /* 106:    1,    3,    5, 6,     */  {  12,  6,  4, 12,  4,  0, 12,  0,  1, 12,  1, 10, 12, 10,  2, 12,  2,  3, 12,  3, 11, 12, 11,  6 },
1628 /* 202:    1,    3,       6, 7,  */  {   7,  5, 12,  3,  7, 12,  2,  3, 12, 10,  2, 12,  1, 10, 12,  0,  1, 12,  9,  0, 12,  5,  9, 12 },
1629 /* 210:    1,       4,    6, 7,  */  {  12, 10, 11, 12, 11,  8, 12,  8,  0, 12,  0,  1, 12,  1,  9, 12,  9,  4, 12,  4,  5, 12,  5, 10 },
1630 /*  92:       2, 3, 4,    6,     */  {   1,  3, 12,  5,  1, 12,  6,  5, 12, 11,  6, 12,  7, 11, 12,  4,  7, 12,  8,  4, 12,  3,  8, 12 },
1631 /* 172:       2, 3,    5,    7,  */  {  12,  1,  3, 12,  3,  7, 12,  7,  4, 12,  4,  9, 12,  9,  5, 12,  5,  6, 12,  6, 10, 12, 10,  1 },
1632 /* 180:       2,    4, 5,    7,  */  {  12, 11,  8, 12,  8,  9, 12,  9,  1, 12,  1,  2, 12,  2, 10, 12, 10,  5, 12,  5,  6, 12,  6, 11 },
1633 /* 120:          3, 4, 5, 6,     */  {  12,  8,  9, 12,  9, 10, 12, 10,  2, 12,  2,  3, 12,  3, 11, 12, 11,  6, 12,  6,  7, 12,  7,  8 }
1634 };
1635 
1636 //_____________________________________________________________________________
1637 /**
1638  * \brief tiling table for case 12.2 inverted
1639  * For each of the case above, the specific triangulation of the edge
1640  * intersection points is given.
1641  * When a case is ambiguous, there is an auxiliary table that contains
1642  * the face number to test and the tiling table contains the specific
1643  * triangulations depending on the results
1644  * A minus sign means to invert the result of the test.
1645  */
1646 //-----------------------------------------------------------------------------
1647 static const int tiling12_2_[24][24] = {
1648 /* 135: 0, 1, 2,             7,  */  { 12,  2, 11, 12, 11,  7, 12,  7,  6, 12,  6, 10, 12, 10,  9, 12,  9,  8, 12,  8,  3, 12,  3,  2 },
1649 /*  75: 0, 1,    3,       6,     */  { 12,  1, 10, 12, 10,  6, 12,  6,  5, 12,  5,  9, 12,  9,  8, 12,  8, 11, 12, 11,  2, 12,  2,  1 },
1650 /*  83: 0, 1,       4,    6,     */  { 12,  4,  5, 12,  5, 10, 12, 10,  6, 12,  6,  7, 12,  7,  3, 12,  3,  1, 12,  1,  9, 12,  9,  4 },
1651 /* 163: 0, 1,          5,    7,  */  {  7,  6, 12,  8,  7, 12,  4,  8, 12,  5,  4, 12,  1,  5, 12,  3,  1, 12, 11,  3, 12,  6, 11, 12 },
1652 /*  45: 0,    2, 3,    5,        */  { 12,  0,  9, 12,  9,  5, 12,  5,  4, 12,  4,  8, 12,  8, 11, 12, 11, 10, 12, 10,  1, 12,  1,  0 },
1653 /*  53: 0,    2,    4, 5,        */  {  1,  2, 12,  9,  1, 12,  0,  9, 12,  3,  0, 12,  7,  3, 12,  5,  7, 12, 10,  5, 12,  2, 10, 12 },
1654 /* 149: 0,    2,    4,       7,  */  { 12,  1,  2, 12,  2, 11, 12, 11,  3, 12,  3,  0, 12,  0,  4, 12,  4,  6, 12,  6, 10, 12, 10,  1 },
1655 /* 101: 0,    2,       5, 6,     */  { 12,  3,  0, 12,  0,  9, 12,  9,  1, 12,  1,  2, 12,  2,  6, 12,  6,  4, 12,  4,  8, 12,  8,  3 },
1656 /* 197: 0,    2,          6, 7,  */  {  3,  0, 12, 11,  3, 12,  2, 11, 12,  1,  2, 12,  5,  1, 12,  7,  5, 12,  8,  7, 12,  0,  8, 12 },
1657 /*  89: 0,       3, 4,    6,     */  {  6,  5, 12, 11,  6, 12,  7, 11, 12,  4,  7, 12,  0,  4, 12,  2,  0, 12, 10,  2, 12,  5, 10, 12 },
1658 /* 169: 0,       3,    5,    7,  */  { 12,  7,  4, 12,  4,  9, 12,  9,  5, 12,  5,  6, 12,  6,  2, 12,  2,  0, 12,  0,  8, 12,  8,  7 },
1659 /* 225: 0,             5, 6, 7,  */  {  8,  7, 12,  0,  8, 12,  3,  0, 12, 11,  3, 12, 10, 11, 12,  9, 10, 12,  4,  9, 12,  7,  4, 12 },
1660 /*  30:    1, 2, 3, 4,           */  { 12,  7,  8, 12,  8,  0, 12,  0,  3, 12,  3, 11, 12, 11, 10, 12, 10,  9, 12,  9,  4, 12,  4,  7 },
1661 /*  86:    1, 2,    4,    6,     */  {  4,  7, 12,  9,  4, 12,  5,  9, 12,  6,  5, 12,  2,  6, 12,  0,  2, 12,  8,  0, 12,  7,  8, 12 },
1662 /* 166:    1, 2,       5,    7,  */  { 12,  5,  6, 12,  6, 11, 12, 11,  7, 12,  7,  4, 12,  4,  0, 12,  0,  2, 12,  2, 10, 12, 10,  5 },
1663 /*  58:    1,    3, 4, 5,        */  { 12,  0,  3, 12,  3, 11, 12, 11,  2, 12,  2,  1, 12,  1,  5, 12,  5,  7, 12,  7,  8, 12,  8,  0 },
1664 /* 154:    1,    3, 4,       7,  */  {  0,  3, 12,  9,  0, 12,  1,  9, 12,  2,  1, 12,  6,  2, 12,  4,  6, 12,  8,  4, 12,  3,  8, 12 },
1665 /* 106:    1,    3,    5, 6,     */  {  2,  1, 12, 11,  2, 12,  3, 11, 12,  0,  3, 12,  4,  0, 12,  6,  4, 12, 10,  6, 12,  1, 10, 12 },
1666 /* 202:    1,    3,       6, 7,  */  { 12,  2,  1, 12,  1,  9, 12,  9,  0, 12,  0,  3, 12,  3,  7, 12,  7,  5, 12,  5, 10, 12, 10,  2 },
1667 /* 210:    1,       4,    6, 7,  */  {  9,  0, 12,  5,  9, 12,  4,  5, 12,  8,  4, 12, 11,  8, 12, 10, 11, 12,  1, 10, 12,  0,  1, 12 },
1668 /*  92:       2, 3, 4,    6,     */  { 12,  6,  7, 12,  7,  8, 12,  8,  4, 12,  4,  5, 12,  5,  1, 12,  1,  3, 12,  3, 11, 12, 11,  6 },
1669 /* 172:       2, 3,    5,    7,  */  {  5,  4, 12, 10,  5, 12,  6, 10, 12,  7,  6, 12,  3,  7, 12,  1,  3, 12,  9,  1, 12,  4,  9, 12 },
1670 /* 180:       2,    4, 5,    7,  */  { 10,  1, 12,  6, 10, 12,  5,  6, 12,  9,  5, 12,  8,  9, 12, 11,  8, 12,  2, 11, 12,  1,  2, 12 },
1671 /* 120:          3, 4, 5, 6,     */  { 11,  2, 12,  7, 11, 12,  6,  7, 12, 10,  6, 12,  9, 10, 12,  8,  9, 12,  3,  8, 12,  2,  3, 12 }
1672 };
1673 //_____________________________________________________________________________
1674 
1675 
1676 
1677 //_____________________________________________________________________________
1678 /**
1679  * \brief test table for case 13
1680  * All faces are to be tested
1681  *
1682  * For each of the case above, the specific triangulation of the edge
1683  * intersection points is given.
1684  * When a case is ambiguous, there is an auxiliary table that contains
1685  * the face number to test and the tiling table contains the specific
1686  * triangulations depending on the results
1687  * A minus sign means to invert the result of the test.
1688  */
1689 //-----------------------------------------------------------------------------
1690 /* 13: face test */
1691 static const int test13[2][7] = {
1692 /* 165: 0,    2,       5,    7,  */  { 1,2,3,4,5,6,7 },
1693 /*  90:    1,    3, 4,    6,     */  { 2,3,4,1,5,6,7 },
1694 };
1695 
1696 
1697 
1698 //_____________________________________________________________________________
1699 /**
1700  * \brief subconfiguration table for case 13
1701  * Hard-coded tests for the subconfiguration determination
1702  *
1703  * For each of the case above, the specific triangulation of the edge
1704  * intersection points is given.
1705  * When a case is ambiguous, there is an auxiliary table that contains
1706  * the face number to test and the tiling table contains the specific
1707  * triangulations depending on the results
1708  * A minus sign means to invert the result of the test.
1709  */
1710 //-----------------------------------------------------------------------------
1711 /* 13: sub configs */
1712 static const int subconfig13[64] = {
1713 /*  0: 0,0,0,0,0,0 */   0,
1714 /*  1: 1,0,0,0,0,0 */   1,
1715 /*  2: 0,1,0,0,0,0 */   2,
1716 /*  3: 1,1,0,0,0,0 */   7,
1717 /*  4: 0,0,1,0,0,0 */   3,
1718 /*  5: 1,0,1,0,0,0 */  -1,
1719 /*  6: 0,1,1,0,0,0 */  11,
1720 /*  7: 1,1,1,0,0,0 */  -1,
1721 /*  8: 0,0,0,1,0,0 */   4,
1722 /*  9: 1,0,0,1,0,0 */   8,
1723 /* 10: 0,1,0,1,0,0 */  -1,
1724 /* 11: 1,1,0,1,0,0 */  -1,
1725 /* 12: 0,0,1,1,0,0 */  14,
1726 /* 13: 1,0,1,1,0,0 */  -1,
1727 /* 14: 0,1,1,1,0,0 */  -1,
1728 /* 15: 1,1,1,1,0,0 */  -1,
1729 /* 16: 0,0,0,0,1,0 */   5,
1730 /* 17: 1,0,0,0,1,0 */   9,
1731 /* 18: 0,1,0,0,1,0 */  12,
1732 /* 19: 1,1,0,0,1,0 */  23,
1733 /* 20: 0,0,1,0,1,0 */  15,
1734 /* 21: 1,0,1,0,1,0 */  -1,
1735 /* 22: 0,1,1,0,1,0 */  21,
1736 /* 23: 1,1,1,0,1,0 */  38,
1737 /* 24: 0,0,0,1,1,0 */  17,
1738 /* 25: 1,0,0,1,1,0 */  20,
1739 /* 26: 0,1,0,1,1,0 */  -1,
1740 /* 27: 1,1,0,1,1,0 */  36,
1741 /* 28: 0,0,1,1,1,0 */  26,
1742 /* 29: 1,0,1,1,1,0 */  33,
1743 /* 30: 0,1,1,1,1,0 */  30,
1744 /* 31: 1,1,1,1,1,0 */  44,
1745 /* 32: 0,0,0,0,0,1 */   6,
1746 /* 33: 1,0,0,0,0,1 */  10,
1747 /* 34: 0,1,0,0,0,1 */  13,
1748 /* 35: 1,1,0,0,0,1 */  19,
1749 /* 36: 0,0,1,0,0,1 */  16,
1750 /* 37: 1,0,1,0,0,1 */  -1,
1751 /* 38: 0,1,1,0,0,1 */  25,
1752 /* 39: 1,1,1,0,0,1 */  37,
1753 /* 40: 0,0,0,1,0,1 */  18,
1754 /* 41: 1,0,0,1,0,1 */  24,
1755 /* 42: 0,1,0,1,0,1 */  -1,
1756 /* 43: 1,1,0,1,0,1 */  35,
1757 /* 44: 0,0,1,1,0,1 */  22,
1758 /* 45: 1,0,1,1,0,1 */  32,
1759 /* 46: 0,1,1,1,0,1 */  29,
1760 /* 47: 1,1,1,1,0,1 */  43,
1761 /* 48: 0,0,0,0,1,1 */  -1,
1762 /* 49: 1,0,0,0,1,1 */  -1,
1763 /* 50: 0,1,0,0,1,1 */  -1,
1764 /* 51: 1,1,0,0,1,1 */  34,
1765 /* 52: 0,0,1,0,1,1 */  -1,
1766 /* 53: 1,0,1,0,1,1 */  -1,
1767 /* 54: 0,1,1,0,1,1 */  28,
1768 /* 55: 1,1,1,0,1,1 */  42,
1769 /* 56: 0,0,0,1,1,1 */  -1,
1770 /* 57: 1,0,0,1,1,1 */  31,
1771 /* 58: 0,1,0,1,1,1 */  -1,
1772 /* 59: 1,1,0,1,1,1 */  41,
1773 /* 60: 0,0,1,1,1,1 */  27,
1774 /* 61: 1,0,1,1,1,1 */  40,
1775 /* 62: 0,1,1,1,1,1 */  39,
1776 /* 63: 1,1,1,1,1,1 */  45,
1777 };
1778 
1779 
1780 //_____________________________________________________________________________
1781 /**
1782  * \brief tiling table for case 13.1
1783  * For each of the case above, the specific triangulation of the edge
1784  * intersection points is given.
1785  * When a case is ambiguous, there is an auxiliary table that contains
1786  * the face number to test and the tiling table contains the specific
1787  * triangulations depending on the results
1788  * A minus sign means to invert the result of the test.
1789  */
1790 //-----------------------------------------------------------------------------
1791 /* 13.1 */
1792 static const int tiling13_1[2][12] = {
1793 /* 165: 0,    2,       5,    7,  */  { 11,  7,  6,  1,  2, 10,  8,  3,  0,  9,  5, 4 },
1794 /*  90:    1,    3, 4,    6,     */  {  8,  4,  7,  2,  3, 11,  9,  0,  1, 10,  6, 5 }
1795 };
1796 
1797 //_____________________________________________________________________________
1798 /**
1799  * \brief tiling table for case 13.1 inverted
1800  * For each of the case above, the specific triangulation of the edge
1801  * intersection points is given.
1802  * When a case is ambiguous, there is an auxiliary table that contains
1803  * the face number to test and the tiling table contains the specific
1804  * triangulations depending on the results
1805  * A minus sign means to invert the result of the test.
1806  */
1807 //-----------------------------------------------------------------------------
1808 /* 13.1 */
1809 static const int tiling13_1_[2][12] = {
1810 /* 165: 0,    2,       5,    7,  */  { 7,  4,  8, 11,  3,  2,  1,  0,  9,  5,  6, 10 },
1811 /*  90:    1,    3, 4,    6,     */  { 6,  7, 11, 10,  2,  1,  0,  3,  8,  4,  5,  9 }
1812 };
1813 
1814 //_____________________________________________________________________________
1815 /**
1816  * \brief tiling table for case 13.2
1817  * For each of the case above, the specific triangulation of the edge
1818  * intersection points is given.
1819  * When a case is ambiguous, there is an auxiliary table that contains
1820  * the face number to test and the tiling table contains the specific
1821  * triangulations depending on the results
1822  * A minus sign means to invert the result of the test.
1823  */
1824 //-----------------------------------------------------------------------------
1825 /* 13.2 */
1826 static const int tiling13_2[2][6][18] = {
1827 /* 165: 0,    2,       5,    7,  */  {
1828  /* 1 */ { 1,  2, 10, 11,  7,  6,  3,  4,  8,  4,  3,  5,  0,  5,  3,  5,  0,  9 },
1829  /* 2 */ { 8,  3,  0, 11,  7,  6,  9,  1,  4,  2,  4,  1,  4,  2,  5, 10,  5,  2 },
1830  /* 3 */ { 9,  5,  4,  8,  3,  0,  1,  6, 10,  6,  1,  7,  2,  7,  1,  7,  2, 11 },
1831  /* 4 */ { 9,  5,  4,  1,  2, 10, 11,  3,  6,  0,  6,  3,  6,  0,  7,  8,  7,  0 },
1832  /* 5 */ { 9,  5,  4, 11,  7,  6,  0, 10,  1, 10,  0,  8, 10,  8,  2,  3,  2,  8 },
1833  /* 6 */ { 1,  2, 10,  3,  0,  8,  4,  9,  7, 11,  7,  9,  5, 11,  9, 11,  5,  6 }
1834 },
1835 /*  90:    1,    3, 4,    6,     */  {
1836  /* 1 */ { 2,  3, 11,  8,  4,  7,  0,  5,  9,  5,  0,  6,  1,  6,  0,  6,  1, 10 },
1837  /* 2 */ { 9,  0,  1,  8,  4,  7, 10,  2,  5,  3,  5,  2,  5,  3,  6, 11,  6,  3 },
1838  /* 3 */ { 6,  5, 10,  9,  0,  1,  2,  7, 11,  7,  2,  4,  3,  4,  2,  4,  3,  8 },
1839  /* 4 */ { 6,  5, 10,  2,  3, 11,  8,  0,  7,  1,  7,  0,  7,  1,  4,  9,  4,  1 },
1840  /* 5 */ { 6,  5, 10,  8,  4,  7,  1, 11,  2, 11,  1,  9, 11,  9,  3,  0,  3,  9 },
1841  /* 6 */ { 2,  3, 11,  0,  1,  9,  5, 10,  4,  8,  4, 10,  6,  8, 10,  8,  6,  7 }
1842 } };
1843 
1844 //_____________________________________________________________________________
1845 /**
1846  * \brief tiling table for case 13.2 inverted
1847  * For each of the case above, the specific triangulation of the edge
1848  * intersection points is given.
1849  * When a case is ambiguous, there is an auxiliary table that contains
1850  * the face number to test and the tiling table contains the specific
1851  * triangulations depending on the results
1852  * A minus sign means to invert the result of the test.
1853  */
1854 //-----------------------------------------------------------------------------
1855 /* 13.2 */
1856 static const int tiling13_2_[2][6][18] = {
1857 /* 165: 0,    2,       5,    7,  */  {
1858  /* 1 */ { 10,  5,  6, 11,  3,  2,  7,  0,  8,  0,  7,  1,  4,  1,  7,  1,  4,  9 },
1859  /* 2 */ { 11,  3,  2,  7,  4,  8,  9,  5,  0,  6,  0,  5,  0,  6,  1, 10,  1,  6 },
1860  /* 3 */ {  1,  0,  9,  7,  4,  8,  5,  2, 10,  2,  5,  3,  6,  3,  5,  3,  6, 11 },
1861  /* 4 */ { 10,  5,  6,  1,  0,  9, 11,  7,  2,  4,  2,  7,  2,  4,  3,  8,  3,  4 },
1862  /* 5 */ { 10,  5,  6,  7,  4,  8,  2, 11,  1,  9,  1, 11,  3,  9, 11,  9,  3,  0 },
1863  /* 6 */ { 11,  3,  2,  9,  1,  0,  4, 10,  5, 10,  4,  8, 10,  8,  6,  7,  6,  8 }
1864 },
1865 /*  90:    1,    3, 4,    6,     */  {
1866  /* 1 */ {  6,  7, 11,  8,  0,  3,  4,  1,  9,  1,  4,  2,  5,  2,  4,  2,  5, 10 },
1867  /* 2 */ {  8,  0,  3,  4,  5,  9, 10,  6,  1,  7,  1,  6,  1,  7,  2, 11,  2,  7 },
1868  /* 3 */ {  2,  1, 10,  4,  5,  9,  6,  3, 11,  3,  6,  0,  7,  0,  6,  0,  7,  8 },
1869  /* 4 */ {  6,  7, 11,  2,  1, 10,  8,  4,  3,  5,  3,  4,  3,  5,  0,  9,  0,  5 },
1870  /* 5 */ {  6,  7, 11,  4,  5,  9,  3,  8,  2, 10,  2,  8,  0, 10,  8, 10,  0,  1 },
1871  /* 6 */ {  8,  0,  3, 10,  2,  1,  5, 11,  6, 11,  5,  9, 11,  9,  7,  4,  7,  9 }
1872 } };
1873 
1874 //_____________________________________________________________________________
1875 /**
1876  * \brief tiling table for case 13.3
1877  * For each of the case above, the specific triangulation of the edge
1878  * intersection points is given.
1879  * When a case is ambiguous, there is an auxiliary table that contains
1880  * the face number to test and the tiling table contains the specific
1881  * triangulations depending on the results
1882  * A minus sign means to invert the result of the test.
1883  */
1884 //-----------------------------------------------------------------------------
1885 /* 13.3 */
1886 static const int tiling13_3[2][12][30] = {
1887 /* 165: 0,    2,       5,    7,  */  {
1888  /* 1,2 */ { 11,  7,  6, 12,  2, 10, 12, 10,  5, 12,  5,  4, 12,  4,  8, 12,  8,  3, 12,  3,  0, 12,  0,  9, 12,  9,  1, 12,  1,  2 },
1889  /* 1,4 */ {  1,  2, 10,  9,  5, 12,  0,  9, 12,  3,  0, 12, 11,  3, 12,  6, 11, 12,  7,  6, 12,  8,  7, 12,  4,  8, 12,  5,  4, 12 },
1890  /* 1,5 */ { 11,  7,  6, 12,  5,  4, 12,  4,  8, 12,  8,  3, 12,  3,  2, 12,  2, 10, 12, 10,  1, 12,  1,  0, 12,  0,  9, 12,  9,  5 },
1891  /* 1,6 */ {  1,  2, 10, 12,  3,  0, 12,  0,  9, 12,  9,  5, 12,  5,  6, 12,  6, 11, 12, 11,  7, 12,  7,  4, 12,  4,  8, 12,  8,  3 },
1892  /* 2,3 */ {  8,  3,  0, 11,  7, 12,  2, 11, 12,  1,  2, 12,  9,  1, 12,  4,  9, 12,  5,  4, 12, 10,  5, 12,  6, 10, 12,  7,  6, 12 },
1893  /* 2,5 */ { 11,  7,  6,  5,  4, 12, 10,  5, 12,  2, 10, 12,  3,  2, 12,  8,  3, 12,  0,  8, 12,  1,  0, 12,  9,  1, 12,  4,  9, 12 },
1894  /* 2,6 */ {  8,  3,  0,  1,  2, 12,  9,  1, 12,  4,  9, 12,  7,  4, 12, 11,  7, 12,  6, 11, 12,  5,  6, 12, 10,  5, 12,  2, 10, 12 },
1895  /* 3,4 */ {  9,  5,  4, 12,  0,  8, 12,  8,  7, 12,  7,  6, 12,  6, 10, 12, 10,  1, 12,  1,  2, 12,  2, 11, 12, 11,  3, 12,  3,  0 },
1896  /* 3,5 */ {  9,  5,  4, 12,  7,  6, 12,  6, 10, 12, 10,  1, 12,  1,  0, 12,  0,  8, 12,  8,  3, 12,  3,  2, 12,  2, 11, 12, 11,  7 },
1897  /* 3,6 */ {  8,  3,  0, 12,  1,  2, 12,  2, 11, 12, 11,  7, 12,  7,  4, 12,  4,  9, 12,  9,  5, 12,  5,  6, 12,  6, 10, 12, 10,  1 },
1898  /* 4,5 */ {  9,  5,  4,  7,  6, 12,  8,  7, 12,  0,  8, 12,  1,  0, 12, 10,  1, 12,  2, 10, 12,  3,  2, 12, 11,  3, 12,  6, 11, 12 },
1899  /* 4,6 */ {  1,  2, 10,  3,  0, 12, 11,  3, 12,  6, 11, 12,  5,  6, 12,  9,  5, 12,  4,  9, 12,  7,  4, 12,  8,  7, 12,  0,  8, 12 }
1900 },
1901 /*  90:    1,    3, 4,    6,     */  {
1902  /* 1,2 */ {  8,  4,  7, 12,  3, 11, 12, 11,  6, 12,  6,  5, 12,  5,  9, 12,  9,  0, 12,  0,  1, 12,  1, 10, 12, 10,  2, 12,  2,  3 },
1903  /* 1,4 */ {  2,  3, 11, 10,  6, 12,  1, 10, 12,  0,  1, 12,  8,  0, 12,  7,  8, 12,  4,  7, 12,  9,  4, 12,  5,  9, 12,  6,  5, 12 },
1904  /* 1,5 */ {  8,  4,  7, 12,  6,  5, 12,  5,  9, 12,  9,  0, 12,  0,  3, 12,  3, 11, 12, 11,  2, 12,  2,  1, 12,  1, 10, 12, 10,  6 },
1905  /* 1,6 */ {  2,  3, 11, 12,  0,  1, 12,  1, 10, 12, 10,  6, 12,  6,  7, 12,  7,  8, 12,  8,  4, 12,  4,  5, 12,  5,  9, 12,  9,  0 },
1906  /* 2,3 */ {  0,  1,  9,  8,  4, 12,  3,  8, 12,  2,  3, 12, 10,  2, 12,  5, 10, 12,  6,  5, 12, 11,  6, 12,  7, 11, 12,  4,  7, 12 },
1907  /* 2,5 */ {  8,  4,  7,  6,  5, 12, 11,  6, 12,  3, 11, 12,  0,  3, 12,  9,  0, 12,  1,  9, 12,  2,  1, 12, 10,  2, 12,  5, 10, 12 },
1908  /* 2,6 */ {  9,  0,  1,  2,  3, 12, 10,  2, 12,  5, 10, 12,  4,  5, 12,  8,  4, 12,  7,  8, 12,  6,  7, 12, 11,  6, 12,  3, 11, 12 },
1909  /* 3,4 */ {  6,  5, 10, 12,  1,  9, 12,  9,  4, 12,  4,  7, 12,  7, 11, 12, 11,  2, 12,  2,  3, 12,  3,  8, 12,  8,  0, 12,  0,  1 },
1910  /* 3,5 */ {  6,  5, 10, 12,  4,  7, 12,  7, 11, 12, 11,  2, 12,  2,  1, 12,  1,  9, 12,  9,  0, 12,  0,  3, 12,  3,  8, 12,  8,  4 },
1911  /* 3,6 */ {  9,  0,  1, 12,  2,  3, 12,  3,  8, 12,  8,  4, 12,  4,  5, 12,  5, 10, 12, 10,  6, 12,  6,  7, 12,  7, 11, 12, 11,  2 },
1912  /* 4,5 */ {  6,  5, 10,  4,  7, 12,  9,  4, 12,  1,  9, 12,  2,  1, 12, 11,  2, 12,  3, 11, 12,  0,  3, 12,  8,  0, 12,  7,  8, 12 },
1913  /* 4,6 */ {  2,  3, 11,  0,  1, 12,  8,  0, 12,  7,  8, 12,  6,  7, 12, 10,  6, 12,  5, 10, 12,  4,  5, 12,  9,  4, 12,  1,  9, 12 }
1914 } };
1915 
1916 //_____________________________________________________________________________
1917 /**
1918  * \brief tiling table for case 13.3, inverted
1919  * For each of the case above, the specific triangulation of the edge
1920  * intersection points is given.
1921  * When a case is ambiguous, there is an auxiliary table that contains
1922  * the face number to test and the tiling table contains the specific
1923  * triangulations depending on the results
1924  * A minus sign means to invert the result of the test.
1925  */
1926 //-----------------------------------------------------------------------------
1927 /* 13.3 */
1928 static const int tiling13_3_[2][12][30] = {
1929 /* 165: 0,    2,       5,    7,  */  {
1930  /* 1,2 */ {  3,  2, 11,  8,  7, 12,  0,  8, 12,  1,  0, 12, 10,  1, 12,  6, 10, 12,  5,  6, 12,  9,  5, 12,  4,  9, 12,  7,  4, 12 },
1931  /* 1,4 */ {  5,  6, 10, 12,  2, 11, 12, 11,  7, 12,  7,  4, 12,  4,  9, 12,  9,  1, 12,  1,  0, 12,  0,  8, 12,  8,  3, 12,  3,  2 },
1932  /* 1,5 */ { 10,  5,  6, 12,  7,  4, 12,  4,  9, 12,  9,  1, 12,  1,  2, 12,  2, 11, 12, 11,  3, 12,  3,  0, 12,  0,  8, 12,  8,  7 },
1933  /* 1,6 */ { 11,  3,  2, 12,  1,  0, 12,  0,  8, 12,  8,  7, 12,  7,  6, 12,  6, 10, 12, 10,  5, 12,  5,  4, 12,  4,  9, 12,  9,  1 },
1934  /* 2,3 */ {  7,  4,  8, 11,  3, 12,  6, 11, 12,  5,  6, 12,  9,  5, 12,  0,  9, 12,  1,  0, 12, 10,  1, 12,  2, 10, 12,  3,  2, 12 },
1935  /* 2,5 */ {  7,  4,  8,  5,  6, 12,  9,  5, 12,  0,  9, 12,  3,  0, 12, 11,  3, 12,  2, 11, 12,  1,  2, 12, 10,  1, 12,  6, 10, 12 },
1936  /* 2,6 */ { 11,  3,  2,  1,  0, 12, 10,  1, 12,  6, 10, 12,  7,  6, 12,  8,  7, 12,  4,  8, 12,  5,  4, 12,  9,  5, 12,  0,  9, 12 },
1937  /* 3,4 */ {  1,  0,  9, 12,  4,  8, 12,  8,  3, 12,  3,  2, 12,  2, 10, 12, 10,  5, 12,  5,  6, 12,  6, 11, 12, 11,  7, 12,  7,  4 },
1938  /* 3,5 */ {  7,  4,  8, 12,  5,  6, 12,  6, 11, 12, 11,  3, 12,  3,  0, 12,  0,  9, 12,  9,  1, 12,  1,  2, 12,  2, 10, 12, 10,  5 },
1939  /* 3,6 */ {  1,  0,  9, 12,  3,  2, 12,  2, 10, 12, 10,  5, 12,  5,  4, 12,  4,  8, 12,  8,  7, 12,  7,  6, 12,  6, 11, 12, 11,  3 },
1940  /* 4,5 */ { 10,  5,  6,  7,  4, 12, 11,  7, 12,  2, 11, 12,  1,  2, 12,  9,  1, 12,  0,  9, 12,  3,  0, 12,  8,  3, 12,  4,  8, 12 },
1941  /* 4,6 */ {  9,  1,  0,  3,  2, 12,  8,  3, 12,  4,  8, 12,  5,  4, 12, 10,  5, 12,  6, 10, 12,  7,  6, 12, 11,  7, 12,  2, 11, 12 }
1942 },
1943 /*  90:    1,    3, 4,    6,     */  {
1944  /* 1,2 */ {  0,  3,  8,  9,  4, 12,  1,  9, 12,  2,  1, 12, 11,  2, 12,  7, 11, 12,  6,  7, 12, 10,  6, 12,  5, 10, 12,  4,  5, 12 },
1945  /* 1,4 */ { 11,  6,  7, 12,  3,  8, 12,  8,  4, 12,  4,  5, 12,  5, 10, 12, 10,  2, 12,  2,  1, 12,  1,  9, 12,  9,  0, 12,  0,  3 },
1946  /* 1,5 */ {  6,  7, 11, 12,  4,  5, 12,  5, 10, 12, 10,  2, 12,  2,  3, 12,  3,  8, 12,  8,  0, 12,  0,  1, 12,  1,  9, 12,  9,  4 },
1947  /* 1,6 */ {  8,  0,  3, 12,  2,  1, 12,  1,  9, 12,  9,  4, 12,  4,  7, 12,  7, 11, 12, 11,  6, 12,  6,  5, 12,  5, 10, 12, 10,  2 },
1948  /* 2,3 */ {  4,  5,  9,  8,  0, 12,  7,  8, 12,  6,  7, 12, 10,  6, 12,  1, 10, 12,  2,  1, 12, 11,  2, 12,  3, 11, 12,  0,  3, 12 },
1949  /* 2,5 */ {  4,  5,  9,  6,  7, 12, 10,  6, 12,  1, 10, 12,  0,  1, 12,  8,  0, 12,  3,  8, 12,  2,  3, 12, 11,  2, 12,  7, 11, 12 },
1950  /* 2,6 */ {  8,  0,  3,  2,  1, 12, 11,  2, 12,  7, 11, 12,  4,  7, 12,  9,  4, 12,  5,  9, 12,  6,  5, 12, 10,  6, 12,  1, 10, 12 },
1951  /* 3,4 */ {  2,  1, 10, 12,  5,  9, 12,  9,  0, 12,  0,  3, 12,  3, 11, 12, 11,  6, 12,  6,  7, 12,  7,  8, 12,  8,  4, 12,  4,  5 },
1952  /* 3,5 */ {  4,  5,  9, 12,  6,  7, 12,  7,  8, 12,  8,  0, 12,  0,  1, 12,  1, 10, 12, 10,  2, 12,  2,  3, 12,  3, 11, 12, 11,  6 },
1953  /* 3,6 */ {  2,  1, 10, 12,  0,  3, 12,  3, 11, 12, 11,  6, 12,  6,  5, 12,  5,  9, 12,  9,  4, 12,  4,  7, 12,  7,  8, 12,  8,  0 },
1954  /* 4,5 */ {  6,  7, 11,  4,  5, 12,  8,  4, 12,  3,  8, 12,  2,  3, 12, 10,  2, 12,  1, 10, 12,  0,  1, 12,  9,  0, 12,  5,  9, 12 },
1955  /* 4,6 */ { 10,  2,  1,  0,  3, 12,  9,  0, 12,  5,  9, 12,  6,  5, 12, 11,  6, 12,  7, 11, 12,  4,  7, 12,  8,  4, 12,  3,  8, 12 }
1956 } };
1957 
1958 //_____________________________________________________________________________
1959 /**
1960  * \brief tiling table for case 13.4
1961  * For each of the case above, the specific triangulation of the edge
1962  * intersection points is given.
1963  * When a case is ambiguous, there is an auxiliary table that contains
1964  * the face number to test and the tiling table contains the specific
1965  * triangulations depending on the results
1966  * A minus sign means to invert the result of the test.
1967  */
1968 //-----------------------------------------------------------------------------
1969 /* 13.4 */
1970 static const int tiling13_4[2][4][36] = {
1971 /* 165: 0,    2,       5,    7,  */  {
1972 /* 1,2,6 */  { 12,  2, 10, 12, 10,  5, 12,  5,  6, 12,  6, 11, 12, 11,  7, 12,  7,  4, 12,  4,  8, 12,  8,  3, 12,  3,  0, 12,  0,  9, 12,  9,  1, 12,  1,  2 },
1973 /* 1,4,5 */  { 11,  3, 12,  6, 11, 12,  7,  6, 12,  8,  7, 12,  4,  8, 12,  5,  4, 12,  9,  5, 12,  0,  9, 12,  1,  0, 12, 10,  1, 12,  2, 10, 12,  3,  2, 12 },
1974 /* 2,3,5 */  {  9,  1, 12,  4,  9, 12,  5,  4, 12, 10,  5, 12,  6, 10, 12,  7,  6, 12, 11,  7, 12,  2, 11, 12,  3,  2, 12,  8,  3, 12,  0,  8, 12,  1,  0, 12 },
1975 /* 3,4,6 */  { 12,  0,  8, 12,  8,  7, 12,  7,  4, 12,  4,  9, 12,  9,  5, 12,  5,  6, 12,  6, 10, 12, 10,  1, 12,  1,  2, 12,  2, 11, 12, 11,  3, 12,  3,  0 }
1976 },
1977 /*  90:    1,    3, 4,    6,     */  {
1978 /* 1,2,6 */  { 12,  3, 11, 12, 11,  6, 12,  6,  7, 12,  7,  8, 12,  8,  4, 12,  4,  5, 12,  5,  9, 12,  9,  0, 12,  0,  1, 12,  1, 10, 12, 10,  2, 12,  2,  3 },
1979 /* 1,4,5 */  {  8,  0, 12,  7,  8, 12,  4,  7, 12,  9,  4, 12,  5,  9, 12,  6,  5, 12, 10,  6, 12,  1, 10, 12,  2,  1, 12, 11,  2, 12,  3, 11, 12,  0,  3, 12 },
1980 /* 2,3,5 */  { 10,  2, 12,  5, 10, 12,  6,  5, 12, 11,  6, 12,  7, 11, 12,  4,  7, 12,  8,  4, 12,  3,  8, 12,  0,  3, 12,  9,  0, 12,  1,  9, 12,  2,  1, 12 },
1981 /* 3,4,6 */  { 12,  1,  9, 12,  9,  4, 12,  4,  5, 12,  5, 10, 12, 10,  6, 12,  6,  7, 12,  7, 11, 12, 11,  2, 12,  2,  3, 12,  3,  8, 12,  8,  0, 12,  0,  1 }
1982 } };
1983 
1984 //_____________________________________________________________________________
1985 /**
1986  * \brief tiling table for case 13.5.1
1987  * The support edge for the interior test is marked as the 1st column.
1988  * For each of the case above, the specific triangulation of the edge
1989  * intersection points is given.
1990  * When a case is ambiguous, there is an auxiliary table that contains
1991  * the face number to test and the tiling table contains the specific
1992  * triangulations depending on the results
1993  * A minus sign means to invert the result of the test.
1994  */
1995 //-----------------------------------------------------------------------------
1996 /* 13.5.1 */
1997 static const int tiling13_5_1[2][4][18] = {
1998 /* 165: 0,    2,       5,    7,  */  {
1999 /* 1,2,5 */  {  7,  6, 11,  1,  0,  9, 10,  3,  2,  3, 10,  5,  3,  5,  8,  4,  8, 5 },
2000 /* 1,4,6 */  {  1,  2, 10,  7,  4,  8,  3,  0, 11,  6, 11,  0,  9,  6,  0,  6,  9, 5 },
2001 /* 2,3,6 */  {  3,  0,  8,  5,  6, 10,  1,  2,  9,  4,  9,  2, 11,  4,  2,  4, 11, 7 },
2002 /* 3,4,5 */  {  5,  4,  9,  3,  2, 11,  8,  1,  0,  1,  8,  7,  1,  7, 10,  6, 10, 7 }
2003 },
2004 /*  90:    1,    3, 4,    6,     */  {
2005 /* 1,2,5 */  {  4,  7,  8,  2,  1, 10, 11,  0,  3,  0, 11,  6,  0,  6,  9,  5,  9, 6 },
2006 /* 1,4,6 */  {  2,  3, 11,  4,  5,  9,  0,  1,  8,  7,  8,  1, 10,  7,  1,  7, 10, 6 },
2007 /* 2,3,6 */  {  0,  1,  9,  6,  7, 11,  2,  3, 10,  5, 10,  3,  8,  5,  3,  5,  8, 4 },
2008 /* 3,4,5 */  {  6,  5, 10,  0,  3,  8,  9,  2,  1,  2,  9,  4,  2,  4, 11,  7, 11, 4 }
2009 } };
2010 
2011 //_____________________________________________________________________________
2012 /**
2013  * \brief tiling table for case 13.5.2
2014  * For each of the case above, the specific triangulation of the edge
2015  * intersection points is given.
2016  * When a case is ambiguous, there is an auxiliary table that contains
2017  * the face number to test and the tiling table contains the specific
2018  * triangulations depending on the results
2019  * A minus sign means to invert the result of the test.
2020  */
2021 //-----------------------------------------------------------------------------
2022 /* 13.5.2 */
2023 static const int tiling13_5_2[2][4][30] = {
2024 /* 165: 0,    2,       5,    7,  */  {
2025 /* 1,2,5 */  { 1,  0,  9,  7,  4,  8,  7,  8,  3,  7,  3, 11,  2, 11,  3, 11,  2, 10, 11, 10,  6,  5,  6, 10,  6,  5,  7,  4,  7, 5 },
2026 /* 1,4,6 */  { 7,  4,  8, 11,  3,  2,  6, 11,  2, 10,  6,  2,  6, 10,  5,  9,  5, 10,  1,  9, 10,  9,  1,  0,  2,  0,  1,  0,  2, 3 },
2027 /* 2,3,6 */  { 5,  6, 10,  9,  1,  0,  4,  9,  0,  8,  4,  0,  4,  8,  7, 11,  7,  8,  3, 11,  8, 11,  3,  2,  0,  2,  3,  2,  0, 1 },
2028 /* 3,4,5 */  { 3,  2, 11,  5,  6, 10,  5, 10,  1,  5,  1,  9,  0,  9,  1,  9,  0,  8,  9,  8,  4,  4,  8,  7,  4,  7,  5,  6,  5, 7 }
2029 },
2030 /*  90:    1,    3, 4,    6,     */  {
2031 /* 1,2,5 */  { 2,  1, 10,  4,  5,  9,  4,  9,  0,  4,  0,  8,  3,  8,  0,  8,  3, 11,  8, 11,  7,  6,  7, 11,  7,  6,  4,  5,  4, 6 },
2032 /* 1,4,6 */  { 4,  5,  9,  8,  0,  3,  7,  8,  3, 11,  7,  3,  7, 11,  6, 10,  6, 11,  2, 10, 11, 10,  2,  1,  3,  1,  2,  1,  3, 0 },
2033 /* 2,3,6 */  { 6,  7, 11, 10,  2,  1,  5, 10,  1,  9,  5,  1,  5,  9,  4,  8,  4,  9,  0,  8,  9,  8,  0,  3,  1,  3,  0,  3,  1, 2 },
2034 /* 3,4,5 */  { 0,  3,  8,  6,  7, 11,  6, 11,  2,  6,  2, 10,  1, 10,  2, 10,  1,  9, 10,  9,  5,  5,  9,  4,  5,  4,  6,  7,  6, 4 }
2035 } };
2036 //_____________________________________________________________________________
2037 
2038 
2039 
2040 //_____________________________________________________________________________
2041 /**
2042  * \brief tiling table for case 14
2043  * For each of the case above, the specific triangulation of the edge
2044  * intersection points is given.
2045  * When a case is ambiguous, there is an auxiliary table that contains
2046  * the face number to test and the tiling table contains the specific
2047  * triangulations depending on the results
2048  * A minus sign means to invert the result of the test.
2049  */
2050 //-----------------------------------------------------------------------------
2051 static const int tiling14[12][12] = {
2052 /*  71: 0, 1, 2,          6,     */  {  5,  9,  8,  5,  8,  2,  5,  2,  6,  3,  2,  8 },
2053 /*  43: 0, 1,    3,    5,        */  {  2,  1,  5,  2,  5,  8,  2,  8, 11,  4,  8,  5 },
2054 /* 147: 0, 1,       4,       7,  */  {  9,  4,  6,  9,  6,  3,  9,  3,  1, 11,  3,  6 },
2055 /*  29: 0,    2, 3, 4,           */  {  1, 11, 10,  1,  4, 11,  1,  0,  4,  7, 11,  4 },
2056 /* 201: 0,       3,       6, 7,  */  {  8,  2,  0,  8,  5,  2,  8,  7,  5, 10,  2,  5 },
2057 /* 113: 0,          4, 5, 6,     */  {  0,  7,  3,  0, 10,  7,  0,  9, 10,  6,  7, 10 },
2058 /* 142:    1, 2, 3,          7,  */  {  0,  3,  7,  0,  7, 10,  0, 10,  9,  6, 10,  7 },
2059 /*  54:    1, 2,    4, 5,        */  {  8,  0,  2,  8,  2,  5,  8,  5,  7, 10,  5,  2 },
2060 /* 226:    1,          5, 6, 7,  */  {  1, 10, 11,  1, 11,  4,  1,  4,  0,  7,  4, 11 },
2061 /* 108:       2, 3,    5, 6,     */  {  9,  6,  4,  9,  3,  6,  9,  1,  3, 11,  6,  3 },
2062 /* 212:       2,    4,    6, 7,  */  {  2,  5,  1,  2,  8,  5,  2, 11,  8,  4,  5,  8 },
2063 /* 184:          3, 4, 5,    7,  */  {  5,  8,  9,  5,  2,  8,  5,  6,  2,  3,  8,  2 }
2064 };
2065 //_____________________________________________________________________________
2066 
2067 
2068 
2069 //_____________________________________________________________________________
2070 /**
2071  * \brief original Marching Cubes implementation
2072  * For each of the possible vertex states listed in this table there is a
2073  * specific triangulation of the edge intersection points.  The table lists
2074  * all of them in the form of 0-5 edge triples with the list terminated by
2075  * the invalid value -1.  For example: casesClassic[3] list the 2 triangles
2076  * formed when cube[0] and cube[1] are inside of the surface, but the rest of
2077  * the cube is not.
2078  */
2079 //-----------------------------------------------------------------------------
2080 static const int casesClassic[256][16] = {
2081 /*   0:                          */  { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2082 /*   1: 0,                       */  {  0,  8,  3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2083 /*   2:    1,                    */  {  0,  1,  9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2084 /*   3: 0, 1,                    */  {  1,  8,  3,  9,  8,  1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2085 /*   4:       2,                 */  {  1,  2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2086 /*   5: 0,    2,                 */  {  0,  8,  3,  1,  2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2087 /*   6:    1, 2,                 */  {  9,  2, 10,  0,  2,  9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2088 /*   7: 0, 1, 2,                 */  {  2,  8,  3,  2, 10,  8, 10,  9,  8, -1, -1, -1, -1, -1, -1, -1 },
2089 /*   8:          3,              */  {  3, 11,  2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2090 /*   9: 0,       3,              */  {  0, 11,  2,  8, 11,  0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2091 /*  10:    1,    3,              */  {  1,  9,  0,  2,  3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2092 /*  11: 0, 1,    3,              */  {  1, 11,  2,  1,  9, 11,  9,  8, 11, -1, -1, -1, -1, -1, -1, -1 },
2093 /*  12:       2, 3,              */  {  3, 10,  1, 11, 10,  3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2094 /*  13: 0,    2, 3,              */  {  0, 10,  1,  0,  8, 10,  8, 11, 10, -1, -1, -1, -1, -1, -1, -1 },
2095 /*  14:    1, 2, 3,              */  {  3,  9,  0,  3, 11,  9, 11, 10,  9, -1, -1, -1, -1, -1, -1, -1 },
2096 /*  15: 0, 1, 2, 3,              */  {  9,  8, 10, 10,  8, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2097 /*  16:             4,           */  {  4,  7,  8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2098 /*  17: 0,          4,           */  {  4,  3,  0,  7,  3,  4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2099 /*  18:    1,       4,           */  {  0,  1,  9,  8,  4,  7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2100 /*  19: 0, 1,       4,           */  {  4,  1,  9,  4,  7,  1,  7,  3,  1, -1, -1, -1, -1, -1, -1, -1 },
2101 /*  20:       2,    4,           */  {  1,  2, 10,  8,  4,  7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2102 /*  21: 0,    2,    4,           */  {  3,  4,  7,  3,  0,  4,  1,  2, 10, -1, -1, -1, -1, -1, -1, -1 },
2103 /*  22:    1, 2,    4,           */  {  9,  2, 10,  9,  0,  2,  8,  4,  7, -1, -1, -1, -1, -1, -1, -1 },
2104 /*  23: 0, 1, 2,    4,           */  {  2, 10,  9,  2,  9,  7,  2,  7,  3,  7,  9,  4, -1, -1, -1, -1 },
2105 /*  24:          3, 4,           */  {  8,  4,  7,  3, 11,  2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2106 /*  25: 0,       3, 4,           */  { 11,  4,  7, 11,  2,  4,  2,  0,  4, -1, -1, -1, -1, -1, -1, -1 },
2107 /*  26:    1,    3, 4,           */  {  9,  0,  1,  8,  4,  7,  2,  3, 11, -1, -1, -1, -1, -1, -1, -1 },
2108 /*  27: 0, 1,    3, 4,           */  {  4,  7, 11,  9,  4, 11,  9, 11,  2,  9,  2,  1, -1, -1, -1, -1 },
2109 /*  28:       2, 3, 4,           */  {  3, 10,  1,  3, 11, 10,  7,  8,  4, -1, -1, -1, -1, -1, -1, -1 },
2110 /*  29: 0,    2, 3, 4,           */  {  1, 11, 10,  1,  4, 11,  1,  0,  4,  7, 11,  4, -1, -1, -1, -1 },
2111 /*  30:    1, 2, 3, 4,           */  {  4,  7,  8,  9,  0, 11,  9, 11, 10, 11,  0,  3, -1, -1, -1, -1 },
2112 /*  31: 0, 1, 2, 3, 4,           */  {  4,  7, 11,  4, 11,  9,  9, 11, 10, -1, -1, -1, -1, -1, -1, -1 },
2113 /*  32:                5,        */  {  9,  5,  4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2114 /*  33: 0,             5,        */  {  9,  5,  4,  0,  8,  3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2115 /*  34:    1,          5,        */  {  0,  5,  4,  1,  5,  0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2116 /*  35: 0, 1,          5,        */  {  8,  5,  4,  8,  3,  5,  3,  1,  5, -1, -1, -1, -1, -1, -1, -1 },
2117 /*  36:       2,       5,        */  {  1,  2, 10,  9,  5,  4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2118 /*  37: 0,    2,       5,        */  {  3,  0,  8,  1,  2, 10,  4,  9,  5, -1, -1, -1, -1, -1, -1, -1 },
2119 /*  38:    1, 2,       5,        */  {  5,  2, 10,  5,  4,  2,  4,  0,  2, -1, -1, -1, -1, -1, -1, -1 },
2120 /*  39: 0, 1, 2,       5,        */  {  2, 10,  5,  3,  2,  5,  3,  5,  4,  3,  4,  8, -1, -1, -1, -1 },
2121 /*  40:          3,    5,        */  {  9,  5,  4,  2,  3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2122 /*  41: 0,       3,    5,        */  {  0, 11,  2,  0,  8, 11,  4,  9,  5, -1, -1, -1, -1, -1, -1, -1 },
2123 /*  42:    1,    3,    5,        */  {  0,  5,  4,  0,  1,  5,  2,  3, 11, -1, -1, -1, -1, -1, -1, -1 },
2124 /*  43: 0, 1,    3,    5,        */  {  2,  1,  5,  2,  5,  8,  2,  8, 11,  4,  8,  5, -1, -1, -1, -1 },
2125 /*  44:       2, 3,    5,        */  { 10,  3, 11, 10,  1,  3,  9,  5,  4, -1, -1, -1, -1, -1, -1, -1 },
2126 /*  45: 0,    2, 3,    5,        */  {  4,  9,  5,  0,  8,  1,  8, 10,  1,  8, 11, 10, -1, -1, -1, -1 },
2127 /*  46:    1, 2, 3,    5,        */  {  5,  4,  0,  5,  0, 11,  5, 11, 10, 11,  0,  3, -1, -1, -1, -1 },
2128 /*  47: 0, 1, 2, 3,    5,        */  {  5,  4,  8,  5,  8, 10, 10,  8, 11, -1, -1, -1, -1, -1, -1, -1 },
2129 /*  48:             4, 5,        */  {  9,  7,  8,  5,  7,  9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2130 /*  49: 0,          4, 5,        */  {  9,  3,  0,  9,  5,  3,  5,  7,  3, -1, -1, -1, -1, -1, -1, -1 },
2131 /*  50:    1,       4, 5,        */  {  0,  7,  8,  0,  1,  7,  1,  5,  7, -1, -1, -1, -1, -1, -1, -1 },
2132 /*  51: 0, 1,       4, 5,        */  {  1,  5,  3,  3,  5,  7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2133 /*  52:       2,    4, 5,        */  {  9,  7,  8,  9,  5,  7, 10,  1,  2, -1, -1, -1, -1, -1, -1, -1 },
2134 /*  53: 0,    2,    4, 5,        */  { 10,  1,  2,  9,  5,  0,  5,  3,  0,  5,  7,  3, -1, -1, -1, -1 },
2135 /*  54:    1, 2,    4, 5,        */  {  8,  0,  2,  8,  2,  5,  8,  5,  7, 10,  5,  2, -1, -1, -1, -1 },
2136 /*  55: 0, 1, 2,    4, 5,        */  {  2, 10,  5,  2,  5,  3,  3,  5,  7, -1, -1, -1, -1, -1, -1, -1 },
2137 /*  56:          3, 4, 5,        */  {  7,  9,  5,  7,  8,  9,  3, 11,  2, -1, -1, -1, -1, -1, -1, -1 },
2138 /*  57: 0,       3, 4, 5,        */  {  9,  5,  7,  9,  7,  2,  9,  2,  0,  2,  7, 11, -1, -1, -1, -1 },
2139 /*  58:    1,    3, 4, 5,        */  {  2,  3, 11,  0,  1,  8,  1,  7,  8,  1,  5,  7, -1, -1, -1, -1 },
2140 /*  59: 0, 1,    3, 4, 5,        */  { 11,  2,  1, 11,  1,  7,  7,  1,  5, -1, -1, -1, -1, -1, -1, -1 },
2141 /*  60:       2, 3, 4, 5,        */  {  9,  5,  8,  8,  5,  7, 10,  1,  3, 10,  3, 11, -1, -1, -1, -1 },
2142 /*  61: 0,    2, 3, 4, 5,        */  {  5,  7,  0,  5,  0,  9,  7, 11,  0,  1,  0, 10, 11, 10,  0, -1 },
2143 /*  62:    1, 2, 3, 4, 5,        */  { 11, 10,  0, 11,  0,  3, 10,  5,  0,  8,  0,  7,  5,  7,  0, -1 },
2144 /*  63: 0, 1, 2, 3, 4, 5,        */  { 11, 10,  5,  7, 11,  5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2145 /*  64:                   6,     */  { 10,  6,  5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2146 /*  65: 0,                6,     */  {  0,  8,  3,  5, 10,  6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2147 /*  66:    1,             6,     */  {  9,  0,  1,  5, 10,  6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2148 /*  67: 0, 1,             6,     */  {  1,  8,  3,  1,  9,  8,  5, 10,  6, -1, -1, -1, -1, -1, -1, -1 },
2149 /*  68:       2,          6,     */  {  1,  6,  5,  2,  6,  1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2150 /*  69: 0,    2,          6,     */  {  1,  6,  5,  1,  2,  6,  3,  0,  8, -1, -1, -1, -1, -1, -1, -1 },
2151 /*  70:    1, 2,          6,     */  {  9,  6,  5,  9,  0,  6,  0,  2,  6, -1, -1, -1, -1, -1, -1, -1 },
2152 /*  71: 0, 1, 2,          6,     */  {  5,  9,  8,  5,  8,  2,  5,  2,  6,  3,  2,  8, -1, -1, -1, -1 },
2153 /*  72:          3,       6,     */  {  2,  3, 11, 10,  6,  5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2154 /*  73: 0,       3,       6,     */  { 11,  0,  8, 11,  2,  0, 10,  6,  5, -1, -1, -1, -1, -1, -1, -1 },
2155 /*  74:    1,    3,       6,     */  {  0,  1,  9,  2,  3, 11,  5, 10,  6, -1, -1, -1, -1, -1, -1, -1 },
2156 /*  75: 0, 1,    3,       6,     */  {  5, 10,  6,  1,  9,  2,  9, 11,  2,  9,  8, 11, -1, -1, -1, -1 },
2157 /*  76:       2, 3,       6,     */  {  6,  3, 11,  6,  5,  3,  5,  1,  3, -1, -1, -1, -1, -1, -1, -1 },
2158 /*  77: 0,    2, 3,       6,     */  {  0,  8, 11,  0, 11,  5,  0,  5,  1,  5, 11,  6, -1, -1, -1, -1 },
2159 /*  78:    1, 2, 3,       6,     */  {  3, 11,  6,  0,  3,  6,  0,  6,  5,  0,  5,  9, -1, -1, -1, -1 },
2160 /*  79: 0, 1, 2, 3,       6,     */  {  6,  5,  9,  6,  9, 11, 11,  9,  8, -1, -1, -1, -1, -1, -1, -1 },
2161 /*  80:             4,    6,     */  {  5, 10,  6,  4,  7,  8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2162 /*  81: 0,          4,    6,     */  {  4,  3,  0,  4,  7,  3,  6,  5, 10, -1, -1, -1, -1, -1, -1, -1 },
2163 /*  82:    1,       4,    6,     */  {  1,  9,  0,  5, 10,  6,  8,  4,  7, -1, -1, -1, -1, -1, -1, -1 },
2164 /*  83: 0, 1,       4,    6,     */  { 10,  6,  5,  1,  9,  7,  1,  7,  3,  7,  9,  4, -1, -1, -1, -1 },
2165 /*  84:       2,    4,    6,     */  {  6,  1,  2,  6,  5,  1,  4,  7,  8, -1, -1, -1, -1, -1, -1, -1 },
2166 /*  85: 0,    2,    4,    6,     */  {  1,  2,  5,  5,  2,  6,  3,  0,  4,  3,  4,  7, -1, -1, -1, -1 },
2167 /*  86:    1, 2,    4,    6,     */  {  8,  4,  7,  9,  0,  5,  0,  6,  5,  0,  2,  6, -1, -1, -1, -1 },
2168 /*  87: 0, 1, 2,    4,    6,     */  {  7,  3,  9,  7,  9,  4,  3,  2,  9,  5,  9,  6,  2,  6,  9, -1 },
2169 /*  88:          3, 4,    6,     */  {  3, 11,  2,  7,  8,  4, 10,  6,  5, -1, -1, -1, -1, -1, -1, -1 },
2170 /*  89: 0,       3, 4,    6,     */  {  5, 10,  6,  4,  7,  2,  4,  2,  0,  2,  7, 11, -1, -1, -1, -1 },
2171 /*  90:    1,    3, 4,    6,     */  {  0,  1,  9,  4,  7,  8,  2,  3, 11,  5, 10,  6, -1, -1, -1, -1 },
2172 /*  91: 0, 1,    3, 4,    6,     */  {  9,  2,  1,  9, 11,  2,  9,  4, 11,  7, 11,  4,  5, 10,  6, -1 },
2173 /*  92:       2, 3, 4,    6,     */  {  8,  4,  7,  3, 11,  5,  3,  5,  1,  5, 11,  6, -1, -1, -1, -1 },
2174 /*  93: 0,    2, 3, 4,    6,     */  {  5,  1, 11,  5, 11,  6,  1,  0, 11,  7, 11,  4,  0,  4, 11, -1 },
2175 /*  94:    1, 2, 3, 4,    6,     */  {  0,  5,  9,  0,  6,  5,  0,  3,  6, 11,  6,  3,  8,  4,  7, -1 },
2176 /*  95: 0, 1, 2, 3, 4,    6,     */  {  6,  5,  9,  6,  9, 11,  4,  7,  9,  7, 11,  9, -1, -1, -1, -1 },
2177 /*  96:                5, 6,     */  { 10,  4,  9,  6,  4, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2178 /*  97: 0,             5, 6,     */  {  4, 10,  6,  4,  9, 10,  0,  8,  3, -1, -1, -1, -1, -1, -1, -1 },
2179 /*  98:    1,          5, 6,     */  { 10,  0,  1, 10,  6,  0,  6,  4,  0, -1, -1, -1, -1, -1, -1, -1 },
2180 /*  99: 0, 1,          5, 6,     */  {  8,  3,  1,  8,  1,  6,  8,  6,  4,  6,  1, 10, -1, -1, -1, -1 },
2181 /* 100:       2,       5, 6,     */  {  1,  4,  9,  1,  2,  4,  2,  6,  4, -1, -1, -1, -1, -1, -1, -1 },
2182 /* 101: 0,    2,       5, 6,     */  {  3,  0,  8,  1,  2,  9,  2,  4,  9,  2,  6,  4, -1, -1, -1, -1 },
2183 /* 102:    1, 2,       5, 6,     */  {  0,  2,  4,  4,  2,  6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2184 /* 103: 0, 1, 2,       5, 6,     */  {  8,  3,  2,  8,  2,  4,  4,  2,  6, -1, -1, -1, -1, -1, -1, -1 },
2185 /* 104:          3,    5, 6,     */  { 10,  4,  9, 10,  6,  4, 11,  2,  3, -1, -1, -1, -1, -1, -1, -1 },
2186 /* 105: 0,       3,    5, 6,     */  {  0,  8,  2,  2,  8, 11,  4,  9, 10,  4, 10,  6, -1, -1, -1, -1 },
2187 /* 106:    1,    3,    5, 6,     */  {  3, 11,  2,  0,  1,  6,  0,  6,  4,  6,  1, 10, -1, -1, -1, -1 },
2188 /* 107: 0, 1,    3,    5, 6,     */  {  6,  4,  1,  6,  1, 10,  4,  8,  1,  2,  1, 11,  8, 11,  1, -1 },
2189 /* 108:       2, 3,    5, 6,     */  {  9,  6,  4,  9,  3,  6,  9,  1,  3, 11,  6,  3, -1, -1, -1, -1 },
2190 /* 109: 0,    2, 3,    5, 6,     */  {  8, 11,  1,  8,  1,  0, 11,  6,  1,  9,  1,  4,  6,  4,  1, -1 },
2191 /* 110:    1, 2, 3,    5, 6,     */  {  3, 11,  6,  3,  6,  0,  0,  6,  4, -1, -1, -1, -1, -1, -1, -1 },
2192 /* 111: 0, 1, 2, 3,    5, 6,     */  {  6,  4,  8, 11,  6,  8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2193 /* 112:             4, 5, 6,     */  {  7, 10,  6,  7,  8, 10,  8,  9, 10, -1, -1, -1, -1, -1, -1, -1 },
2194 /* 113: 0,          4, 5, 6,     */  {  0,  7,  3,  0, 10,  7,  0,  9, 10,  6,  7, 10, -1, -1, -1, -1 },
2195 /* 114:    1,       4, 5, 6,     */  { 10,  6,  7,  1, 10,  7,  1,  7,  8,  1,  8,  0, -1, -1, -1, -1 },
2196 /* 115: 0, 1,       4, 5, 6,     */  { 10,  6,  7, 10,  7,  1,  1,  7,  3, -1, -1, -1, -1, -1, -1, -1 },
2197 /* 116:       2,    4, 5, 6,     */  {  1,  2,  6,  1,  6,  8,  1,  8,  9,  8,  6,  7, -1, -1, -1, -1 },
2198 /* 117: 0,    2,    4, 5, 6,     */  {  2,  6,  9,  2,  9,  1,  6,  7,  9,  0,  9,  3,  7,  3,  9, -1 },
2199 /* 118:    1, 2,    4, 5, 6,     */  {  7,  8,  0,  7,  0,  6,  6,  0,  2, -1, -1, -1, -1, -1, -1, -1 },
2200 /* 119: 0, 1, 2,    4, 5, 6,     */  {  7,  3,  2,  6,  7,  2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2201 /* 120:          3, 4, 5, 6,     */  {  2,  3, 11, 10,  6,  8, 10,  8,  9,  8,  6,  7, -1, -1, -1, -1 },
2202 /* 121: 0,       3, 4, 5, 6,     */  {  2,  0,  7,  2,  7, 11,  0,  9,  7,  6,  7, 10,  9, 10,  7, -1 },
2203 /* 122:    1,    3, 4, 5, 6,     */  {  1,  8,  0,  1,  7,  8,  1, 10,  7,  6,  7, 10,  2,  3, 11, -1 },
2204 /* 123: 0, 1,    3, 4, 5, 6,     */  { 11,  2,  1, 11,  1,  7, 10,  6,  1,  6,  7,  1, -1, -1, -1, -1 },
2205 /* 124:       2, 3, 4, 5, 6,     */  {  8,  9,  6,  8,  6,  7,  9,  1,  6, 11,  6,  3,  1,  3,  6, -1 },
2206 /* 125: 0,    2, 3, 4, 5, 6,     */  {  0,  9,  1, 11,  6,  7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2207 /* 126:    1, 2, 3, 4, 5, 6,     */  {  7,  8,  0,  7,  0,  6,  3, 11,  0, 11,  6,  0, -1, -1, -1, -1 },
2208 /* 127: 0, 1, 2, 3, 4, 5, 6,     */  {  7, 11,  6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2209 /* 128:                      7,  */  {  7,  6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2210 /* 129: 0,                   7,  */  {  3,  0,  8, 11,  7,  6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2211 /* 130:    1,                7,  */  {  0,  1,  9, 11,  7,  6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2212 /* 131: 0, 1,                7,  */  {  8,  1,  9,  8,  3,  1, 11,  7,  6, -1, -1, -1, -1, -1, -1, -1 },
2213 /* 132:       2,             7,  */  { 10,  1,  2,  6, 11,  7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2214 /* 133: 0,    2,             7,  */  {  1,  2, 10,  3,  0,  8,  6, 11,  7, -1, -1, -1, -1, -1, -1, -1 },
2215 /* 134:    1, 2,             7,  */  {  2,  9,  0,  2, 10,  9,  6, 11,  7, -1, -1, -1, -1, -1, -1, -1 },
2216 /* 135: 0, 1, 2,             7,  */  {  6, 11,  7,  2, 10,  3, 10,  8,  3, 10,  9,  8, -1, -1, -1, -1 },
2217 /* 136:          3,          7,  */  {  7,  2,  3,  6,  2,  7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2218 /* 137: 0,       3,          7,  */  {  7,  0,  8,  7,  6,  0,  6,  2,  0, -1, -1, -1, -1, -1, -1, -1 },
2219 /* 138:    1,    3,          7,  */  {  2,  7,  6,  2,  3,  7,  0,  1,  9, -1, -1, -1, -1, -1, -1, -1 },
2220 /* 139: 0, 1,    3,          7,  */  {  1,  6,  2,  1,  8,  6,  1,  9,  8,  8,  7,  6, -1, -1, -1, -1 },
2221 /* 140:       2, 3,          7,  */  { 10,  7,  6, 10,  1,  7,  1,  3,  7, -1, -1, -1, -1, -1, -1, -1 },
2222 /* 141: 0,    2, 3,          7,  */  { 10,  7,  6,  1,  7, 10,  1,  8,  7,  1,  0,  8, -1, -1, -1, -1 },
2223 /* 142:    1, 2, 3,          7,  */  {  0,  3,  7,  0,  7, 10,  0, 10,  9,  6, 10,  7, -1, -1, -1, -1 },
2224 /* 143: 0, 1, 2, 3,          7,  */  {  7,  6, 10,  7, 10,  8,  8, 10,  9, -1, -1, -1, -1, -1, -1, -1 },
2225 /* 144:             4,       7,  */  {  6,  8,  4, 11,  8,  6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2226 /* 145: 0,          4,       7,  */  {  3,  6, 11,  3,  0,  6,  0,  4,  6, -1, -1, -1, -1, -1, -1, -1 },
2227 /* 146:    1,       4,       7,  */  {  8,  6, 11,  8,  4,  6,  9,  0,  1, -1, -1, -1, -1, -1, -1, -1 },
2228 /* 147: 0, 1,       4,       7,  */  {  9,  4,  6,  9,  6,  3,  9,  3,  1, 11,  3,  6, -1, -1, -1, -1 },
2229 /* 148:       2,    4,       7,  */  {  6,  8,  4,  6, 11,  8,  2, 10,  1, -1, -1, -1, -1, -1, -1, -1 },
2230 /* 149: 0,    2,    4,       7,  */  {  1,  2, 10,  3,  0, 11,  0,  6, 11,  0,  4,  6, -1, -1, -1, -1 },
2231 /* 150:    1, 2,    4,       7,  */  {  4, 11,  8,  4,  6, 11,  0,  2,  9,  2, 10,  9, -1, -1, -1, -1 },
2232 /* 151: 0, 1, 2,    4,       7,  */  { 10,  9,  3, 10,  3,  2,  9,  4,  3, 11,  3,  6,  4,  6,  3, -1 },
2233 /* 152:          3, 4,       7,  */  {  8,  2,  3,  8,  4,  2,  4,  6,  2, -1, -1, -1, -1, -1, -1, -1 },
2234 /* 153: 0,       3, 4,       7,  */  {  0,  4,  2,  4,  6,  2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2235 /* 154:    1,    3, 4,       7,  */  {  1,  9,  0,  2,  3,  4,  2,  4,  6,  4,  3,  8, -1, -1, -1, -1 },
2236 /* 155: 0, 1,    3, 4,       7,  */  {  1,  9,  4,  1,  4,  2,  2,  4,  6, -1, -1, -1, -1, -1, -1, -1 },
2237 /* 156:       2, 3, 4,       7,  */  {  8,  1,  3,  8,  6,  1,  8,  4,  6,  6, 10,  1, -1, -1, -1, -1 },
2238 /* 157: 0,    2, 3, 4,       7,  */  { 10,  1,  0, 10,  0,  6,  6,  0,  4, -1, -1, -1, -1, -1, -1, -1 },
2239 /* 158:    1, 2, 3, 4,       7,  */  {  4,  6,  3,  4,  3,  8,  6, 10,  3,  0,  3,  9, 10,  9,  3, -1 },
2240 /* 159: 0, 1, 2, 3, 4,       7,  */  { 10,  9,  4,  6, 10,  4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2241 /* 160:                5,    7,  */  {  4,  9,  5,  7,  6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2242 /* 161: 0,             5,    7,  */  {  0,  8,  3,  4,  9,  5, 11,  7,  6, -1, -1, -1, -1, -1, -1, -1 },
2243 /* 162:    1,          5,    7,  */  {  5,  0,  1,  5,  4,  0,  7,  6, 11, -1, -1, -1, -1, -1, -1, -1 },
2244 /* 163: 0, 1,          5,    7,  */  { 11,  7,  6,  8,  3,  4,  3,  5,  4,  3,  1,  5, -1, -1, -1, -1 },
2245 /* 164:       2,       5,    7,  */  {  9,  5,  4, 10,  1,  2,  7,  6, 11, -1, -1, -1, -1, -1, -1, -1 },
2246 /* 165: 0,    2,       5,    7,  */  {  6, 11,  7,  1,  2, 10,  0,  8,  3,  4,  9,  5, -1, -1, -1, -1 },
2247 /* 166:    1, 2,       5,    7,  */  {  7,  6, 11,  5,  4, 10,  4,  2, 10,  4,  0,  2, -1, -1, -1, -1 },
2248 /* 167: 0, 1, 2,       5,    7,  */  {  3,  4,  8,  3,  5,  4,  3,  2,  5, 10,  5,  2, 11,  7,  6, -1 },
2249 /* 168:          3,    5,    7,  */  {  7,  2,  3,  7,  6,  2,  5,  4,  9, -1, -1, -1, -1, -1, -1, -1 },
2250 /* 169: 0,       3,    5,    7,  */  {  9,  5,  4,  0,  8,  6,  0,  6,  2,  6,  8,  7, -1, -1, -1, -1 },
2251 /* 170:    1,    3,    5,    7,  */  {  3,  6,  2,  3,  7,  6,  1,  5,  0,  5,  4,  0, -1, -1, -1, -1 },
2252 /* 171: 0, 1,    3,    5,    7,  */  {  6,  2,  8,  6,  8,  7,  2,  1,  8,  4,  8,  5,  1,  5,  8, -1 },
2253 /* 172:       2, 3,    5,    7,  */  {  9,  5,  4, 10,  1,  6,  1,  7,  6,  1,  3,  7, -1, -1, -1, -1 },
2254 /* 173: 0,    2, 3,    5,    7,  */  {  1,  6, 10,  1,  7,  6,  1,  0,  7,  8,  7,  0,  9,  5,  4, -1 },
2255 /* 174:    1, 2, 3,    5,    7,  */  {  4,  0, 10,  4, 10,  5,  0,  3, 10,  6, 10,  7,  3,  7, 10, -1 },
2256 /* 175: 0, 1, 2, 3,    5,    7,  */  {  7,  6, 10,  7, 10,  8,  5,  4, 10,  4,  8, 10, -1, -1, -1, -1 },
2257 /* 176:             4, 5,    7,  */  {  6,  9,  5,  6, 11,  9, 11,  8,  9, -1, -1, -1, -1, -1, -1, -1 },
2258 /* 177: 0,          4, 5,    7,  */  {  3,  6, 11,  0,  6,  3,  0,  5,  6,  0,  9,  5, -1, -1, -1, -1 },
2259 /* 178:    1,       4, 5,    7,  */  {  0, 11,  8,  0,  5, 11,  0,  1,  5,  5,  6, 11, -1, -1, -1, -1 },
2260 /* 179: 0, 1,       4, 5,    7,  */  {  6, 11,  3,  6,  3,  5,  5,  3,  1, -1, -1, -1, -1, -1, -1, -1 },
2261 /* 180:       2,    4, 5,    7,  */  {  1,  2, 10,  9,  5, 11,  9, 11,  8, 11,  5,  6, -1, -1, -1, -1 },
2262 /* 181: 0,    2,    4, 5,    7,  */  {  0, 11,  3,  0,  6, 11,  0,  9,  6,  5,  6,  9,  1,  2, 10, -1 },
2263 /* 182:    1, 2,    4, 5,    7,  */  { 11,  8,  5, 11,  5,  6,  8,  0,  5, 10,  5,  2,  0,  2,  5, -1 },
2264 /* 183: 0, 1, 2,    4, 5,    7,  */  {  6, 11,  3,  6,  3,  5,  2, 10,  3, 10,  5,  3, -1, -1, -1, -1 },
2265 /* 184:          3, 4, 5,    7,  */  {  5,  8,  9,  5,  2,  8,  5,  6,  2,  3,  8,  2, -1, -1, -1, -1 },
2266 /* 185: 0,       3, 4, 5,    7,  */  {  9,  5,  6,  9,  6,  0,  0,  6,  2, -1, -1, -1, -1, -1, -1, -1 },
2267 /* 186:    1,    3, 4, 5,    7,  */  {  1,  5,  8,  1,  8,  0,  5,  6,  8,  3,  8,  2,  6,  2,  8, -1 },
2268 /* 187: 0, 1,    3, 4, 5,    7,  */  {  1,  5,  6,  2,  1,  6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2269 /* 188:       2, 3, 4, 5,    7,  */  {  1,  3,  6,  1,  6, 10,  3,  8,  6,  5,  6,  9,  8,  9,  6, -1 },
2270 /* 189: 0,    2, 3, 4, 5,    7,  */  { 10,  1,  0, 10,  0,  6,  9,  5,  0,  5,  6,  0, -1, -1, -1, -1 },
2271 /* 190:    1, 2, 3, 4, 5,    7,  */  {  0,  3,  8,  5,  6, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2272 /* 191: 0, 1, 2, 3, 4, 5,    7,  */  { 10,  5,  6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2273 /* 192:                   6, 7,  */  { 11,  5, 10,  7,  5, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2274 /* 193: 0,                6, 7,  */  { 11,  5, 10, 11,  7,  5,  8,  3,  0, -1, -1, -1, -1, -1, -1, -1 },
2275 /* 194:    1,             6, 7,  */  {  5, 11,  7,  5, 10, 11,  1,  9,  0, -1, -1, -1, -1, -1, -1, -1 },
2276 /* 195: 0, 1,             6, 7,  */  { 10,  7,  5, 10, 11,  7,  9,  8,  1,  8,  3,  1, -1, -1, -1, -1 },
2277 /* 196:       2,          6, 7,  */  { 11,  1,  2, 11,  7,  1,  7,  5,  1, -1, -1, -1, -1, -1, -1, -1 },
2278 /* 197: 0,    2,          6, 7,  */  {  0,  8,  3,  1,  2,  7,  1,  7,  5,  7,  2, 11, -1, -1, -1, -1 },
2279 /* 198:    1, 2,          6, 7,  */  {  9,  7,  5,  9,  2,  7,  9,  0,  2,  2, 11,  7, -1, -1, -1, -1 },
2280 /* 199: 0, 1, 2,          6, 7,  */  {  7,  5,  2,  7,  2, 11,  5,  9,  2,  3,  2,  8,  9,  8,  2, -1 },
2281 /* 200:          3,       6, 7,  */  {  2,  5, 10,  2,  3,  5,  3,  7,  5, -1, -1, -1, -1, -1, -1, -1 },
2282 /* 201: 0,       3,       6, 7,  */  {  8,  2,  0,  8,  5,  2,  8,  7,  5, 10,  2,  5, -1, -1, -1, -1 },
2283 /* 202:    1,    3,       6, 7,  */  {  9,  0,  1,  5, 10,  3,  5,  3,  7,  3, 10,  2, -1, -1, -1, -1 },
2284 /* 203: 0, 1,    3,       6, 7,  */  {  9,  8,  2,  9,  2,  1,  8,  7,  2, 10,  2,  5,  7,  5,  2, -1 },
2285 /* 204:       2, 3,       6, 7,  */  {  1,  3,  5,  3,  7,  5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2286 /* 205: 0,    2, 3,       6, 7,  */  {  0,  8,  7,  0,  7,  1,  1,  7,  5, -1, -1, -1, -1, -1, -1, -1 },
2287 /* 206:    1, 2, 3,       6, 7,  */  {  9,  0,  3,  9,  3,  5,  5,  3,  7, -1, -1, -1, -1, -1, -1, -1 },
2288 /* 207: 0, 1, 2, 3,       6, 7,  */  {  9,  8,  7,  5,  9,  7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2289 /* 208:             4,    6, 7,  */  {  5,  8,  4,  5, 10,  8, 10, 11,  8, -1, -1, -1, -1, -1, -1, -1 },
2290 /* 209: 0,          4,    6, 7,  */  {  5,  0,  4,  5, 11,  0,  5, 10, 11, 11,  3,  0, -1, -1, -1, -1 },
2291 /* 210:    1,       4,    6, 7,  */  {  0,  1,  9,  8,  4, 10,  8, 10, 11, 10,  4,  5, -1, -1, -1, -1 },
2292 /* 211: 0, 1,       4,    6, 7,  */  { 10, 11,  4, 10,  4,  5, 11,  3,  4,  9,  4,  1,  3,  1,  4, -1 },
2293 /* 212:       2,    4,    6, 7,  */  {  2,  5,  1,  2,  8,  5,  2, 11,  8,  4,  5,  8, -1, -1, -1, -1 },
2294 /* 213: 0,    2,    4,    6, 7,  */  {  0,  4, 11,  0, 11,  3,  4,  5, 11,  2, 11,  1,  5,  1, 11, -1 },
2295 /* 214:    1, 2,    4,    6, 7,  */  {  0,  2,  5,  0,  5,  9,  2, 11,  5,  4,  5,  8, 11,  8,  5, -1 },
2296 /* 215: 0, 1, 2,    4,    6, 7,  */  {  9,  4,  5,  2, 11,  3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2297 /* 216:          3, 4,    6, 7,  */  {  2,  5, 10,  3,  5,  2,  3,  4,  5,  3,  8,  4, -1, -1, -1, -1 },
2298 /* 217: 0,       3, 4,    6, 7,  */  {  5, 10,  2,  5,  2,  4,  4,  2,  0, -1, -1, -1, -1, -1, -1, -1 },
2299 /* 218:    1,    3, 4,    6, 7,  */  {  3, 10,  2,  3,  5, 10,  3,  8,  5,  4,  5,  8,  0,  1,  9, -1 },
2300 /* 219: 0, 1,    3, 4,    6, 7,  */  {  5, 10,  2,  5,  2,  4,  1,  9,  2,  9,  4,  2, -1, -1, -1, -1 },
2301 /* 220:       2, 3, 4,    6, 7,  */  {  8,  4,  5,  8,  5,  3,  3,  5,  1, -1, -1, -1, -1, -1, -1, -1 },
2302 /* 221: 0,    2, 3, 4,    6, 7,  */  {  0,  4,  5,  1,  0,  5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2303 /* 222:    1, 2, 3, 4,    6, 7,  */  {  8,  4,  5,  8,  5,  3,  9,  0,  5,  0,  3,  5, -1, -1, -1, -1 },
2304 /* 223: 0, 1, 2, 3, 4,    6, 7,  */  {  9,  4,  5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2305 /* 224:                5, 6, 7,  */  {  4, 11,  7,  4,  9, 11,  9, 10, 11, -1, -1, -1, -1, -1, -1, -1 },
2306 /* 225: 0,             5, 6, 7,  */  {  0,  8,  3,  4,  9,  7,  9, 11,  7,  9, 10, 11, -1, -1, -1, -1 },
2307 /* 226:    1,          5, 6, 7,  */  {  1, 10, 11,  1, 11,  4,  1,  4,  0,  7,  4, 11, -1, -1, -1, -1 },
2308 /* 227: 0, 1,          5, 6, 7,  */  {  3,  1,  4,  3,  4,  8,  1, 10,  4,  7,  4, 11, 10, 11,  4, -1 },
2309 /* 228:       2,       5, 6, 7,  */  {  4, 11,  7,  9, 11,  4,  9,  2, 11,  9,  1,  2, -1, -1, -1, -1 },
2310 /* 229: 0,    2,       5, 6, 7,  */  {  9,  7,  4,  9, 11,  7,  9,  1, 11,  2, 11,  1,  0,  8,  3, -1 },
2311 /* 230:    1, 2,       5, 6, 7,  */  { 11,  7,  4, 11,  4,  2,  2,  4,  0, -1, -1, -1, -1, -1, -1, -1 },
2312 /* 231: 0, 1, 2,       5, 6, 7,  */  { 11,  7,  4, 11,  4,  2,  8,  3,  4,  3,  2,  4, -1, -1, -1, -1 },
2313 /* 232:          3,    5, 6, 7,  */  {  2,  9, 10,  2,  7,  9,  2,  3,  7,  7,  4,  9, -1, -1, -1, -1 },
2314 /* 233: 0,       3,    5, 6, 7,  */  {  9, 10,  7,  9,  7,  4, 10,  2,  7,  8,  7,  0,  2,  0,  7, -1 },
2315 /* 234:    1,    3,    5, 6, 7,  */  {  3,  7, 10,  3, 10,  2,  7,  4, 10,  1, 10,  0,  4,  0, 10, -1 },
2316 /* 235: 0, 1,    3,    5, 6, 7,  */  {  1, 10,  2,  8,  7,  4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2317 /* 236:       2, 3,    5, 6, 7,  */  {  4,  9,  1,  4,  1,  7,  7,  1,  3, -1, -1, -1, -1, -1, -1, -1 },
2318 /* 237: 0,    2, 3,    5, 6, 7,  */  {  4,  9,  1,  4,  1,  7,  0,  8,  1,  8,  7,  1, -1, -1, -1, -1 },
2319 /* 238:    1, 2, 3,    5, 6, 7,  */  {  4,  0,  3,  7,  4,  3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2320 /* 239: 0, 1, 2, 3,    5, 6, 7,  */  {  4,  8,  7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2321 /* 240:             4, 5, 6, 7,  */  {  9, 10,  8, 10, 11,  8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2322 /* 241: 0,          4, 5, 6, 7,  */  {  3,  0,  9,  3,  9, 11, 11,  9, 10, -1, -1, -1, -1, -1, -1, -1 },
2323 /* 242:    1,       4, 5, 6, 7,  */  {  0,  1, 10,  0, 10,  8,  8, 10, 11, -1, -1, -1, -1, -1, -1, -1 },
2324 /* 243: 0, 1,       4, 5, 6, 7,  */  {  3,  1, 10, 11,  3, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2325 /* 244:       2,    4, 5, 6, 7,  */  {  1,  2, 11,  1, 11,  9,  9, 11,  8, -1, -1, -1, -1, -1, -1, -1 },
2326 /* 245: 0,    2,    4, 5, 6, 7,  */  {  3,  0,  9,  3,  9, 11,  1,  2,  9,  2, 11,  9, -1, -1, -1, -1 },
2327 /* 246:    1, 2,    4, 5, 6, 7,  */  {  0,  2, 11,  8,  0, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2328 /* 247: 0, 1, 2,    4, 5, 6, 7,  */  {  3,  2, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2329 /* 248:          3, 4, 5, 6, 7,  */  {  2,  3,  8,  2,  8, 10, 10,  8,  9, -1, -1, -1, -1, -1, -1, -1 },
2330 /* 249: 0,       3, 4, 5, 6, 7,  */  {  9, 10,  2,  0,  9,  2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2331 /* 250:    1,    3, 4, 5, 6, 7,  */  {  2,  3,  8,  2,  8, 10,  0,  1,  8,  1, 10,  8, -1, -1, -1, -1 },
2332 /* 251: 0, 1,    3, 4, 5, 6, 7,  */  {  1, 10,  2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2333 /* 252:       2, 3, 4, 5, 6, 7,  */  {  1,  3,  8,  9,  1,  8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2334 /* 253: 0,    2, 3, 4, 5, 6, 7,  */  {  0,  9,  1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2335 /* 254:    1, 2, 3, 4, 5, 6, 7,  */  {  0,  3,  8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
2336 /* 255: 0, 1, 2, 3, 4, 5, 6, 7,  */  { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }
2337 };
2338 //_____________________________________________________________________________
2339 
2340 
2341 
2342 #endif // _LOOKUPTABLE_H_
2343