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