nodes2ts 1.1.9 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/.eslintignore +3 -0
  2. package/.eslintrc.cjs +11 -0
  3. package/.github/workflows/lint.js.yml +22 -0
  4. package/.github/workflows/node.js.yml +22 -0
  5. package/.mocharc.js +7 -0
  6. package/README.md +22 -5
  7. package/dist/Interval.d.ts +7 -8
  8. package/dist/Interval.js +12 -12
  9. package/dist/Interval.js.map +1 -1
  10. package/dist/MutableInteger.js +5 -4
  11. package/dist/MutableInteger.js.map +1 -1
  12. package/dist/Platform.d.ts +15 -0
  13. package/dist/Platform.js +53 -0
  14. package/dist/Platform.js.map +1 -0
  15. package/dist/R1Interval.d.ts +8 -9
  16. package/dist/R1Interval.js +59 -78
  17. package/dist/R1Interval.js.map +1 -1
  18. package/dist/R2Vector.d.ts +12 -13
  19. package/dist/R2Vector.js +65 -85
  20. package/dist/R2Vector.js.map +1 -1
  21. package/dist/S1Angle.d.ts +38 -5
  22. package/dist/S1Angle.js +89 -37
  23. package/dist/S1Angle.js.map +1 -1
  24. package/dist/S1ChordAngle.d.ts +166 -0
  25. package/dist/S1ChordAngle.js +318 -0
  26. package/dist/S1ChordAngle.js.map +1 -0
  27. package/dist/S1Interval.d.ts +11 -12
  28. package/dist/S1Interval.js +134 -140
  29. package/dist/S1Interval.js.map +1 -1
  30. package/dist/S2.d.ts +8 -5
  31. package/dist/S2.js +91 -108
  32. package/dist/S2.js.map +1 -1
  33. package/dist/S2Cap.d.ts +33 -25
  34. package/dist/S2Cap.js +199 -203
  35. package/dist/S2Cap.js.map +1 -1
  36. package/dist/S2Cell.d.ts +15 -13
  37. package/dist/S2Cell.js +196 -206
  38. package/dist/S2Cell.js.map +1 -1
  39. package/dist/S2CellId.d.ts +37 -14
  40. package/dist/S2CellId.js +407 -359
  41. package/dist/S2CellId.js.map +1 -1
  42. package/dist/S2CellUnion.d.ts +1 -2
  43. package/dist/S2CellUnion.js +137 -133
  44. package/dist/S2CellUnion.js.map +1 -1
  45. package/dist/S2EdgeUtil.js +14 -17
  46. package/dist/S2EdgeUtil.js.map +1 -1
  47. package/dist/S2LatLng.d.ts +15 -11
  48. package/dist/S2LatLng.js +100 -114
  49. package/dist/S2LatLng.js.map +1 -1
  50. package/dist/S2LatLngRect.d.ts +8 -4
  51. package/dist/S2LatLngRect.js +215 -197
  52. package/dist/S2LatLngRect.js.map +1 -1
  53. package/dist/S2Metric.d.ts +4 -5
  54. package/dist/S2Metric.js +30 -27
  55. package/dist/S2Metric.js.map +1 -1
  56. package/dist/S2Point.d.ts +48 -14
  57. package/dist/S2Point.js +156 -109
  58. package/dist/S2Point.js.map +1 -1
  59. package/dist/S2Projections.d.ts +43 -9
  60. package/dist/S2Projections.js +226 -47
  61. package/dist/S2Projections.js.map +1 -1
  62. package/dist/S2Region.js +2 -1
  63. package/dist/S2Region.js.map +1 -1
  64. package/dist/S2RegionCoverer.d.ts +21 -6
  65. package/dist/S2RegionCoverer.js +144 -109
  66. package/dist/S2RegionCoverer.js.map +1 -1
  67. package/dist/export.d.ts +0 -1
  68. package/dist/export.js +42 -32
  69. package/dist/export.js.map +1 -1
  70. package/dist/utils/preconditions.d.ts +2 -0
  71. package/dist/utils/preconditions.js +16 -0
  72. package/dist/utils/preconditions.js.map +1 -0
  73. package/package.json +28 -34
  74. package/.npmignore +0 -8
  75. package/.nyc_output/1eb1f420a13c15f529aac41a40bcaa21.json +0 -1
  76. package/.nyc_output/5ff62256eb1c111254ba0b469fb547da.json +0 -1
  77. package/.nyc_output/949d6e8c2061067f3bdfd27dfff5ba83.json +0 -1
  78. package/coverage/Interval.ts.html +0 -203
  79. package/coverage/MutableInteger.ts.html +0 -77
  80. package/coverage/R1Interval.ts.html +0 -647
  81. package/coverage/R2Vector.ts.html +0 -587
  82. package/coverage/S1Angle.ts.html +0 -344
  83. package/coverage/S1Interval.ts.html +0 -1349
  84. package/coverage/S2.ts.html +0 -1178
  85. package/coverage/S2Cap.ts.html +0 -1433
  86. package/coverage/S2Cell.ts.html +0 -1415
  87. package/coverage/S2CellId.ts.html +0 -3329
  88. package/coverage/S2EdgeUtil.ts.html +0 -2534
  89. package/coverage/S2LatLng.ts.html +0 -848
  90. package/coverage/S2LatLngRect.ts.html +0 -2222
  91. package/coverage/S2Point.ts.html +0 -758
  92. package/coverage/S2Projections.ts.html +0 -518
  93. package/coverage/base.css +0 -212
  94. package/coverage/decimal.ts.html +0 -68
  95. package/coverage/index.html +0 -288
  96. package/coverage/prettify.css +0 -1
  97. package/coverage/prettify.js +0 -1
  98. package/coverage/sort-arrow-sprite.png +0 -0
  99. package/coverage/sorter.js +0 -158
  100. package/dist/decimal.d.ts +0 -3
  101. package/dist/decimal.js +0 -4
  102. package/dist/decimal.js.map +0 -1
  103. package/dist/decimal_augmentation.d.ts +0 -24
  104. package/dist/decimal_augmentation.js +0 -2
  105. package/dist/decimal_augmentation.js.map +0 -1
