51 #include "GeoTessUtils.h"
97 vector<float>& r, vector<vector<float> >& nodeData)
101 GeoTessUtils::getVectorDegrees(lat, lon, vertex);
104 double earthRadius = GeoTessUtils::getEarthRadius(vertex);
110 float stretch = (float)(earthRadius / 6371.);
112 r.resize(nRadii[layer]);
113 for (
int i=0; i<nRadii[layer]; ++i)
114 r[i] = radii[layer][i] * stretch;
116 nodeData.resize(nNodes[layer]);
117 for (
int i=0; i<nNodes[layer]; ++i)
119 nodeData[i].resize(3);
120 nodeData[i][0] = data[layer][i][0];
121 nodeData[i][1] = data[layer][i][1];
122 nodeData[i][2] = data[layer][i][2];
128 for (
int i=0; i<7; ++i)
for (
int j=0; j<50; ++j)
129 radii[i][j] = data[i][j][0] = data[i][j][1] = data[i][j][2] = NaN_FLOAT;
133 radii[0][ 0] = 0.000F;
134 radii[0][ 1] = 50.710F;
135 radii[0][ 2] = 101.430F;
136 radii[0][ 3] = 152.140F;
137 radii[0][ 4] = 202.850F;
138 radii[0][ 5] = 253.560F;
139 radii[0][ 6] = 304.280F;
140 radii[0][ 7] = 354.990F;
141 radii[0][ 8] = 405.700F;
142 radii[0][ 9] = 456.410F;
143 radii[0][10] = 507.130F;
144 radii[0][11] = 557.840F;
145 radii[0][12] = 659.260F;
146 radii[0][13] = 709.980F;
147 radii[0][14] = 760.690F;
148 radii[0][15] = 811.400F;
149 radii[0][16] = 862.110F;
150 radii[0][17] = 912.830F;
151 radii[0][18] = 963.540F;
152 radii[0][19] = 1014.250F;
153 radii[0][20] = 1064.960F;
154 radii[0][21] = 1115.680F;
155 radii[0][22] = 1166.390F;
156 radii[0][23] = 1217.500F;
158 radii[1][ 0] = 1217.500F;
159 radii[1][ 1] = 1267.430F;
160 radii[1][ 2] = 1317.760F;
161 radii[1][ 3] = 1368.090F;
162 radii[1][ 4] = 1418.420F;
163 radii[1][ 5] = 1468.760F;
164 radii[1][ 6] = 1519.090F;
165 radii[1][ 7] = 1569.420F;
166 radii[1][ 8] = 1670.080F;
167 radii[1][ 9] = 1720.410F;
168 radii[1][10] = 1770.740F;
169 radii[1][11] = 1821.070F;
170 radii[1][12] = 1871.400F;
171 radii[1][13] = 1921.740F;
172 radii[1][14] = 1972.070F;
173 radii[1][15] = 2022.400F;
174 radii[1][16] = 2072.730F;
175 radii[1][17] = 2123.060F;
176 radii[1][18] = 2173.390F;
177 radii[1][19] = 2223.720F;
178 radii[1][20] = 2274.050F;
179 radii[1][21] = 2324.380F;
180 radii[1][22] = 2374.720F;
181 radii[1][23] = 2425.050F;
182 radii[1][24] = 2475.380F;
183 radii[1][25] = 2525.710F;
184 radii[1][26] = 2576.040F;
185 radii[1][27] = 2626.370F;
186 radii[1][28] = 2676.700F;
187 radii[1][29] = 2727.030F;
188 radii[1][30] = 2777.360F;
189 radii[1][31] = 2827.700F;
190 radii[1][32] = 2878.030F;
191 radii[1][33] = 2928.360F;
192 radii[1][34] = 2978.690F;
193 radii[1][35] = 3029.020F;
194 radii[1][36] = 3079.350F;
195 radii[1][37] = 3129.680F;
196 radii[1][38] = 3180.010F;
197 radii[1][39] = 3230.340F;
198 radii[1][40] = 3280.680F;
199 radii[1][41] = 3331.010F;
200 radii[1][42] = 3381.340F;
201 radii[1][43] = 3431.670F;
202 radii[1][44] = 3479.500F;
204 radii[2][ 0] = 3479.500F;
205 radii[2][ 1] = 3531.670F;
206 radii[2][ 2] = 3581.330F;
207 radii[2][ 3] = 3631.000F;
208 radii[2][ 4] = 3681.000F;
209 radii[2][ 5] = 3731.000F;
210 radii[2][ 6] = 3779.500F;
211 radii[2][ 7] = 3829.000F;
212 radii[2][ 8] = 3878.500F;
213 radii[2][ 9] = 3928.000F;
214 radii[2][10] = 3977.500F;
215 radii[2][11] = 4027.000F;
216 radii[2][12] = 4076.500F;
217 radii[2][13] = 4126.000F;
218 radii[2][14] = 4175.500F;
219 radii[2][15] = 4225.000F;
220 radii[2][16] = 4274.500F;
221 radii[2][17] = 4324.000F;
222 radii[2][18] = 4373.500F;
223 radii[2][19] = 4423.000F;
224 radii[2][20] = 4472.500F;
225 radii[2][21] = 4522.000F;
226 radii[2][22] = 4571.500F;
227 radii[2][23] = 4621.000F;
228 radii[2][24] = 4670.500F;
229 radii[2][25] = 4720.000F;
230 radii[2][26] = 4769.500F;
231 radii[2][27] = 4819.000F;
232 radii[2][28] = 4868.500F;
233 radii[2][29] = 4918.000F;
234 radii[2][30] = 4967.500F;
235 radii[2][31] = 5017.000F;
236 radii[2][32] = 5066.500F;
237 radii[2][33] = 5116.000F;
238 radii[2][34] = 5165.500F;
239 radii[2][35] = 5215.000F;
240 radii[2][36] = 5264.500F;
241 radii[2][37] = 5314.000F;
242 radii[2][38] = 5363.500F;
243 radii[2][39] = 5413.000F;
244 radii[2][40] = 5462.500F;
245 radii[2][41] = 5512.000F;
246 radii[2][42] = 5561.500F;
247 radii[2][43] = 5611.000F;
248 radii[2][44] = 5661.000F;
249 radii[2][45] = 5711.000F;
251 radii[3][ 0] = 5711.000F;
252 radii[3][ 1] = 5761.000F;
253 radii[3][ 2] = 5811.000F;
254 radii[3][ 3] = 5861.000F;
255 radii[3][ 4] = 5911.000F;
256 radii[3][ 5] = 5961.000F;
258 radii[4][ 0] = 5961.000F;
259 radii[4][ 1] = 6011.000F;
260 radii[4][ 2] = 6061.000F;
261 radii[4][ 3] = 6111.000F;
262 radii[4][ 4] = 6161.000F;
263 radii[4][ 5] = 6206.000F;
264 radii[4][ 6] = 6251.000F;
265 radii[4][ 7] = 6293.500F;
266 radii[4][ 8] = 6336.000F;
268 radii[5][ 0] = 6336.000F;
269 radii[5][ 1] = 6351.000F;
271 radii[6][ 0] = 6351.000F;
272 radii[6][ 1] = 6371.000F;
275 data[0][ 0][0] = 11.2622F; data[0][ 0][1] = 3.6678F; data[0][ 0][2] = 13.0122F;
276 data[0][ 1][0] = 11.2618F; data[0][ 1][1] = 3.6675F; data[0][ 1][2] = 13.0117F;
277 data[0][ 2][0] = 11.2606F; data[0][ 2][1] = 3.6667F; data[0][ 2][2] = 13.0100F;
278 data[0][ 3][0] = 11.2586F; data[0][ 3][1] = 3.6653F; data[0][ 3][2] = 13.0074F;
279 data[0][ 4][0] = 11.2557F; data[0][ 4][1] = 3.6633F; data[0][ 4][2] = 13.0036F;
280 data[0][ 5][0] = 11.2521F; data[0][ 5][1] = 3.6608F; data[0][ 5][2] = 12.9988F;
281 data[0][ 6][0] = 11.2477F; data[0][ 6][1] = 3.6577F; data[0][ 6][2] = 12.9929F;
282 data[0][ 7][0] = 11.2424F; data[0][ 7][1] = 3.6540F; data[0][ 7][2] = 12.9859F;
283 data[0][ 8][0] = 11.2364F; data[0][ 8][1] = 3.6498F; data[0][ 8][2] = 12.9779F;
284 data[0][ 9][0] = 11.2295F; data[0][ 9][1] = 3.6450F; data[0][ 9][2] = 12.9688F;
285 data[0][10][0] = 11.2219F; data[0][10][1] = 3.6396F; data[0][10][2] = 12.9586F;
286 data[0][11][0] = 11.2134F; data[0][11][1] = 3.6337F; data[0][11][2] = 12.9474F;
287 data[0][12][0] = 11.1941F; data[0][12][1] = 3.6202F; data[0][12][2] = 12.9217F;
288 data[0][13][0] = 11.1832F; data[0][13][1] = 3.6126F; data[0][13][2] = 12.9072F;
289 data[0][14][0] = 11.1715F; data[0][14][1] = 3.6044F; data[0][14][2] = 12.8917F;
290 data[0][15][0] = 11.1590F; data[0][15][1] = 3.5957F; data[0][15][2] = 12.8751F;
291 data[0][16][0] = 11.1457F; data[0][16][1] = 3.5864F; data[0][16][2] = 12.8574F;
292 data[0][17][0] = 11.1316F; data[0][17][1] = 3.5765F; data[0][17][2] = 12.8387F;
293 data[0][18][0] = 11.1166F; data[0][18][1] = 3.5661F; data[0][18][2] = 12.8188F;
294 data[0][19][0] = 11.0983F; data[0][19][1] = 3.5551F; data[0][19][2] = 12.7980F;
295 data[0][20][0] = 11.0850F; data[0][20][1] = 3.5435F; data[0][20][2] = 12.7760F;
296 data[0][21][0] = 11.0718F; data[0][21][1] = 3.5314F; data[0][21][2] = 12.7530F;
297 data[0][22][0] = 11.0585F; data[0][22][1] = 3.5187F; data[0][22][2] = 12.7289F;
298 data[0][23][0] = 11.0427F; data[0][23][1] = 3.5043F; data[0][23][2] = 12.7037F;
300 data[1][ 0][0] = 10.2890F; data[1][ 0][1] = 0.0000F; data[1][ 0][2] = 12.1391F;
301 data[1][ 1][0] = 10.2854F; data[1][ 1][1] = 0.0000F; data[1][ 1][2] = 12.1133F;
302 data[1][ 2][0] = 10.2745F; data[1][ 2][1] = 0.0000F; data[1][ 2][2] = 12.0867F;
303 data[1][ 3][0] = 10.2565F; data[1][ 3][1] = 0.0000F; data[1][ 3][2] = 12.0593F;
304 data[1][ 4][0] = 10.2329F; data[1][ 4][1] = 0.0000F; data[1][ 4][2] = 12.0311F;
305 data[1][ 5][0] = 10.2049F; data[1][ 5][1] = 0.0000F; data[1][ 5][2] = 12.0001F;
306 data[1][ 6][0] = 10.1739F; data[1][ 6][1] = 0.0000F; data[1][ 6][2] = 11.9722F;
307 data[1][ 7][0] = 10.1415F; data[1][ 7][1] = 0.0000F; data[1][ 7][2] = 11.9414F;
308 data[1][ 8][0] = 10.0768F; data[1][ 8][1] = 0.0000F; data[1][ 8][2] = 11.8772F;
309 data[1][ 9][0] = 10.0439F; data[1][ 9][1] = 0.0000F; data[1][ 9][2] = 11.8437F;
310 data[1][10][0] = 10.0103F; data[1][10][1] = 0.0000F; data[1][10][2] = 11.8092F;
311 data[1][11][0] = 9.9761F; data[1][11][1] = 0.0000F; data[1][11][2] = 11.7737F;
312 data[1][12][0] = 9.9410F; data[1][12][1] = 0.0000F; data[1][12][2] = 11.7373F;
313 data[1][13][0] = 9.9051F; data[1][13][1] = 0.0000F; data[1][13][2] = 11.6998F;
314 data[1][14][0] = 9.8682F; data[1][14][1] = 0.0000F; data[1][14][2] = 11.6612F;
315 data[1][15][0] = 9.8304F; data[1][15][1] = 0.0000F; data[1][15][2] = 11.6216F;
316 data[1][16][0] = 9.7914F; data[1][16][1] = 0.0000F; data[1][16][2] = 11.5809F;
317 data[1][17][0] = 9.7513F; data[1][17][1] = 0.0000F; data[1][17][2] = 11.5391F;
318 data[1][18][0] = 9.7100F; data[1][18][1] = 0.0000F; data[1][18][2] = 11.4962F;
319 data[1][19][0] = 9.6673F; data[1][19][1] = 0.0000F; data[1][19][2] = 11.4521F;
320 data[1][20][0] = 9.6232F; data[1][20][1] = 0.0000F; data[1][20][2] = 11.4069F;
321 data[1][21][0] = 9.5777F; data[1][21][1] = 0.0000F; data[1][21][2] = 11.3604F;
322 data[1][22][0] = 9.5306F; data[1][22][1] = 0.0000F; data[1][22][2] = 11.3127F;
323 data[1][23][0] = 9.4814F; data[1][23][1] = 0.0000F; data[1][23][2] = 11.2639F;
324 data[1][24][0] = 9.4297F; data[1][24][1] = 0.0000F; data[1][24][2] = 11.2137F;
325 data[1][25][0] = 9.3760F; data[1][25][1] = 0.0000F; data[1][25][2] = 11.1623F;
326 data[1][26][0] = 9.3205F; data[1][26][1] = 0.0000F; data[1][26][2] = 11.1095F;
327 data[1][27][0] = 9.2634F; data[1][27][1] = 0.0000F; data[1][27][2] = 11.0555F;
328 data[1][28][0] = 9.2042F; data[1][28][1] = 0.0000F; data[1][28][2] = 11.0001F;
329 data[1][29][0] = 9.1426F; data[1][29][1] = 0.0000F; data[1][29][2] = 10.9434F;
330 data[1][30][0] = 9.0792F; data[1][30][1] = 0.0000F; data[1][30][2] = 10.8852F;
331 data[1][31][0] = 9.0138F; data[1][31][1] = 0.0000F; data[1][31][2] = 10.8257F;
332 data[1][32][0] = 8.9461F; data[1][32][1] = 0.0000F; data[1][32][2] = 10.7647F;
333 data[1][33][0] = 8.8761F; data[1][33][1] = 0.0000F; data[1][33][2] = 10.7023F;
334 data[1][34][0] = 8.8036F; data[1][34][1] = 0.0000F; data[1][34][2] = 10.6385F;
335 data[1][35][0] = 8.7283F; data[1][35][1] = 0.0000F; data[1][35][2] = 10.5731F;
336 data[1][36][0] = 8.6496F; data[1][36][1] = 0.0000F; data[1][36][2] = 10.5062F;
337 data[1][37][0] = 8.5692F; data[1][37][1] = 0.0000F; data[1][37][2] = 10.4378F;
338 data[1][38][0] = 8.4861F; data[1][38][1] = 0.0000F; data[1][38][2] = 10.3679F;
339 data[1][39][0] = 8.4001F; data[1][39][1] = 0.0000F; data[1][39][2] = 10.2964F;
340 data[1][40][0] = 8.3122F; data[1][40][1] = 0.0000F; data[1][40][2] = 10.2233F;
341 data[1][41][0] = 8.2213F; data[1][41][1] = 0.0000F; data[1][41][2] = 10.1485F;
342 data[1][42][0] = 8.1283F; data[1][42][1] = 0.0000F; data[1][42][2] = 10.0722F;
343 data[1][43][0] = 8.0382F; data[1][43][1] = 0.0000F; data[1][43][2] = 9.9942F;
344 data[1][44][0] = 8.0000F; data[1][44][1] = 0.0000F; data[1][44][2] = 9.9145F;
346 data[2][ 0][0] = 13.6602F; data[2][ 0][1] = 7.2811F; data[2][ 0][2] = 5.5515F;
347 data[2][ 1][0] = 13.6566F; data[2][ 1][1] = 7.2704F; data[2][ 1][2] = 5.5284F;
348 data[2][ 2][0] = 13.6530F; data[2][ 2][1] = 7.2597F; data[2][ 2][2] = 5.5051F;
349 data[2][ 3][0] = 13.6494F; data[2][ 3][1] = 7.2490F; data[2][ 3][2] = 5.4817F;
350 data[2][ 4][0] = 13.5900F; data[2][ 4][1] = 7.2258F; data[2][ 4][2] = 5.4582F;
351 data[2][ 5][0] = 13.5312F; data[2][ 5][1] = 7.2031F; data[2][ 5][2] = 5.4345F;
352 data[2][ 6][0] = 13.4741F; data[2][ 6][1] = 7.1807F; data[2][ 6][2] = 5.4108F;
353 data[2][ 7][0] = 13.4156F; data[2][ 7][1] = 7.1586F; data[2][ 7][2] = 5.3869F;
354 data[2][ 8][0] = 13.3585F; data[2][ 8][1] = 7.1369F; data[2][ 8][2] = 5.3628F;
355 data[2][ 9][0] = 13.3018F; data[2][ 9][1] = 7.1144F; data[2][ 9][2] = 5.3386F;
356 data[2][10][0] = 13.2465F; data[2][10][1] = 7.0931F; data[2][10][2] = 5.3142F;
357 data[2][11][0] = 13.1894F; data[2][11][1] = 7.0720F; data[2][11][2] = 5.2898F;
358 data[2][12][0] = 13.1336F; data[2][12][1] = 7.0500F; data[2][12][2] = 5.2651F;
359 data[2][13][0] = 13.0783F; data[2][13][1] = 7.0281F; data[2][13][2] = 5.2403F;
360 data[2][14][0] = 13.0222F; data[2][14][1] = 7.0063F; data[2][14][2] = 5.2154F;
361 data[2][15][0] = 12.9668F; data[2][15][1] = 6.9855F; data[2][15][2] = 5.1904F;
362 data[2][16][0] = 12.9096F; data[2][16][1] = 6.9627F; data[2][16][2] = 5.1652F;
363 data[2][17][0] = 12.8526F; data[2][17][1] = 6.9418F; data[2][17][2] = 5.1398F;
364 data[2][18][0] = 12.7956F; data[2][18][1] = 6.9194F; data[2][18][2] = 5.1143F;
365 data[2][19][0] = 12.7382F; data[2][19][1] = 6.8972F; data[2][19][2] = 5.0887F;
366 data[2][20][0] = 12.6804F; data[2][20][1] = 6.8742F; data[2][20][2] = 5.0629F;
367 data[2][21][0] = 12.6221F; data[2][21][1] = 6.8515F; data[2][21][2] = 5.0370F;
368 data[2][22][0] = 12.5631F; data[2][22][1] = 6.8286F; data[2][22][2] = 5.0109F;
369 data[2][23][0] = 12.5031F; data[2][23][1] = 6.8052F; data[2][23][2] = 4.9847F;
370 data[2][24][0] = 12.4426F; data[2][24][1] = 6.7815F; data[2][24][2] = 4.9584F;
371 data[2][25][0] = 12.3819F; data[2][25][1] = 6.7573F; data[2][25][2] = 4.9319F;
372 data[2][26][0] = 12.3185F; data[2][26][1] = 6.7326F; data[2][26][2] = 4.9052F;
373 data[2][27][0] = 12.2550F; data[2][27][1] = 6.7073F; data[2][27][2] = 4.8785F;
374 data[2][28][0] = 12.1912F; data[2][28][1] = 6.6815F; data[2][28][2] = 4.8515F;
375 data[2][29][0] = 12.1245F; data[2][29][1] = 6.6555F; data[2][29][2] = 4.8245F;
376 data[2][30][0] = 12.0577F; data[2][30][1] = 6.6285F; data[2][30][2] = 4.7973F;
377 data[2][31][0] = 11.9895F; data[2][31][1] = 6.6008F; data[2][31][2] = 4.7699F;
378 data[2][32][0] = 11.9200F; data[2][32][1] = 6.5727F; data[2][32][2] = 4.7424F;
379 data[2][33][0] = 11.8491F; data[2][33][1] = 6.5439F; data[2][33][2] = 4.7148F;
380 data[2][34][0] = 11.7766F; data[2][34][1] = 6.5138F; data[2][34][2] = 4.6870F;
381 data[2][35][0] = 11.7026F; data[2][35][1] = 6.4828F; data[2][35][2] = 4.6591F;
382 data[2][36][0] = 11.6269F; data[2][36][1] = 6.4510F; data[2][36][2] = 4.6310F;
383 data[2][37][0] = 11.5495F; data[2][37][1] = 6.4187F; data[2][37][2] = 4.6028F;
384 data[2][38][0] = 11.4705F; data[2][38][1] = 6.3854F; data[2][38][2] = 4.5744F;
385 data[2][39][0] = 11.3896F; data[2][39][1] = 6.3512F; data[2][39][2] = 4.5459F;
386 data[2][40][0] = 11.3068F; data[2][40][1] = 6.3160F; data[2][40][2] = 4.5173F;
387 data[2][41][0] = 11.2221F; data[2][41][1] = 6.2798F; data[2][41][2] = 4.4885F;
388 data[2][42][0] = 11.1353F; data[2][42][1] = 6.2426F; data[2][42][2] = 4.4596F;
389 data[2][43][0] = 11.0558F; data[2][43][1] = 6.2095F; data[2][43][2] = 4.4305F;
390 data[2][44][0] = 10.9229F; data[2][44][1] = 6.0897F; data[2][44][2] = 4.4010F;
391 data[2][45][0] = 10.7900F; data[2][45][1] = 5.9600F; data[2][45][2] = 4.3714F;
393 data[3][ 0][0] = 10.2000F; data[3][ 0][1] = 5.6100F; data[3][ 0][2] = 4.0646F;
394 data[3][ 1][0] = 10.0320F; data[3][ 1][1] = 5.5040F; data[3][ 1][2] = 4.0028F;
395 data[3][ 2][0] = 9.8640F; data[3][ 2][1] = 5.3980F; data[3][ 2][2] = 3.9410F;
396 data[3][ 3][0] = 9.6960F; data[3][ 3][1] = 5.2920F; data[3][ 3][2] = 3.8793F;
397 data[3][ 4][0] = 9.5280F; data[3][ 4][1] = 5.1860F; data[3][ 4][2] = 3.8175F;
398 data[3][ 5][0] = 9.3600F; data[3][ 5][1] = 5.0800F; data[3][ 5][2] = 3.7557F;
400 data[4][ 0][0] = 9.0300F; data[4][ 0][1] = 4.8700F; data[4][ 0][2] = 3.5470F;
401 data[4][ 1][0] = 8.8475F; data[4][ 1][1] = 4.7830F; data[4][ 1][2] = 3.5167F;
402 data[4][ 2][0] = 8.6650F; data[4][ 2][1] = 4.6960F; data[4][ 2][2] = 3.4864F;
403 data[4][ 3][0] = 8.4825F; data[4][ 3][1] = 4.6090F; data[4][ 3][2] = 3.4561F;
404 data[4][ 4][0] = 8.3000F; data[4][ 4][1] = 4.5230F; data[4][ 4][2] = 3.4258F;
405 data[4][ 5][0] = 8.1750F; data[4][ 5][1] = 4.5090F; data[4][ 5][2] = 3.3985F;
406 data[4][ 6][0] = 8.0500F; data[4][ 6][1] = 4.5000F; data[4][ 6][2] = 3.3713F;
407 data[4][ 7][0] = 8.0450F; data[4][ 7][1] = 4.4900F; data[4][ 7][2] = 3.3455F;
408 data[4][ 8][0] = 8.0400F; data[4][ 8][1] = 4.4800F; data[4][ 8][2] = 3.3198F;
410 data[5][ 0][0] = 6.5000F; data[5][ 0][1] = 3.8500F; data[5][ 0][2] = 2.9200F;
412 data[6][ 0][0] = 5.8000F; data[6][ 0][1] = 3.4600F; data[6][ 0][2] = 2.7200F;