Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
marchingCubes.cc
Go to the documentation of this file.
1 // -*- mode:c++;tab-width:2;indent-tabs-mode:t;show-trailing-whitespace:t;rm-trailing-spaces:t -*-
2 // vi: set ts=2 noet:
3 //
4 // (c) Copyright Rosetta Commons Member Institutions.
5 // (c) This file is part of the Rosetta software suite and is made available under license.
6 // (c) The Rosetta software is developed by the contributing members of the Rosetta Commons.
7 // (c) For more information, see http://www.rosettacommons.org. Questions about this can be
8 // (c) addressed to University of Washington UW TechTransfer, email: license@u.washington.edu.
9 
10 /// @file
11 /// @brief
12 /// @author
13 
15 
16 namespace protocols {
17 namespace viewer {
18 
19 
20 const int POLY_CASES[][21] = {
21 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
22 { 1, 9, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 1 */
23 { 1, 2, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 2 */
24 { 2, 9, 4, 0, 10, 9, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 3 */
25 { 2, 3, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 4 */
26 { 1, 9, 4, 0, 2, 3, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 5 */
27 {10, 3, 12, 0, 1, 3, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 6 */
28 { 3, 9, 4, 0, 3, 12, 9, 0, 12, 10, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 7 */
29 { 4, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 8 */
30 { 1, 11, 3, 0, 9, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 9 */
31 { 2, 10, 1, 0, 3, 4, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 10 */
32 { 2, 11, 3, 0, 2, 10, 11, 0, 10, 9, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 11 */
33 { 4, 12, 2, 0, 11, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 12 */
34 { 1, 12, 2, 0, 1, 9, 12, 0, 9, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 13 */
35 { 4, 10, 1, 0, 4, 11, 10, 0, 11, 12, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 14 */
36 {10, 9, 12, 0, 12, 9, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 15 */
37 { 5, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 16 */
38 { 5, 4, 1, 0, 8, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 17 */
39 { 1, 2, 10, 0, 9, 5, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 18 */
40 { 5, 2, 10, 0, 5, 8, 2, 0, 8, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 19 */
41 { 2, 3, 12, 0, 9, 5, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 20 */
42 { 4, 5, 8, 0, 4, 1, 5, 0, 2, 3, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 21 */
43 {10, 3, 12, 0, 10, 1, 3, 0, 9, 5, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 22 */
44 { 3, 12, 10, 0, 3, 10, 8, 0, 3, 8, 4, 0, 8, 10, 5, 0, 0, 0, 0, 0, 0}, /* 23 */
45 { 9, 5, 8, 0, 4, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 24 */
46 {11, 5, 8, 0, 11, 3, 5, 0, 3, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 25 */
47 {10, 1, 2, 0, 9, 5, 8, 0, 3, 4, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 26 */
48 { 5, 8, 11, 0, 10, 5, 11, 0, 10, 11, 3, 0, 10, 3, 2, 0, 0, 0, 0, 0, 0}, /* 27 */
49 { 4, 12, 2, 0, 4, 11, 12, 0, 8, 9, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 28 */
50 { 2, 11, 12, 0, 2, 5, 11, 0, 2, 1, 5, 0, 8, 11, 5, 0, 0, 0, 0, 0, 0}, /* 29 */
51 { 5, 8, 9, 0, 10, 1, 11, 0, 10, 11, 12, 0, 11, 1, 4, 0, 0, 0, 0, 0, 0}, /* 30 */
52 { 5, 8, 11, 0, 5, 11, 10, 0, 10, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 31 */
53 {10, 6, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 32 */
54 {10, 6, 5, 0, 1, 9, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 33 */
55 { 1, 6, 5, 0, 2, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 34 */
56 { 9, 6, 5, 0, 9, 4, 6, 0, 4, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 35 */
57 { 2, 3, 12, 0, 10, 6, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 36 */
58 { 4, 1, 9, 0, 2, 3, 12, 0, 5, 10, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 37 */
59 { 6, 3, 12, 0, 6, 5, 3, 0, 5, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 38 */
60 { 3, 12, 6, 0, 4, 3, 6, 0, 4, 6, 5, 0, 4, 5, 9, 0, 0, 0, 0, 0, 0}, /* 39 */
61 {10, 6, 5, 0, 3, 4, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 40 */
62 { 1, 11, 3, 0, 1, 9, 11, 0, 5, 10, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 41 */
63 { 1, 6, 5, 0, 1, 2, 6, 0, 3, 4, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 42 */
64 { 3, 2, 6, 0, 3, 6, 9, 0, 3, 9, 11, 0, 5, 9, 6, 0, 0, 0, 0, 0, 0}, /* 43 */
65 {12, 4, 11, 0, 12, 2, 4, 0, 10, 6, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 44 */
66 { 5, 10, 6, 0, 1, 9, 2, 0, 9, 12, 2, 0, 9, 11, 12, 0, 0, 0, 0, 0, 0}, /* 45 */
67 { 6, 5, 1, 0, 6, 1, 11, 0, 6, 11, 12, 0, 11, 1, 4, 0, 0, 0, 0, 0, 0}, /* 46 */
68 { 6, 5, 9, 0, 6, 9, 12, 0, 12, 9, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 47 */
69 {10, 8, 9, 0, 6, 8, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 48 */
70 {10, 4, 1, 0, 10, 6, 4, 0, 6, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 49 */
71 { 1, 8, 9, 0, 1, 2, 8, 0, 2, 6, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 50 */
72 { 2, 6, 4, 0, 4, 6, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 51 */
73 {10, 8, 9, 0, 10, 6, 8, 0, 12, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 52 */
74 {12, 2, 3, 0, 10, 6, 1, 0, 6, 4, 1, 0, 6, 8, 4, 0, 0, 0, 0, 0, 0}, /* 53 */
75 { 9, 1, 3, 0, 9, 3, 6, 0, 9, 6, 8, 0, 12, 6, 3, 0, 0, 0, 0, 0, 0}, /* 54 */
76 { 3, 12, 6, 0, 3, 6, 4, 0, 4, 6, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 55 */
77 { 8, 10, 6, 0, 8, 9, 10, 0, 4, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 56 */
78 {10, 6, 8, 0, 10, 8, 3, 0, 10, 3, 1, 0, 3, 8, 11, 0, 0, 0, 0, 0, 0}, /* 57 */
79 { 3, 4, 11, 0, 1, 2, 9, 0, 2, 8, 9, 0, 2, 6, 8, 0, 0, 0, 0, 0, 0}, /* 58 */
80 {11, 3, 2, 0, 11, 2, 8, 0, 8, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 59 */
81 {10, 6, 9, 0, 9, 6, 8, 0, 12, 2, 4, 0, 12, 4, 11, 0, 0, 0, 0, 0, 0}, /* 60 */
82 { 6, 8, 1, 0, 6, 1, 10, 0, 8, 11, 1, 0, 2, 1, 12, 0, 11, 12, 1, 0, 0}, /* 61 */
83 {11, 12, 1, 0, 11, 1, 4, 0, 12, 6, 1, 0, 9, 1, 8, 0, 6, 8, 1, 0, 0}, /* 62 */
84 {11, 12, 6, 0, 8, 11, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 63 */
85 {12, 7, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 64 */
86 { 1, 9, 4, 0, 6, 12, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 65 */
87 {10, 1, 2, 0, 6, 12, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 66 */
88 { 2, 9, 4, 0, 2, 10, 9, 0, 6, 12, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 67 */
89 { 2, 7, 6, 0, 3, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 68 */
90 { 2, 7, 6, 0, 2, 3, 7, 0, 4, 1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 69 */
91 {10, 7, 6, 0, 10, 1, 7, 0, 1, 3, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 70 */
92 { 6, 10, 9, 0, 6, 9, 3, 0, 6, 3, 7, 0, 4, 3, 9, 0, 0, 0, 0, 0, 0}, /* 71 */
93 { 3, 4, 11, 0, 12, 7, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 72 */
94 {11, 1, 9, 0, 11, 3, 1, 0, 12, 7, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 73 */
95 { 1, 2, 10, 0, 3, 4, 11, 0, 6, 12, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 74 */
96 { 6, 12, 7, 0, 2, 10, 3, 0, 10, 11, 3, 0, 10, 9, 11, 0, 0, 0, 0, 0, 0}, /* 75 */
97 { 7, 4, 11, 0, 7, 6, 4, 0, 6, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 76 */
98 { 1, 9, 11, 0, 1, 11, 6, 0, 1, 6, 2, 0, 6, 11, 7, 0, 0, 0, 0, 0, 0}, /* 77 */
99 { 4, 11, 7, 0, 1, 4, 7, 0, 1, 7, 6, 0, 1, 6, 10, 0, 0, 0, 0, 0, 0}, /* 78 */
100 { 7, 6, 10, 0, 7, 10, 11, 0, 11, 10, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 79 */
101 { 6, 12, 7, 0, 5, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 80 */
102 { 5, 4, 1, 0, 5, 8, 4, 0, 7, 6, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 81 */
103 { 2, 10, 1, 0, 6, 12, 7, 0, 9, 5, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 82 */
104 {12, 7, 6, 0, 2, 10, 8, 0, 2, 8, 4, 0, 8, 10, 5, 0, 0, 0, 0, 0, 0}, /* 83 */
105 { 7, 2, 3, 0, 7, 6, 2, 0, 5, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 84 */
106 { 2, 3, 6, 0, 6, 3, 7, 0, 4, 1, 5, 0, 4, 5, 8, 0, 0, 0, 0, 0, 0}, /* 85 */
107 { 9, 5, 8, 0, 10, 1, 6, 0, 1, 7, 6, 0, 1, 3, 7, 0, 0, 0, 0, 0, 0}, /* 86 */
108 { 8, 4, 10, 0, 8, 10, 5, 0, 4, 3, 10, 0, 6, 10, 7, 0, 3, 7, 10, 0, 0}, /* 87 */
109 { 4, 11, 3, 0, 8, 9, 5, 0, 12, 7, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 88 */
110 { 6, 12, 7, 0, 5, 8, 3, 0, 5, 3, 1, 0, 3, 8, 11, 0, 0, 0, 0, 0, 0}, /* 89 */
111 { 1, 2, 10, 0, 5, 8, 9, 0, 3, 4, 11, 0, 6, 12, 7, 0, 0, 0, 0, 0, 0}, /* 90 */
112 {10, 3, 2, 0, 10, 11, 3, 0, 10, 5, 11, 0, 8, 11, 5, 0, 6, 12, 7, 0, 0}, /* 91 */
113 { 9, 5, 8, 0, 4, 11, 6, 0, 4, 6, 2, 0, 6, 11, 7, 0, 0, 0, 0, 0, 0}, /* 92 */
114 { 6, 2, 11, 0, 6, 11, 7, 0, 2, 1, 11, 0, 8, 11, 5, 0, 1, 5, 11, 0, 0}, /* 93 */
115 { 1, 6, 10, 0, 1, 7, 6, 0, 1, 4, 7, 0, 11, 7, 4, 0, 9, 5, 8, 0, 0}, /* 94 */
116 { 7, 6, 10, 0, 7, 10, 11, 0, 5, 8, 10, 0, 8, 11, 10, 0, 0, 0, 0, 0, 0}, /* 95 */
117 {12, 5, 10, 0, 7, 5, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 96 */
118 { 5, 12, 7, 0, 5, 10, 12, 0, 1, 9, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 97 */
119 {12, 1, 2, 0, 12, 7, 1, 0, 7, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 98 */
120 { 9, 4, 2, 0, 9, 2, 7, 0, 9, 7, 5, 0, 7, 2, 12, 0, 0, 0, 0, 0, 0}, /* 99 */
121 { 2, 5, 10, 0, 2, 3, 5, 0, 3, 7, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 100 */
122 { 4, 1, 9, 0, 2, 3, 10, 0, 3, 5, 10, 0, 3, 7, 5, 0, 0, 0, 0, 0, 0}, /* 101 */
123 { 1, 3, 5, 0, 5, 3, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 102 */
124 { 9, 4, 3, 0, 9, 3, 5, 0, 5, 3, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 103 */
125 {12, 5, 10, 0, 12, 7, 5, 0, 11, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 104 */
126 { 1, 9, 3, 0, 3, 9, 11, 0, 5, 10, 12, 0, 5, 12, 7, 0, 0, 0, 0, 0, 0}, /* 105 */
127 { 4, 11, 3, 0, 1, 2, 7, 0, 1, 7, 5, 0, 7, 2, 12, 0, 0, 0, 0, 0, 0}, /* 106 */
128 { 7, 5, 2, 0, 7, 2, 12, 0, 5, 9, 2, 0, 3, 2, 11, 0, 9, 11, 2, 0, 0}, /* 107 */
129 {10, 7, 5, 0, 10, 4, 7, 0, 10, 2, 4, 0, 11, 7, 4, 0, 0, 0, 0, 0, 0}, /* 108 */
130 { 9, 11, 2, 0, 9, 2, 1, 0, 11, 7, 2, 0, 10, 2, 5, 0, 7, 5, 2, 0, 0}, /* 109 */
131 { 4, 11, 7, 0, 4, 7, 1, 0, 1, 7, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 110 */
132 { 7, 5, 9, 0, 11, 7, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 111 */
133 { 8, 12, 7, 0, 8, 9, 12, 0, 9, 10, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 112 */
134 { 1, 8, 4, 0, 1, 12, 8, 0, 1, 10, 12, 0, 7, 8, 12, 0, 0, 0, 0, 0, 0}, /* 113 */
135 {12, 7, 8, 0, 2, 12, 8, 0, 2, 8, 9, 0, 2, 9, 1, 0, 0, 0, 0, 0, 0}, /* 114 */
136 {12, 7, 8, 0, 12, 8, 2, 0, 2, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 115 */
137 { 2, 3, 7, 0, 2, 7, 9, 0, 2, 9, 10, 0, 9, 7, 8, 0, 0, 0, 0, 0, 0}, /* 116 */
138 { 3, 7, 10, 0, 3, 10, 2, 0, 7, 8, 10, 0, 1, 10, 4, 0, 8, 4, 10, 0, 0}, /* 117 */
139 { 8, 9, 1, 0, 8, 1, 7, 0, 7, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 118 */
140 { 8, 4, 3, 0, 7, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 119 */
141 { 3, 4, 11, 0, 12, 7, 9, 0, 12, 9, 10, 0, 9, 7, 8, 0, 0, 0, 0, 0, 0}, /* 120 */
142 { 3, 1, 8, 0, 3, 8, 11, 0, 1, 10, 8, 0, 7, 8, 12, 0, 10, 12, 8, 0, 0}, /* 121 */
143 { 2, 9, 1, 0, 2, 8, 9, 0, 2, 12, 8, 0, 7, 8, 12, 0, 3, 4, 11, 0, 0}, /* 122 */
144 {11, 3, 2, 0, 11, 2, 8, 0, 12, 7, 2, 0, 7, 8, 2, 0, 0, 0, 0, 0, 0}, /* 123 */
145 { 9, 10, 7, 0, 9, 7, 8, 0, 10, 2, 7, 0, 11, 7, 4, 0, 2, 4, 7, 0, 0}, /* 124 */
146 { 1, 10, 2, 0, 11, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 125 */
147 { 8, 9, 1, 0, 8, 1, 7, 0, 4, 11, 1, 0, 11, 7, 1, 0, 0, 0, 0, 0, 0}, /* 126 */
148 { 8, 11, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 127 */
149 { 8, 7, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 128 */
150 { 4, 1, 9, 0, 11, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 129 */
151 { 1, 2, 10, 0, 11, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 130 */
152 { 9, 2, 10, 0, 9, 4, 2, 0, 11, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 131 */
153 {12, 2, 3, 0, 7, 11, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 132 */
154 { 2, 3, 12, 0, 4, 1, 9, 0, 7, 11, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 133 */
155 { 3, 10, 1, 0, 3, 12, 10, 0, 7, 11, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 134 */
156 { 7, 11, 8, 0, 3, 12, 4, 0, 12, 9, 4, 0, 12, 10, 9, 0, 0, 0, 0, 0, 0}, /* 135 */
157 { 8, 3, 4, 0, 7, 3, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 136 */
158 { 8, 1, 9, 0, 8, 7, 1, 0, 7, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 137 */
159 { 3, 8, 7, 0, 3, 4, 8, 0, 1, 2, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 138 */
160 { 2, 7, 3, 0, 2, 9, 7, 0, 2, 10, 9, 0, 9, 8, 7, 0, 0, 0, 0, 0, 0}, /* 139 */
161 {12, 8, 7, 0, 12, 2, 8, 0, 2, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 140 */
162 {12, 8, 7, 0, 2, 8, 12, 0, 2, 9, 8, 0, 2, 1, 9, 0, 0, 0, 0, 0, 0}, /* 141 */
163 { 1, 4, 8, 0, 1, 8, 12, 0, 1, 12, 10, 0, 7, 12, 8, 0, 0, 0, 0, 0, 0}, /* 142 */
164 { 8, 7, 12, 0, 8, 12, 9, 0, 9, 12, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 143 */
165 { 7, 9, 5, 0, 11, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 144 */
166 { 4, 7, 11, 0, 4, 1, 7, 0, 1, 5, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 145 */
167 { 9, 7, 11, 0, 9, 5, 7, 0, 10, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 146 */
168 {10, 5, 7, 0, 10, 7, 4, 0, 10, 4, 2, 0, 11, 4, 7, 0, 0, 0, 0, 0, 0}, /* 147 */
169 { 7, 9, 5, 0, 7, 11, 9, 0, 3, 12, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 148 */
170 { 2, 3, 12, 0, 4, 1, 11, 0, 1, 7, 11, 0, 1, 5, 7, 0, 0, 0, 0, 0, 0}, /* 149 */
171 { 5, 11, 9, 0, 5, 7, 11, 0, 1, 3, 10, 0, 3, 12, 10, 0, 0, 0, 0, 0, 0}, /* 150 */
172 {12, 10, 4, 0, 12, 4, 3, 0, 10, 5, 4, 0, 11, 4, 7, 0, 5, 7, 4, 0, 0}, /* 151 */
173 { 9, 3, 4, 0, 9, 5, 3, 0, 5, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 152 */
174 { 1, 5, 3, 0, 5, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 153 */
175 { 2, 10, 1, 0, 3, 4, 5, 0, 3, 5, 7, 0, 5, 4, 9, 0, 0, 0, 0, 0, 0}, /* 154 */
176 { 2, 10, 5, 0, 2, 5, 3, 0, 3, 5, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 155 */
177 { 9, 2, 4, 0, 9, 7, 2, 0, 9, 5, 7, 0, 7, 12, 2, 0, 0, 0, 0, 0, 0}, /* 156 */
178 {12, 2, 1, 0, 12, 1, 7, 0, 7, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 157 */
179 { 5, 7, 4, 0, 5, 4, 9, 0, 7, 12, 4, 0, 1, 4, 10, 0, 12, 10, 4, 0, 0}, /* 158 */
180 {12, 10, 5, 0, 7, 12, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 159 */
181 { 5, 10, 6, 0, 8, 7, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 160 */
182 { 1, 9, 4, 0, 5, 10, 6, 0, 11, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 161 */
183 { 6, 1, 2, 0, 6, 5, 1, 0, 8, 7, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 162 */
184 {11, 8, 7, 0, 9, 4, 5, 0, 4, 6, 5, 0, 4, 2, 6, 0, 0, 0, 0, 0, 0}, /* 163 */
185 {10, 6, 5, 0, 12, 2, 3, 0, 8, 7, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 164 */
186 { 7, 11, 8, 0, 2, 3, 12, 0, 1, 9, 4, 0, 5, 10, 6, 0, 0, 0, 0, 0, 0}, /* 165 */
187 { 8, 7, 11, 0, 6, 5, 12, 0, 5, 3, 12, 0, 5, 1, 3, 0, 0, 0, 0, 0, 0}, /* 166 */
188 { 4, 5, 9, 0, 4, 6, 5, 0, 4, 3, 6, 0, 12, 6, 3, 0, 11, 8, 7, 0, 0}, /* 167 */
189 { 8, 3, 4, 0, 8, 7, 3, 0, 6, 5, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 168 */
190 {10, 6, 5, 0, 1, 9, 7, 0, 1, 7, 3, 0, 7, 9, 8, 0, 0, 0, 0, 0, 0}, /* 169 */
191 { 4, 7, 3, 0, 4, 8, 7, 0, 2, 6, 1, 0, 6, 5, 1, 0, 0, 0, 0, 0, 0}, /* 170 */
192 { 7, 3, 9, 0, 7, 9, 8, 0, 3, 2, 9, 0, 5, 9, 6, 0, 2, 6, 9, 0, 0}, /* 171 */
193 {10, 6, 5, 0, 12, 2, 7, 0, 2, 8, 7, 0, 2, 4, 8, 0, 0, 0, 0, 0, 0}, /* 172 */
194 { 2, 7, 12, 0, 2, 8, 7, 0, 2, 1, 8, 0, 9, 8, 1, 0, 10, 6, 5, 0, 0}, /* 173 */
195 { 5, 1, 12, 0, 5, 12, 6, 0, 1, 4, 12, 0, 7, 12, 8, 0, 4, 8, 12, 0, 0}, /* 174 */
196 { 8, 7, 12, 0, 8, 12, 9, 0, 6, 5, 12, 0, 5, 9, 12, 0, 0, 0, 0, 0, 0}, /* 175 */
197 { 7, 10, 6, 0, 7, 11, 10, 0, 11, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 176 */
198 { 4, 7, 11, 0, 1, 7, 4, 0, 1, 6, 7, 0, 1, 10, 6, 0, 0, 0, 0, 0, 0}, /* 177 */
199 { 1, 11, 9, 0, 1, 6, 11, 0, 1, 2, 6, 0, 6, 7, 11, 0, 0, 0, 0, 0, 0}, /* 178 */
200 { 7, 11, 4, 0, 7, 4, 6, 0, 6, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 179 */
201 { 2, 3, 12, 0, 10, 6, 11, 0, 10, 11, 9, 0, 11, 6, 7, 0, 0, 0, 0, 0, 0}, /* 180 */
202 { 1, 11, 4, 0, 1, 7, 11, 0, 1, 10, 7, 0, 6, 7, 10, 0, 2, 3, 12, 0, 0}, /* 181 */
203 {11, 9, 6, 0, 11, 6, 7, 0, 9, 1, 6, 0, 12, 6, 3, 0, 1, 3, 6, 0, 0}, /* 182 */
204 { 7, 11, 4, 0, 7, 4, 6, 0, 3, 12, 4, 0, 12, 6, 4, 0, 0, 0, 0, 0, 0}, /* 183 */
205 { 6, 9, 10, 0, 6, 3, 9, 0, 6, 7, 3, 0, 4, 9, 3, 0, 0, 0, 0, 0, 0}, /* 184 */
206 {10, 6, 7, 0, 10, 7, 1, 0, 1, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 185 */
207 { 2, 6, 9, 0, 2, 9, 1, 0, 6, 7, 9, 0, 4, 9, 3, 0, 7, 3, 9, 0, 0}, /* 186 */
208 { 2, 6, 7, 0, 3, 2, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 187 */
209 { 2, 4, 7, 0, 2, 7, 12, 0, 4, 9, 7, 0, 6, 7, 10, 0, 9, 10, 7, 0, 0}, /* 188 */
210 {12, 2, 1, 0, 12, 1, 7, 0, 10, 6, 1, 0, 6, 7, 1, 0, 0, 0, 0, 0, 0}, /* 189 */
211 { 1, 4, 9, 0, 6, 7, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 190 */
212 {12, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 191 */
213 {11, 6, 12, 0, 8, 6, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 192 */
214 {11, 6, 12, 0, 11, 8, 6, 0, 9, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 193 */
215 { 6, 11, 8, 0, 6, 12, 11, 0, 2, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 194 */
216 {12, 8, 6, 0, 12, 11, 8, 0, 10, 9, 2, 0, 9, 4, 2, 0, 0, 0, 0, 0, 0}, /* 195 */
217 {11, 2, 3, 0, 11, 8, 2, 0, 8, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 196 */
218 { 1, 9, 4, 0, 2, 3, 8, 0, 2, 8, 6, 0, 8, 3, 11, 0, 0, 0, 0, 0, 0}, /* 197 */
219 {10, 8, 6, 0, 10, 3, 8, 0, 10, 1, 3, 0, 3, 11, 8, 0, 0, 0, 0, 0, 0}, /* 198 */
220 { 8, 6, 3, 0, 8, 3, 11, 0, 6, 10, 3, 0, 4, 3, 9, 0, 10, 9, 3, 0, 0}, /* 199 */
221 { 3, 6, 12, 0, 3, 4, 6, 0, 4, 8, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 200 */
222 { 9, 3, 1, 0, 9, 6, 3, 0, 9, 8, 6, 0, 12, 3, 6, 0, 0, 0, 0, 0, 0}, /* 201 */
223 {10, 1, 2, 0, 6, 12, 4, 0, 6, 4, 8, 0, 4, 12, 3, 0, 0, 0, 0, 0, 0}, /* 202 */
224 {10, 9, 3, 0, 10, 3, 2, 0, 9, 8, 3, 0, 12, 3, 6, 0, 8, 6, 3, 0, 0}, /* 203 */
225 { 2, 4, 6, 0, 4, 8, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 204 */
226 { 1, 9, 8, 0, 1, 8, 2, 0, 2, 8, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 205 */
227 {10, 1, 4, 0, 10, 4, 6, 0, 6, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 206 */
228 {10, 9, 8, 0, 6, 10, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 207 */
229 { 6, 9, 5, 0, 6, 12, 9, 0, 12, 11, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 208 */
230 { 6, 1, 5, 0, 6, 11, 1, 0, 6, 12, 11, 0, 11, 4, 1, 0, 0, 0, 0, 0, 0}, /* 209 */
231 { 1, 2, 10, 0, 9, 5, 12, 0, 9, 12, 11, 0, 12, 5, 6, 0, 0, 0, 0, 0, 0}, /* 210 */
232 {12, 11, 5, 0, 12, 5, 6, 0, 11, 4, 5, 0, 10, 5, 2, 0, 4, 2, 5, 0, 0}, /* 211 */
233 { 3, 6, 2, 0, 3, 9, 6, 0, 3, 11, 9, 0, 5, 6, 9, 0, 0, 0, 0, 0, 0}, /* 212 */
234 { 1, 5, 11, 0, 1, 11, 4, 0, 5, 6, 11, 0, 3, 11, 2, 0, 6, 2, 11, 0, 0}, /* 213 */
235 { 1, 3, 6, 0, 1, 6, 10, 0, 3, 11, 6, 0, 5, 6, 9, 0, 11, 9, 6, 0, 0}, /* 214 */
236 {10, 5, 6, 0, 3, 11, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 215 */
237 { 3, 6, 12, 0, 4, 6, 3, 0, 4, 5, 6, 0, 4, 9, 5, 0, 0, 0, 0, 0, 0}, /* 216 */
238 { 6, 12, 3, 0, 6, 3, 5, 0, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 217 */
239 { 4, 12, 3, 0, 4, 6, 12, 0, 4, 9, 6, 0, 5, 6, 9, 0, 1, 2, 10, 0, 0}, /* 218 */
240 { 6, 12, 3, 0, 6, 3, 5, 0, 2, 10, 3, 0, 10, 5, 3, 0, 0, 0, 0, 0, 0}, /* 219 */
241 { 9, 5, 6, 0, 9, 6, 4, 0, 4, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 220 */
242 { 1, 5, 6, 0, 2, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 221 */
243 { 9, 5, 6, 0, 9, 6, 4, 0, 10, 1, 6, 0, 1, 4, 6, 0, 0, 0, 0, 0, 0}, /* 222 */
244 {10, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 223 */
245 { 5, 11, 8, 0, 5, 10, 11, 0, 10, 12, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 224 */
246 { 1, 9, 4, 0, 5, 10, 8, 0, 10, 11, 8, 0, 10, 12, 11, 0, 0, 0, 0, 0, 0}, /* 225 */
247 { 2, 12, 11, 0, 2, 11, 5, 0, 2, 5, 1, 0, 8, 5, 11, 0, 0, 0, 0, 0, 0}, /* 226 */
248 { 4, 2, 5, 0, 4, 5, 9, 0, 2, 12, 5, 0, 8, 5, 11, 0, 12, 11, 5, 0, 0}, /* 227 */
249 { 5, 11, 8, 0, 10, 11, 5, 0, 10, 3, 11, 0, 10, 2, 3, 0, 0, 0, 0, 0, 0}, /* 228 */
250 {10, 8, 5, 0, 10, 11, 8, 0, 10, 2, 11, 0, 3, 11, 2, 0, 1, 9, 4, 0, 0}, /* 229 */
251 {11, 8, 5, 0, 11, 5, 3, 0, 3, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 230 */
252 {11, 8, 5, 0, 11, 5, 3, 0, 9, 4, 5, 0, 4, 3, 5, 0, 0, 0, 0, 0, 0}, /* 231 */
253 { 3, 10, 12, 0, 3, 8, 10, 0, 3, 4, 8, 0, 8, 5, 10, 0, 0, 0, 0, 0, 0}, /* 232 */
254 {10, 12, 8, 0, 10, 8, 5, 0, 12, 3, 8, 0, 9, 8, 1, 0, 3, 1, 8, 0, 0}, /* 233 */
255 { 4, 8, 12, 0, 4, 12, 3, 0, 8, 5, 12, 0, 2, 12, 1, 0, 5, 1, 12, 0, 0}, /* 234 */
256 { 2, 12, 3, 0, 9, 8, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 235 */
257 { 5, 10, 2, 0, 5, 2, 8, 0, 8, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 236 */
258 { 5, 10, 2, 0, 5, 2, 8, 0, 1, 9, 2, 0, 9, 8, 2, 0, 0, 0, 0, 0, 0}, /* 237 */
259 { 5, 1, 4, 0, 8, 5, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 238 */
260 { 5, 9, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 239 */
261 {10, 12, 9, 0, 12, 11, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 240 */
262 { 4, 1, 10, 0, 4, 10, 11, 0, 11, 10, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 241 */
263 { 1, 2, 12, 0, 1, 12, 9, 0, 9, 12, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 242 */
264 { 4, 2, 12, 0, 11, 4, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 243 */
265 { 2, 3, 11, 0, 2, 11, 10, 0, 10, 11, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 244 */
266 { 4, 1, 10, 0, 4, 10, 11, 0, 2, 3, 10, 0, 3, 11, 10, 0, 0, 0, 0, 0, 0}, /* 245 */
267 { 1, 3, 11, 0, 9, 1, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 246 */
268 { 4, 3, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 247 */
269 { 3, 4, 9, 0, 3, 9, 12, 0, 12, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 248 */
270 {10, 12, 3, 0, 1, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 249 */
271 { 3, 4, 9, 0, 3, 9, 12, 0, 1, 2, 9, 0, 2, 12, 9, 0, 0, 0, 0, 0, 0}, /* 250 */
272 { 2, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 251 */
273 { 2, 4, 9, 0, 10, 2, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 252 */
274 { 1, 10, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 253 */
275 { 1, 4, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 254 */
276 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
277 };
278 
279 const int VERTEX_OFF[][3] = {
280  {-1, -1, -1}, // dummy, no vertex with index 0
281  {0, 0, 0},
282  {1, 0, 0},
283  {1, 1, 0},
284  {0, 1, 0},
285  {0, 0, 1},
286  {1, 0, 1},
287  {1, 1, 1},
288  {0, 1, 1}
289 };
290 
291 // Column labeling:
292 //
293 // Neighbor Vertex 1, Neighbor Vertex2, Direction.
294 //
295 // Direction is the vector from Neighbor 1 to Neighbor 2:
296 // 0 - +x
297 // 1 - +x
298 // 2 - +x
299 // 3 - -x
300 // 4 - -y
301 // 5 - -z
302 const int EDGE_NGHBRS[][3] = {
303  {-1, -1, -1}, // dummy, no edge with index 0
304 
305 // v1 v2 d
306  { 1, 2, 0}, // 1
307  { 2, 3, 1}, // 2
308  { 3, 4, 3}, // 3
309  { 4, 1, 4}, // 4
310 
311  { 5, 6, 0}, // 5
312  { 6, 7, 1}, // 6
313  { 7, 8, 3}, // 7
314  { 8, 5, 4}, // 8
315 
316  { 1, 5, 2}, // 9
317  { 2, 6, 2}, // 10
318  { 4, 8, 2}, // 11
319  { 3, 7, 2} // 12
320 };
321 
322 }
323 }