@@ -1,848 +0,0 @@
1
- <!doctype html>
2
- <html lang="en">
3
- <head>
4
- <title>Code coverage report for S2LatLng.ts</title>
5
- <meta charset="utf-8" />
6
- <link rel="stylesheet" href="prettify.css" />
7
- <link rel="stylesheet" href="base.css" />
8
- <meta name="viewport" content="width=device-width, initial-scale=1">
9
- <style type='text/css'>
10
- .coverage-summary .sorter {
11
- background-image: url(sort-arrow-sprite.png);
12
- }
13
- </style>
14
- </head>
15
- <body>
16
- <div class='wrapper'>
17
- <div class='pad1'>
18
- <h1>
19
- <a href="index.html">All files</a> S2LatLng.ts
20
- </h1>
21
- <div class='clearfix'>
22
- <div class='fl pad1y space-right2'>
23
- <span class="strong">90.48% </span>
24
- <span class="quiet">Statements</span>
25
- <span class='fraction'>57/63</span>
26
- </div>
27
- <div class='fl pad1y space-right2'>
28
- <span class="strong">50% </span>
29
- <span class="quiet">Branches</span>
30
- <span class='fraction'>3/6</span>
31
- </div>
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">73.91% </span>
34
- <span class="quiet">Functions</span>
35
- <span class='fraction'>17/23</span>
36
- </div>
37
- <div class='fl pad1y space-right2'>
38
- <span class="strong">90% </span>
39
- <span class="quiet">Lines</span>
40
- <span class='fraction'>54/60</span>
41
- </div>
42
- </div>
43
- </div>
44
- <div class='status-line high'></div>
45
- <pre><table class="coverage">
46
- <tr><td class="line-count quiet">1
47
- 2
48
- 3
49
- 4
50
- 5
51
- 6
52
- 7
53
- 8
54
- 9
55
- 10
56
- 11
57
- 12
58
- 13
59
- 14
60
- 15
61
- 16
62
- 17
63
- 18
64
- 19
65
- 20
66
- 21
67
- 22
68
- 23
69
- 24
70
- 25
71
- 26
72
- 27
73
- 28
74
- 29
75
- 30
76
- 31
77
- 32
78
- 33
79
- 34
80
- 35
81
- 36
82
- 37
83
- 38
84
- 39
85
- 40
86
- 41
87
- 42
88
- 43
89
- 44
90
- 45
91
- 46
92
- 47
93
- 48
94
- 49
95
- 50
96
- 51
97
- 52
98
- 53
99
- 54
100
- 55
101
- 56
102
- 57
103
- 58
104
- 59
105
- 60
106
- 61
107
- 62
108
- 63
109
- 64
110
- 65
111
- 66
112
- 67
113
- 68
114
- 69
115
- 70
116
- 71
117
- 72
118
- 73
119
- 74
120
- 75
121
- 76
122
- 77
123
- 78
124
- 79
125
- 80
126
- 81
127
- 82
128
- 83
129
- 84
130
- 85
131
- 86
132
- 87
133
- 88
134
- 89
135
- 90
136
- 91
137
- 92
138
- 93
139
- 94
140
- 95
141
- 96
142
- 97
143
- 98
144
- 99
145
- 100
146
- 101
147
- 102
148
- 103
149
- 104
150
- 105
151
- 106
152
- 107
153
- 108
154
- 109
155
- 110
156
- 111
157
- 112
158
- 113
159
- 114
160
- 115
161
- 116
162
- 117
163
- 118
164
- 119
165
- 120
166
- 121
167
- 122
168
- 123
169
- 124
170
- 125
171
- 126
172
- 127
173
- 128
174
- 129
175
- 130
176
- 131
177
- 132
178
- 133
179
- 134
180
- 135
181
- 136
182
- 137
183
- 138
184
- 139
185
- 140
186
- 141
187
- 142
188
- 143
189
- 144
190
- 145
191
- 146
192
- 147
193
- 148
194
- 149
195
- 150
196
- 151
197
- 152
198
- 153
199
- 154
200
- 155
201
- 156
202
- 157
203
- 158
204
- 159
205
- 160
206
- 161
207
- 162
208
- 163
209
- 164
210
- 165
211
- 166
212
- 167
213
- 168
214
- 169
215
- 170
216
- 171
217
- 172
218
- 173
219
- 174
220
- 175
221
- 176
222
- 177
223
- 178
224
- 179
225
- 180
226
- 181
227
- 182
228
- 183
229
- 184
230
- 185
231
- 186
232
- 187
233
- 188
234
- 189
235
- 190
236
- 191
237
- 192
238
- 193
239
- 194
240
- 195
241
- 196
242
- 197
243
- 198
244
- 199
245
- 200
246
- 201
247
- 202
248
- 203
249
- 204
250
- 205
251
- 206
252
- 207
253
- 208
254
- 209
255
- 210
256
- 211
257
- 212
258
- 213
259
- 214
260
- 215
261
- 216
262
- 217
263
- 218
264
- 219
265
- 220
266
- 221
267
- 222
268
- 223
269
- 224
270
- 225
271
- 226
272
- 227
273
- 228
274
- 229
275
- 230
276
- 231
277
- 232
278
- 233
279
- 234
280
- 235
281
- 236
282
- 237
283
- 238
284
- 239
285
- 240
286
- 241
287
- 242
288
- 243
289
- 244
290
- 245
291
- 246
292
- 247
293
- 248
294
- 249
295
- 250
296
- 251
297
- 252
298
- 253
299
- 254
300
- 255
301
- 256
302
- 257
303
- 258
304
- 259
305
- 260
306
- 261
307
- 262</td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
308
- <span class="cline-any cline-neutral">&nbsp;</span>
309
- <span class="cline-any cline-neutral">&nbsp;</span>
310
- <span class="cline-any cline-neutral">&nbsp;</span>
311
- <span class="cline-any cline-neutral">&nbsp;</span>
312
- <span class="cline-any cline-neutral">&nbsp;</span>
313
- <span class="cline-any cline-neutral">&nbsp;</span>
314
- <span class="cline-any cline-neutral">&nbsp;</span>
315
- <span class="cline-any cline-neutral">&nbsp;</span>
316
- <span class="cline-any cline-neutral">&nbsp;</span>
317
- <span class="cline-any cline-neutral">&nbsp;</span>
318
- <span class="cline-any cline-neutral">&nbsp;</span>
319
- <span class="cline-any cline-neutral">&nbsp;</span>
320
- <span class="cline-any cline-neutral">&nbsp;</span>
321
- <span class="cline-any cline-neutral">&nbsp;</span>
322
- <span class="cline-any cline-neutral">&nbsp;</span>
323
- <span class="cline-any cline-yes">1x</span>
324
- <span class="cline-any cline-yes">1x</span>
325
- <span class="cline-any cline-yes">1x</span>
326
- <span class="cline-any cline-yes">1x</span>
327
- <span class="cline-any cline-neutral">&nbsp;</span>
328
- <span class="cline-any cline-neutral">&nbsp;</span>
329
- <span class="cline-any cline-neutral">&nbsp;</span>
330
- <span class="cline-any cline-neutral">&nbsp;</span>
331
- <span class="cline-any cline-neutral">&nbsp;</span>
332
- <span class="cline-any cline-neutral">&nbsp;</span>
333
- <span class="cline-any cline-neutral">&nbsp;</span>
334
- <span class="cline-any cline-neutral">&nbsp;</span>
335
- <span class="cline-any cline-yes">1x</span>
336
- <span class="cline-any cline-neutral">&nbsp;</span>
337
- <span class="cline-any cline-neutral">&nbsp;</span>
338
- <span class="cline-any cline-neutral">&nbsp;</span>
339
- <span class="cline-any cline-neutral">&nbsp;</span>
340
- <span class="cline-any cline-yes">1x</span>
341
- <span class="cline-any cline-neutral">&nbsp;</span>
342
- <span class="cline-any cline-neutral">&nbsp;</span>
343
- <span class="cline-any cline-yes">1x</span>
344
- <span class="cline-any cline-neutral">&nbsp;</span>
345
- <span class="cline-any cline-neutral">&nbsp;</span>
346
- <span class="cline-any cline-neutral">&nbsp;</span>
347
- <span class="cline-any cline-neutral">&nbsp;</span>
348
- <span class="cline-any cline-neutral">&nbsp;</span>
349
- <span class="cline-any cline-yes">2269x</span>
350
- <span class="cline-any cline-yes">2269x</span>
351
- <span class="cline-any cline-neutral">&nbsp;</span>
352
- <span class="cline-any cline-neutral">&nbsp;</span>
353
- <span class="cline-any cline-yes">1x</span>
354
- <span class="cline-any cline-no">&nbsp;</span>
355
- <span class="cline-any cline-neutral">&nbsp;</span>
356
- <span class="cline-any cline-neutral">&nbsp;</span>
357
- <span class="cline-any cline-yes">1x</span>
358
- <span class="cline-any cline-no">&nbsp;</span>
359
- <span class="cline-any cline-neutral">&nbsp;</span>
360
- <span class="cline-any cline-neutral">&nbsp;</span>
361
- <span class="cline-any cline-neutral">&nbsp;</span>
362
- <span class="cline-any cline-neutral">&nbsp;</span>
363
- <span class="cline-any cline-neutral">&nbsp;</span>
364
- <span class="cline-any cline-neutral">&nbsp;</span>
365
- <span class="cline-any cline-yes">1x</span>
366
- <span class="cline-any cline-yes">1188x</span>
367
- <span class="cline-any cline-yes">1188x</span>
368
- <span class="cline-any cline-yes">1188x</span>
369
- <span class="cline-any cline-neutral">&nbsp;</span>
370
- <span class="cline-any cline-yes">1188x</span>
371
- <span class="cline-any cline-neutral">&nbsp;</span>
372
- <span class="cline-any cline-neutral">&nbsp;</span>
373
- <span class="cline-any cline-neutral">&nbsp;</span>
374
- <span class="cline-any cline-neutral">&nbsp;</span>
375
- <span class="cline-any cline-neutral">&nbsp;</span>
376
- <span class="cline-any cline-neutral">&nbsp;</span>
377
- <span class="cline-any cline-neutral">&nbsp;</span>
378
- <span class="cline-any cline-neutral">&nbsp;</span>
379
- <span class="cline-any cline-neutral">&nbsp;</span>
380
- <span class="cline-any cline-neutral">&nbsp;</span>
381
- <span class="cline-any cline-neutral">&nbsp;</span>
382
- <span class="cline-any cline-neutral">&nbsp;</span>
383
- <span class="cline-any cline-neutral">&nbsp;</span>
384
- <span class="cline-any cline-neutral">&nbsp;</span>
385
- <span class="cline-any cline-neutral">&nbsp;</span>
386
- <span class="cline-any cline-yes">1x</span>
387
- <span class="cline-any cline-neutral">&nbsp;</span>
388
- <span class="cline-any cline-neutral">&nbsp;</span>
389
- <span class="cline-any cline-yes">1x</span>
390
- <span class="cline-any cline-neutral">&nbsp;</span>
391
- <span class="cline-any cline-neutral">&nbsp;</span>
392
- <span class="cline-any cline-neutral">&nbsp;</span>
393
- <span class="cline-any cline-neutral">&nbsp;</span>
394
- <span class="cline-any cline-neutral">&nbsp;</span>
395
- <span class="cline-any cline-neutral">&nbsp;</span>
396
- <span class="cline-any cline-neutral">&nbsp;</span>
397
- <span class="cline-any cline-neutral">&nbsp;</span>
398
- <span class="cline-any cline-neutral">&nbsp;</span>
399
- <span class="cline-any cline-neutral">&nbsp;</span>
400
- <span class="cline-any cline-neutral">&nbsp;</span>
401
- <span class="cline-any cline-neutral">&nbsp;</span>
402
- <span class="cline-any cline-neutral">&nbsp;</span>
403
- <span class="cline-any cline-neutral">&nbsp;</span>
404
- <span class="cline-any cline-neutral">&nbsp;</span>
405
- <span class="cline-any cline-neutral">&nbsp;</span>
406
- <span class="cline-any cline-yes">1x</span>
407
- <span class="cline-any cline-neutral">&nbsp;</span>
408
- <span class="cline-any cline-yes">520x</span>
409
- <span class="cline-any cline-neutral">&nbsp;</span>
410
- <span class="cline-any cline-neutral">&nbsp;</span>
411
- <span class="cline-any cline-yes">1x</span>
412
- <span class="cline-any cline-yes">505x</span>
413
- <span class="cline-any cline-neutral">&nbsp;</span>
414
- <span class="cline-any cline-neutral">&nbsp;</span>
415
- <span class="cline-any cline-neutral">&nbsp;</span>
416
- <span class="cline-any cline-neutral">&nbsp;</span>
417
- <span class="cline-any cline-neutral">&nbsp;</span>
418
- <span class="cline-any cline-neutral">&nbsp;</span>
419
- <span class="cline-any cline-neutral">&nbsp;</span>
420
- <span class="cline-any cline-neutral">&nbsp;</span>
421
- <span class="cline-any cline-neutral">&nbsp;</span>
422
- <span class="cline-any cline-yes">1x</span>
423
- <span class="cline-any cline-yes">7x</span>
424
- <span class="cline-any cline-neutral">&nbsp;</span>
425
- <span class="cline-any cline-neutral">&nbsp;</span>
426
- <span class="cline-any cline-neutral">&nbsp;</span>
427
- <span class="cline-any cline-neutral">&nbsp;</span>
428
- <span class="cline-any cline-neutral">&nbsp;</span>
429
- <span class="cline-any cline-neutral">&nbsp;</span>
430
- <span class="cline-any cline-neutral">&nbsp;</span>
431
- <span class="cline-any cline-neutral">&nbsp;</span>
432
- <span class="cline-any cline-neutral">&nbsp;</span>
433
- <span class="cline-any cline-yes">1x</span>
434
- <span class="cline-any cline-yes">7x</span>
435
- <span class="cline-any cline-neutral">&nbsp;</span>
436
- <span class="cline-any cline-neutral">&nbsp;</span>
437
- <span class="cline-any cline-yes">1x</span>
438
- <span class="cline-any cline-neutral">&nbsp;</span>
439
- <span class="cline-any cline-neutral">&nbsp;</span>
440
- <span class="cline-any cline-yes">505x</span>
441
- <span class="cline-any cline-neutral">&nbsp;</span>
442
- <span class="cline-any cline-neutral">&nbsp;</span>
443
- <span class="cline-any cline-neutral">&nbsp;</span>
444
- <span class="cline-any cline-neutral">&nbsp;</span>
445
- <span class="cline-any cline-neutral">&nbsp;</span>
446
- <span class="cline-any cline-neutral">&nbsp;</span>
447
- <span class="cline-any cline-neutral">&nbsp;</span>
448
- <span class="cline-any cline-neutral">&nbsp;</span>
449
- <span class="cline-any cline-neutral">&nbsp;</span>
450
- <span class="cline-any cline-neutral">&nbsp;</span>
451
- <span class="cline-any cline-yes">1x</span>
452
- <span class="cline-any cline-neutral">&nbsp;</span>
453
- <span class="cline-any cline-yes">505x</span>
454
- <span class="cline-any cline-neutral">&nbsp;</span>
455
- <span class="cline-any cline-neutral">&nbsp;</span>
456
- <span class="cline-any cline-yes">1x</span>
457
- <span class="cline-any cline-no">&nbsp;</span>
458
- <span class="cline-any cline-neutral">&nbsp;</span>
459
- <span class="cline-any cline-neutral">&nbsp;</span>
460
- <span class="cline-any cline-yes">1x</span>
461
- <span class="cline-any cline-yes">36x</span>
462
- <span class="cline-any cline-yes">36x</span>
463
- <span class="cline-any cline-yes">36x</span>
464
- <span class="cline-any cline-neutral">&nbsp;</span>
465
- <span class="cline-any cline-yes">36x</span>
466
- <span class="cline-any cline-neutral">&nbsp;</span>
467
- <span class="cline-any cline-neutral">&nbsp;</span>
468
- <span class="cline-any cline-neutral">&nbsp;</span>
469
- <span class="cline-any cline-neutral">&nbsp;</span>
470
- <span class="cline-any cline-neutral">&nbsp;</span>
471
- <span class="cline-any cline-neutral">&nbsp;</span>
472
- <span class="cline-any cline-yes">36x</span>
473
- <span class="cline-any cline-neutral">&nbsp;</span>
474
- <span class="cline-any cline-neutral">&nbsp;</span>
475
- <span class="cline-any cline-neutral">&nbsp;</span>
476
- <span class="cline-any cline-neutral">&nbsp;</span>
477
- <span class="cline-any cline-neutral">&nbsp;</span>
478
- <span class="cline-any cline-neutral">&nbsp;</span>
479
- <span class="cline-any cline-neutral">&nbsp;</span>
480
- <span class="cline-any cline-neutral">&nbsp;</span>
481
- <span class="cline-any cline-neutral">&nbsp;</span>
482
- <span class="cline-any cline-yes">36x</span>
483
- <span class="cline-any cline-neutral">&nbsp;</span>
484
- <span class="cline-any cline-neutral">&nbsp;</span>
485
- <span class="cline-any cline-neutral">&nbsp;</span>
486
- <span class="cline-any cline-neutral">&nbsp;</span>
487
- <span class="cline-any cline-neutral">&nbsp;</span>
488
- <span class="cline-any cline-neutral">&nbsp;</span>
489
- <span class="cline-any cline-neutral">&nbsp;</span>
490
- <span class="cline-any cline-neutral">&nbsp;</span>
491
- <span class="cline-any cline-neutral">&nbsp;</span>
492
- <span class="cline-any cline-yes">3x</span>
493
- <span class="cline-any cline-yes">3x</span>
494
- <span class="cline-any cline-neutral">&nbsp;</span>
495
- <span class="cline-any cline-yes">36x</span>
496
- <span class="cline-any cline-neutral">&nbsp;</span>
497
- <span class="cline-any cline-yes">36x</span>
498
- <span class="cline-any cline-yes">36x</span>
499
- <span class="cline-any cline-neutral">&nbsp;</span>
500
- <span class="cline-any cline-neutral">&nbsp;</span>
501
- <span class="cline-any cline-neutral">&nbsp;</span>
502
- <span class="cline-any cline-yes">1x</span>
503
- <span class="cline-any cline-yes">28x</span>
504
- <span class="cline-any cline-neutral">&nbsp;</span>
505
- <span class="cline-any cline-neutral">&nbsp;</span>
506
- <span class="cline-any cline-yes">1x</span>
507
- <span class="cline-any cline-neutral">&nbsp;</span>
508
- <span class="cline-any cline-neutral">&nbsp;</span>
509
- <span class="cline-any cline-neutral">&nbsp;</span>
510
- <span class="cline-any cline-neutral">&nbsp;</span>
511
- <span class="cline-any cline-neutral">&nbsp;</span>
512
- <span class="cline-any cline-neutral">&nbsp;</span>
513
- <span class="cline-any cline-neutral">&nbsp;</span>
514
- <span class="cline-any cline-neutral">&nbsp;</span>
515
- <span class="cline-any cline-neutral">&nbsp;</span>
516
- <span class="cline-any cline-neutral">&nbsp;</span>
517
- <span class="cline-any cline-yes">366x</span>
518
- <span class="cline-any cline-yes">366x</span>
519
- <span class="cline-any cline-yes">366x</span>
520
- <span class="cline-any cline-neutral">&nbsp;</span>
521
- <span class="cline-any cline-neutral">&nbsp;</span>
522
- <span class="cline-any cline-neutral">&nbsp;</span>
523
- <span class="cline-any cline-neutral">&nbsp;</span>
524
- <span class="cline-any cline-neutral">&nbsp;</span>
525
- <span class="cline-any cline-neutral">&nbsp;</span>
526
- <span class="cline-any cline-neutral">&nbsp;</span>
527
- <span class="cline-any cline-yes">366x</span>
528
- <span class="cline-any cline-neutral">&nbsp;</span>
529
- <span class="cline-any cline-neutral">&nbsp;</span>
530
- <span class="cline-any cline-neutral">&nbsp;</span>
531
- <span class="cline-any cline-neutral">&nbsp;</span>
532
- <span class="cline-any cline-neutral">&nbsp;</span>
533
- <span class="cline-any cline-neutral">&nbsp;</span>
534
- <span class="cline-any cline-neutral">&nbsp;</span>
535
- <span class="cline-any cline-neutral">&nbsp;</span>
536
- <span class="cline-any cline-neutral">&nbsp;</span>
537
- <span class="cline-any cline-neutral">&nbsp;</span>
538
- <span class="cline-any cline-neutral">&nbsp;</span>
539
- <span class="cline-any cline-neutral">&nbsp;</span>
540
- <span class="cline-any cline-neutral">&nbsp;</span>
541
- <span class="cline-any cline-neutral">&nbsp;</span>
542
- <span class="cline-any cline-neutral">&nbsp;</span>
543
- <span class="cline-any cline-neutral">&nbsp;</span>
544
- <span class="cline-any cline-neutral">&nbsp;</span>
545
- <span class="cline-any cline-neutral">&nbsp;</span>
546
- <span class="cline-any cline-neutral">&nbsp;</span>
547
- <span class="cline-any cline-neutral">&nbsp;</span>
548
- <span class="cline-any cline-yes">1x</span>
549
- <span class="cline-any cline-no">&nbsp;</span>
550
- <span class="cline-any cline-neutral">&nbsp;</span>
551
- <span class="cline-any cline-neutral">&nbsp;</span>
552
- <span class="cline-any cline-yes">1x</span>
553
- <span class="cline-any cline-no">&nbsp;</span>
554
- <span class="cline-any cline-neutral">&nbsp;</span>
555
- <span class="cline-any cline-neutral">&nbsp;</span>
556
- <span class="cline-any cline-yes">1x</span>
557
- <span class="cline-any cline-no">&nbsp;</span>
558
- <span class="cline-any cline-neutral">&nbsp;</span>
559
- <span class="cline-any cline-neutral">&nbsp;</span>
560
- <span class="cline-any cline-neutral">&nbsp;</span>
561
- <span class="cline-any cline-neutral">&nbsp;</span>
562
- <span class="cline-any cline-neutral">&nbsp;</span>
563
- <span class="cline-any cline-neutral">&nbsp;</span>
564
- <span class="cline-any cline-neutral">&nbsp;</span>
565
- <span class="cline-any cline-neutral">&nbsp;</span>
566
- <span class="cline-any cline-neutral">&nbsp;</span>
567
- <span class="cline-any cline-yes">1x</span>
568
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/*
569
- * Copyright 2005 Google Inc.
570
- *
571
- * Licensed under the Apache License, Version 2.0 (the "License");
572
- * you may not use this file except in compliance with the License.
573
- * You may obtain a copy of the License at
574
- *
575
- * http://www.apache.org/licenses/LICENSE-2.0
576
- *
577
- * Unless required by applicable law or agreed to in writing, software
578
- * distributed under the License is distributed on an "AS IS" BASIS,
579
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
580
- * See the License for the specific language governing permissions and
581
- * limitations under the License.
582
- */
583
- &nbsp;
584
- import {S1Angle} from "./S1Angle";
585
- import {S2Point} from "./S2Point";
586
- import {S2} from "./S2";
587
- import {Decimal} from './decimal';
588
- /**
589
- * This class represents a point on the unit sphere as a pair of
590
- * latitude-longitude coordinates. Like the rest of the "geometry" package, the
591
- * intent is to represent spherical geometry as a mathematical abstraction, so
592
- * functions that are specifically related to the Earth's geometry (e.g.
593
- * easting/northing conversions) should be put elsewhere.
594
- *
595
- */
596
- export class S2LatLng {
597
- &nbsp;
598
- /**
599
- * Approximate "effective" radius of the Earth in meters.
600
- */
601
- public static EARTH_RADIUS_METERS = 6367000.0;
602
- &nbsp;
603
- /** The center point the lat/lng coordinate system. */
604
- public static CENTER = new S2LatLng(0.0, 0.0);
605
- &nbsp;
606
- public latRadians:decimal.Decimal;
607
- public lngRadians:decimal.Decimal;
608
- &nbsp;
609
- constructor(latRadians:number|decimal.Decimal, lngRadians:number|decimal.Decimal) {
610
- this.latRadians = S2.toDecimal(latRadians) as decimal.Decimal;
611
- this.lngRadians = S2.toDecimal(lngRadians) as decimal.Decimal;
612
- }
613
- &nbsp;
614
- <span class="fstat-no" title="function not covered" > get latDegrees() {</span>
615
- <span class="cstat-no" title="statement not covered" > return new S1Angle(this.latRadians).degrees();</span>
616
- }
617
- &nbsp;
618
- <span class="fstat-no" title="function not covered" > get lngDegrees() {</span>
619
- <span class="cstat-no" title="statement not covered" > return new S1Angle(this.lngRadians).degrees();</span>
620
- }
621
- &nbsp;
622
- // Clamps the latitude to the range [-90, 90] degrees, and adds or subtracts
623
- // a multiple of 360 degrees to the longitude if necessary to reduce it to
624
- // the range [-180, 180].
625
- /** Convert an S2LatLng to the equivalent unit-length vector (S2Point). */
626
- public toPoint():S2Point {
627
- const phi = this.latRadians;
628
- const theta = this.lngRadians;
629
- const cosphi = Decimal.cos(phi);
630
- &nbsp;
631
- return new S2Point(
632
- Decimal.cos(theta).times(cosphi),
633
- Decimal.sin(theta).times(cosphi),
634
- Decimal.sin(phi));
635
- }
636
- &nbsp;
637
- /**
638
- * Returns a new S2LatLng based on this instance for which {@link #isValid()}
639
- * will be {@code true}.
640
- * &lt;ul&gt;
641
- * &lt;li&gt;Latitude is clipped to the range {@code [-90, 90]}
642
- * &lt;li&gt;Longitude is normalized to be in the range {@code [-180, 180]}
643
- * &lt;/ul&gt;
644
- * &lt;p&gt;If the current point is valid then the returned point will have the same
645
- * coordinates.
646
- */
647
- public normalized():S2LatLng {
648
- // drem(x, 2 * S2.M_PI) reduces its argument to the range
649
- // [-S2.M_PI, S2.M_PI] inclusive, which is what we want here.
650
- return new S2LatLng(
651
- Decimal.max(
652
- -S2.M_PI_2,
653
- Decimal.min(
654
- S2.M_PI_2,
655
- this.latRadians
656
- )
657
- ),
658
- S2.IEEEremainder(
659
- this.lngRadians,
660
- S2.toDecimal(2).times(S2.M_PI)
661
- )
662
- );
663
- // return new S2LatLng(Math.max(-S2.M_PI_2, Math.min(S2.M_PI_2, this.latRadians)),
664
- // S2.IEEEremainder(this.lngRadians, 2 * S2.M_PI));
665
- }
666
- &nbsp;
667
- public static fromDegrees(latDegrees:number|decimal.Decimal, lngDegrees:number|decimal.Decimal):S2LatLng {
668
- &nbsp;
669
- return new S2LatLng(S1Angle.degrees(latDegrees).radians, S1Angle.degrees(lngDegrees).radians);
670
- }
671
- &nbsp;
672
- static fromPoint(p:S2Point) {
673
- return new S2LatLng(
674
- S2LatLng.latitude(p).radians,
675
- S2LatLng.longitude(p).radians
676
- );
677
- }
678
- &nbsp;
679
- /**
680
- * Return true if the latitude is between -90 and 90 degrees inclusive and the
681
- * longitude is between -180 and 180 degrees inclusive.
682
- */
683
- public isValid():boolean {
684
- return this.latRadians.abs().lte(S2.M_PI_2) &amp;&amp;
685
- this.lngRadians.abs().lte(S2.M_PI);
686
- &nbsp;
687
- }
688
- &nbsp;
689
- &nbsp;
690
- /**
691
- * Scales this point by the given scaling factor.
692
- * Note that there is no guarantee that the new point will be &lt;em&gt;valid&lt;/em&gt;.
693
- */
694
- public mul(m:decimal.Decimal|number):S2LatLng {
695
- return new S2LatLng(this.latRadians.times(m), this.lngRadians.times(m));
696
- }
697
- &nbsp;
698
- public static latitude(p:S2Point) {
699
- // We use atan2 rather than asin because the input vector is not necessarily
700
- // unit length, and atan2 is much more accurate than asin near the poles.
701
- return new S1Angle(
702
- Decimal.atan2(
703
- p.z,
704
- p.x.pow(2)
705
- .plus(p.y.pow(2))
706
- .sqrt()
707
- )
708
- // Math.atan2(p.z, Math.sqrt(p.x * p.x + p.y * p.y))
709
- );
710
- }
711
- &nbsp;
712
- public static longitude(p:S2Point):S1Angle {
713
- // Note that atan2(0, 0) is defined to be zero.
714
- return new S1Angle(Decimal.atan2(p.y, p.x));
715
- }
716
- &nbsp;
717
- <span class="fstat-no" title="function not covered" > equals(</span>other:S2LatLng):boolean {
718
- <span class="cstat-no" title="statement not covered" > return other.latRadians === this.latRadians &amp;&amp; other.lngRadians === this.lngRadians;</span>
719
- }
720
- &nbsp;
721
- pointAtDistance(_distanceInKm:number|decimal.Decimal, _bearingRadians:number|decimal.Decimal) {
722
- const distanceInM = S2.toDecimal(_distanceInKm).times(1000);
723
- const distanceToRadius = distanceInM.dividedBy(S2LatLng.EARTH_RADIUS_METERS);
724
- const bearingRadians = S2.toDecimal(_bearingRadians);
725
- &nbsp;
726
- const newLat = this.latRadians.sin()
727
- .times(distanceToRadius.cos())
728
- .plus(
729
- this.latRadians.cos()
730
- .times(distanceToRadius.sin())
731
- .times(bearingRadians.cos())
732
- ).asin();
733
- const newLng = this.lngRadians
734
- .plus(
735
- Decimal.atan2(
736
- bearingRadians.sin()
737
- .times(distanceToRadius.sin())
738
- .times(this.latRadians.cos()),
739
- distanceToRadius.cos()
740
- .minus(this.latRadians.sin().times(newLat.sin()))
741
- )
742
- );
743
- return new S2LatLng(newLat, newLng);
744
- }
745
- &nbsp;
746
- /**
747
- * Generates n LatLngs given a distance in km and the number of points wanted.
748
- * Generated points will be returned in a Clockwise order starting from North.
749
- * @param _distanceInKm
750
- * @param nPoints
751
- * @returns {S2LatLng[]}
752
- */
753
- pointsAtDistance(_distanceInKm:number|decimal.Decimal, <span class="missing-if-branch" title="if path not taken" >I</span>nPoints:number=4):S2LatLng[] {
754
- return Array.apply(null, new Array(nPoints)) // create an array filled of undefined!
755
- .map((p, idx) =&gt; {
756
- return S2.toDecimal(360).dividedBy(nPoints).times(idx);
757
- })
758
- .map(bearingDegree =&gt; S1Angle.degrees(bearingDegree).radians)
759
- .map(bearingRadians =&gt; this.pointAtDistance(_distanceInKm, bearingRadians));
760
- &nbsp;
761
- }
762
-
763
- getEarthDistance(other:S2LatLng):decimal.Decimal {
764
- return this.getDistance(other).radians.times(S2LatLng.EARTH_RADIUS_METERS);
765
- }
766
- &nbsp;
767
- getDistance(other:S2LatLng):S1Angle {
768
- // This implements the Haversine formula, which is numerically stable for
769
- // small distances but only gets about 8 digits of precision for very large
770
- // distances (e.g. antipodal points). Note that 8 digits is still accurate
771
- // to within about 10cm for a sphere the size of the Earth.
772
- //
773
- // This could be fixed with another sin() and cos() below, but at that point
774
- // you might as well just convert both arguments to S2Points and compute the
775
- // distance that way (which gives about 15 digits of accuracy for all
776
- // distances).
777
- &nbsp;
778
- const dLat:decimal.Decimal = other.latRadians.minus(this.latRadians).times(0.5).sin();
779
- const dLng:decimal.Decimal = other.lngRadians.minus(this.lngRadians).times(0.5).sin();
780
- const x = dLat.pow(2)
781
- .plus(
782
- dLng.pow(2)
783
- .times(this.latRadians.cos())
784
- .times(other.latRadians.cos())
785
- );
786
- // double x = dlat * dlat + dlng * dlng * Math.cos(lat1) * Math.cos(lat2);
787
- &nbsp;
788
- return new S1Angle(
789
- (S2.toDecimal(2) as decimal.Decimal)
790
- .times(
791
- Decimal.atan2(
792
- x.sqrt(),
793
- Decimal.max(
794
- 0,
795
- x.neg().plus(1)
796
- )
797
- .sqrt()
798
- )
799
- )
800
- );
801
- // Return the distance (measured along the surface of the sphere) to the
802
- // given S2LatLng. This is mathematically equivalent to:
803
- //
804
- // S1Angle::FromRadians(ToPoint().Angle(o.ToPoint())
805
- //
806
- // but this implementation is slightly more efficient.
807
- }
808
- &nbsp;
809
- <span class="fstat-no" title="function not covered" > public toString():string {</span>
810
- <span class="cstat-no" title="statement not covered" > return "(" + this.latRadians + ", " + this.lngRadians + ")";</span>
811
- }
812
- &nbsp;
813
- <span class="fstat-no" title="function not covered" > public toStringDegrees():string {</span>
814
- <span class="cstat-no" title="statement not covered" > return "(" + this.latDegrees + ", " + this.lngDegrees + ")";</span>
815
- }
816
- &nbsp;
817
- <span class="fstat-no" title="function not covered" > public toGEOJSON() {</span>
818
- <span class="cstat-no" title="statement not covered" > return {</span>
819
- type: 'Feature',
820
- geometry: {
821
- type: "Point",
822
- coordinates: [this.lngDegrees.toNumber(), this.latDegrees.toNumber()]
823
- },
824
- properties: {}
825
- &nbsp;
826
- }
827
- }
828
- }
829
- &nbsp;</pre></td></tr>
830
- </table></pre>
831
- <div class='push'></div><!-- for sticky footer -->
832
- </div><!-- /wrapper -->
833
- <div class='footer quiet pad2 space-top1 center small'>
834
- Code coverage
835
- generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Wed Sep 28 2016 14:48:27 GMT+0200 (CEST)
836
- </div>
837
- </div>
838
- <script src="prettify.js"></script>
839
- <script>
840
- window.onload = function () {
841
- if (typeof prettyPrint === 'function') {
842
- prettyPrint();
843
- }
844
- };
845
- </script>
846
- <script src="sorter.js"></script>
847
- </body>
848
- </html>