nodes2ts 3.0.0 → 4.0.1

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 (80) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +102 -15
  3. package/dist/export.cjs +5350 -0
  4. package/dist/export.cjs.map +1 -0
  5. package/dist/export.d.cts +1847 -0
  6. package/dist/export.d.ts +1837 -20
  7. package/dist/export.js +5299 -62
  8. package/dist/export.js.map +1 -1
  9. package/package.json +34 -55
  10. package/.eslintignore +0 -3
  11. package/.eslintrc.cjs +0 -11
  12. package/.github/workflows/lint.js.yml +0 -22
  13. package/.github/workflows/node.js.yml +0 -22
  14. package/.mocharc.js +0 -7
  15. package/dist/Interval.d.ts +0 -24
  16. package/dist/Interval.js +0 -23
  17. package/dist/Interval.js.map +0 -1
  18. package/dist/MutableInteger.d.ts +0 -4
  19. package/dist/MutableInteger.js +0 -10
  20. package/dist/MutableInteger.js.map +0 -1
  21. package/dist/Platform.d.ts +0 -15
  22. package/dist/Platform.js +0 -53
  23. package/dist/Platform.js.map +0 -1
  24. package/dist/R1Interval.d.ts +0 -76
  25. package/dist/R1Interval.js +0 -158
  26. package/dist/R1Interval.js.map +0 -1
  27. package/dist/R2Vector.d.ts +0 -34
  28. package/dist/R2Vector.js +0 -131
  29. package/dist/R2Vector.js.map +0 -1
  30. package/dist/S1Angle.d.ts +0 -60
  31. package/dist/S1Angle.js +0 -133
  32. package/dist/S1Angle.js.map +0 -1
  33. package/dist/S1ChordAngle.d.ts +0 -166
  34. package/dist/S1ChordAngle.js +0 -318
  35. package/dist/S1ChordAngle.js.map +0 -1
  36. package/dist/S1Interval.d.ts +0 -109
  37. package/dist/S1Interval.js +0 -398
  38. package/dist/S1Interval.js.map +0 -1
  39. package/dist/S2.d.ts +0 -96
  40. package/dist/S2.js +0 -231
  41. package/dist/S2.js.map +0 -1
  42. package/dist/S2Cap.d.ts +0 -122
  43. package/dist/S2Cap.js +0 -399
  44. package/dist/S2Cap.js.map +0 -1
  45. package/dist/S2Cell.d.ts +0 -106
  46. package/dist/S2Cell.js +0 -358
  47. package/dist/S2Cell.js.map +0 -1
  48. package/dist/S2CellId.d.ts +0 -290
  49. package/dist/S2CellId.js +0 -983
  50. package/dist/S2CellId.js.map +0 -1
  51. package/dist/S2CellUnion.d.ts +0 -179
  52. package/dist/S2CellUnion.js +0 -523
  53. package/dist/S2CellUnion.js.map +0 -1
  54. package/dist/S2EdgeUtil.d.ts +0 -17
  55. package/dist/S2EdgeUtil.js +0 -785
  56. package/dist/S2EdgeUtil.js.map +0 -1
  57. package/dist/S2LatLng.d.ts +0 -77
  58. package/dist/S2LatLng.js +0 -186
  59. package/dist/S2LatLng.js.map +0 -1
  60. package/dist/S2LatLngRect.d.ts +0 -190
  61. package/dist/S2LatLngRect.js +0 -624
  62. package/dist/S2LatLngRect.js.map +0 -1
  63. package/dist/S2Metric.d.ts +0 -38
  64. package/dist/S2Metric.js +0 -79
  65. package/dist/S2Metric.js.map +0 -1
  66. package/dist/S2Point.d.ts +0 -78
  67. package/dist/S2Point.js +0 -250
  68. package/dist/S2Point.js.map +0 -1
  69. package/dist/S2Projections.d.ts +0 -102
  70. package/dist/S2Projections.js +0 -331
  71. package/dist/S2Projections.js.map +0 -1
  72. package/dist/S2Region.d.ts +0 -31
  73. package/dist/S2Region.js +0 -18
  74. package/dist/S2Region.js.map +0 -1
  75. package/dist/S2RegionCoverer.d.ts +0 -186
  76. package/dist/S2RegionCoverer.js +0 -471
  77. package/dist/S2RegionCoverer.js.map +0 -1
  78. package/dist/utils/preconditions.d.ts +0 -2
  79. package/dist/utils/preconditions.js +0 -16
  80. package/dist/utils/preconditions.js.map +0 -1
