nodes2ts 2.0.0 → 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 (70) 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 +21 -5
  7. package/dist/Interval.js +9 -8
  8. package/dist/Interval.js.map +1 -1
  9. package/dist/MutableInteger.js +5 -4
  10. package/dist/MutableInteger.js.map +1 -1
  11. package/dist/Platform.d.ts +15 -0
  12. package/dist/Platform.js +53 -0
  13. package/dist/Platform.js.map +1 -0
  14. package/dist/R1Interval.js +39 -48
  15. package/dist/R1Interval.js.map +1 -1
  16. package/dist/R2Vector.d.ts +3 -3
  17. package/dist/R2Vector.js +50 -57
  18. package/dist/R2Vector.js.map +1 -1
  19. package/dist/S1Angle.d.ts +34 -0
  20. package/dist/S1Angle.js +81 -26
  21. package/dist/S1Angle.js.map +1 -1
  22. package/dist/S1ChordAngle.d.ts +166 -0
  23. package/dist/S1ChordAngle.js +318 -0
  24. package/dist/S1ChordAngle.js.map +1 -0
  25. package/dist/S1Interval.js +78 -83
  26. package/dist/S1Interval.js.map +1 -1
  27. package/dist/S2.d.ts +5 -0
  28. package/dist/S2.js +80 -85
  29. package/dist/S2.js.map +1 -1
  30. package/dist/S2Cap.d.ts +31 -22
  31. package/dist/S2Cap.js +194 -187
  32. package/dist/S2Cap.js.map +1 -1
  33. package/dist/S2Cell.d.ts +14 -11
  34. package/dist/S2Cell.js +194 -197
  35. package/dist/S2Cell.js.map +1 -1
  36. package/dist/S2CellId.d.ts +37 -14
  37. package/dist/S2CellId.js +406 -356
  38. package/dist/S2CellId.js.map +1 -1
  39. package/dist/S2CellUnion.d.ts +1 -2
  40. package/dist/S2CellUnion.js +131 -126
  41. package/dist/S2CellUnion.js.map +1 -1
  42. package/dist/S2EdgeUtil.js +12 -14
  43. package/dist/S2EdgeUtil.js.map +1 -1
  44. package/dist/S2LatLng.d.ts +7 -2
  45. package/dist/S2LatLng.js +85 -81
  46. package/dist/S2LatLng.js.map +1 -1
  47. package/dist/S2LatLngRect.d.ts +7 -2
  48. package/dist/S2LatLngRect.js +203 -184
  49. package/dist/S2LatLngRect.js.map +1 -1
  50. package/dist/S2Metric.d.ts +1 -1
  51. package/dist/S2Metric.js +28 -24
  52. package/dist/S2Metric.js.map +1 -1
  53. package/dist/S2Point.d.ts +35 -0
  54. package/dist/S2Point.js +116 -66
  55. package/dist/S2Point.js.map +1 -1
  56. package/dist/S2Projections.d.ts +40 -5
  57. package/dist/S2Projections.js +226 -47
  58. package/dist/S2Projections.js.map +1 -1
  59. package/dist/S2Region.js +2 -1
  60. package/dist/S2Region.js.map +1 -1
  61. package/dist/S2RegionCoverer.d.ts +21 -6
  62. package/dist/S2RegionCoverer.js +144 -108
  63. package/dist/S2RegionCoverer.js.map +1 -1
  64. package/dist/export.js +42 -32
  65. package/dist/export.js.map +1 -1
  66. package/dist/utils/preconditions.d.ts +2 -0
  67. package/dist/utils/preconditions.js +16 -0
  68. package/dist/utils/preconditions.js.map +1 -0
  69. package/package.json +27 -21
  70. package/yarn.lock +0 -4381
