@mui/x-charts-vendor 9.0.0 → 9.4.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 (65) hide show
  1. package/d3-geo.d.ts +4 -0
  2. package/d3-geo.js +5 -0
  3. package/d3-geo.mjs +5 -0
  4. package/lib-vendor/d3-geo/LICENSE +34 -0
  5. package/lib-vendor/d3-geo/dist/d3-geo.js +2873 -0
  6. package/lib-vendor/d3-geo/dist/d3-geo.min.js +1957 -0
  7. package/lib-vendor/d3-geo/src/area.js +77 -0
  8. package/lib-vendor/d3-geo/src/bounds.js +169 -0
  9. package/lib-vendor/d3-geo/src/cartesian.js +42 -0
  10. package/lib-vendor/d3-geo/src/centroid.js +134 -0
  11. package/lib-vendor/d3-geo/src/circle.js +77 -0
  12. package/lib-vendor/d3-geo/src/clip/antimeridian.js +89 -0
  13. package/lib-vendor/d3-geo/src/clip/buffer.js +30 -0
  14. package/lib-vendor/d3-geo/src/clip/circle.js +173 -0
  15. package/lib-vendor/d3-geo/src/clip/extent.js +25 -0
  16. package/lib-vendor/d3-geo/src/clip/index.js +124 -0
  17. package/lib-vendor/d3-geo/src/clip/line.js +60 -0
  18. package/lib-vendor/d3-geo/src/clip/rectangle.js +159 -0
  19. package/lib-vendor/d3-geo/src/clip/rejoin.js +103 -0
  20. package/lib-vendor/d3-geo/src/compose.js +15 -0
  21. package/lib-vendor/d3-geo/src/constant.js +11 -0
  22. package/lib-vendor/d3-geo/src/contains.js +95 -0
  23. package/lib-vendor/d3-geo/src/distance.js +18 -0
  24. package/lib-vendor/d3-geo/src/graticule.js +118 -0
  25. package/lib-vendor/d3-geo/src/identity.js +8 -0
  26. package/lib-vendor/d3-geo/src/index.js +335 -0
  27. package/lib-vendor/d3-geo/src/interpolate.js +35 -0
  28. package/lib-vendor/d3-geo/src/length.js +50 -0
  29. package/lib-vendor/d3-geo/src/math.js +44 -0
  30. package/lib-vendor/d3-geo/src/noop.js +7 -0
  31. package/lib-vendor/d3-geo/src/path/area.js +50 -0
  32. package/lib-vendor/d3-geo/src/path/bounds.js +31 -0
  33. package/lib-vendor/d3-geo/src/path/centroid.js +89 -0
  34. package/lib-vendor/d3-geo/src/path/context.js +53 -0
  35. package/lib-vendor/d3-geo/src/path/index.js +71 -0
  36. package/lib-vendor/d3-geo/src/path/measure.js +47 -0
  37. package/lib-vendor/d3-geo/src/path/string.js +93 -0
  38. package/lib-vendor/d3-geo/src/pointEqual.js +10 -0
  39. package/lib-vendor/d3-geo/src/polygonContains.js +72 -0
  40. package/lib-vendor/d3-geo/src/projection/albers.js +11 -0
  41. package/lib-vendor/d3-geo/src/projection/albersUsa.js +118 -0
  42. package/lib-vendor/d3-geo/src/projection/azimuthal.js +26 -0
  43. package/lib-vendor/d3-geo/src/projection/azimuthalEqualArea.js +20 -0
  44. package/lib-vendor/d3-geo/src/projection/azimuthalEquidistant.js +20 -0
  45. package/lib-vendor/d3-geo/src/projection/conic.js +18 -0
  46. package/lib-vendor/d3-geo/src/projection/conicConformal.js +39 -0
  47. package/lib-vendor/d3-geo/src/projection/conicEqualArea.js +33 -0
  48. package/lib-vendor/d3-geo/src/projection/conicEquidistant.js +31 -0
  49. package/lib-vendor/d3-geo/src/projection/cylindricalEqualArea.js +17 -0
  50. package/lib-vendor/d3-geo/src/projection/equalEarth.js +37 -0
  51. package/lib-vendor/d3-geo/src/projection/equirectangular.js +16 -0
  52. package/lib-vendor/d3-geo/src/projection/fit.js +52 -0
  53. package/lib-vendor/d3-geo/src/projection/gnomonic.js +20 -0
  54. package/lib-vendor/d3-geo/src/projection/identity.js +103 -0
  55. package/lib-vendor/d3-geo/src/projection/index.js +181 -0
  56. package/lib-vendor/d3-geo/src/projection/mercator.js +51 -0
  57. package/lib-vendor/d3-geo/src/projection/naturalEarth1.js +29 -0
  58. package/lib-vendor/d3-geo/src/projection/orthographic.js +18 -0
  59. package/lib-vendor/d3-geo/src/projection/resample.js +106 -0
  60. package/lib-vendor/d3-geo/src/projection/stereographic.js +22 -0
  61. package/lib-vendor/d3-geo/src/projection/transverseMercator.js +27 -0
  62. package/lib-vendor/d3-geo/src/rotation.js +65 -0
  63. package/lib-vendor/d3-geo/src/stream.js +83 -0
  64. package/lib-vendor/d3-geo/src/transform.js +42 -0
  65. package/package.json +18 -2
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.areaStream = exports.areaRingSum = void 0;
8
+ exports.default = _default;
9
+ var _index = require("../../d3-array/src/index.js");
10
+ var _math = require("./math.js");
11
+ var _noop = _interopRequireDefault(require("./noop.js"));
12
+ var _stream = _interopRequireDefault(require("./stream.js"));
13
+ var areaRingSum = exports.areaRingSum = new _index.Adder();
14
+
15
+ // hello?
16
+
17
+ var areaSum = new _index.Adder(),
18
+ lambda00,
19
+ phi00,
20
+ lambda0,
21
+ cosPhi0,
22
+ sinPhi0;
23
+ var areaStream = exports.areaStream = {
24
+ point: _noop.default,
25
+ lineStart: _noop.default,
26
+ lineEnd: _noop.default,
27
+ polygonStart: function () {
28
+ exports.areaRingSum = areaRingSum = new _index.Adder();
29
+ areaStream.lineStart = areaRingStart;
30
+ areaStream.lineEnd = areaRingEnd;
31
+ },
32
+ polygonEnd: function () {
33
+ var areaRing = +areaRingSum;
34
+ areaSum.add(areaRing < 0 ? _math.tau + areaRing : areaRing);
35
+ this.lineStart = this.lineEnd = this.point = _noop.default;
36
+ },
37
+ sphere: function () {
38
+ areaSum.add(_math.tau);
39
+ }
40
+ };
41
+ function areaRingStart() {
42
+ areaStream.point = areaPointFirst;
43
+ }
44
+ function areaRingEnd() {
45
+ areaPoint(lambda00, phi00);
46
+ }
47
+ function areaPointFirst(lambda, phi) {
48
+ areaStream.point = areaPoint;
49
+ lambda00 = lambda, phi00 = phi;
50
+ lambda *= _math.radians, phi *= _math.radians;
51
+ lambda0 = lambda, cosPhi0 = (0, _math.cos)(phi = phi / 2 + _math.quarterPi), sinPhi0 = (0, _math.sin)(phi);
52
+ }
53
+ function areaPoint(lambda, phi) {
54
+ lambda *= _math.radians, phi *= _math.radians;
55
+ phi = phi / 2 + _math.quarterPi; // half the angular distance from south pole
56
+
57
+ // Spherical excess E for a spherical triangle with vertices: south pole,
58
+ // previous point, current point. Uses a formula derived from Cagnoli’s
59
+ // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).
60
+ var dLambda = lambda - lambda0,
61
+ sdLambda = dLambda >= 0 ? 1 : -1,
62
+ adLambda = sdLambda * dLambda,
63
+ cosPhi = (0, _math.cos)(phi),
64
+ sinPhi = (0, _math.sin)(phi),
65
+ k = sinPhi0 * sinPhi,
66
+ u = cosPhi0 * cosPhi + k * (0, _math.cos)(adLambda),
67
+ v = k * sdLambda * (0, _math.sin)(adLambda);
68
+ areaRingSum.add((0, _math.atan2)(v, u));
69
+
70
+ // Advance the previous points.
71
+ lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;
72
+ }
73
+ function _default(object) {
74
+ areaSum = new _index.Adder();
75
+ (0, _stream.default)(object, areaStream);
76
+ return areaSum * 2;
77
+ }
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = _default;
8
+ var _index = require("../../d3-array/src/index.js");
9
+ var _area = require("./area.js");
10
+ var _cartesian = require("./cartesian.js");
11
+ var _math = require("./math.js");
12
+ var _stream = _interopRequireDefault(require("./stream.js"));
13
+ var lambda0, phi0, lambda1, phi1,
14
+ // bounds
15
+ lambda2,
16
+ // previous lambda-coordinate
17
+ lambda00, phi00,
18
+ // first point
19
+ p0,
20
+ // previous 3D point
21
+ deltaSum, ranges, range;
22
+ var boundsStream = {
23
+ point: boundsPoint,
24
+ lineStart: boundsLineStart,
25
+ lineEnd: boundsLineEnd,
26
+ polygonStart: function () {
27
+ boundsStream.point = boundsRingPoint;
28
+ boundsStream.lineStart = boundsRingStart;
29
+ boundsStream.lineEnd = boundsRingEnd;
30
+ deltaSum = new _index.Adder();
31
+ _area.areaStream.polygonStart();
32
+ },
33
+ polygonEnd: function () {
34
+ _area.areaStream.polygonEnd();
35
+ boundsStream.point = boundsPoint;
36
+ boundsStream.lineStart = boundsLineStart;
37
+ boundsStream.lineEnd = boundsLineEnd;
38
+ if (_area.areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);else if (deltaSum > _math.epsilon) phi1 = 90;else if (deltaSum < -_math.epsilon) phi0 = -90;
39
+ range[0] = lambda0, range[1] = lambda1;
40
+ },
41
+ sphere: function () {
42
+ lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);
43
+ }
44
+ };
45
+ function boundsPoint(lambda, phi) {
46
+ ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);
47
+ if (phi < phi0) phi0 = phi;
48
+ if (phi > phi1) phi1 = phi;
49
+ }
50
+ function linePoint(lambda, phi) {
51
+ var p = (0, _cartesian.cartesian)([lambda * _math.radians, phi * _math.radians]);
52
+ if (p0) {
53
+ var normal = (0, _cartesian.cartesianCross)(p0, p),
54
+ equatorial = [normal[1], -normal[0], 0],
55
+ inflection = (0, _cartesian.cartesianCross)(equatorial, normal);
56
+ (0, _cartesian.cartesianNormalizeInPlace)(inflection);
57
+ inflection = (0, _cartesian.spherical)(inflection);
58
+ var delta = lambda - lambda2,
59
+ sign = delta > 0 ? 1 : -1,
60
+ lambdai = inflection[0] * _math.degrees * sign,
61
+ phii,
62
+ antimeridian = (0, _math.abs)(delta) > 180;
63
+ if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {
64
+ phii = inflection[1] * _math.degrees;
65
+ if (phii > phi1) phi1 = phii;
66
+ } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {
67
+ phii = -inflection[1] * _math.degrees;
68
+ if (phii < phi0) phi0 = phii;
69
+ } else {
70
+ if (phi < phi0) phi0 = phi;
71
+ if (phi > phi1) phi1 = phi;
72
+ }
73
+ if (antimeridian) {
74
+ if (lambda < lambda2) {
75
+ if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;
76
+ } else {
77
+ if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;
78
+ }
79
+ } else {
80
+ if (lambda1 >= lambda0) {
81
+ if (lambda < lambda0) lambda0 = lambda;
82
+ if (lambda > lambda1) lambda1 = lambda;
83
+ } else {
84
+ if (lambda > lambda2) {
85
+ if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;
86
+ } else {
87
+ if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;
88
+ }
89
+ }
90
+ }
91
+ } else {
92
+ ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);
93
+ }
94
+ if (phi < phi0) phi0 = phi;
95
+ if (phi > phi1) phi1 = phi;
96
+ p0 = p, lambda2 = lambda;
97
+ }
98
+ function boundsLineStart() {
99
+ boundsStream.point = linePoint;
100
+ }
101
+ function boundsLineEnd() {
102
+ range[0] = lambda0, range[1] = lambda1;
103
+ boundsStream.point = boundsPoint;
104
+ p0 = null;
105
+ }
106
+ function boundsRingPoint(lambda, phi) {
107
+ if (p0) {
108
+ var delta = lambda - lambda2;
109
+ deltaSum.add((0, _math.abs)(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);
110
+ } else {
111
+ lambda00 = lambda, phi00 = phi;
112
+ }
113
+ _area.areaStream.point(lambda, phi);
114
+ linePoint(lambda, phi);
115
+ }
116
+ function boundsRingStart() {
117
+ _area.areaStream.lineStart();
118
+ }
119
+ function boundsRingEnd() {
120
+ boundsRingPoint(lambda00, phi00);
121
+ _area.areaStream.lineEnd();
122
+ if ((0, _math.abs)(deltaSum) > _math.epsilon) lambda0 = -(lambda1 = 180);
123
+ range[0] = lambda0, range[1] = lambda1;
124
+ p0 = null;
125
+ }
126
+
127
+ // Finds the left-right distance between two longitudes.
128
+ // This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want
129
+ // the distance between ±180° to be 360°.
130
+ function angle(lambda0, lambda1) {
131
+ return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;
132
+ }
133
+ function rangeCompare(a, b) {
134
+ return a[0] - b[0];
135
+ }
136
+ function rangeContains(range, x) {
137
+ return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;
138
+ }
139
+ function _default(feature) {
140
+ var i, n, a, b, merged, deltaMax, delta;
141
+ phi1 = lambda1 = -(lambda0 = phi0 = Infinity);
142
+ ranges = [];
143
+ (0, _stream.default)(feature, boundsStream);
144
+
145
+ // First, sort ranges by their minimum longitudes.
146
+ if (n = ranges.length) {
147
+ ranges.sort(rangeCompare);
148
+
149
+ // Then, merge any ranges that overlap.
150
+ for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {
151
+ b = ranges[i];
152
+ if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {
153
+ if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];
154
+ if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];
155
+ } else {
156
+ merged.push(a = b);
157
+ }
158
+ }
159
+
160
+ // Finally, find the largest gap between the merged ranges.
161
+ // The final bounding box will be the inverse of this gap.
162
+ for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {
163
+ b = merged[i];
164
+ if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];
165
+ }
166
+ }
167
+ ranges = range = null;
168
+ return lambda0 === Infinity || phi0 === Infinity ? [[NaN, NaN], [NaN, NaN]] : [[lambda0, phi0], [lambda1, phi1]];
169
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.cartesian = cartesian;
7
+ exports.cartesianAddInPlace = cartesianAddInPlace;
8
+ exports.cartesianCross = cartesianCross;
9
+ exports.cartesianDot = cartesianDot;
10
+ exports.cartesianNormalizeInPlace = cartesianNormalizeInPlace;
11
+ exports.cartesianScale = cartesianScale;
12
+ exports.spherical = spherical;
13
+ var _math = require("./math.js");
14
+ function spherical(cartesian) {
15
+ return [(0, _math.atan2)(cartesian[1], cartesian[0]), (0, _math.asin)(cartesian[2])];
16
+ }
17
+ function cartesian(spherical) {
18
+ var lambda = spherical[0],
19
+ phi = spherical[1],
20
+ cosPhi = (0, _math.cos)(phi);
21
+ return [cosPhi * (0, _math.cos)(lambda), cosPhi * (0, _math.sin)(lambda), (0, _math.sin)(phi)];
22
+ }
23
+ function cartesianDot(a, b) {
24
+ return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
25
+ }
26
+ function cartesianCross(a, b) {
27
+ return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];
28
+ }
29
+
30
+ // TODO return a
31
+ function cartesianAddInPlace(a, b) {
32
+ a[0] += b[0], a[1] += b[1], a[2] += b[2];
33
+ }
34
+ function cartesianScale(vector, k) {
35
+ return [vector[0] * k, vector[1] * k, vector[2] * k];
36
+ }
37
+
38
+ // TODO return d
39
+ function cartesianNormalizeInPlace(d) {
40
+ var l = (0, _math.sqrt)(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);
41
+ d[0] /= l, d[1] /= l, d[2] /= l;
42
+ }
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = _default;
8
+ var _index = require("../../d3-array/src/index.js");
9
+ var _math = require("./math.js");
10
+ var _noop = _interopRequireDefault(require("./noop.js"));
11
+ var _stream = _interopRequireDefault(require("./stream.js"));
12
+ var W0, W1, X0, Y0, Z0, X1, Y1, Z1, X2, Y2, Z2, lambda00, phi00,
13
+ // first point
14
+ x0, y0, z0; // previous point
15
+
16
+ var centroidStream = {
17
+ sphere: _noop.default,
18
+ point: centroidPoint,
19
+ lineStart: centroidLineStart,
20
+ lineEnd: centroidLineEnd,
21
+ polygonStart: function () {
22
+ centroidStream.lineStart = centroidRingStart;
23
+ centroidStream.lineEnd = centroidRingEnd;
24
+ },
25
+ polygonEnd: function () {
26
+ centroidStream.lineStart = centroidLineStart;
27
+ centroidStream.lineEnd = centroidLineEnd;
28
+ }
29
+ };
30
+
31
+ // Arithmetic mean of Cartesian vectors.
32
+ function centroidPoint(lambda, phi) {
33
+ lambda *= _math.radians, phi *= _math.radians;
34
+ var cosPhi = (0, _math.cos)(phi);
35
+ centroidPointCartesian(cosPhi * (0, _math.cos)(lambda), cosPhi * (0, _math.sin)(lambda), (0, _math.sin)(phi));
36
+ }
37
+ function centroidPointCartesian(x, y, z) {
38
+ ++W0;
39
+ X0 += (x - X0) / W0;
40
+ Y0 += (y - Y0) / W0;
41
+ Z0 += (z - Z0) / W0;
42
+ }
43
+ function centroidLineStart() {
44
+ centroidStream.point = centroidLinePointFirst;
45
+ }
46
+ function centroidLinePointFirst(lambda, phi) {
47
+ lambda *= _math.radians, phi *= _math.radians;
48
+ var cosPhi = (0, _math.cos)(phi);
49
+ x0 = cosPhi * (0, _math.cos)(lambda);
50
+ y0 = cosPhi * (0, _math.sin)(lambda);
51
+ z0 = (0, _math.sin)(phi);
52
+ centroidStream.point = centroidLinePoint;
53
+ centroidPointCartesian(x0, y0, z0);
54
+ }
55
+ function centroidLinePoint(lambda, phi) {
56
+ lambda *= _math.radians, phi *= _math.radians;
57
+ var cosPhi = (0, _math.cos)(phi),
58
+ x = cosPhi * (0, _math.cos)(lambda),
59
+ y = cosPhi * (0, _math.sin)(lambda),
60
+ z = (0, _math.sin)(phi),
61
+ w = (0, _math.atan2)((0, _math.sqrt)((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);
62
+ W1 += w;
63
+ X1 += w * (x0 + (x0 = x));
64
+ Y1 += w * (y0 + (y0 = y));
65
+ Z1 += w * (z0 + (z0 = z));
66
+ centroidPointCartesian(x0, y0, z0);
67
+ }
68
+ function centroidLineEnd() {
69
+ centroidStream.point = centroidPoint;
70
+ }
71
+
72
+ // See J. E. Brock, The Inertia Tensor for a Spherical Triangle,
73
+ // J. Applied Mechanics 42, 239 (1975).
74
+ function centroidRingStart() {
75
+ centroidStream.point = centroidRingPointFirst;
76
+ }
77
+ function centroidRingEnd() {
78
+ centroidRingPoint(lambda00, phi00);
79
+ centroidStream.point = centroidPoint;
80
+ }
81
+ function centroidRingPointFirst(lambda, phi) {
82
+ lambda00 = lambda, phi00 = phi;
83
+ lambda *= _math.radians, phi *= _math.radians;
84
+ centroidStream.point = centroidRingPoint;
85
+ var cosPhi = (0, _math.cos)(phi);
86
+ x0 = cosPhi * (0, _math.cos)(lambda);
87
+ y0 = cosPhi * (0, _math.sin)(lambda);
88
+ z0 = (0, _math.sin)(phi);
89
+ centroidPointCartesian(x0, y0, z0);
90
+ }
91
+ function centroidRingPoint(lambda, phi) {
92
+ lambda *= _math.radians, phi *= _math.radians;
93
+ var cosPhi = (0, _math.cos)(phi),
94
+ x = cosPhi * (0, _math.cos)(lambda),
95
+ y = cosPhi * (0, _math.sin)(lambda),
96
+ z = (0, _math.sin)(phi),
97
+ cx = y0 * z - z0 * y,
98
+ cy = z0 * x - x0 * z,
99
+ cz = x0 * y - y0 * x,
100
+ m = (0, _math.hypot)(cx, cy, cz),
101
+ w = (0, _math.asin)(m),
102
+ // line weight = angle
103
+ v = m && -w / m; // area weight multiplier
104
+ X2.add(v * cx);
105
+ Y2.add(v * cy);
106
+ Z2.add(v * cz);
107
+ W1 += w;
108
+ X1 += w * (x0 + (x0 = x));
109
+ Y1 += w * (y0 + (y0 = y));
110
+ Z1 += w * (z0 + (z0 = z));
111
+ centroidPointCartesian(x0, y0, z0);
112
+ }
113
+ function _default(object) {
114
+ W0 = W1 = X0 = Y0 = Z0 = X1 = Y1 = Z1 = 0;
115
+ X2 = new _index.Adder();
116
+ Y2 = new _index.Adder();
117
+ Z2 = new _index.Adder();
118
+ (0, _stream.default)(object, centroidStream);
119
+ var x = +X2,
120
+ y = +Y2,
121
+ z = +Z2,
122
+ m = (0, _math.hypot)(x, y, z);
123
+
124
+ // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.
125
+ if (m < _math.epsilon2) {
126
+ x = X1, y = Y1, z = Z1;
127
+ // If the feature has zero length, fall back to arithmetic mean of point vectors.
128
+ if (W1 < _math.epsilon) x = X0, y = Y0, z = Z0;
129
+ m = (0, _math.hypot)(x, y, z);
130
+ // If the feature still has an undefined ccentroid, then return.
131
+ if (m < _math.epsilon2) return [NaN, NaN];
132
+ }
133
+ return [(0, _math.atan2)(y, x) * _math.degrees, (0, _math.asin)(z / m) * _math.degrees];
134
+ }
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.circleStream = circleStream;
8
+ exports.default = _default;
9
+ var _cartesian = require("./cartesian.js");
10
+ var _constant = _interopRequireDefault(require("./constant.js"));
11
+ var _math = require("./math.js");
12
+ var _rotation = require("./rotation.js");
13
+ // Generates a circle centered at [0°, 0°], with a given radius and precision.
14
+ function circleStream(stream, radius, delta, direction, t0, t1) {
15
+ if (!delta) return;
16
+ var cosRadius = (0, _math.cos)(radius),
17
+ sinRadius = (0, _math.sin)(radius),
18
+ step = direction * delta;
19
+ if (t0 == null) {
20
+ t0 = radius + direction * _math.tau;
21
+ t1 = radius - step / 2;
22
+ } else {
23
+ t0 = circleRadius(cosRadius, t0);
24
+ t1 = circleRadius(cosRadius, t1);
25
+ if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * _math.tau;
26
+ }
27
+ for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {
28
+ point = (0, _cartesian.spherical)([cosRadius, -sinRadius * (0, _math.cos)(t), -sinRadius * (0, _math.sin)(t)]);
29
+ stream.point(point[0], point[1]);
30
+ }
31
+ }
32
+
33
+ // Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].
34
+ function circleRadius(cosRadius, point) {
35
+ point = (0, _cartesian.cartesian)(point), point[0] -= cosRadius;
36
+ (0, _cartesian.cartesianNormalizeInPlace)(point);
37
+ var radius = (0, _math.acos)(-point[1]);
38
+ return ((-point[2] < 0 ? -radius : radius) + _math.tau - _math.epsilon) % _math.tau;
39
+ }
40
+ function _default() {
41
+ var center = (0, _constant.default)([0, 0]),
42
+ radius = (0, _constant.default)(90),
43
+ precision = (0, _constant.default)(2),
44
+ ring,
45
+ rotate,
46
+ stream = {
47
+ point: point
48
+ };
49
+ function point(x, y) {
50
+ ring.push(x = rotate(x, y));
51
+ x[0] *= _math.degrees, x[1] *= _math.degrees;
52
+ }
53
+ function circle() {
54
+ var c = center.apply(this, arguments),
55
+ r = radius.apply(this, arguments) * _math.radians,
56
+ p = precision.apply(this, arguments) * _math.radians;
57
+ ring = [];
58
+ rotate = (0, _rotation.rotateRadians)(-c[0] * _math.radians, -c[1] * _math.radians, 0).invert;
59
+ circleStream(stream, r, p, 1);
60
+ c = {
61
+ type: "Polygon",
62
+ coordinates: [ring]
63
+ };
64
+ ring = rotate = null;
65
+ return c;
66
+ }
67
+ circle.center = function (_) {
68
+ return arguments.length ? (center = typeof _ === "function" ? _ : (0, _constant.default)([+_[0], +_[1]]), circle) : center;
69
+ };
70
+ circle.radius = function (_) {
71
+ return arguments.length ? (radius = typeof _ === "function" ? _ : (0, _constant.default)(+_), circle) : radius;
72
+ };
73
+ circle.precision = function (_) {
74
+ return arguments.length ? (precision = typeof _ === "function" ? _ : (0, _constant.default)(+_), circle) : precision;
75
+ };
76
+ return circle;
77
+ }
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _index = _interopRequireDefault(require("./index.js"));
9
+ var _math = require("../math.js");
10
+ var _default = exports.default = (0, _index.default)(function () {
11
+ return true;
12
+ }, clipAntimeridianLine, clipAntimeridianInterpolate, [-_math.pi, -_math.halfPi]); // Takes a line and cuts into visible segments. Return values: 0 - there were
13
+ // intersections or the line was empty; 1 - no intersections; 2 - there were
14
+ // intersections, and the first and last segments should be rejoined.
15
+ function clipAntimeridianLine(stream) {
16
+ var lambda0 = NaN,
17
+ phi0 = NaN,
18
+ sign0 = NaN,
19
+ clean; // no intersections
20
+
21
+ return {
22
+ lineStart: function () {
23
+ stream.lineStart();
24
+ clean = 1;
25
+ },
26
+ point: function (lambda1, phi1) {
27
+ var sign1 = lambda1 > 0 ? _math.pi : -_math.pi,
28
+ delta = (0, _math.abs)(lambda1 - lambda0);
29
+ if ((0, _math.abs)(delta - _math.pi) < _math.epsilon) {
30
+ // line crosses a pole
31
+ stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? _math.halfPi : -_math.halfPi);
32
+ stream.point(sign0, phi0);
33
+ stream.lineEnd();
34
+ stream.lineStart();
35
+ stream.point(sign1, phi0);
36
+ stream.point(lambda1, phi0);
37
+ clean = 0;
38
+ } else if (sign0 !== sign1 && delta >= _math.pi) {
39
+ // line crosses antimeridian
40
+ if ((0, _math.abs)(lambda0 - sign0) < _math.epsilon) lambda0 -= sign0 * _math.epsilon; // handle degeneracies
41
+ if ((0, _math.abs)(lambda1 - sign1) < _math.epsilon) lambda1 -= sign1 * _math.epsilon;
42
+ phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);
43
+ stream.point(sign0, phi0);
44
+ stream.lineEnd();
45
+ stream.lineStart();
46
+ stream.point(sign1, phi0);
47
+ clean = 0;
48
+ }
49
+ stream.point(lambda0 = lambda1, phi0 = phi1);
50
+ sign0 = sign1;
51
+ },
52
+ lineEnd: function () {
53
+ stream.lineEnd();
54
+ lambda0 = phi0 = NaN;
55
+ },
56
+ clean: function () {
57
+ return 2 - clean; // if intersections, rejoin first and last segments
58
+ }
59
+ };
60
+ }
61
+ function clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {
62
+ var cosPhi0,
63
+ cosPhi1,
64
+ sinLambda0Lambda1 = (0, _math.sin)(lambda0 - lambda1);
65
+ return (0, _math.abs)(sinLambda0Lambda1) > _math.epsilon ? (0, _math.atan)(((0, _math.sin)(phi0) * (cosPhi1 = (0, _math.cos)(phi1)) * (0, _math.sin)(lambda1) - (0, _math.sin)(phi1) * (cosPhi0 = (0, _math.cos)(phi0)) * (0, _math.sin)(lambda0)) / (cosPhi0 * cosPhi1 * sinLambda0Lambda1)) : (phi0 + phi1) / 2;
66
+ }
67
+ function clipAntimeridianInterpolate(from, to, direction, stream) {
68
+ var phi;
69
+ if (from == null) {
70
+ phi = direction * _math.halfPi;
71
+ stream.point(-_math.pi, phi);
72
+ stream.point(0, phi);
73
+ stream.point(_math.pi, phi);
74
+ stream.point(_math.pi, 0);
75
+ stream.point(_math.pi, -phi);
76
+ stream.point(0, -phi);
77
+ stream.point(-_math.pi, -phi);
78
+ stream.point(-_math.pi, 0);
79
+ stream.point(-_math.pi, phi);
80
+ } else if ((0, _math.abs)(from[0] - to[0]) > _math.epsilon) {
81
+ var lambda = from[0] < to[0] ? _math.pi : -_math.pi;
82
+ phi = direction * lambda / 2;
83
+ stream.point(-lambda, phi);
84
+ stream.point(0, phi);
85
+ stream.point(lambda, phi);
86
+ } else {
87
+ stream.point(to[0], to[1]);
88
+ }
89
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = _default;
8
+ var _noop = _interopRequireDefault(require("../noop.js"));
9
+ function _default() {
10
+ var lines = [],
11
+ line;
12
+ return {
13
+ point: function (x, y, m) {
14
+ line.push([x, y, m]);
15
+ },
16
+ lineStart: function () {
17
+ lines.push(line = []);
18
+ },
19
+ lineEnd: _noop.default,
20
+ rejoin: function () {
21
+ if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));
22
+ },
23
+ result: function () {
24
+ var result = lines;
25
+ lines = [];
26
+ line = null;
27
+ return result;
28
+ }
29
+ };
30
+ }