@@ -1,398 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.S1Interval = void 0;
4
- const Interval_1 = require("./Interval");
5
- const S2_1 = require("./S2");
6
- const Platform_1 = require("./Platform");
7
- class S1Interval extends Interval_1.Interval {
8
- constructor(lo, hi, checked = false) {
9
- super(lo, hi);
10
- if (!checked) {
11
- if (this.lo == (-S2_1.S2.M_PI) && this.hi != (S2_1.S2.M_PI)) {
12
- this.lo = (S2_1.S2.M_PI);
13
- }
14
- if (this.hi == (-S2_1.S2.M_PI) && this.lo != (S2_1.S2.M_PI)) {
15
- this.hi = (S2_1.S2.M_PI);
16
- }
17
- }
18
- }
19
- /**
20
- * An interval is valid if neither bound exceeds Pi in absolute value, and the
21
- * value -Pi appears only in the Empty() and Full() intervals.
22
- */
23
- isValid() {
24
- return Math.abs(this.lo) <= (S2_1.S2.M_PI) && Math.abs(this.hi) <= (S2_1.S2.M_PI)
25
- && !(this.lo == (-S2_1.S2.M_PI) && this.hi != (S2_1.S2.M_PI))
26
- && !(this.hi == (-S2_1.S2.M_PI) && this.lo != (S2_1.S2.M_PI));
27
- // return (Math.abs(this.lo) <= S2.M_PI && Math.abs(this.hi) <= S2.M_PI
28
- // && !(this.lo == -S2.M_PI && this.hi != S2.M_PI) && !(this.hi == -S2.M_PI && this.lo != S2.M_PI));
29
- }
30
- /** Return true if the interval contains all points on the unit circle. */
31
- isFull() {
32
- // console.log(this.hi - (this.lo) == (2 * S2.M_PI));
33
- return this.hi - (this.lo) == (2 * S2_1.S2.M_PI);
34
- }
35
- /** Return true if the interval is empty, i.e. it contains no points. */
36
- isEmpty() {
37
- return this.lo - (this.hi) == (2 * S2_1.S2.M_PI);
38
- }
39
- /* Return true if this.lo > this.hi. (This is true for empty intervals.) */
40
- isInverted() {
41
- return this.lo > (this.hi);
42
- }
43
- /**
44
- * Return the midpoint of the interval. For full and empty intervals, the
45
- * result is arbitrary.
46
- */
47
- getCenter() {
48
- const center = (this.lo + this.hi) / 2;
49
- // let center = 0.5 * (this.lo + this.hi);
50
- if (!this.isInverted()) {
51
- return center;
52
- }
53
- // Return the center in the range (-Pi, Pi].
54
- return (center <= (0)) ? (center + (S2_1.S2.M_PI)) : (center - (S2_1.S2.M_PI));
55
- }
56
- /**
57
- * Return the length of the interval. The length of an empty interval is
58
- * negative.
59
- */
60
- getLength() {
61
- let length = this.hi - (this.lo);
62
- if (length >= (0)) {
63
- return length;
64
- }
65
- length = length + (2 * S2_1.S2.M_PI);
66
- // Empty intervals have a negative length.
67
- return (length > (0)) ? length : (-1);
68
- }
69
- /**
70
- * Return the complement of the interior of the interval. An interval and its
71
- * complement have the same boundary but do not share any interior values. The
72
- * complement operator is not a bijection, since the complement of a singleton
73
- * interval (containing a single value) is the same as the complement of an
74
- * empty interval.
75
- */
76
- complement() {
77
- if (this.lo == (this.hi)) {
78
- return S1Interval.full(); // Singleton.
79
- }
80
- return new S1Interval(this.hi, this.lo, true); // Handles
81
- // empty and
82
- // full.
83
- }
84
- /** Return true if the interval (which is closed) contains the point 'p'. */
85
- contains(_p) {
86
- let p = (_p);
87
- // Works for empty, full, and singleton intervals.
88
- // assert (Math.abs(p) <= S2.M_PI);
89
- if (p == (-S2_1.S2.M_PI)) {
90
- p = (S2_1.S2.M_PI);
91
- }
92
- return this.fastContains(p);
93
- }
94
- /**
95
- * Return true if the interval (which is closed) contains the point 'p'. Skips
96
- * the normalization of 'p' from -Pi to Pi.
97
- *
98
- */
99
- fastContains(_p) {
100
- const p = (_p);
101
- if (this.isInverted()) {
102
- return (p >= (this.lo) || p <= (this.hi)) && !this.isEmpty();
103
- }
104
- else {
105
- return p >= (this.lo) && p <= (this.hi);
106
- }
107
- }
108
- /** Return true if the interior of the interval contains the point 'p'. */
109
- interiorContains(_p) {
110
- // Works for empty, full, and singleton intervals.
111
- // assert (Math.abs(p) <= S2.M_PI);
112
- let p = (_p);
113
- if (p == (-S2_1.S2.M_PI)) {
114
- p = (S2_1.S2.M_PI);
115
- }
116
- if (this.isInverted()) {
117
- return p > (this.lo) || p < (this.hi);
118
- }
119
- else {
120
- return (p > (this.lo) && p < (this.hi)) || this.isFull();
121
- }
122
- }
123
- /**
124
- * Return true if the interval contains the given interval 'y'. Works for
125
- * empty, full, and singleton intervals.
126
- */
127
- containsI(y) {
128
- // It might be helpful to compare the structure of these tests to
129
- // the simpler Contains(number) method above.
130
- if (this.isInverted()) {
131
- if (y.isInverted()) {
132
- return y.lo >= (this.lo) && y.hi <= (this.hi);
133
- }
134
- return (y.lo >= (this.lo) || y.hi <= (this.hi)) && !this.isEmpty();
135
- }
136
- else {
137
- if (y.isInverted()) {
138
- return this.isFull() || y.isEmpty();
139
- }
140
- return y.lo >= (this.lo) && y.hi <= (this.hi);
141
- }
142
- }
143
- /**
144
- * Returns true if the interior of this interval contains the entire interval
145
- * 'y'. Note that x.InteriorContains(x) is true only when x is the empty or
146
- * full interval, and x.InteriorContains(S1Interval(p,p)) is equivalent to
147
- * x.InteriorContains(p).
148
- */
149
- interiorContainsI(y) {
150
- if (this.isInverted()) {
151
- if (!y.isInverted()) {
152
- return this.lo > (this.lo) || y.hi < (this.hi);
153
- }
154
- return (y.lo > (this.lo) && y.hi < (this.hi)) || y.isEmpty();
155
- }
156
- else {
157
- if (y.isInverted()) {
158
- return this.isFull() || y.isEmpty();
159
- }
160
- return (y.lo > (this.lo) && y.hi < (this.hi)) || this.isFull();
161
- }
162
- }
163
- /**
164
- * Return true if the two intervals contain any points in common. Note that
165
- * the point +/-Pi has two representations, so the intervals [-Pi,-3] and
166
- * [2,Pi] intersect, for example.
167
- */
168
- intersects(y) {
169
- if (this.isEmpty() || y.isEmpty()) {
170
- return false;
171
- }
172
- if (this.isInverted()) {
173
- // Every non-empty inverted interval contains Pi.
174
- return y.isInverted() || y.lo <= (this.hi) || y.hi >= (this.lo);
175
- }
176
- else {
177
- if (y.isInverted()) {
178
- return y.lo <= (this.hi) || y.hi >= (this.lo);
179
- }
180
- return y.lo <= (this.hi) && y.hi >= (this.lo);
181
- }
182
- }
183
- /**
184
- * Return true if the interior of this interval contains any point of the
185
- * interval 'y' (including its boundary). Works for empty, full, and singleton
186
- * intervals.
187
- */
188
- interiorIntersects(y) {
189
- if (this.isEmpty() || y.isEmpty() || this.lo == (this.hi)) {
190
- return false;
191
- }
192
- if (this.isInverted()) {
193
- return y.isInverted() || y.lo < (this.hi) || y.hi > (this.lo);
194
- }
195
- else {
196
- if (y.isInverted()) {
197
- return y.lo < (this.hi) || y.hi > (this.lo);
198
- }
199
- return (y.lo < (this.hi) && y.hi > (this.lo)) || this.isFull();
200
- }
201
- }
202
- /**
203
- * Expand the interval by the minimum amount necessary so that it contains the
204
- * given point "p" (an angle in the range [-Pi, Pi]).
205
- */
206
- addPoint(_p) {
207
- let p = (_p);
208
- // assert (Math.abs(p) <= S2.M_PI);
209
- if (p == (-S2_1.S2.M_PI)) {
210
- p = (S2_1.S2.M_PI);
211
- }
212
- if (this.fastContains(p)) {
213
- return new S1Interval(this.lo, this.hi);
214
- }
215
- if (this.isEmpty()) {
216
- return S1Interval.fromPoint(p);
217
- }
218
- else {
219
- // Compute distance from p to each endpoint.
220
- const dlo = S1Interval.positiveDistance(p, this.lo);
221
- const dhi = S1Interval.positiveDistance(this.hi, p);
222
- if (dlo < (dhi)) {
223
- return new S1Interval(p, this.hi);
224
- }
225
- else {
226
- return new S1Interval(this.lo, p);
227
- }
228
- // Adding a point can never turn a non-full interval into a full one.
229
- }
230
- }
231
- /**
232
- * Return an interval that contains all points within a distance "radius" of
233
- * a point in this interval. Note that the expansion of an empty interval is
234
- * always empty. The radius must be non-negative.
235
- */
236
- expanded(radius) {
237
- // assert (radius >= 0);
238
- if (this.isEmpty()) {
239
- return this;
240
- }
241
- // Check whether this interval will be full after expansion, allowing
242
- // for a 1-bit rounding error when computing each endpoint.
243
- if (this.getLength() + (radius * 2) >= (2 * S2_1.S2.M_PI - 1e-15)) {
244
- return S1Interval.full();
245
- }
246
- // NOTE(dbeaumont): Should this remainder be 2 * M_PI or just M_PI ??
247
- let lo = Platform_1.Platform.IEEEremainder(this.lo - (radius), 2 * S2_1.S2.M_PI);
248
- const hi = Platform_1.Platform.IEEEremainder(this.hi + (radius), 2 * S2_1.S2.M_PI);
249
- if (lo == (-S2_1.S2.M_PI)) {
250
- lo = (S2_1.S2.M_PI);
251
- }
252
- return new S1Interval(lo, hi);
253
- }
254
- /**
255
- * Return the smallest interval that contains this interval and the given
256
- * interval "y".
257
- */
258
- union(y) {
259
- // The y.is_full() case is handled correctly in all cases by the code
260
- // below, but can follow three separate code paths depending on whether
261
- // this interval is inverted, is non-inverted but contains Pi, or neither.
262
- if (y.isEmpty()) {
263
- return this;
264
- }
265
- if (this.fastContains(y.lo)) {
266
- if (this.fastContains(y.hi)) {
267
- // Either this interval contains y, or the union of the two
268
- // intervals is the Full() interval.
269
- if (this.containsI(y)) {
270
- return this; // is_full() code path
271
- }
272
- return S1Interval.full();
273
- }
274
- return new S1Interval(this.lo, this.hi, true);
275
- }
276
- if (this.fastContains(y.hi)) {
277
- return new S1Interval(y.lo, this.hi, true);
278
- }
279
- // This interval contains neither endpoint of y. This means that either y
280
- // contains all of this interval, or the two intervals are disjoint.
281
- if (this.isEmpty() || y.fastContains(this.lo)) {
282
- return y;
283
- }
284
- // Check which pair of endpoints are closer together.
285
- const dlo = S1Interval.positiveDistance(y.hi, this.lo);
286
- const dhi = S1Interval.positiveDistance(this.hi, y.lo);
287
- if (dlo < dhi) {
288
- return new S1Interval(y.lo, this.hi, true);
289
- }
290
- else {
291
- return new S1Interval(this.lo, y.hi, true);
292
- }
293
- }
294
- /**
295
- * Return the smallest interval that contains the intersection of this
296
- * interval with "y". Note that the region of intersection may consist of two
297
- * disjoint intervals.
298
- */
299
- intersection(y) {
300
- // The y.is_full() case is handled correctly in all cases by the code
301
- // below, but can follow three separate code paths depending on whether
302
- // this interval is inverted, is non-inverted but contains Pi, or neither.
303
- if (y.isEmpty()) {
304
- return S1Interval.empty();
305
- }
306
- if (this.fastContains(y.lo)) {
307
- if (this.fastContains(y.hi)) {
308
- // Either this interval contains y, or the region of intersection
309
- // consists of two disjoint subintervals. In either case, we want
310
- // to return the shorter of the two original intervals.
311
- if (y.getLength() < (this.getLength())) {
312
- return y; // is_full() code path
313
- }
314
- return this;
315
- }
316
- return new S1Interval(y.lo, this.hi, true);
317
- }
318
- if (this.fastContains(y.hi)) {
319
- return new S1Interval(this.lo, y.hi, true);
320
- }
321
- // This interval contains neither endpoint of y. This means that either y
322
- // contains all of this interval, or the two intervals are disjoint.
323
- if (y.fastContains(this.lo)) {
324
- return this; // is_empty() okay here
325
- }
326
- // assert (!intersects(y));
327
- return S1Interval.empty();
328
- }
329
- /**
330
- * Return true if the length of the symmetric difference between the two
331
- * intervals is at most the given tolerance.
332
- */
333
- approxEquals(y, maxError = 1e-9) {
334
- if (this.isEmpty()) {
335
- return y.getLength() <= (maxError);
336
- }
337
- if (y.isEmpty()) {
338
- return this.getLength() <= (maxError);
339
- }
340
- return Math.abs(Platform_1.Platform.IEEEremainder(y.lo - (this.lo), 2 * S2_1.S2.M_PI))
341
- + (Math.abs(Platform_1.Platform.IEEEremainder(y.hi - (this.hi), 2 * S2_1.S2.M_PI)))
342
- <= (maxError);
343
- }
344
- static empty() {
345
- return new S1Interval(S2_1.S2.M_PI, -S2_1.S2.M_PI, true);
346
- }
347
- static full() {
348
- return new S1Interval(-S2_1.S2.M_PI, S2_1.S2.M_PI, true);
349
- }
350
- static fromPoint(_p) {
351
- let p = (_p);
352
- if (p == (-S2_1.S2.M_PI)) {
353
- p = (S2_1.S2.M_PI);
354
- }
355
- return new S1Interval(p, p, true);
356
- }
357
- /**
358
- * Convenience method to construct the minimal interval containing the two
359
- * given points. This is equivalent to starting with an empty interval and
360
- * calling AddPoint() twice, but it is more efficient.
361
- */
362
- static fromPointPair(_p1, _p2) {
363
- // assert (Math.abs(p1) <= S2.M_PI && Math.abs(p2) <= S2.M_PI);
364
- let p1 = (_p1);
365
- let p2 = (_p2);
366
- if (p1 == (-S2_1.S2.M_PI)) {
367
- p1 = (S2_1.S2.M_PI);
368
- }
369
- if (p2 == (-S2_1.S2.M_PI)) {
370
- p2 = (S2_1.S2.M_PI);
371
- }
372
- if (S1Interval.positiveDistance(p1, p2) <= (S2_1.S2.M_PI)) {
373
- return new S1Interval(p1, p2, true);
374
- }
375
- else {
376
- return new S1Interval(p2, p1, true);
377
- }
378
- }
379
- /**
380
- * Compute the distance from "a" to "b" in the range [0, 2*Pi). This is
381
- * equivalent to (drem(b - a - S2.M_PI, 2 * S2.M_PI) + S2.M_PI), except that
382
- * it is more numerically stable (it does not lose precision for very small
383
- * positive distances).
384
- */
385
- static positiveDistance(_a, _b) {
386
- const a = (_a);
387
- const b = (_b);
388
- const d = b - (a);
389
- if (d >= (0)) {
390
- return d;
391
- }
392
- // We want to ensure that if b == Pi and a == (-Pi + eps),
393
- // the return result is approximately 2*Pi and not zero.
394
- return b + (S2_1.S2.M_PI) - (a - (S2_1.S2.M_PI));
395
- }
396
- }
397
- exports.S1Interval = S1Interval;
398
- //# sourceMappingURL=S1Interval.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"S1Interval.js","sourceRoot":"","sources":["../src/S1Interval.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,6BAAwB;AACxB,yCAAsC;AACtC,MAAa,UAAW,SAAQ,mBAAQ;IAEtC,YAAY,EAAS,EAAE,EAAS,EAAE,OAAO,GAAG,KAAK;QAC/C,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,OAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,OAAE,CAAC,IAAI,CAAC,EAAE;gBACjD,IAAI,CAAC,EAAE,GAAG,CAAC,OAAE,CAAC,IAAI,CAAC,CAAC;aACrB;YACD,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,OAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,OAAE,CAAC,IAAI,CAAC,EAAE;gBACjD,IAAI,CAAC,EAAE,GAAG,CAAC,OAAE,CAAC,IAAI,CAAC,CAAC;aACrB;SACF;IACH,CAAC;IAED;;;OAGG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAE,CAAC,IAAI,CAAC;eAChE,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,OAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,OAAE,CAAC,IAAI,CAAC,CAAC;eAChD,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,OAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,OAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QACxD,uEAAuE;QACvE,oGAAoG;IACtG,CAAC;IAED,0EAA0E;IAC1E,MAAM;QACJ,qDAAqD;QACrD,OAAO,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,OAAE,CAAC,IAAI,CAAC,CAAA;IAC7C,CAAC;IAGD,wEAAwE;IAChE,OAAO;QACb,OAAO,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,OAAE,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAGD,2EAA2E;IACpE,UAAU;QACf,OAAO,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAGD;;;OAGG;IACI,SAAS;QACd,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACvC,0CAA0C;QAC1C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;YACtB,OAAO,MAAM,CAAC;SACf;QACD,4CAA4C;QAC5C,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,OAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,OAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACvE,CAAC;IAGD;;;OAGG;IACI,SAAS;QACd,IAAI,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE;YACjB,OAAO,MAAM,CAAC;SACf;QACD,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,OAAE,CAAC,IAAI,CAAC,CAAC;QAChC,0CAA0C;QAC1C,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED;;;;;;OAMG;IACI,UAAU;QACf,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YACxB,OAAO,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,aAAa;SACxC;QACD,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU;QACzD,YAAY;QACZ,QAAQ;IACV,CAAC;IAED,4EAA4E;IACrE,QAAQ,CAAC,EAAS;QACvB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,kDAAkD;QAClD,mCAAmC;QACnC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAE,CAAC,IAAI,CAAC,EAAE;YACnB,CAAC,GAAG,CAAC,OAAE,CAAC,IAAI,CAAC,CAAC;SACf;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACI,YAAY,CAAC,EAAS;QAC3B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACf,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,OAAO,CAAC,CAAC,IAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SAC7D;aAAM;YACL,OAAO,CAAC,IAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACxC;IACH,CAAC;IAED,0EAA0E;IACnE,gBAAgB,CAAC,EAAS;QAC/B,kDAAkD;QAClD,mCAAmC;QACnC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,CAAC,OAAE,CAAC,IAAI,CAAC,EAAE;YACnB,CAAC,GAAG,CAAC,OAAE,CAAC,IAAI,CAAC,CAAC;SACf;QAED,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACvC;aAAM;YACL,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;SAC1D;IACH,CAAC;IAED;;;OAGG;IACI,SAAS,CAAC,CAAY;QAC3B,iEAAiE;QACjE,6CAA6C;QAE7C,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE;gBAClB,OAAO,CAAC,CAAC,EAAE,IAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC9C;YACD,OAAO,CAAC,CAAC,CAAC,EAAE,IAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SACnE;aAAM;YACL,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE;gBAClB,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;aACrC;YACD,OAAO,CAAC,CAAC,EAAE,IAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC9C;IACH,CAAC;IAED;;;;;OAKG;IACI,iBAAiB,CAAC,CAAY;QACnC,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE;gBACnB,OAAO,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAChD;YACD,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;SAC9D;aAAM;YACL,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE;gBAClB,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;aACrC;YACD,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;SAChE;IACH,CAAC;IAED;;;;OAIG;IACI,UAAU,CAAC,CAAY;QAC5B,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YACjC,OAAO,KAAK,CAAC;SACd;QACD,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,iDAAiD;YACjD,OAAO,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,IAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAChE;aAAM;YACL,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE;gBAClB,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,IAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC9C;YACD,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,IAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC9C;IACH,CAAC;IAED;;;;OAIG;IACI,kBAAkB,CAAC,CAAY;QACpC,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YACzD,OAAO,KAAK,CAAC;SACd;QACD,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,OAAO,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC/D;aAAM;YACL,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE;gBAClB,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC7C;YACD,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;SAChE;IACH,CAAC;IAED;;;OAGG;IACI,QAAQ,CAAC,EAAS;QACvB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,mCAAmC;QACnC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAE,CAAC,IAAI,CAAC,EAAE;YACnB,CAAC,GAAG,CAAC,OAAE,CAAC,IAAI,CAAC,CAAC;SACf;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;YACxB,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;SACzC;QAED,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YAClB,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SAChC;aAAM;YACL,4CAA4C;YAC5C,MAAM,GAAG,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACpD,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE;gBACf,OAAO,IAAI,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;aACnC;iBAAM;gBACL,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aACnC;YACD,qEAAqE;SACtE;IACH,CAAC;IAED;;;;OAIG;IACK,QAAQ,CAAC,MAAa;QAC5B,wBAAwB;QACxB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YAClB,OAAO,IAAI,CAAC;SACb;QAED,qEAAqE;QACrE,2DAA2D;QAC3D,IAAI,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,IAAG,CAAC,CAAC,GAAC,OAAE,CAAC,IAAI,GAAC,KAAK,CAAC,EAAE;YACvD,OAAO,UAAU,CAAC,IAAI,EAAE,CAAC;SAC1B;QAED,qEAAqE;QACrE,IAAI,EAAE,GAAG,mBAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,OAAE,CAAC,IAAI,CAAC,CAAC;QACjE,MAAM,EAAE,GAAG,mBAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,OAAE,CAAC,IAAI,CAAC,CAAC;QAEnE,IAAI,EAAE,IAAI,CAAC,CAAC,OAAE,CAAC,IAAI,CAAC,EAAE;YACpB,EAAE,GAAG,CAAC,OAAE,CAAC,IAAI,CAAC,CAAC;SAChB;QACD,OAAO,IAAI,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,CAAY;QACxB,qEAAqE;QACrE,uEAAuE;QACvE,0EAA0E;QAE1E,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YACf,OAAO,IAAI,CAAC;SACb;QACD,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;YAC3B,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;gBAC3B,2DAA2D;gBAC3D,oCAAoC;gBACpC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;oBACrB,OAAO,IAAI,CAAC,CAAC,sBAAsB;iBACpC;gBACD,OAAO,UAAU,CAAC,IAAI,EAAE,CAAC;aAC1B;YACD,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;SAC/C;QACD,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;YAC3B,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;SAC5C;QAED,yEAAyE;QACzE,oEAAoE;QACpE,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAC7C,OAAO,CAAC,CAAC;SACV;QAED,qDAAqD;QACrD,MAAM,GAAG,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACvD,IAAI,GAAG,GAAG,GAAG,EAAE;YACb,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;SAC5C;aAAM;YACL,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;SAC5C;IACH,CAAC;IAED;;;;OAIG;IACI,YAAY,CAAC,CAAY;QAC9B,qEAAqE;QACrE,uEAAuE;QACvE,0EAA0E;QAE1E,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YACf,OAAO,UAAU,CAAC,KAAK,EAAE,CAAC;SAC3B;QACD,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;YAC3B,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;gBAC3B,iEAAiE;gBACjE,iEAAiE;gBACjE,uDAAuD;gBACvD,IAAI,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;oBACtC,OAAO,CAAC,CAAC,CAAC,sBAAsB;iBACjC;gBACD,OAAO,IAAI,CAAC;aACb;YACD,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;SAC5C;QACD,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;YAC3B,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;SAC5C;QAED,yEAAyE;QACzE,oEAAoE;QAEpE,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAC3B,OAAO,IAAI,CAAC,CAAC,uBAAuB;SACrC;QACD,2BAA2B;QAC3B,OAAO,UAAU,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACI,YAAY,CAAC,CAAY,EAAE,QAAQ,GAAC,IAAI;QAC7C,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YAClB,OAAO,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SACpC;QACD,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YACf,OAAO,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SACvC;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,mBAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAE,CAAC,IAAI,CAAC,CAAC;cAC3D,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAE,CAAC,IAAI,CAAC,CAAC,CAAC;eAChE,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAID,MAAM,CAAC,KAAK;QACV,OAAO,IAAI,UAAU,CAAC,OAAE,CAAC,IAAI,EAAE,CAAC,OAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,CAAC,IAAI;QACT,OAAO,IAAI,UAAU,CAAC,CAAC,OAAE,CAAC,IAAI,EAAE,OAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,EAAS;QACxB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,CAAC,OAAE,CAAC,IAAI,CAAC,EAAE;YACnB,CAAC,GAAG,CAAC,OAAE,CAAC,IAAI,CAAC,CAAC;SACf;QACD,OAAO,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IAGD;;;;OAIG;IACH,MAAM,CAAC,aAAa,CAAC,GAAU,EAAE,GAAU;QACzC,+DAA+D;QAC/D,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,EAAE,IAAI,CAAC,CAAC,OAAE,CAAC,IAAI,CAAC,EAAE;YACpB,EAAE,GAAG,CAAC,OAAE,CAAC,IAAI,CAAC,CAAC;SAChB;QACD,IAAI,EAAE,IAAI,CAAC,CAAC,OAAE,CAAC,IAAI,CAAC,EAAE;YACpB,EAAE,GAAG,CAAC,OAAE,CAAC,IAAI,CAAC,CAAC;SAChB;QACD,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,OAAE,CAAC,IAAI,CAAC,EAAE;YACpD,OAAO,IAAI,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;SACrC;aAAM;YACL,OAAO,IAAI,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;SACrC;IACH,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,gBAAgB,CAAC,EAAS,EAAE,EAAS;QACjD,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACf,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACf,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YACZ,OAAO,CAAC,CAAC;SACV;QACD,0DAA0D;QAC1D,wDAAwD;QACxD,OAAO,CAAC,GAAG,CAAC,OAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,CAAC;CAEF;AA1aD,gCA0aC"}
package/dist/S2.d.ts DELETED
@@ -1,96 +0,0 @@
1
- import { S2Point } from "./S2Point";
2
- import { S2Metric } from "./S2Metric";
3
- export declare class S2 {
4
- static M_PI: number;
5
- static M_1_PI: number;
6
- static M_PI_2: number;
7
- static M_PI_4: number;
8
- static M_SQRT2: number;
9
- static M_E: number;
10
- static SWAP_MASK: number;
11
- static INVERT_MASK: number;
12
- private static EXPONENT_SHIFT;
13
- private static EXPONENT_MASK;
14
- /** Mapping from cell orientation + Hilbert traversal to IJ-index. */
15
- static POS_TO_ORIENTATION: number[];
16
- static DBL_EPSILON: number;
17
- static POS_TO_IJ: number[][];
18
- static MAX_LEVEL: number;
19
- static IEEEremainder(f1: number, f2: number): number;
20
- /**
21
- * Return true if the given point is approximately unit length (this is mainly
22
- * useful for assertions).
23
- */
24
- static isUnitLength(p: S2Point): boolean;
25
- /**
26
- * If v is non-zero, return an integer {@code exp} such that
27
- * {@code (0.5 <= |v|*2^(-exp) < 1)}. If v is zero, return 0.
28
- *
29
- * <p>Note that this arguably a bad definition of exponent because it makes
30
- * {@code exp(9) == 4}. In decimal this would be like saying that the
31
- * exponent of 1234 is 4, when in scientific 'exponent' notation 1234 is
32
- * {@code 1.234 x 10^3}.
33
- *
34
- * TODO(dbeaumont): Replace this with "DoubleUtils.getExponent(v) - 1" ?
35
- */
36
- static exp(v: number): number;
37
- /**
38
- * Return a vector "c" that is orthogonal to the given unit-length vectors "a"
39
- * and "b". This function is similar to a.CrossProd(b) except that it does a
40
- * better job of ensuring orthogonality when "a" is nearly parallel to "b",
41
- * and it returns a non-zero result even when a == b or a == -b.
42
- *
43
- * It satisfies the following properties (RCP == RobustCrossProd):
44
- *
45
- * (1) RCP(a,b) != 0 for all a, b (2) RCP(b,a) == -RCP(a,b) unless a == b or
46
- * a == -b (3) RCP(-a,b) == -RCP(a,b) unless a == b or a == -b (4) RCP(a,-b)
47
- * == -RCP(a,b) unless a == b or a == -b
48
- */
49
- static robustCrossProd(a: S2Point, b: S2Point): S2Point;
50
- /**
51
- * Return the area of triangle ABC. The method used is about twice as
52
- * expensive as Girard's formula, but it is numerically stable for both large
53
- * and very small triangles. The points do not need to be normalized. The area
54
- * is always positive.
55
- *
56
- * The triangle area is undefined if it contains two antipodal points, and
57
- * becomes numerically unstable as the length of any edge approaches 180
58
- * degrees.
59
- */
60
- static area(a: S2Point, b: S2Point, c: S2Point): number;
61
- /**
62
- * Return the area of the triangle computed using Girard's formula. This is
63
- * slightly faster than the Area() method above is not accurate for very small
64
- * triangles.
65
- */
66
- static girardArea(a: S2Point, b: S2Point, c: S2Point): number;
67
- /**
68
- * Return true if the points A, B, C are strictly counterclockwise. Return
69
- * false if the points are clockwise or colinear (i.e. if they are all
70
- * contained on some great circle).
71
- *
72
- * Due to numerical errors, situations may arise that are mathematically
73
- * impossible, e.g. ABC may be considered strictly CCW while BCA is not.
74
- * However, the implementation guarantees the following:
75
- *
76
- * If SimpleCCW(a,b,c), then !SimpleCCW(c,b,a) for all a,b,c.
77
- *
78
- * In other words, ABC and CBA are guaranteed not to be both CCW
79
- */
80
- static simpleCCW(a: S2Point, b: S2Point, c: S2Point): boolean;
81
- /**
82
- *
83
- * Return true if edge AB crosses CD at a point that is interior to both
84
- * edges. Properties:
85
- *
86
- * (1) SimpleCrossing(b,a,c,d) == SimpleCrossing(a,b,c,d) (2)
87
- * SimpleCrossing(c,d,a,b) == SimpleCrossing(a,b,c,d)
88
- */
89
- static simpleCrossing(a: S2Point, b: S2Point, c: S2Point, d: S2Point): boolean;
90
- static approxEqualsPointError(a: S2Point, b: S2Point, maxError: number): boolean;
91
- static approxEqualsPoint(a: S2Point, b: S2Point): boolean;
92
- static approxEqualsNumberError(a: number, b: number, maxError: number): boolean;
93
- static approxEqualsNumber(a: number, b: number): boolean;
94
- static Metric: typeof S2Metric;
95
- }
96
- export { S2Metric };