@@ -0,0 +1,318 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright 2014 Google Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.S1ChordAngle = void 0;
19
+ /**
20
+ * S1ChordAngle represents the angle subtended by a chord (i.e., the straight 3D Cartesian line
21
+ * segment connecting two points on the unit sphere). Its representation makes it very efficient for
22
+ * computing and comparing distances, but unlike S1Angle it is only capable of representing angles
23
+ * between 0 and Pi radians. Generally, S1ChordAngle should only be used in loops where many angles
24
+ * need to be calculated and compared. Otherwise it is simpler to use S1Angle.
25
+ *
26
+ * <p>S1ChordAngle also loses some accuracy as the angle approaches Pi radians. Specifically, the
27
+ * representation of (Pi - x) radians can be expected to have an error of about (1e-15 / x), with a
28
+ * maximum error of about 1e-7.
29
+ */
30
+ const S1Angle_1 = require("./S1Angle");
31
+ const S2_1 = require("./S2");
32
+ const preconditions_1 = require("./utils/preconditions");
33
+ class S1ChordAngle {
34
+ /**
35
+ * S1ChordAngles are represented by the squared chord length, which can range from 0 to {@code
36
+ * MAX_LENGTH2}. {@link #INFINITY} uses an infinite squared length.
37
+ */
38
+ constructor(length2) {
39
+ this.length2 = length2;
40
+ (0, preconditions_1.checkArgument)(this.isValid());
41
+ }
42
+ /**
43
+ * Constructs the S1ChordAngle corresponding to the distance between the two given points. The
44
+ * points must be unit length.
45
+ */
46
+ static fromS2Point(x, y) {
47
+ (0, preconditions_1.checkArgument)(S2_1.S2.isUnitLength(x));
48
+ (0, preconditions_1.checkArgument)(S2_1.S2.isUnitLength(y));
49
+ // The distance may slightly exceed 4.0 due to roundoff errors.
50
+ const length2 = Math.min(S1ChordAngle.MAX_LENGTH2, x.getDistance2(y));
51
+ return new S1ChordAngle(length2);
52
+ }
53
+ /**
54
+ * Returns a new chord angle approximated from {@code angle} (see {@link
55
+ * #getS1AngleConstructorMaxError()} for the max magnitude of the error).
56
+ *
57
+ * <p>Angles outside the range [0, Pi] are handled as follows:
58
+ *
59
+ * <ul>
60
+ * <li>{@link S1Angle#INFINITY} is mapped to {@link #INFINITY}
61
+ * <li>negative angles are mapped to {@link #NEGATIVE}
62
+ * <li>finite angles larger than Pi are mapped to {@link #STRAIGHT}
63
+ * </ul>
64
+ *
65
+ * <p>Note that this operation is relatively expensive and should be avoided. To use {@link
66
+ * S1ChordAngle} effectively, you should structure your code so that input arguments are converted
67
+ * to S1ChordAngles at the beginning of your algorithm, and results are converted back to {@link
68
+ * S1Angle}s only at the end.
69
+ */
70
+ static fromS1Angle(angle) {
71
+ if (angle.radians < 0) {
72
+ return S1ChordAngle.NEGATIVE;
73
+ }
74
+ else if (angle.equals(S1Angle_1.S1Angle.INFINITY)) {
75
+ return S1ChordAngle.INFINITY;
76
+ }
77
+ else {
78
+ // The chord length is 2 * sin(angle / 2).
79
+ const length = 2 * Math.sin(0.5 * Math.min(Math.PI, angle.radians));
80
+ return new S1ChordAngle(length * length);
81
+ }
82
+ }
83
+ /**
84
+ * Construct an S1ChordAngle from the squared chord length. Note that the argument is
85
+ * automatically clamped to a maximum of {@code MAX_LENGTH2} to handle possible roundoff errors.
86
+ * The argument must be non-negative.
87
+ */
88
+ static fromLength2(length2) {
89
+ return new S1ChordAngle(Math.min(S1ChordAngle.MAX_LENGTH2, length2));
90
+ }
91
+ /** Returns whether the chord distance is exactly 0. */
92
+ isZero() {
93
+ return this.length2 == 0;
94
+ }
95
+ /** Returns whether the chord distance is negative. */
96
+ isNegative() {
97
+ return this.length2 < 0;
98
+ }
99
+ /** Returns whether the chord distance is exactly (positive) infinity. */
100
+ isInfinity() {
101
+ return this.length2 == Number.POSITIVE_INFINITY;
102
+ }
103
+ /** Returns true if the angle is negative or infinity. */
104
+ isSpecial() {
105
+ return this.isNegative() || this.isInfinity();
106
+ }
107
+ /**
108
+ * Returns true if getLength2() is within the normal range of 0 to 4 (inclusive) or the angle is
109
+ * special.
110
+ */
111
+ isValid() {
112
+ return (this.length2 >= 0 && this.length2 <= S1ChordAngle.MAX_LENGTH2) || this.isNegative() || this.isInfinity();
113
+ }
114
+ /**
115
+ * Convert the chord angle to an {@link S1Angle}. {@link #INFINITY} is converted to {@link
116
+ * S1Angle#INFINITY}, and {@link #NEGATIVE} is converted to a negative {@link S1Angle}. This
117
+ * operation is relatively expensive.
118
+ */
119
+ toAngle() {
120
+ if (this.isNegative()) {
121
+ return S1Angle_1.S1Angle.radians(-1);
122
+ }
123
+ else if (this.isInfinity()) {
124
+ return S1Angle_1.S1Angle.INFINITY;
125
+ }
126
+ else {
127
+ return S1Angle_1.S1Angle.radians(2 * Math.asin(0.5 * Math.sqrt(this.length2)));
128
+ }
129
+ }
130
+ /** The squared length of the chord. (Most clients will not need this.) */
131
+ getLength2() {
132
+ return this.length2;
133
+ }
134
+ /**
135
+ * Returns the smallest representable S1ChordAngle larger than this object. This can be used to
136
+ * convert a "<" comparison to a "<=" comparison.
137
+ *
138
+ * <p>Note the following special cases:
139
+ *
140
+ * <ul>
141
+ * <li>NEGATIVE.successor() == ZERO
142
+ * <li>STRAIGHT.successor() == INFINITY
143
+ * <li>INFINITY.Successor() == INFINITY
144
+ * </ul>
145
+ */
146
+ // public successor(): S1ChordAngle {
147
+ // if (this.length2 >= S1ChordAngle.MAX_LENGTH2) {
148
+ // return S1ChordAngle.INFINITY;
149
+ // }
150
+ // if (this.length2 < 0.0) {
151
+ // return S1ChordAngle.ZERO;
152
+ // }
153
+ // return new S1ChordAngle(Platform.nextAfter(this.length2, 10.0));
154
+ // }
155
+ /**
156
+ * As {@link #successor}, but returns the largest representable S1ChordAngle less than this
157
+ * object.
158
+ *
159
+ * <p>Note the following special cases:
160
+ *
161
+ * <ul>
162
+ * <li>INFINITY.predecessor() == STRAIGHT
163
+ * <li>ZERO.predecessor() == NEGATIVE
164
+ * <li>NEGATIVE.predecessor() == NEGATIVE
165
+ * </ul>
166
+ */
167
+ // public predecessor(): S1ChordAngle {
168
+ // if (this.length2 <= 0.0) {
169
+ // return S1ChordAngle.NEGATIVE;
170
+ // }
171
+ // if (this.length2 > S1ChordAngle.MAX_LENGTH2) {
172
+ // return S1ChordAngle.STRAIGHT;
173
+ // }
174
+ // return new S1ChordAngle(Platform.nextAfter(this.length2, -10.0));
175
+ // }
176
+ /**
177
+ * Returns a new S1ChordAngle whose chord distance represents the sum of the angular distances
178
+ * represented by the 'a' and 'b' chord angles.
179
+ *
180
+ * <p>Note that this method is much more efficient than converting the chord angles to S1Angles
181
+ * and adding those. It requires only one square root plus a few additions and multiplications.
182
+ */
183
+ static add(a, b) {
184
+ (0, preconditions_1.checkArgument)(!a.isSpecial());
185
+ (0, preconditions_1.checkArgument)(!b.isSpecial());
186
+ // Optimization for the common case where "b" is an error tolerance parameter that happens to be
187
+ // set to zero.
188
+ const a2 = a.length2;
189
+ const b2 = b.length2;
190
+ if (b2 == 0) {
191
+ return a;
192
+ }
193
+ // Clamp the angle sum to at most 180 degrees.
194
+ if (a2 + b2 >= S1ChordAngle.MAX_LENGTH2) {
195
+ return S1ChordAngle.STRAIGHT;
196
+ }
197
+ // Let "a" and "b" be the (non-squared) chord lengths, and let c = a+b.
198
+ // Let A, B, and C be the corresponding half-angles (a = 2*sin(A), etc).
199
+ // Then the formula below can be derived from c = 2 * sin(A+B) and the relationships
200
+ // sin(A+B) = sin(A)*cos(B) + sin(B)*cos(A)
201
+ // cos(X) = sqrt(1 - sin^2(X)) .
202
+ const x = a2 * (1 - 0.25 * b2); // isValid() => non-negative
203
+ const y = b2 * (1 - 0.25 * a2); // isValid() => non-negative
204
+ return new S1ChordAngle(Math.min(S1ChordAngle.MAX_LENGTH2, x + y + 2 * Math.sqrt(x * y)));
205
+ }
206
+ /**
207
+ * Subtract one S1ChordAngle from another.
208
+ *
209
+ * <p>Note that this method is much more efficient than converting the chord angles to S1Angles
210
+ * and adding those. It requires only one square root plus a few additions and multiplications.
211
+ */
212
+ static sub(a, b) {
213
+ // See comments in add(S1ChordAngle, S1ChordAngle).
214
+ (0, preconditions_1.checkArgument)(!a.isSpecial());
215
+ (0, preconditions_1.checkArgument)(!b.isSpecial());
216
+ const a2 = a.length2;
217
+ const b2 = b.length2;
218
+ if (b2 == 0) {
219
+ return a;
220
+ }
221
+ if (a2 <= b2) {
222
+ return S1ChordAngle.ZERO;
223
+ }
224
+ const x = a2 * (1 - 0.25 * b2);
225
+ const y = b2 * (1 - 0.25 * a2);
226
+ return new S1ChordAngle(Math.max(0.0, x + y - 2 * Math.sqrt(x * y)));
227
+ }
228
+ /** Returns the smaller of the given instances. */
229
+ static min(a, b) {
230
+ return a.length2 <= b.length2 ? a : b;
231
+ }
232
+ /** Returns the larger of the given instances. */
233
+ static max(a, b) {
234
+ return a.length2 > b.length2 ? a : b;
235
+ }
236
+ /** Returns the square of Math.sin(toAngle().radians()), but computed more efficiently. */
237
+ static sin2(a) {
238
+ (0, preconditions_1.checkArgument)(!a.isSpecial());
239
+ // Let "a" be the (non-squared) chord length, and let A be the corresponding half-angle
240
+ // (a = 2*sin(A)). The formula below can be derived from:
241
+ // sin(2*A) = 2 * sin(A) * cos(A)
242
+ // cos^2(A) = 1 - sin^2(A)
243
+ // This is much faster than converting to an angle and computing its sine.
244
+ return a.length2 * (1 - 0.25 * a.length2);
245
+ }
246
+ /** Returns Math.sin(toAngle().radians()), but computed more efficiently. */
247
+ static sin(a) {
248
+ return Math.sqrt(this.sin2(a));
249
+ }
250
+ /** Returns Math.cos(toAngle().radians()), but computed more efficiently. */
251
+ static cos(a) {
252
+ // cos(2*A) = cos^2(A) - sin^2(A) = 1 - 2*sin^2(A)
253
+ (0, preconditions_1.checkArgument)(!a.isSpecial());
254
+ return 1 - 0.5 * a.length2;
255
+ }
256
+ /** Returns Math.tan(toAngle().radians()), but computed more efficiently. */
257
+ static tan(a) {
258
+ return this.sin(a) / this.cos(a);
259
+ }
260
+ /**
261
+ * Returns a new S1ChordAngle that has been adjusted by the given error bound (which can be
262
+ * positive or negative). {@code error} should be the value returned by one of the error bound
263
+ * methods below. For example:
264
+ *
265
+ * <pre>
266
+ * {@code S1ChordAngle a = new S1ChordAngle(x, y);}
267
+ * {@code S1ChordAngle a1 = a.plusError(a.getS2PointConstructorMaxError());}
268
+ * </pre>
269
+ *
270
+ * <p>If this {@link #isSpecial}, we return {@code this}.
271
+ */
272
+ plusError(error) {
273
+ return this.isSpecial() ? this : S1ChordAngle.fromLength2(Math.max(0.0, Math.min(S1ChordAngle.MAX_LENGTH2, this.length2 + error)));
274
+ }
275
+ /** Returns the error in {@link #fromS1Angle}. */
276
+ getS1AngleConstructorMaxError() {
277
+ return S2_1.S2.DBL_EPSILON * this.length2;
278
+ }
279
+ /**
280
+ * There is a relative error of {@code 2.5 * DBL_EPSILON} when computing the squared distance,
281
+ * plus a relative error of {@code 2 * DBL_EPSILON} and an absolute error of {@code 16 *
282
+ * DBL_EPSILON^2} because the lengths of the input points may differ from 1 by up to {@code 2 *
283
+ * DBL_EPSILON} each. (This is the maximum length error in {@link S2Point#normalize}).
284
+ */
285
+ getS2PointConstructorMaxError() {
286
+ return (4.5 * S2_1.S2.DBL_EPSILON * this.length2) + (16 * S2_1.S2.DBL_EPSILON * S2_1.S2.DBL_EPSILON);
287
+ }
288
+ /** Returns the string of the closest {@link S1Angle} to this chord distance. */
289
+ toString() {
290
+ return this.toAngle().toString();
291
+ }
292
+ compareTo(that) {
293
+ return this.length2 - that.length2;
294
+ }
295
+ equals(that) {
296
+ return this.compareTo(that) === 0;
297
+ }
298
+ }
299
+ exports.S1ChordAngle = S1ChordAngle;
300
+ /** Max value that can be returned from {@link #getLength2()}. */
301
+ S1ChordAngle.MAX_LENGTH2 = 4.0;
302
+ /** The zero chord angle. */
303
+ S1ChordAngle.ZERO = new S1ChordAngle(0);
304
+ /** The chord angle of 90 degrees (a "right angle"). */
305
+ S1ChordAngle.RIGHT = new S1ChordAngle(2);
306
+ /** The chord angle of 180 degrees (a "straight angle"). This is the max finite chord angle. */
307
+ S1ChordAngle.STRAIGHT = new S1ChordAngle(S1ChordAngle.MAX_LENGTH2);
308
+ /**
309
+ * A chord angle larger than any finite chord angle. The only valid operations on {@code INFINITY}
310
+ * are comparisons and {@link S1Angle} conversions.
311
+ */
312
+ S1ChordAngle.INFINITY = new S1ChordAngle(Number.POSITIVE_INFINITY);
313
+ /**
314
+ * A chord angle smaller than {@link #ZERO}. The only valid operations on {@code NEGATIVE} are
315
+ * comparisons and {@link S1Angle} conversions.
316
+ */
317
+ S1ChordAngle.NEGATIVE = new S1ChordAngle(-1);
318
+ //# sourceMappingURL=S1ChordAngle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"S1ChordAngle.js","sourceRoot":"","sources":["../src/S1ChordAngle.ts"],"names":[],"mappings":"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"}