OmniSciDB  72c90bc290
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
baseCells.hpp
Go to the documentation of this file.
1 /*
2  * Copyright 2016-2020 Uber Technologies, Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
21 
22 // #include "h3Index.h"
23 
27 typedef struct {
28  int baseCell;
29  int ccwRot60;
32 
33 // /** @brief Neighboring base cell ID in each IJK direction.
34 // *
35 // * For each base cell, for each direction, the neighboring base
36 // * cell ID is given. 127 indicates there is no neighbor in that direction.
37 // */
38 // const int baseCellNeighbors[NUM_BASE_CELLS][7] = {
39 // {0, 1, 5, 2, 4, 3, 8}, // base cell 0
40 // {1, 7, 6, 9, 0, 3, 2}, // base cell 1
41 // {2, 6, 10, 11, 0, 1, 5}, // base cell 2
42 // {3, 13, 1, 7, 4, 12, 0}, // base cell 3
43 // {4, INVALID_BASE_CELL, 15, 8, 3, 0, 12}, // base cell 4 (pentagon)
44 // {5, 2, 18, 10, 8, 0, 16}, // base cell 5
45 // {6, 14, 11, 17, 1, 9, 2}, // base cell 6
46 // {7, 21, 9, 19, 3, 13, 1}, // base cell 7
47 // {8, 5, 22, 16, 4, 0, 15}, // base cell 8
48 // {9, 19, 14, 20, 1, 7, 6}, // base cell 9
49 // {10, 11, 24, 23, 5, 2, 18}, // base cell 10
50 // {11, 17, 23, 25, 2, 6, 10}, // base cell 11
51 // {12, 28, 13, 26, 4, 15, 3}, // base cell 12
52 // {13, 26, 21, 29, 3, 12, 7}, // base cell 13
53 // {14, INVALID_BASE_CELL, 17, 27, 9, 20, 6}, // base cell 14 (pentagon)
54 // {15, 22, 28, 31, 4, 8, 12}, // base cell 15
55 // {16, 18, 33, 30, 8, 5, 22}, // base cell 16
56 // {17, 11, 14, 6, 35, 25, 27}, // base cell 17
57 // {18, 24, 30, 32, 5, 10, 16}, // base cell 18
58 // {19, 34, 20, 36, 7, 21, 9}, // base cell 19
59 // {20, 14, 19, 9, 40, 27, 36}, // base cell 20
60 // {21, 38, 19, 34, 13, 29, 7}, // base cell 21
61 // {22, 16, 41, 33, 15, 8, 31}, // base cell 22
62 // {23, 24, 11, 10, 39, 37, 25}, // base cell 23
63 // {24, INVALID_BASE_CELL, 32, 37, 10, 23, 18}, // base cell 24 (pentagon)
64 // {25, 23, 17, 11, 45, 39, 35}, // base cell 25
65 // {26, 42, 29, 43, 12, 28, 13}, // base cell 26
66 // {27, 40, 35, 46, 14, 20, 17}, // base cell 27
67 // {28, 31, 42, 44, 12, 15, 26}, // base cell 28
68 // {29, 43, 38, 47, 13, 26, 21}, // base cell 29
69 // {30, 32, 48, 50, 16, 18, 33}, // base cell 30
70 // {31, 41, 44, 53, 15, 22, 28}, // base cell 31
71 // {32, 30, 24, 18, 52, 50, 37}, // base cell 32
72 // {33, 30, 49, 48, 22, 16, 41}, // base cell 33
73 // {34, 19, 38, 21, 54, 36, 51}, // base cell 34
74 // {35, 46, 45, 56, 17, 27, 25}, // base cell 35
75 // {36, 20, 34, 19, 55, 40, 54}, // base cell 36
76 // {37, 39, 52, 57, 24, 23, 32}, // base cell 37
77 // {38, INVALID_BASE_CELL, 34, 51, 29, 47, 21}, // base cell 38 (pentagon)
78 // {39, 37, 25, 23, 59, 57, 45}, // base cell 39
79 // {40, 27, 36, 20, 60, 46, 55}, // base cell 40
80 // {41, 49, 53, 61, 22, 33, 31}, // base cell 41
81 // {42, 58, 43, 62, 28, 44, 26}, // base cell 42
82 // {43, 62, 47, 64, 26, 42, 29}, // base cell 43
83 // {44, 53, 58, 65, 28, 31, 42}, // base cell 44
84 // {45, 39, 35, 25, 63, 59, 56}, // base cell 45
85 // {46, 60, 56, 68, 27, 40, 35}, // base cell 46
86 // {47, 38, 43, 29, 69, 51, 64}, // base cell 47
87 // {48, 49, 30, 33, 67, 66, 50}, // base cell 48
88 // {49, INVALID_BASE_CELL, 61, 66, 33, 48, 41}, // base cell 49 (pentagon)
89 // {50, 48, 32, 30, 70, 67, 52}, // base cell 50
90 // {51, 69, 54, 71, 38, 47, 34}, // base cell 51
91 // {52, 57, 70, 74, 32, 37, 50}, // base cell 52
92 // {53, 61, 65, 75, 31, 41, 44}, // base cell 53
93 // {54, 71, 55, 73, 34, 51, 36}, // base cell 54
94 // {55, 40, 54, 36, 72, 60, 73}, // base cell 55
95 // {56, 68, 63, 77, 35, 46, 45}, // base cell 56
96 // {57, 59, 74, 78, 37, 39, 52}, // base cell 57
97 // {58, INVALID_BASE_CELL, 62, 76, 44, 65, 42}, // base cell 58 (pentagon)
98 // {59, 63, 78, 79, 39, 45, 57}, // base cell 59
99 // {60, 72, 68, 80, 40, 55, 46}, // base cell 60
100 // {61, 53, 49, 41, 81, 75, 66}, // base cell 61
101 // {62, 43, 58, 42, 82, 64, 76}, // base cell 62
102 // {63, INVALID_BASE_CELL, 56, 45, 79, 59, 77}, // base cell 63 (pentagon)
103 // {64, 47, 62, 43, 84, 69, 82}, // base cell 64
104 // {65, 58, 53, 44, 86, 76, 75}, // base cell 65
105 // {66, 67, 81, 85, 49, 48, 61}, // base cell 66
106 // {67, 66, 50, 48, 87, 85, 70}, // base cell 67
107 // {68, 56, 60, 46, 90, 77, 80}, // base cell 68
108 // {69, 51, 64, 47, 89, 71, 84}, // base cell 69
109 // {70, 67, 52, 50, 83, 87, 74}, // base cell 70
110 // {71, 89, 73, 91, 51, 69, 54}, // base cell 71
111 // {72, INVALID_BASE_CELL, 73, 55, 80, 60, 88}, // base cell 72 (pentagon)
112 // {73, 91, 72, 88, 54, 71, 55}, // base cell 73
113 // {74, 78, 83, 92, 52, 57, 70}, // base cell 74
114 // {75, 65, 61, 53, 94, 86, 81}, // base cell 75
115 // {76, 86, 82, 96, 58, 65, 62}, // base cell 76
116 // {77, 63, 68, 56, 93, 79, 90}, // base cell 77
117 // {78, 74, 59, 57, 95, 92, 79}, // base cell 78
118 // {79, 78, 63, 59, 93, 95, 77}, // base cell 79
119 // {80, 68, 72, 60, 99, 90, 88}, // base cell 80
120 // {81, 85, 94, 101, 61, 66, 75}, // base cell 81
121 // {82, 96, 84, 98, 62, 76, 64}, // base cell 82
122 // {83, INVALID_BASE_CELL, 74, 70, 100, 87, 92}, // base cell 83 (pentagon)
123 // {84, 69, 82, 64, 97, 89, 98}, // base cell 84
124 // {85, 87, 101, 102, 66, 67, 81}, // base cell 85
125 // {86, 76, 75, 65, 104, 96, 94}, // base cell 86
126 // {87, 83, 102, 100, 67, 70, 85}, // base cell 87
127 // {88, 72, 91, 73, 99, 80, 105}, // base cell 88
128 // {89, 97, 91, 103, 69, 84, 71}, // base cell 89
129 // {90, 77, 80, 68, 106, 93, 99}, // base cell 90
130 // {91, 73, 89, 71, 105, 88, 103}, // base cell 91
131 // {92, 83, 78, 74, 108, 100, 95}, // base cell 92
132 // {93, 79, 90, 77, 109, 95, 106}, // base cell 93
133 // {94, 86, 81, 75, 107, 104, 101}, // base cell 94
134 // {95, 92, 79, 78, 109, 108, 93}, // base cell 95
135 // {96, 104, 98, 110, 76, 86, 82}, // base cell 96
136 // {97, INVALID_BASE_CELL, 98, 84, 103, 89, 111}, // base cell 97 (pentagon)
137 // {98, 110, 97, 111, 82, 96, 84}, // base cell 98
138 // {99, 80, 105, 88, 106, 90, 113}, // base cell 99
139 // {100, 102, 83, 87, 108, 114, 92}, // base cell 100
140 // {101, 102, 107, 112, 81, 85, 94}, // base cell 101
141 // {102, 101, 87, 85, 114, 112, 100}, // base cell 102
142 // {103, 91, 97, 89, 116, 105, 111}, // base cell 103
143 // {104, 107, 110, 115, 86, 94, 96}, // base cell 104
144 // {105, 88, 103, 91, 113, 99, 116}, // base cell 105
145 // {106, 93, 99, 90, 117, 109, 113}, // base cell 106
146 // {107, INVALID_BASE_CELL, 101, 94, 115, 104,
147 // 112}, // base cell 107 (pentagon)
148 // {108, 100, 95, 92, 118, 114, 109}, // base cell 108
149 // {109, 108, 93, 95, 117, 118, 106}, // base cell 109
150 // {110, 98, 104, 96, 119, 111, 115}, // base cell 110
151 // {111, 97, 110, 98, 116, 103, 119}, // base cell 111
152 // {112, 107, 102, 101, 120, 115, 114}, // base cell 112
153 // {113, 99, 116, 105, 117, 106, 121}, // base cell 113
154 // {114, 112, 100, 102, 118, 120, 108}, // base cell 114
155 // {115, 110, 107, 104, 120, 119, 112}, // base cell 115
156 // {116, 103, 119, 111, 113, 105, 121}, // base cell 116
157 // {117, INVALID_BASE_CELL, 109, 118, 113, 121,
158 // 106}, // base cell 117 (pentagon)
159 // {118, 120, 108, 114, 117, 121, 109}, // base cell 118
160 // {119, 111, 115, 110, 121, 116, 120}, // base cell 119
161 // {120, 115, 114, 112, 121, 119, 118}, // base cell 120
162 // {121, 116, 120, 119, 117, 113, 118}, // base cell 121
163 // };
164 
165 // /** @brief Neighboring base cell rotations in each IJK direction.
166 // *
167 // * For each base cell, for each direction, the number of 60 degree
168 // * CCW rotations to the coordinate system of the neighbor is given.
169 // * -1 indicates there is no neighbor in that direction.
170 // */
171 // const int baseCellNeighbor60CCWRots[NUM_BASE_CELLS][7] = {
172 // {0, 5, 0, 0, 1, 5, 1}, // base cell 0
173 // {0, 0, 1, 0, 1, 0, 1}, // base cell 1
174 // {0, 0, 0, 0, 0, 5, 0}, // base cell 2
175 // {0, 5, 0, 0, 2, 5, 1}, // base cell 3
176 // {0, -1, 1, 0, 3, 4, 2}, // base cell 4 (pentagon)
177 // {0, 0, 1, 0, 1, 0, 1}, // base cell 5
178 // {0, 0, 0, 3, 5, 5, 0}, // base cell 6
179 // {0, 0, 0, 0, 0, 5, 0}, // base cell 7
180 // {0, 5, 0, 0, 0, 5, 1}, // base cell 8
181 // {0, 0, 1, 3, 0, 0, 1}, // base cell 9
182 // {0, 0, 1, 3, 0, 0, 1}, // base cell 10
183 // {0, 3, 3, 3, 0, 0, 0}, // base cell 11
184 // {0, 5, 0, 0, 3, 5, 1}, // base cell 12
185 // {0, 0, 1, 0, 1, 0, 1}, // base cell 13
186 // {0, -1, 3, 0, 5, 2, 0}, // base cell 14 (pentagon)
187 // {0, 5, 0, 0, 4, 5, 1}, // base cell 15
188 // {0, 0, 0, 0, 0, 5, 0}, // base cell 16
189 // {0, 3, 3, 3, 3, 0, 3}, // base cell 17
190 // {0, 0, 0, 3, 5, 5, 0}, // base cell 18
191 // {0, 3, 3, 3, 0, 0, 0}, // base cell 19
192 // {0, 3, 3, 3, 0, 3, 0}, // base cell 20
193 // {0, 0, 0, 3, 5, 5, 0}, // base cell 21
194 // {0, 0, 1, 0, 1, 0, 1}, // base cell 22
195 // {0, 3, 3, 3, 0, 3, 0}, // base cell 23
196 // {0, -1, 3, 0, 5, 2, 0}, // base cell 24 (pentagon)
197 // {0, 0, 0, 3, 0, 0, 3}, // base cell 25
198 // {0, 0, 0, 0, 0, 5, 0}, // base cell 26
199 // {0, 3, 0, 0, 0, 3, 3}, // base cell 27
200 // {0, 0, 1, 0, 1, 0, 1}, // base cell 28
201 // {0, 0, 1, 3, 0, 0, 1}, // base cell 29
202 // {0, 3, 3, 3, 0, 0, 0}, // base cell 30
203 // {0, 0, 0, 0, 0, 5, 0}, // base cell 31
204 // {0, 3, 3, 3, 3, 0, 3}, // base cell 32
205 // {0, 0, 1, 3, 0, 0, 1}, // base cell 33
206 // {0, 3, 3, 3, 3, 0, 3}, // base cell 34
207 // {0, 0, 3, 0, 3, 0, 3}, // base cell 35
208 // {0, 0, 0, 3, 0, 0, 3}, // base cell 36
209 // {0, 3, 0, 0, 0, 3, 3}, // base cell 37
210 // {0, -1, 3, 0, 5, 2, 0}, // base cell 38 (pentagon)
211 // {0, 3, 0, 0, 3, 3, 0}, // base cell 39
212 // {0, 3, 0, 0, 3, 3, 0}, // base cell 40
213 // {0, 0, 0, 3, 5, 5, 0}, // base cell 41
214 // {0, 0, 0, 3, 5, 5, 0}, // base cell 42
215 // {0, 3, 3, 3, 0, 0, 0}, // base cell 43
216 // {0, 0, 1, 3, 0, 0, 1}, // base cell 44
217 // {0, 0, 3, 0, 0, 3, 3}, // base cell 45
218 // {0, 0, 0, 3, 0, 3, 0}, // base cell 46
219 // {0, 3, 3, 3, 0, 3, 0}, // base cell 47
220 // {0, 3, 3, 3, 0, 3, 0}, // base cell 48
221 // {0, -1, 3, 0, 5, 2, 0}, // base cell 49 (pentagon)
222 // {0, 0, 0, 3, 0, 0, 3}, // base cell 50
223 // {0, 3, 0, 0, 0, 3, 3}, // base cell 51
224 // {0, 0, 3, 0, 3, 0, 3}, // base cell 52
225 // {0, 3, 3, 3, 0, 0, 0}, // base cell 53
226 // {0, 0, 3, 0, 3, 0, 3}, // base cell 54
227 // {0, 0, 3, 0, 0, 3, 3}, // base cell 55
228 // {0, 3, 3, 3, 0, 0, 3}, // base cell 56
229 // {0, 0, 0, 3, 0, 3, 0}, // base cell 57
230 // {0, -1, 3, 0, 5, 2, 0}, // base cell 58 (pentagon)
231 // {0, 3, 3, 3, 3, 3, 0}, // base cell 59
232 // {0, 3, 3, 3, 3, 3, 0}, // base cell 60
233 // {0, 3, 3, 3, 3, 0, 3}, // base cell 61
234 // {0, 3, 3, 3, 3, 0, 3}, // base cell 62
235 // {0, -1, 3, 0, 5, 2, 0}, // base cell 63 (pentagon)
236 // {0, 0, 0, 3, 0, 0, 3}, // base cell 64
237 // {0, 3, 3, 3, 0, 3, 0}, // base cell 65
238 // {0, 3, 0, 0, 0, 3, 3}, // base cell 66
239 // {0, 3, 0, 0, 3, 3, 0}, // base cell 67
240 // {0, 3, 3, 3, 0, 0, 0}, // base cell 68
241 // {0, 3, 0, 0, 3, 3, 0}, // base cell 69
242 // {0, 0, 3, 0, 0, 3, 3}, // base cell 70
243 // {0, 0, 0, 3, 0, 3, 0}, // base cell 71
244 // {0, -1, 3, 0, 5, 2, 0}, // base cell 72 (pentagon)
245 // {0, 3, 3, 3, 0, 0, 3}, // base cell 73
246 // {0, 3, 3, 3, 0, 0, 3}, // base cell 74
247 // {0, 0, 0, 3, 0, 0, 3}, // base cell 75
248 // {0, 3, 0, 0, 0, 3, 3}, // base cell 76
249 // {0, 0, 0, 3, 0, 5, 0}, // base cell 77
250 // {0, 3, 3, 3, 0, 0, 0}, // base cell 78
251 // {0, 0, 1, 3, 1, 0, 1}, // base cell 79
252 // {0, 0, 1, 3, 1, 0, 1}, // base cell 80
253 // {0, 0, 3, 0, 3, 0, 3}, // base cell 81
254 // {0, 0, 3, 0, 3, 0, 3}, // base cell 82
255 // {0, -1, 3, 0, 5, 2, 0}, // base cell 83 (pentagon)
256 // {0, 0, 3, 0, 0, 3, 3}, // base cell 84
257 // {0, 0, 0, 3, 0, 3, 0}, // base cell 85
258 // {0, 3, 0, 0, 3, 3, 0}, // base cell 86
259 // {0, 3, 3, 3, 3, 3, 0}, // base cell 87
260 // {0, 0, 0, 3, 0, 5, 0}, // base cell 88
261 // {0, 3, 3, 3, 3, 3, 0}, // base cell 89
262 // {0, 0, 0, 0, 0, 0, 1}, // base cell 90
263 // {0, 3, 3, 3, 0, 0, 0}, // base cell 91
264 // {0, 0, 0, 3, 0, 5, 0}, // base cell 92
265 // {0, 5, 0, 0, 5, 5, 0}, // base cell 93
266 // {0, 0, 3, 0, 0, 3, 3}, // base cell 94
267 // {0, 0, 0, 0, 0, 0, 1}, // base cell 95
268 // {0, 0, 0, 3, 0, 3, 0}, // base cell 96
269 // {0, -1, 3, 0, 5, 2, 0}, // base cell 97 (pentagon)
270 // {0, 3, 3, 3, 0, 0, 3}, // base cell 98
271 // {0, 5, 0, 0, 5, 5, 0}, // base cell 99
272 // {0, 0, 1, 3, 1, 0, 1}, // base cell 100
273 // {0, 3, 3, 3, 0, 0, 3}, // base cell 101
274 // {0, 3, 3, 3, 0, 0, 0}, // base cell 102
275 // {0, 0, 1, 3, 1, 0, 1}, // base cell 103
276 // {0, 3, 3, 3, 3, 3, 0}, // base cell 104
277 // {0, 0, 0, 0, 0, 0, 1}, // base cell 105
278 // {0, 0, 1, 0, 3, 5, 1}, // base cell 106
279 // {0, -1, 3, 0, 5, 2, 0}, // base cell 107 (pentagon)
280 // {0, 5, 0, 0, 5, 5, 0}, // base cell 108
281 // {0, 0, 1, 0, 4, 5, 1}, // base cell 109
282 // {0, 3, 3, 3, 0, 0, 0}, // base cell 110
283 // {0, 0, 0, 3, 0, 5, 0}, // base cell 111
284 // {0, 0, 0, 3, 0, 5, 0}, // base cell 112
285 // {0, 0, 1, 0, 2, 5, 1}, // base cell 113
286 // {0, 0, 0, 0, 0, 0, 1}, // base cell 114
287 // {0, 0, 1, 3, 1, 0, 1}, // base cell 115
288 // {0, 5, 0, 0, 5, 5, 0}, // base cell 116
289 // {0, -1, 1, 0, 3, 4, 2}, // base cell 117 (pentagon)
290 // {0, 0, 1, 0, 0, 5, 1}, // base cell 118
291 // {0, 0, 0, 0, 0, 0, 1}, // base cell 119
292 // {0, 5, 0, 0, 5, 5, 0}, // base cell 120
293 // {0, 0, 1, 0, 1, 5, 1}, // base cell 121
294 // };
295 
309  {// face 0
310  {
311  // i 0
312  {{16, 0}, {18, 0}, {24, 0}}, // j 0
313  {{33, 0}, {30, 0}, {32, 3}}, // j 1
314  {{49, 1}, {48, 3}, {50, 3}} // j 2
315  },
316  {
317  // i 1
318  {{8, 0}, {5, 5}, {10, 5}}, // j 0
319  {{22, 0}, {16, 0}, {18, 0}}, // j 1
320  {{41, 1}, {33, 0}, {30, 0}} // j 2
321  },
322  {
323  // i 2
324  {{4, 0}, {0, 5}, {2, 5}}, // j 0
325  {{15, 1}, {8, 0}, {5, 5}}, // j 1
326  {{31, 1}, {22, 0}, {16, 0}} // j 2
327  }},
328  {// face 1
329  {
330  // i 0
331  {{2, 0}, {6, 0}, {14, 0}}, // j 0
332  {{10, 0}, {11, 0}, {17, 3}}, // j 1
333  {{24, 1}, {23, 3}, {25, 3}} // j 2
334  },
335  {
336  // i 1
337  {{0, 0}, {1, 5}, {9, 5}}, // j 0
338  {{5, 0}, {2, 0}, {6, 0}}, // j 1
339  {{18, 1}, {10, 0}, {11, 0}} // j 2
340  },
341  {
342  // i 2
343  {{4, 1}, {3, 5}, {7, 5}}, // j 0
344  {{8, 1}, {0, 0}, {1, 5}}, // j 1
345  {{16, 1}, {5, 0}, {2, 0}} // j 2
346  }},
347  {// face 2
348  {
349  // i 0
350  {{7, 0}, {21, 0}, {38, 0}}, // j 0
351  {{9, 0}, {19, 0}, {34, 3}}, // j 1
352  {{14, 1}, {20, 3}, {36, 3}} // j 2
353  },
354  {
355  // i 1
356  {{3, 0}, {13, 5}, {29, 5}}, // j 0
357  {{1, 0}, {7, 0}, {21, 0}}, // j 1
358  {{6, 1}, {9, 0}, {19, 0}} // j 2
359  },
360  {
361  // i 2
362  {{4, 2}, {12, 5}, {26, 5}}, // j 0
363  {{0, 1}, {3, 0}, {13, 5}}, // j 1
364  {{2, 1}, {1, 0}, {7, 0}} // j 2
365  }},
366  {// face 3
367  {
368  // i 0
369  {{26, 0}, {42, 0}, {58, 0}}, // j 0
370  {{29, 0}, {43, 0}, {62, 3}}, // j 1
371  {{38, 1}, {47, 3}, {64, 3}} // j 2
372  },
373  {
374  // i 1
375  {{12, 0}, {28, 5}, {44, 5}}, // j 0
376  {{13, 0}, {26, 0}, {42, 0}}, // j 1
377  {{21, 1}, {29, 0}, {43, 0}} // j 2
378  },
379  {
380  // i 2
381  {{4, 3}, {15, 5}, {31, 5}}, // j 0
382  {{3, 1}, {12, 0}, {28, 5}}, // j 1
383  {{7, 1}, {13, 0}, {26, 0}} // j 2
384  }},
385  {// face 4
386  {
387  // i 0
388  {{31, 0}, {41, 0}, {49, 0}}, // j 0
389  {{44, 0}, {53, 0}, {61, 3}}, // j 1
390  {{58, 1}, {65, 3}, {75, 3}} // j 2
391  },
392  {
393  // i 1
394  {{15, 0}, {22, 5}, {33, 5}}, // j 0
395  {{28, 0}, {31, 0}, {41, 0}}, // j 1
396  {{42, 1}, {44, 0}, {53, 0}} // j 2
397  },
398  {
399  // i 2
400  {{4, 4}, {8, 5}, {16, 5}}, // j 0
401  {{12, 1}, {15, 0}, {22, 5}}, // j 1
402  {{26, 1}, {28, 0}, {31, 0}} // j 2
403  }},
404  {// face 5
405  {
406  // i 0
407  {{50, 0}, {48, 0}, {49, 3}}, // j 0
408  {{32, 0}, {30, 3}, {33, 3}}, // j 1
409  {{24, 3}, {18, 3}, {16, 3}} // j 2
410  },
411  {
412  // i 1
413  {{70, 0}, {67, 0}, {66, 3}}, // j 0
414  {{52, 3}, {50, 0}, {48, 0}}, // j 1
415  {{37, 3}, {32, 0}, {30, 3}} // j 2
416  },
417  {
418  // i 2
419  {{83, 0}, {87, 3}, {85, 3}}, // j 0
420  {{74, 3}, {70, 0}, {67, 0}}, // j 1
421  {{57, 1}, {52, 3}, {50, 0}} // j 2
422  }},
423  {// face 6
424  {
425  // i 0
426  {{25, 0}, {23, 0}, {24, 3}}, // j 0
427  {{17, 0}, {11, 3}, {10, 3}}, // j 1
428  {{14, 3}, {6, 3}, {2, 3}} // j 2
429  },
430  {
431  // i 1
432  {{45, 0}, {39, 0}, {37, 3}}, // j 0
433  {{35, 3}, {25, 0}, {23, 0}}, // j 1
434  {{27, 3}, {17, 0}, {11, 3}} // j 2
435  },
436  {
437  // i 2
438  {{63, 0}, {59, 3}, {57, 3}}, // j 0
439  {{56, 3}, {45, 0}, {39, 0}}, // j 1
440  {{46, 3}, {35, 3}, {25, 0}} // j 2
441  }},
442  {// face 7
443  {
444  // i 0
445  {{36, 0}, {20, 0}, {14, 3}}, // j 0
446  {{34, 0}, {19, 3}, {9, 3}}, // j 1
447  {{38, 3}, {21, 3}, {7, 3}} // j 2
448  },
449  {
450  // i 1
451  {{55, 0}, {40, 0}, {27, 3}}, // j 0
452  {{54, 3}, {36, 0}, {20, 0}}, // j 1
453  {{51, 3}, {34, 0}, {19, 3}} // j 2
454  },
455  {
456  // i 2
457  {{72, 0}, {60, 3}, {46, 3}}, // j 0
458  {{73, 3}, {55, 0}, {40, 0}}, // j 1
459  {{71, 3}, {54, 3}, {36, 0}} // j 2
460  }},
461  {// face 8
462  {
463  // i 0
464  {{64, 0}, {47, 0}, {38, 3}}, // j 0
465  {{62, 0}, {43, 3}, {29, 3}}, // j 1
466  {{58, 3}, {42, 3}, {26, 3}} // j 2
467  },
468  {
469  // i 1
470  {{84, 0}, {69, 0}, {51, 3}}, // j 0
471  {{82, 3}, {64, 0}, {47, 0}}, // j 1
472  {{76, 3}, {62, 0}, {43, 3}} // j 2
473  },
474  {
475  // i 2
476  {{97, 0}, {89, 3}, {71, 3}}, // j 0
477  {{98, 3}, {84, 0}, {69, 0}}, // j 1
478  {{96, 3}, {82, 3}, {64, 0}} // j 2
479  }},
480  {// face 9
481  {
482  // i 0
483  {{75, 0}, {65, 0}, {58, 3}}, // j 0
484  {{61, 0}, {53, 3}, {44, 3}}, // j 1
485  {{49, 3}, {41, 3}, {31, 3}} // j 2
486  },
487  {
488  // i 1
489  {{94, 0}, {86, 0}, {76, 3}}, // j 0
490  {{81, 3}, {75, 0}, {65, 0}}, // j 1
491  {{66, 3}, {61, 0}, {53, 3}} // j 2
492  },
493  {
494  // i 2
495  {{107, 0}, {104, 3}, {96, 3}}, // j 0
496  {{101, 3}, {94, 0}, {86, 0}}, // j 1
497  {{85, 3}, {81, 3}, {75, 0}} // j 2
498  }},
499  {// face 10
500  {
501  // i 0
502  {{57, 0}, {59, 0}, {63, 3}}, // j 0
503  {{74, 0}, {78, 3}, {79, 3}}, // j 1
504  {{83, 3}, {92, 3}, {95, 3}} // j 2
505  },
506  {
507  // i 1
508  {{37, 0}, {39, 3}, {45, 3}}, // j 0
509  {{52, 0}, {57, 0}, {59, 0}}, // j 1
510  {{70, 3}, {74, 0}, {78, 3}} // j 2
511  },
512  {
513  // i 2
514  {{24, 0}, {23, 3}, {25, 3}}, // j 0
515  {{32, 3}, {37, 0}, {39, 3}}, // j 1
516  {{50, 3}, {52, 0}, {57, 0}} // j 2
517  }},
518  {// face 11
519  {
520  // i 0
521  {{46, 0}, {60, 0}, {72, 3}}, // j 0
522  {{56, 0}, {68, 3}, {80, 3}}, // j 1
523  {{63, 3}, {77, 3}, {90, 3}} // j 2
524  },
525  {
526  // i 1
527  {{27, 0}, {40, 3}, {55, 3}}, // j 0
528  {{35, 0}, {46, 0}, {60, 0}}, // j 1
529  {{45, 3}, {56, 0}, {68, 3}} // j 2
530  },
531  {
532  // i 2
533  {{14, 0}, {20, 3}, {36, 3}}, // j 0
534  {{17, 3}, {27, 0}, {40, 3}}, // j 1
535  {{25, 3}, {35, 0}, {46, 0}} // j 2
536  }},
537  {// face 12
538  {
539  // i 0
540  {{71, 0}, {89, 0}, {97, 3}}, // j 0
541  {{73, 0}, {91, 3}, {103, 3}}, // j 1
542  {{72, 3}, {88, 3}, {105, 3}} // j 2
543  },
544  {
545  // i 1
546  {{51, 0}, {69, 3}, {84, 3}}, // j 0
547  {{54, 0}, {71, 0}, {89, 0}}, // j 1
548  {{55, 3}, {73, 0}, {91, 3}} // j 2
549  },
550  {
551  // i 2
552  {{38, 0}, {47, 3}, {64, 3}}, // j 0
553  {{34, 3}, {51, 0}, {69, 3}}, // j 1
554  {{36, 3}, {54, 0}, {71, 0}} // j 2
555  }},
556  {// face 13
557  {
558  // i 0
559  {{96, 0}, {104, 0}, {107, 3}}, // j 0
560  {{98, 0}, {110, 3}, {115, 3}}, // j 1
561  {{97, 3}, {111, 3}, {119, 3}} // j 2
562  },
563  {
564  // i 1
565  {{76, 0}, {86, 3}, {94, 3}}, // j 0
566  {{82, 0}, {96, 0}, {104, 0}}, // j 1
567  {{84, 3}, {98, 0}, {110, 3}} // j 2
568  },
569  {
570  // i 2
571  {{58, 0}, {65, 3}, {75, 3}}, // j 0
572  {{62, 3}, {76, 0}, {86, 3}}, // j 1
573  {{64, 3}, {82, 0}, {96, 0}} // j 2
574  }},
575  {// face 14
576  {
577  // i 0
578  {{85, 0}, {87, 0}, {83, 3}}, // j 0
579  {{101, 0}, {102, 3}, {100, 3}}, // j 1
580  {{107, 3}, {112, 3}, {114, 3}} // j 2
581  },
582  {
583  // i 1
584  {{66, 0}, {67, 3}, {70, 3}}, // j 0
585  {{81, 0}, {85, 0}, {87, 0}}, // j 1
586  {{94, 3}, {101, 0}, {102, 3}} // j 2
587  },
588  {
589  // i 2
590  {{49, 0}, {48, 3}, {50, 3}}, // j 0
591  {{61, 3}, {66, 0}, {67, 3}}, // j 1
592  {{75, 3}, {81, 0}, {85, 0}} // j 2
593  }},
594  {// face 15
595  {
596  // i 0
597  {{95, 0}, {92, 0}, {83, 0}}, // j 0
598  {{79, 0}, {78, 0}, {74, 3}}, // j 1
599  {{63, 1}, {59, 3}, {57, 3}} // j 2
600  },
601  {
602  // i 1
603  {{109, 0}, {108, 0}, {100, 5}}, // j 0
604  {{93, 1}, {95, 0}, {92, 0}}, // j 1
605  {{77, 1}, {79, 0}, {78, 0}} // j 2
606  },
607  {
608  // i 2
609  {{117, 4}, {118, 5}, {114, 5}}, // j 0
610  {{106, 1}, {109, 0}, {108, 0}}, // j 1
611  {{90, 1}, {93, 1}, {95, 0}} // j 2
612  }},
613  {// face 16
614  {
615  // i 0
616  {{90, 0}, {77, 0}, {63, 0}}, // j 0
617  {{80, 0}, {68, 0}, {56, 3}}, // j 1
618  {{72, 1}, {60, 3}, {46, 3}} // j 2
619  },
620  {
621  // i 1
622  {{106, 0}, {93, 0}, {79, 5}}, // j 0
623  {{99, 1}, {90, 0}, {77, 0}}, // j 1
624  {{88, 1}, {80, 0}, {68, 0}} // j 2
625  },
626  {
627  // i 2
628  {{117, 3}, {109, 5}, {95, 5}}, // j 0
629  {{113, 1}, {106, 0}, {93, 0}}, // j 1
630  {{105, 1}, {99, 1}, {90, 0}} // j 2
631  }},
632  {// face 17
633  {
634  // i 0
635  {{105, 0}, {88, 0}, {72, 0}}, // j 0
636  {{103, 0}, {91, 0}, {73, 3}}, // j 1
637  {{97, 1}, {89, 3}, {71, 3}} // j 2
638  },
639  {
640  // i 1
641  {{113, 0}, {99, 0}, {80, 5}}, // j 0
642  {{116, 1}, {105, 0}, {88, 0}}, // j 1
643  {{111, 1}, {103, 0}, {91, 0}} // j 2
644  },
645  {
646  // i 2
647  {{117, 2}, {106, 5}, {90, 5}}, // j 0
648  {{121, 1}, {113, 0}, {99, 0}}, // j 1
649  {{119, 1}, {116, 1}, {105, 0}} // j 2
650  }},
651  {// face 18
652  {
653  // i 0
654  {{119, 0}, {111, 0}, {97, 0}}, // j 0
655  {{115, 0}, {110, 0}, {98, 3}}, // j 1
656  {{107, 1}, {104, 3}, {96, 3}} // j 2
657  },
658  {
659  // i 1
660  {{121, 0}, {116, 0}, {103, 5}}, // j 0
661  {{120, 1}, {119, 0}, {111, 0}}, // j 1
662  {{112, 1}, {115, 0}, {110, 0}} // j 2
663  },
664  {
665  // i 2
666  {{117, 1}, {113, 5}, {105, 5}}, // j 0
667  {{118, 1}, {121, 0}, {116, 0}}, // j 1
668  {{114, 1}, {120, 1}, {119, 0}} // j 2
669  }},
670  {// face 19
671  {
672  // i 0
673  {{114, 0}, {112, 0}, {107, 0}}, // j 0
674  {{100, 0}, {102, 0}, {101, 3}}, // j 1
675  {{83, 1}, {87, 3}, {85, 3}} // j 2
676  },
677  {
678  // i 1
679  {{118, 0}, {120, 0}, {115, 5}}, // j 0
680  {{108, 1}, {114, 0}, {112, 0}}, // j 1
681  {{92, 1}, {100, 0}, {102, 0}} // j 2
682  },
683  {
684  // i 2
685  {{117, 0}, {121, 5}, {119, 5}}, // j 0
686  {{109, 1}, {118, 0}, {120, 0}}, // j 1
687  {{95, 1}, {108, 1}, {114, 0}} // j 2
688  }}};
689 
698 
699  {{1, 0, 0, 1}, 0, {0, 0}}, // base cell 0
700  {{1, 1, 0, 2}, 0, {0, 0}}, // base cell 1
701  {{0, 0, 0, 1}, 0, {0, 0}}, // base cell 2
702  {{1, 0, 0, 2}, 0, {0, 0}}, // base cell 3
703  {{2, 0, 0, 0}, 1, {-1, -1}}, // base cell 4
704  {{1, 1, 0, 1}, 0, {0, 0}}, // base cell 5
705  {{0, 0, 1, 1}, 0, {0, 0}}, // base cell 6
706  {{0, 0, 0, 2}, 0, {0, 0}}, // base cell 7
707  {{1, 0, 0, 0}, 0, {0, 0}}, // base cell 8
708  {{0, 1, 0, 2}, 0, {0, 0}}, // base cell 9
709  {{0, 1, 0, 1}, 0, {0, 0}}, // base cell 10
710  {{0, 1, 1, 1}, 0, {0, 0}}, // base cell 11
711  {{1, 0, 0, 3}, 0, {0, 0}}, // base cell 12
712  {{1, 1, 0, 3}, 0, {0, 0}}, // base cell 13
713  {{2, 0, 0, 11}, 1, {2, 6}}, // base cell 14
714  {{1, 0, 0, 4}, 0, {0, 0}}, // base cell 15
715  {{0, 0, 0, 0}, 0, {0, 0}}, // base cell 16
716  {{0, 1, 0, 6}, 0, {0, 0}}, // base cell 17
717  {{0, 0, 1, 0}, 0, {0, 0}}, // base cell 18
718  {{0, 1, 1, 2}, 0, {0, 0}}, // base cell 19
719  {{0, 0, 1, 7}, 0, {0, 0}}, // base cell 20
720  {{0, 0, 1, 2}, 0, {0, 0}}, // base cell 21
721  {{1, 1, 0, 0}, 0, {0, 0}}, // base cell 22
722  {{0, 0, 1, 6}, 0, {0, 0}}, // base cell 23
723  {{2, 0, 0, 10}, 1, {1, 5}}, // base cell 24
724  {{0, 0, 0, 6}, 0, {0, 0}}, // base cell 25
725  {{0, 0, 0, 3}, 0, {0, 0}}, // base cell 26
726  {{1, 0, 0, 11}, 0, {0, 0}}, // base cell 27
727  {{1, 1, 0, 4}, 0, {0, 0}}, // base cell 28
728  {{0, 1, 0, 3}, 0, {0, 0}}, // base cell 29
729  {{0, 1, 1, 0}, 0, {0, 0}}, // base cell 30
730  {{0, 0, 0, 4}, 0, {0, 0}}, // base cell 31
731  {{0, 1, 0, 5}, 0, {0, 0}}, // base cell 32
732  {{0, 1, 0, 0}, 0, {0, 0}}, // base cell 33
733  {{0, 1, 0, 7}, 0, {0, 0}}, // base cell 34
734  {{1, 1, 0, 11}, 0, {0, 0}}, // base cell 35
735  {{0, 0, 0, 7}, 0, {0, 0}}, // base cell 36
736  {{1, 0, 0, 10}, 0, {0, 0}}, // base cell 37
737  {{2, 0, 0, 12}, 1, {3, 7}}, // base cell 38
738  {{1, 0, 1, 6}, 0, {0, 0}}, // base cell 39
739  {{1, 0, 1, 7}, 0, {0, 0}}, // base cell 40
740  {{0, 0, 1, 4}, 0, {0, 0}}, // base cell 41
741  {{0, 0, 1, 3}, 0, {0, 0}}, // base cell 42
742  {{0, 1, 1, 3}, 0, {0, 0}}, // base cell 43
743  {{0, 1, 0, 4}, 0, {0, 0}}, // base cell 44
744  {{1, 0, 0, 6}, 0, {0, 0}}, // base cell 45
745  {{0, 0, 0, 11}, 0, {0, 0}}, // base cell 46
746  {{0, 0, 1, 8}, 0, {0, 0}}, // base cell 47
747  {{0, 0, 1, 5}, 0, {0, 0}}, // base cell 48
748  {{2, 0, 0, 14}, 1, {0, 9}}, // base cell 49
749  {{0, 0, 0, 5}, 0, {0, 0}}, // base cell 50
750  {{1, 0, 0, 12}, 0, {0, 0}}, // base cell 51
751  {{1, 1, 0, 10}, 0, {0, 0}}, // base cell 52
752  {{0, 1, 1, 4}, 0, {0, 0}}, // base cell 53
753  {{1, 1, 0, 12}, 0, {0, 0}}, // base cell 54
754  {{1, 0, 0, 7}, 0, {0, 0}}, // base cell 55
755  {{0, 1, 0, 11}, 0, {0, 0}}, // base cell 56
756  {{0, 0, 0, 10}, 0, {0, 0}}, // base cell 57
757  {{2, 0, 0, 13}, 1, {4, 8}}, // base cell 58
758  {{0, 0, 1, 10}, 0, {0, 0}}, // base cell 59
759  {{0, 0, 1, 11}, 0, {0, 0}}, // base cell 60
760  {{0, 1, 0, 9}, 0, {0, 0}}, // base cell 61
761  {{0, 1, 0, 8}, 0, {0, 0}}, // base cell 62
762  {{2, 0, 0, 6}, 1, {11, 15}}, // base cell 63
763  {{0, 0, 0, 8}, 0, {0, 0}}, // base cell 64
764  {{0, 0, 1, 9}, 0, {0, 0}}, // base cell 65
765  {{1, 0, 0, 14}, 0, {0, 0}}, // base cell 66
766  {{1, 0, 1, 5}, 0, {0, 0}}, // base cell 67
767  {{0, 1, 1, 16}, 0, {0, 0}}, // base cell 68
768  {{1, 0, 1, 8}, 0, {0, 0}}, // base cell 69
769  {{1, 0, 0, 5}, 0, {0, 0}}, // base cell 70
770  {{0, 0, 0, 12}, 0, {0, 0}}, // base cell 71
771  {{2, 0, 0, 7}, 1, {12, 16}}, // base cell 72
772  {{0, 1, 0, 12}, 0, {0, 0}}, // base cell 73
773  {{0, 1, 0, 10}, 0, {0, 0}}, // base cell 74
774  {{0, 0, 0, 9}, 0, {0, 0}}, // base cell 75
775  {{1, 0, 0, 13}, 0, {0, 0}}, // base cell 76
776  {{0, 0, 1, 16}, 0, {0, 0}}, // base cell 77
777  {{0, 1, 1, 15}, 0, {0, 0}}, // base cell 78
778  {{0, 1, 0, 15}, 0, {0, 0}}, // base cell 79
779  {{0, 1, 0, 16}, 0, {0, 0}}, // base cell 80
780  {{1, 1, 0, 14}, 0, {0, 0}}, // base cell 81
781  {{1, 1, 0, 13}, 0, {0, 0}}, // base cell 82
782  {{2, 0, 0, 5}, 1, {10, 19}}, // base cell 83
783  {{1, 0, 0, 8}, 0, {0, 0}}, // base cell 84
784  {{0, 0, 0, 14}, 0, {0, 0}}, // base cell 85
785  {{1, 0, 1, 9}, 0, {0, 0}}, // base cell 86
786  {{0, 0, 1, 14}, 0, {0, 0}}, // base cell 87
787  {{0, 0, 1, 17}, 0, {0, 0}}, // base cell 88
788  {{0, 0, 1, 12}, 0, {0, 0}}, // base cell 89
789  {{0, 0, 0, 16}, 0, {0, 0}}, // base cell 90
790  {{0, 1, 1, 17}, 0, {0, 0}}, // base cell 91
791  {{0, 0, 1, 15}, 0, {0, 0}}, // base cell 92
792  {{1, 0, 1, 16}, 0, {0, 0}}, // base cell 93
793  {{1, 0, 0, 9}, 0, {0, 0}}, // base cell 94
794  {{0, 0, 0, 15}, 0, {0, 0}}, // base cell 95
795  {{0, 0, 0, 13}, 0, {0, 0}}, // base cell 96
796  {{2, 0, 0, 8}, 1, {13, 17}}, // base cell 97
797  {{0, 1, 0, 13}, 0, {0, 0}}, // base cell 98
798  {{1, 0, 1, 17}, 0, {0, 0}}, // base cell 99
799  {{0, 1, 0, 19}, 0, {0, 0}}, // base cell 100
800  {{0, 1, 0, 14}, 0, {0, 0}}, // base cell 101
801  {{0, 1, 1, 19}, 0, {0, 0}}, // base cell 102
802  {{0, 1, 0, 17}, 0, {0, 0}}, // base cell 103
803  {{0, 0, 1, 13}, 0, {0, 0}}, // base cell 104
804  {{0, 0, 0, 17}, 0, {0, 0}}, // base cell 105
805  {{1, 0, 0, 16}, 0, {0, 0}}, // base cell 106
806  {{2, 0, 0, 9}, 1, {14, 18}}, // base cell 107
807  {{1, 0, 1, 15}, 0, {0, 0}}, // base cell 108
808  {{1, 0, 0, 15}, 0, {0, 0}}, // base cell 109
809  {{0, 1, 1, 18}, 0, {0, 0}}, // base cell 110
810  {{0, 0, 1, 18}, 0, {0, 0}}, // base cell 111
811  {{0, 0, 1, 19}, 0, {0, 0}}, // base cell 112
812  {{1, 0, 0, 17}, 0, {0, 0}}, // base cell 113
813  {{0, 0, 0, 19}, 0, {0, 0}}, // base cell 114
814  {{0, 1, 0, 18}, 0, {0, 0}}, // base cell 115
815  {{1, 0, 1, 18}, 0, {0, 0}}, // base cell 116
816  {{2, 0, 0, 19}, 1, {-1, -1}}, // base cell 117
817  {{1, 0, 0, 19}, 0, {0, 0}}, // base cell 118
818  {{0, 0, 0, 18}, 0, {0, 0}}, // base cell 119
819  {{1, 0, 1, 19}, 0, {0, 0}}, // base cell 120
820  {{1, 0, 0, 18}, 0, {0, 0}} // base cell 121
821 };
822 
825  return baseCellData[baseCell].isPentagon;
826 }
827 
828 // /** @brief Return whether the indicated base cell is a pentagon where all
829 // * neighbors are oriented towards it. */
830 // bool _isBaseCellPolarPentagon(int baseCell) {
831 // return baseCell == 4 || baseCell == 117;
832 // }
833 
844 }
845 
856 }
857 
858 // /** @brief Find the FaceIJK given a base cell.
859 // */
860 // void _baseCellToFaceIjk(int baseCell, FaceIJK* h) {
861 // *h = baseCellData[baseCell].homeFijk;
862 // }
863 
864 // /**
865 // * @brief Given a base cell and the face it appears on, return
866 // * the number of 60' ccw rotations for that base cell's
867 // * coordinate system.
868 // * @returns The number of rotations, or INVALID_ROTATIONS if the base
869 // * cell is not found on the given face
870 // */
871 // int _baseCellToCCWrot60(int baseCell, int face) {
872 // if (face < 0 || face > NUM_ICOSA_FACES) return INVALID_ROTATIONS;
873 // for (int i = 0; i < 3; i++) {
874 // for (int j = 0; j < 3; j++) {
875 // for (int k = 0; k < 3; k++) {
876 // if (faceIjkBaseCells[face][i][j][k].baseCell == baseCell) {
877 // return faceIjkBaseCells[face][i][j][k].ccwRot60;
878 // }
879 // }
880 // }
881 // }
882 // return INVALID_ROTATIONS;
883 // }
884 
887 EXTENSION_INLINE bool _baseCellIsCwOffset(int baseCell, int testFace) {
888  return baseCellData[baseCell].cwOffsetPent[0] == testFace ||
889  baseCellData[baseCell].cwOffsetPent[1] == testFace;
890 }
891 
892 // /** @brief Return the neighboring base cell in the given direction.
893 // */
894 // int _getBaseCellNeighbor(int baseCell, Direction dir) {
895 // return baseCellNeighbors[baseCell][dir];
896 // }
897 
898 // /** @brief Return the direction from the origin base cell to the neighbor.
899 // * Returns INVALID_DIGIT if the base cells are not neighbors.
900 // */
901 // Direction _getBaseCellDirection(int originBaseCell, int neighboringBaseCell) {
902 // for (Direction dir = CENTER_DIGIT; dir < NUM_DIGITS; dir++) {
903 // int testBaseCell = _getBaseCellNeighbor(originBaseCell, dir);
904 // if (testBaseCell == neighboringBaseCell) {
905 // return dir;
906 // }
907 // }
908 // return INVALID_DIGIT;
909 // }
910 
911 // /**
912 // * res0IndexCount returns the number of resolution 0 indexes
913 // *
914 // * @return int count of resolution 0 indexes
915 // */
916 // int H3_EXPORT(res0IndexCount)() { return NUM_BASE_CELLS; }
917 
918 // /**
919 // * getRes0Indexes generates all base cells storing them into the provided
920 // * memory pointer. Buffer must be of size NUM_BASE_CELLS * sizeof(H3Index).
921 // *
922 // * @param out H3Index* the memory to store the resulting base cells in
923 // */
924 // void H3_EXPORT(getRes0Indexes)(H3Index* out) {
925 // for (int bc = 0; bc < NUM_BASE_CELLS; bc++) {
926 // H3Index baseCell = H3_INIT;
927 // H3_SET_MODE(baseCell, H3_HEXAGON_MODE);
928 // H3_SET_BASE_CELL(baseCell, bc);
929 // out[bc] = baseCell;
930 // }
931 // }
#define FaceIJK(variable_name)
Definition: faceijk.h:36
#define J_INDEX
Definition: coordijk.h:43
#define NUM_ICOSA_FACES
Definition: constants.h:71
int cwOffsetPent[2]
Definition: baseCells.h:33
information on a single base cell
Definition: baseCells.h:30
#define DEVICE
DEVICE const BaseCellData baseCellData[NUM_BASE_CELLS]
Resolution 0 base cell data table.
Definition: baseCells.hpp:697
int isPentagon
is this base cell a pentagon?
Definition: baseCells.h:32
#define EXTENSION_INLINE
Definition: heavydbTypes.h:57
#define I_INDEX
Definition: coordijk.h:42
EXTENSION_INLINE int _isBaseCellPentagon(int baseCell)
Return whether or not the indicated base cell is a pentagon.
Definition: baseCells.hpp:824
Base cell related lookup tables and access functions.
int baseCell
base cell number
Definition: baseCells.hpp:28
EXTENSION_INLINE bool _baseCellIsCwOffset(int baseCell, int testFace)
Find the FaceIJK given a base cell.
Definition: baseCells.hpp:887
#define NUM_BASE_CELLS
Definition: constants.h:73
EXTENSION_INLINE int _faceIjkToBaseCellCCWrot60(const FaceIJK(h))
Find base cell given FaceIJK.
Definition: baseCells.hpp:854
base cell at a given ijk and required rotations into its system
Definition: baseCells.hpp:27
#define FACE_INDEX
Definition: faceijk.h:35
#define K_INDEX
Definition: coordijk.h:44
EXTENSION_INLINE int _faceIjkToBaseCell(const FaceIJK(h))
Return whether the indicated base cell is a pentagon where all neighbors are oriented towards it...
Definition: baseCells.hpp:842
static DEVICE const BaseCellRotation faceIjkBaseCells[NUM_ICOSA_FACES][3][3][3]
Neighboring base cell ID in each IJK direction.
Definition: baseCells.hpp:308