@deck.gl/carto 8.7.0-alpha.10 → 8.7.0-alpha.11

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.
package/dist/dist.dev.js CHANGED
@@ -10469,1421 +10469,6 @@ function deprecated(method, version) {
10469
10469
 
10470
10470
  /***/ }),
10471
10471
 
10472
- /***/ "../../node_modules/@math.gl/culling/dist/esm/constants.js":
10473
- /*!**************************************************************************************!*\
10474
- !*** /Users/alasarr/dev/deck.gl/node_modules/@math.gl/culling/dist/esm/constants.js ***!
10475
- \**************************************************************************************/
10476
- /*! exports provided: INTERSECTION */
10477
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
10478
-
10479
- "use strict";
10480
- __webpack_require__.r(__webpack_exports__);
10481
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "INTERSECTION", function() { return INTERSECTION; });
10482
- const INTERSECTION = Object.freeze({
10483
- OUTSIDE: -1,
10484
- INTERSECTING: 0,
10485
- INSIDE: 1
10486
- });
10487
- //# sourceMappingURL=constants.js.map
10488
-
10489
- /***/ }),
10490
-
10491
- /***/ "../../node_modules/@math.gl/culling/dist/esm/index.js":
10492
- /*!**********************************************************************************!*\
10493
- !*** /Users/alasarr/dev/deck.gl/node_modules/@math.gl/culling/dist/esm/index.js ***!
10494
- \**********************************************************************************/
10495
- /*! exports provided: INTERSECTION, AxisAlignedBoundingBox, BoundingSphere, OrientedBoundingBox, CullingVolume, Plane, _PerspectiveOffCenterFrustum, _PerspectiveFrustum, makeBoundingSphereFromPoints, makeAxisAlignedBoundingBoxFromPoints, makeOrientedBoundingBoxFromPoints, computeEigenDecomposition, Intersect, INTERSECT */
10496
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
10497
-
10498
- "use strict";
10499
- __webpack_require__.r(__webpack_exports__);
10500
- /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants */ "../../node_modules/@math.gl/culling/dist/esm/constants.js");
10501
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "INTERSECTION", function() { return _constants__WEBPACK_IMPORTED_MODULE_0__["INTERSECTION"]; });
10502
-
10503
- /* harmony import */ var _lib_bounding_volumes_axis_aligned_bounding_box__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib/bounding-volumes/axis-aligned-bounding-box */ "../../node_modules/@math.gl/culling/dist/esm/lib/bounding-volumes/axis-aligned-bounding-box.js");
10504
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AxisAlignedBoundingBox", function() { return _lib_bounding_volumes_axis_aligned_bounding_box__WEBPACK_IMPORTED_MODULE_1__["default"]; });
10505
-
10506
- /* harmony import */ var _lib_bounding_volumes_bounding_sphere__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lib/bounding-volumes/bounding-sphere */ "../../node_modules/@math.gl/culling/dist/esm/lib/bounding-volumes/bounding-sphere.js");
10507
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BoundingSphere", function() { return _lib_bounding_volumes_bounding_sphere__WEBPACK_IMPORTED_MODULE_2__["default"]; });
10508
-
10509
- /* harmony import */ var _lib_bounding_volumes_oriented_bounding_box__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./lib/bounding-volumes/oriented-bounding-box */ "../../node_modules/@math.gl/culling/dist/esm/lib/bounding-volumes/oriented-bounding-box.js");
10510
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "OrientedBoundingBox", function() { return _lib_bounding_volumes_oriented_bounding_box__WEBPACK_IMPORTED_MODULE_3__["default"]; });
10511
-
10512
- /* harmony import */ var _lib_culling_volume__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./lib/culling-volume */ "../../node_modules/@math.gl/culling/dist/esm/lib/culling-volume.js");
10513
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CullingVolume", function() { return _lib_culling_volume__WEBPACK_IMPORTED_MODULE_4__["default"]; });
10514
-
10515
- /* harmony import */ var _lib_plane__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lib/plane */ "../../node_modules/@math.gl/culling/dist/esm/lib/plane.js");
10516
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Plane", function() { return _lib_plane__WEBPACK_IMPORTED_MODULE_5__["default"]; });
10517
-
10518
- /* harmony import */ var _lib_perspective_off_center_frustum__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./lib/perspective-off-center-frustum */ "../../node_modules/@math.gl/culling/dist/esm/lib/perspective-off-center-frustum.js");
10519
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "_PerspectiveOffCenterFrustum", function() { return _lib_perspective_off_center_frustum__WEBPACK_IMPORTED_MODULE_6__["default"]; });
10520
-
10521
- /* harmony import */ var _lib_perspective_frustum__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./lib/perspective-frustum */ "../../node_modules/@math.gl/culling/dist/esm/lib/perspective-frustum.js");
10522
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "_PerspectiveFrustum", function() { return _lib_perspective_frustum__WEBPACK_IMPORTED_MODULE_7__["default"]; });
10523
-
10524
- /* harmony import */ var _lib_algorithms_bounding_sphere_from_points__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./lib/algorithms/bounding-sphere-from-points */ "../../node_modules/@math.gl/culling/dist/esm/lib/algorithms/bounding-sphere-from-points.js");
10525
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "makeBoundingSphereFromPoints", function() { return _lib_algorithms_bounding_sphere_from_points__WEBPACK_IMPORTED_MODULE_8__["default"]; });
10526
-
10527
- /* harmony import */ var _lib_algorithms_bounding_box_from_points__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./lib/algorithms/bounding-box-from-points */ "../../node_modules/@math.gl/culling/dist/esm/lib/algorithms/bounding-box-from-points.js");
10528
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "makeAxisAlignedBoundingBoxFromPoints", function() { return _lib_algorithms_bounding_box_from_points__WEBPACK_IMPORTED_MODULE_9__["makeAxisAlignedBoundingBoxFromPoints"]; });
10529
-
10530
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "makeOrientedBoundingBoxFromPoints", function() { return _lib_algorithms_bounding_box_from_points__WEBPACK_IMPORTED_MODULE_9__["makeOrientedBoundingBoxFromPoints"]; });
10531
-
10532
- /* harmony import */ var _lib_algorithms_compute_eigen_decomposition__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./lib/algorithms/compute-eigen-decomposition */ "../../node_modules/@math.gl/culling/dist/esm/lib/algorithms/compute-eigen-decomposition.js");
10533
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "computeEigenDecomposition", function() { return _lib_algorithms_compute_eigen_decomposition__WEBPACK_IMPORTED_MODULE_10__["default"]; });
10534
-
10535
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Intersect", function() { return _constants__WEBPACK_IMPORTED_MODULE_0__["INTERSECTION"]; });
10536
-
10537
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "INTERSECT", function() { return _constants__WEBPACK_IMPORTED_MODULE_0__["INTERSECTION"]; });
10538
-
10539
-
10540
-
10541
-
10542
-
10543
-
10544
-
10545
-
10546
-
10547
-
10548
-
10549
-
10550
-
10551
-
10552
- //# sourceMappingURL=index.js.map
10553
-
10554
- /***/ }),
10555
-
10556
- /***/ "../../node_modules/@math.gl/culling/dist/esm/lib/algorithms/bounding-box-from-points.js":
10557
- /*!********************************************************************************************************************!*\
10558
- !*** /Users/alasarr/dev/deck.gl/node_modules/@math.gl/culling/dist/esm/lib/algorithms/bounding-box-from-points.js ***!
10559
- \********************************************************************************************************************/
10560
- /*! exports provided: makeOrientedBoundingBoxFromPoints, makeAxisAlignedBoundingBoxFromPoints */
10561
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
10562
-
10563
- "use strict";
10564
- __webpack_require__.r(__webpack_exports__);
10565
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "makeOrientedBoundingBoxFromPoints", function() { return makeOrientedBoundingBoxFromPoints; });
10566
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "makeAxisAlignedBoundingBoxFromPoints", function() { return makeAxisAlignedBoundingBoxFromPoints; });
10567
- /* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @math.gl/core */ "../../node_modules/@math.gl/core/dist/esm/index.js");
10568
- /* harmony import */ var _compute_eigen_decomposition__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./compute-eigen-decomposition */ "../../node_modules/@math.gl/culling/dist/esm/lib/algorithms/compute-eigen-decomposition.js");
10569
- /* harmony import */ var _bounding_volumes_oriented_bounding_box__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../bounding-volumes/oriented-bounding-box */ "../../node_modules/@math.gl/culling/dist/esm/lib/bounding-volumes/oriented-bounding-box.js");
10570
- /* harmony import */ var _bounding_volumes_axis_aligned_bounding_box__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../bounding-volumes/axis-aligned-bounding-box */ "../../node_modules/@math.gl/culling/dist/esm/lib/bounding-volumes/axis-aligned-bounding-box.js");
10571
-
10572
-
10573
-
10574
-
10575
- const scratchVector2 = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
10576
- const scratchVector3 = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
10577
- const scratchVector4 = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
10578
- const scratchVector5 = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
10579
- const scratchVector6 = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
10580
- const scratchCovarianceResult = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Matrix3"]();
10581
- const scratchEigenResult = {
10582
- diagonal: new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Matrix3"](),
10583
- unitary: new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Matrix3"]()
10584
- };
10585
- function makeOrientedBoundingBoxFromPoints(positions, result = new _bounding_volumes_oriented_bounding_box__WEBPACK_IMPORTED_MODULE_2__["default"]()) {
10586
- if (!positions || positions.length === 0) {
10587
- result.halfAxes = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Matrix3"]([0, 0, 0, 0, 0, 0, 0, 0, 0]);
10588
- result.center = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
10589
- return result;
10590
- }
10591
-
10592
- const length = positions.length;
10593
- const meanPoint = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"](0, 0, 0);
10594
-
10595
- for (const position of positions) {
10596
- meanPoint.add(position);
10597
- }
10598
-
10599
- const invLength = 1.0 / length;
10600
- meanPoint.multiplyByScalar(invLength);
10601
- let exx = 0.0;
10602
- let exy = 0.0;
10603
- let exz = 0.0;
10604
- let eyy = 0.0;
10605
- let eyz = 0.0;
10606
- let ezz = 0.0;
10607
-
10608
- for (const position of positions) {
10609
- const p = scratchVector2.copy(position).subtract(meanPoint);
10610
- exx += p.x * p.x;
10611
- exy += p.x * p.y;
10612
- exz += p.x * p.z;
10613
- eyy += p.y * p.y;
10614
- eyz += p.y * p.z;
10615
- ezz += p.z * p.z;
10616
- }
10617
-
10618
- exx *= invLength;
10619
- exy *= invLength;
10620
- exz *= invLength;
10621
- eyy *= invLength;
10622
- eyz *= invLength;
10623
- ezz *= invLength;
10624
- const covarianceMatrix = scratchCovarianceResult;
10625
- covarianceMatrix[0] = exx;
10626
- covarianceMatrix[1] = exy;
10627
- covarianceMatrix[2] = exz;
10628
- covarianceMatrix[3] = exy;
10629
- covarianceMatrix[4] = eyy;
10630
- covarianceMatrix[5] = eyz;
10631
- covarianceMatrix[6] = exz;
10632
- covarianceMatrix[7] = eyz;
10633
- covarianceMatrix[8] = ezz;
10634
- const {
10635
- unitary
10636
- } = Object(_compute_eigen_decomposition__WEBPACK_IMPORTED_MODULE_1__["default"])(covarianceMatrix, scratchEigenResult);
10637
- const rotation = result.halfAxes.copy(unitary);
10638
- let v1 = rotation.getColumn(0, scratchVector4);
10639
- let v2 = rotation.getColumn(1, scratchVector5);
10640
- let v3 = rotation.getColumn(2, scratchVector6);
10641
- let u1 = -Number.MAX_VALUE;
10642
- let u2 = -Number.MAX_VALUE;
10643
- let u3 = -Number.MAX_VALUE;
10644
- let l1 = Number.MAX_VALUE;
10645
- let l2 = Number.MAX_VALUE;
10646
- let l3 = Number.MAX_VALUE;
10647
-
10648
- for (const position of positions) {
10649
- scratchVector2.copy(position);
10650
- u1 = Math.max(scratchVector2.dot(v1), u1);
10651
- u2 = Math.max(scratchVector2.dot(v2), u2);
10652
- u3 = Math.max(scratchVector2.dot(v3), u3);
10653
- l1 = Math.min(scratchVector2.dot(v1), l1);
10654
- l2 = Math.min(scratchVector2.dot(v2), l2);
10655
- l3 = Math.min(scratchVector2.dot(v3), l3);
10656
- }
10657
-
10658
- v1 = v1.multiplyByScalar(0.5 * (l1 + u1));
10659
- v2 = v2.multiplyByScalar(0.5 * (l2 + u2));
10660
- v3 = v3.multiplyByScalar(0.5 * (l3 + u3));
10661
- result.center.copy(v1).add(v2).add(v3);
10662
- const scale = scratchVector3.set(u1 - l1, u2 - l2, u3 - l3).multiplyByScalar(0.5);
10663
- const scaleMatrix = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Matrix3"]([scale[0], 0, 0, 0, scale[1], 0, 0, 0, scale[2]]);
10664
- result.halfAxes.multiplyRight(scaleMatrix);
10665
- return result;
10666
- }
10667
- function makeAxisAlignedBoundingBoxFromPoints(positions, result = new _bounding_volumes_axis_aligned_bounding_box__WEBPACK_IMPORTED_MODULE_3__["default"]()) {
10668
- if (!positions || positions.length === 0) {
10669
- result.minimum.set(0, 0, 0);
10670
- result.maximum.set(0, 0, 0);
10671
- result.center.set(0, 0, 0);
10672
- result.halfDiagonal.set(0, 0, 0);
10673
- return result;
10674
- }
10675
-
10676
- let minimumX = positions[0][0];
10677
- let minimumY = positions[0][1];
10678
- let minimumZ = positions[0][2];
10679
- let maximumX = positions[0][0];
10680
- let maximumY = positions[0][1];
10681
- let maximumZ = positions[0][2];
10682
-
10683
- for (const p of positions) {
10684
- const x = p[0];
10685
- const y = p[1];
10686
- const z = p[2];
10687
- minimumX = Math.min(x, minimumX);
10688
- maximumX = Math.max(x, maximumX);
10689
- minimumY = Math.min(y, minimumY);
10690
- maximumY = Math.max(y, maximumY);
10691
- minimumZ = Math.min(z, minimumZ);
10692
- maximumZ = Math.max(z, maximumZ);
10693
- }
10694
-
10695
- result.minimum.set(minimumX, minimumY, minimumZ);
10696
- result.maximum.set(maximumX, maximumY, maximumZ);
10697
- result.center.copy(result.minimum).add(result.maximum).scale(0.5);
10698
- result.halfDiagonal.copy(result.maximum).subtract(result.center);
10699
- return result;
10700
- }
10701
- //# sourceMappingURL=bounding-box-from-points.js.map
10702
-
10703
- /***/ }),
10704
-
10705
- /***/ "../../node_modules/@math.gl/culling/dist/esm/lib/algorithms/bounding-sphere-from-points.js":
10706
- /*!***********************************************************************************************************************!*\
10707
- !*** /Users/alasarr/dev/deck.gl/node_modules/@math.gl/culling/dist/esm/lib/algorithms/bounding-sphere-from-points.js ***!
10708
- \***********************************************************************************************************************/
10709
- /*! exports provided: default */
10710
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
10711
-
10712
- "use strict";
10713
- __webpack_require__.r(__webpack_exports__);
10714
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return makeBoundingSphereFromPoints; });
10715
- /* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @math.gl/core */ "../../node_modules/@math.gl/core/dist/esm/index.js");
10716
- /* harmony import */ var _bounding_volumes_bounding_sphere__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../bounding-volumes/bounding-sphere */ "../../node_modules/@math.gl/culling/dist/esm/lib/bounding-volumes/bounding-sphere.js");
10717
-
10718
-
10719
- const fromPointsXMin = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
10720
- const fromPointsYMin = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
10721
- const fromPointsZMin = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
10722
- const fromPointsXMax = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
10723
- const fromPointsYMax = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
10724
- const fromPointsZMax = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
10725
- const fromPointsCurrentPos = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
10726
- const fromPointsScratch = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
10727
- const fromPointsRitterCenter = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
10728
- const fromPointsMinBoxPt = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
10729
- const fromPointsMaxBoxPt = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
10730
- const fromPointsNaiveCenterScratch = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
10731
- const volumeConstant = 4.0 / 3.0 * Math.PI;
10732
- function makeBoundingSphereFromPoints(positions, result = new _bounding_volumes_bounding_sphere__WEBPACK_IMPORTED_MODULE_1__["default"]()) {
10733
- if (!positions || positions.length === 0) {
10734
- return result.fromCenterRadius([0, 0, 0], 0);
10735
- }
10736
-
10737
- const currentPos = fromPointsCurrentPos.copy(positions[0]);
10738
- const xMin = fromPointsXMin.copy(currentPos);
10739
- const yMin = fromPointsYMin.copy(currentPos);
10740
- const zMin = fromPointsZMin.copy(currentPos);
10741
- const xMax = fromPointsXMax.copy(currentPos);
10742
- const yMax = fromPointsYMax.copy(currentPos);
10743
- const zMax = fromPointsZMax.copy(currentPos);
10744
-
10745
- for (const position of positions) {
10746
- currentPos.copy(position);
10747
- const x = currentPos.x;
10748
- const y = currentPos.y;
10749
- const z = currentPos.z;
10750
-
10751
- if (x < xMin.x) {
10752
- xMin.copy(currentPos);
10753
- }
10754
-
10755
- if (x > xMax.x) {
10756
- xMax.copy(currentPos);
10757
- }
10758
-
10759
- if (y < yMin.y) {
10760
- yMin.copy(currentPos);
10761
- }
10762
-
10763
- if (y > yMax.y) {
10764
- yMax.copy(currentPos);
10765
- }
10766
-
10767
- if (z < zMin.z) {
10768
- zMin.copy(currentPos);
10769
- }
10770
-
10771
- if (z > zMax.z) {
10772
- zMax.copy(currentPos);
10773
- }
10774
- }
10775
-
10776
- const xSpan = fromPointsScratch.copy(xMax).subtract(xMin).magnitudeSquared();
10777
- const ySpan = fromPointsScratch.copy(yMax).subtract(yMin).magnitudeSquared();
10778
- const zSpan = fromPointsScratch.copy(zMax).subtract(zMin).magnitudeSquared();
10779
- let diameter1 = xMin;
10780
- let diameter2 = xMax;
10781
- let maxSpan = xSpan;
10782
-
10783
- if (ySpan > maxSpan) {
10784
- maxSpan = ySpan;
10785
- diameter1 = yMin;
10786
- diameter2 = yMax;
10787
- }
10788
-
10789
- if (zSpan > maxSpan) {
10790
- maxSpan = zSpan;
10791
- diameter1 = zMin;
10792
- diameter2 = zMax;
10793
- }
10794
-
10795
- const ritterCenter = fromPointsRitterCenter;
10796
- ritterCenter.x = (diameter1.x + diameter2.x) * 0.5;
10797
- ritterCenter.y = (diameter1.y + diameter2.y) * 0.5;
10798
- ritterCenter.z = (diameter1.z + diameter2.z) * 0.5;
10799
- let radiusSquared = fromPointsScratch.copy(diameter2).subtract(ritterCenter).magnitudeSquared();
10800
- let ritterRadius = Math.sqrt(radiusSquared);
10801
- const minBoxPt = fromPointsMinBoxPt;
10802
- minBoxPt.x = xMin.x;
10803
- minBoxPt.y = yMin.y;
10804
- minBoxPt.z = zMin.z;
10805
- const maxBoxPt = fromPointsMaxBoxPt;
10806
- maxBoxPt.x = xMax.x;
10807
- maxBoxPt.y = yMax.y;
10808
- maxBoxPt.z = zMax.z;
10809
- const naiveCenter = fromPointsNaiveCenterScratch.copy(minBoxPt).add(maxBoxPt).multiplyByScalar(0.5);
10810
- let naiveRadius = 0;
10811
-
10812
- for (const position of positions) {
10813
- currentPos.copy(position);
10814
- const r = fromPointsScratch.copy(currentPos).subtract(naiveCenter).magnitude();
10815
-
10816
- if (r > naiveRadius) {
10817
- naiveRadius = r;
10818
- }
10819
-
10820
- const oldCenterToPointSquared = fromPointsScratch.copy(currentPos).subtract(ritterCenter).magnitudeSquared();
10821
-
10822
- if (oldCenterToPointSquared > radiusSquared) {
10823
- const oldCenterToPoint = Math.sqrt(oldCenterToPointSquared);
10824
- ritterRadius = (ritterRadius + oldCenterToPoint) * 0.5;
10825
- radiusSquared = ritterRadius * ritterRadius;
10826
- const oldToNew = oldCenterToPoint - ritterRadius;
10827
- ritterCenter.x = (ritterRadius * ritterCenter.x + oldToNew * currentPos.x) / oldCenterToPoint;
10828
- ritterCenter.y = (ritterRadius * ritterCenter.y + oldToNew * currentPos.y) / oldCenterToPoint;
10829
- ritterCenter.z = (ritterRadius * ritterCenter.z + oldToNew * currentPos.z) / oldCenterToPoint;
10830
- }
10831
- }
10832
-
10833
- if (ritterRadius < naiveRadius) {
10834
- ritterCenter.to(result.center);
10835
- result.radius = ritterRadius;
10836
- } else {
10837
- naiveCenter.to(result.center);
10838
- result.radius = naiveRadius;
10839
- }
10840
-
10841
- return result;
10842
- }
10843
- //# sourceMappingURL=bounding-sphere-from-points.js.map
10844
-
10845
- /***/ }),
10846
-
10847
- /***/ "../../node_modules/@math.gl/culling/dist/esm/lib/algorithms/compute-eigen-decomposition.js":
10848
- /*!***********************************************************************************************************************!*\
10849
- !*** /Users/alasarr/dev/deck.gl/node_modules/@math.gl/culling/dist/esm/lib/algorithms/compute-eigen-decomposition.js ***!
10850
- \***********************************************************************************************************************/
10851
- /*! exports provided: default */
10852
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
10853
-
10854
- "use strict";
10855
- __webpack_require__.r(__webpack_exports__);
10856
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return computeEigenDecomposition; });
10857
- /* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @math.gl/core */ "../../node_modules/@math.gl/core/dist/esm/index.js");
10858
-
10859
- const scratchMatrix = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Matrix3"]();
10860
- const scratchUnitary = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Matrix3"]();
10861
- const scratchDiagonal = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Matrix3"]();
10862
- const jMatrix = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Matrix3"]();
10863
- const jMatrixTranspose = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Matrix3"]();
10864
- function computeEigenDecomposition(matrix, result = {}) {
10865
- const EIGEN_TOLERANCE = _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["_MathUtils"].EPSILON20;
10866
- const EIGEN_MAX_SWEEPS = 10;
10867
- let count = 0;
10868
- let sweep = 0;
10869
- const unitaryMatrix = scratchUnitary;
10870
- const diagonalMatrix = scratchDiagonal;
10871
- unitaryMatrix.identity();
10872
- diagonalMatrix.copy(matrix);
10873
- const epsilon = EIGEN_TOLERANCE * computeFrobeniusNorm(diagonalMatrix);
10874
-
10875
- while (sweep < EIGEN_MAX_SWEEPS && offDiagonalFrobeniusNorm(diagonalMatrix) > epsilon) {
10876
- shurDecomposition(diagonalMatrix, jMatrix);
10877
- jMatrixTranspose.copy(jMatrix).transpose();
10878
- diagonalMatrix.multiplyRight(jMatrix);
10879
- diagonalMatrix.multiplyLeft(jMatrixTranspose);
10880
- unitaryMatrix.multiplyRight(jMatrix);
10881
-
10882
- if (++count > 2) {
10883
- ++sweep;
10884
- count = 0;
10885
- }
10886
- }
10887
-
10888
- result.unitary = unitaryMatrix.toTarget(result.unitary);
10889
- result.diagonal = diagonalMatrix.toTarget(result.diagonal);
10890
- return result;
10891
- }
10892
-
10893
- function computeFrobeniusNorm(matrix) {
10894
- let norm = 0.0;
10895
-
10896
- for (let i = 0; i < 9; ++i) {
10897
- const temp = matrix[i];
10898
- norm += temp * temp;
10899
- }
10900
-
10901
- return Math.sqrt(norm);
10902
- }
10903
-
10904
- const rowVal = [1, 0, 0];
10905
- const colVal = [2, 2, 1];
10906
-
10907
- function offDiagonalFrobeniusNorm(matrix) {
10908
- let norm = 0.0;
10909
-
10910
- for (let i = 0; i < 3; ++i) {
10911
- const temp = matrix[scratchMatrix.getElementIndex(colVal[i], rowVal[i])];
10912
- norm += 2.0 * temp * temp;
10913
- }
10914
-
10915
- return Math.sqrt(norm);
10916
- }
10917
-
10918
- function shurDecomposition(matrix, result) {
10919
- const tolerance = _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["_MathUtils"].EPSILON15;
10920
- let maxDiagonal = 0.0;
10921
- let rotAxis = 1;
10922
-
10923
- for (let i = 0; i < 3; ++i) {
10924
- const temp = Math.abs(matrix[scratchMatrix.getElementIndex(colVal[i], rowVal[i])]);
10925
-
10926
- if (temp > maxDiagonal) {
10927
- rotAxis = i;
10928
- maxDiagonal = temp;
10929
- }
10930
- }
10931
-
10932
- const p = rowVal[rotAxis];
10933
- const q = colVal[rotAxis];
10934
- let c = 1.0;
10935
- let s = 0.0;
10936
-
10937
- if (Math.abs(matrix[scratchMatrix.getElementIndex(q, p)]) > tolerance) {
10938
- const qq = matrix[scratchMatrix.getElementIndex(q, q)];
10939
- const pp = matrix[scratchMatrix.getElementIndex(p, p)];
10940
- const qp = matrix[scratchMatrix.getElementIndex(q, p)];
10941
- const tau = (qq - pp) / 2.0 / qp;
10942
- let t;
10943
-
10944
- if (tau < 0.0) {
10945
- t = -1.0 / (-tau + Math.sqrt(1.0 + tau * tau));
10946
- } else {
10947
- t = 1.0 / (tau + Math.sqrt(1.0 + tau * tau));
10948
- }
10949
-
10950
- c = 1.0 / Math.sqrt(1.0 + t * t);
10951
- s = t * c;
10952
- }
10953
-
10954
- _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Matrix3"].IDENTITY.to(result);
10955
- result[scratchMatrix.getElementIndex(p, p)] = result[scratchMatrix.getElementIndex(q, q)] = c;
10956
- result[scratchMatrix.getElementIndex(q, p)] = s;
10957
- result[scratchMatrix.getElementIndex(p, q)] = -s;
10958
- return result;
10959
- }
10960
- //# sourceMappingURL=compute-eigen-decomposition.js.map
10961
-
10962
- /***/ }),
10963
-
10964
- /***/ "../../node_modules/@math.gl/culling/dist/esm/lib/bounding-volumes/axis-aligned-bounding-box.js":
10965
- /*!***************************************************************************************************************************!*\
10966
- !*** /Users/alasarr/dev/deck.gl/node_modules/@math.gl/culling/dist/esm/lib/bounding-volumes/axis-aligned-bounding-box.js ***!
10967
- \***************************************************************************************************************************/
10968
- /*! exports provided: default */
10969
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
10970
-
10971
- "use strict";
10972
- __webpack_require__.r(__webpack_exports__);
10973
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return AxisAlignedBoundingBox; });
10974
- /* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @math.gl/core */ "../../node_modules/@math.gl/core/dist/esm/index.js");
10975
- /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../constants */ "../../node_modules/@math.gl/culling/dist/esm/constants.js");
10976
-
10977
-
10978
- const scratchVector = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
10979
- const scratchNormal = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
10980
- class AxisAlignedBoundingBox {
10981
- constructor(minimum = [0, 0, 0], maximum = [0, 0, 0], center = null) {
10982
- center = center || scratchVector.copy(minimum).add(maximum).scale(0.5);
10983
- this.center = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"](center);
10984
- this.halfDiagonal = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"](maximum).subtract(this.center);
10985
- this.minimum = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"](minimum);
10986
- this.maximum = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"](maximum);
10987
- }
10988
-
10989
- clone() {
10990
- return new AxisAlignedBoundingBox(this.minimum, this.maximum, this.center);
10991
- }
10992
-
10993
- equals(right) {
10994
- return this === right || Boolean(right) && this.minimum.equals(right.minimum) && this.maximum.equals(right.maximum);
10995
- }
10996
-
10997
- transform(transformation) {
10998
- this.center.transformAsPoint(transformation);
10999
- this.halfDiagonal.transform(transformation);
11000
- this.minimum.transform(transformation);
11001
- this.maximum.transform(transformation);
11002
- return this;
11003
- }
11004
-
11005
- intersectPlane(plane) {
11006
- const {
11007
- halfDiagonal
11008
- } = this;
11009
- const normal = scratchNormal.from(plane.normal);
11010
- const e = halfDiagonal.x * Math.abs(normal.x) + halfDiagonal.y * Math.abs(normal.y) + halfDiagonal.z * Math.abs(normal.z);
11011
- const s = this.center.dot(normal) + plane.distance;
11012
-
11013
- if (s - e > 0) {
11014
- return _constants__WEBPACK_IMPORTED_MODULE_1__["INTERSECTION"].INSIDE;
11015
- }
11016
-
11017
- if (s + e < 0) {
11018
- return _constants__WEBPACK_IMPORTED_MODULE_1__["INTERSECTION"].OUTSIDE;
11019
- }
11020
-
11021
- return _constants__WEBPACK_IMPORTED_MODULE_1__["INTERSECTION"].INTERSECTING;
11022
- }
11023
-
11024
- distanceTo(point) {
11025
- return Math.sqrt(this.distanceSquaredTo(point));
11026
- }
11027
-
11028
- distanceSquaredTo(point) {
11029
- const offset = scratchVector.from(point).subtract(this.center);
11030
- const {
11031
- halfDiagonal
11032
- } = this;
11033
- let distanceSquared = 0.0;
11034
- let d;
11035
- d = Math.abs(offset.x) - halfDiagonal.x;
11036
-
11037
- if (d > 0) {
11038
- distanceSquared += d * d;
11039
- }
11040
-
11041
- d = Math.abs(offset.y) - halfDiagonal.y;
11042
-
11043
- if (d > 0) {
11044
- distanceSquared += d * d;
11045
- }
11046
-
11047
- d = Math.abs(offset.z) - halfDiagonal.z;
11048
-
11049
- if (d > 0) {
11050
- distanceSquared += d * d;
11051
- }
11052
-
11053
- return distanceSquared;
11054
- }
11055
-
11056
- }
11057
- //# sourceMappingURL=axis-aligned-bounding-box.js.map
11058
-
11059
- /***/ }),
11060
-
11061
- /***/ "../../node_modules/@math.gl/culling/dist/esm/lib/bounding-volumes/bounding-sphere.js":
11062
- /*!*****************************************************************************************************************!*\
11063
- !*** /Users/alasarr/dev/deck.gl/node_modules/@math.gl/culling/dist/esm/lib/bounding-volumes/bounding-sphere.js ***!
11064
- \*****************************************************************************************************************/
11065
- /*! exports provided: default */
11066
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
11067
-
11068
- "use strict";
11069
- __webpack_require__.r(__webpack_exports__);
11070
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return BoundingSphere; });
11071
- /* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @math.gl/core */ "../../node_modules/@math.gl/core/dist/esm/index.js");
11072
- /* harmony import */ var gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! gl-matrix/mat4 */ "../../node_modules/gl-matrix/esm/mat4.js");
11073
- /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../constants */ "../../node_modules/@math.gl/culling/dist/esm/constants.js");
11074
-
11075
-
11076
-
11077
- const scratchVector = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
11078
- const scratchVector2 = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
11079
- class BoundingSphere {
11080
- constructor(center = [0, 0, 0], radius = 0.0) {
11081
- this.radius = -0;
11082
- this.center = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
11083
- this.fromCenterRadius(center, radius);
11084
- }
11085
-
11086
- fromCenterRadius(center, radius) {
11087
- this.center.from(center);
11088
- this.radius = radius;
11089
- return this;
11090
- }
11091
-
11092
- fromCornerPoints(corner, oppositeCorner) {
11093
- oppositeCorner = scratchVector.from(oppositeCorner);
11094
- this.center = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]().from(corner).add(oppositeCorner).scale(0.5);
11095
- this.radius = this.center.distance(oppositeCorner);
11096
- return this;
11097
- }
11098
-
11099
- equals(right) {
11100
- return this === right || Boolean(right) && this.center.equals(right.center) && this.radius === right.radius;
11101
- }
11102
-
11103
- clone() {
11104
- return new BoundingSphere(this.center, this.radius);
11105
- }
11106
-
11107
- union(boundingSphere) {
11108
- const leftCenter = this.center;
11109
- const leftRadius = this.radius;
11110
- const rightCenter = boundingSphere.center;
11111
- const rightRadius = boundingSphere.radius;
11112
- const toRightCenter = scratchVector.copy(rightCenter).subtract(leftCenter);
11113
- const centerSeparation = toRightCenter.magnitude();
11114
-
11115
- if (leftRadius >= centerSeparation + rightRadius) {
11116
- return this.clone();
11117
- }
11118
-
11119
- if (rightRadius >= centerSeparation + leftRadius) {
11120
- return boundingSphere.clone();
11121
- }
11122
-
11123
- const halfDistanceBetweenTangentPoints = (leftRadius + centerSeparation + rightRadius) * 0.5;
11124
- scratchVector2.copy(toRightCenter).scale((-leftRadius + halfDistanceBetweenTangentPoints) / centerSeparation).add(leftCenter);
11125
- this.center.copy(scratchVector2);
11126
- this.radius = halfDistanceBetweenTangentPoints;
11127
- return this;
11128
- }
11129
-
11130
- expand(point) {
11131
- point = scratchVector.from(point);
11132
- const radius = point.subtract(this.center).magnitude();
11133
-
11134
- if (radius > this.radius) {
11135
- this.radius = radius;
11136
- }
11137
-
11138
- return this;
11139
- }
11140
-
11141
- transform(transform) {
11142
- this.center.transform(transform);
11143
- const scale = gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__["getScaling"](scratchVector, transform);
11144
- this.radius = Math.max(scale[0], Math.max(scale[1], scale[2])) * this.radius;
11145
- return this;
11146
- }
11147
-
11148
- distanceSquaredTo(point) {
11149
- const d = this.distanceTo(point);
11150
- return d * d;
11151
- }
11152
-
11153
- distanceTo(point) {
11154
- point = scratchVector.from(point);
11155
- const delta = point.subtract(this.center);
11156
- return Math.max(0, delta.len() - this.radius);
11157
- }
11158
-
11159
- intersectPlane(plane) {
11160
- const center = this.center;
11161
- const radius = this.radius;
11162
- const normal = plane.normal;
11163
- const distanceToPlane = normal.dot(center) + plane.distance;
11164
-
11165
- if (distanceToPlane < -radius) {
11166
- return _constants__WEBPACK_IMPORTED_MODULE_2__["INTERSECTION"].OUTSIDE;
11167
- }
11168
-
11169
- if (distanceToPlane < radius) {
11170
- return _constants__WEBPACK_IMPORTED_MODULE_2__["INTERSECTION"].INTERSECTING;
11171
- }
11172
-
11173
- return _constants__WEBPACK_IMPORTED_MODULE_2__["INTERSECTION"].INSIDE;
11174
- }
11175
-
11176
- }
11177
- //# sourceMappingURL=bounding-sphere.js.map
11178
-
11179
- /***/ }),
11180
-
11181
- /***/ "../../node_modules/@math.gl/culling/dist/esm/lib/bounding-volumes/oriented-bounding-box.js":
11182
- /*!***********************************************************************************************************************!*\
11183
- !*** /Users/alasarr/dev/deck.gl/node_modules/@math.gl/culling/dist/esm/lib/bounding-volumes/oriented-bounding-box.js ***!
11184
- \***********************************************************************************************************************/
11185
- /*! exports provided: default */
11186
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
11187
-
11188
- "use strict";
11189
- __webpack_require__.r(__webpack_exports__);
11190
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return OrientedBoundingBox; });
11191
- /* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @math.gl/core */ "../../node_modules/@math.gl/core/dist/esm/index.js");
11192
- /* harmony import */ var _bounding_sphere__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bounding-sphere */ "../../node_modules/@math.gl/culling/dist/esm/lib/bounding-volumes/bounding-sphere.js");
11193
- /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../constants */ "../../node_modules/@math.gl/culling/dist/esm/constants.js");
11194
-
11195
-
11196
-
11197
- const scratchVector3 = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
11198
- const scratchOffset = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
11199
- const scratchVectorU = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
11200
- const scratchVectorV = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
11201
- const scratchVectorW = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
11202
- const scratchCorner = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
11203
- const scratchToCenter = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
11204
- const MATRIX3 = {
11205
- COLUMN0ROW0: 0,
11206
- COLUMN0ROW1: 1,
11207
- COLUMN0ROW2: 2,
11208
- COLUMN1ROW0: 3,
11209
- COLUMN1ROW1: 4,
11210
- COLUMN1ROW2: 5,
11211
- COLUMN2ROW0: 6,
11212
- COLUMN2ROW1: 7,
11213
- COLUMN2ROW2: 8
11214
- };
11215
- class OrientedBoundingBox {
11216
- constructor(center = [0, 0, 0], halfAxes = [0, 0, 0, 0, 0, 0, 0, 0, 0]) {
11217
- this.center = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]().from(center);
11218
- this.halfAxes = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Matrix3"](halfAxes);
11219
- }
11220
-
11221
- get halfSize() {
11222
- const xAxis = this.halfAxes.getColumn(0);
11223
- const yAxis = this.halfAxes.getColumn(1);
11224
- const zAxis = this.halfAxes.getColumn(2);
11225
- return [new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"](xAxis).len(), new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"](yAxis).len(), new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"](zAxis).len()];
11226
- }
11227
-
11228
- get quaternion() {
11229
- const xAxis = this.halfAxes.getColumn(0);
11230
- const yAxis = this.halfAxes.getColumn(1);
11231
- const zAxis = this.halfAxes.getColumn(2);
11232
- const normXAxis = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"](xAxis).normalize();
11233
- const normYAxis = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"](yAxis).normalize();
11234
- const normZAxis = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"](zAxis).normalize();
11235
- return new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Quaternion"]().fromMatrix3(new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Matrix3"]([...normXAxis, ...normYAxis, ...normZAxis]));
11236
- }
11237
-
11238
- fromCenterHalfSizeQuaternion(center, halfSize, quaternion) {
11239
- const quaternionObject = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Quaternion"](quaternion);
11240
- const directionsMatrix = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Matrix3"]().fromQuaternion(quaternionObject);
11241
- directionsMatrix[0] = directionsMatrix[0] * halfSize[0];
11242
- directionsMatrix[1] = directionsMatrix[1] * halfSize[0];
11243
- directionsMatrix[2] = directionsMatrix[2] * halfSize[0];
11244
- directionsMatrix[3] = directionsMatrix[3] * halfSize[1];
11245
- directionsMatrix[4] = directionsMatrix[4] * halfSize[1];
11246
- directionsMatrix[5] = directionsMatrix[5] * halfSize[1];
11247
- directionsMatrix[6] = directionsMatrix[6] * halfSize[2];
11248
- directionsMatrix[7] = directionsMatrix[7] * halfSize[2];
11249
- directionsMatrix[8] = directionsMatrix[8] * halfSize[2];
11250
- this.center = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]().from(center);
11251
- this.halfAxes = directionsMatrix;
11252
- return this;
11253
- }
11254
-
11255
- clone() {
11256
- return new OrientedBoundingBox(this.center, this.halfAxes);
11257
- }
11258
-
11259
- equals(right) {
11260
- return this === right || Boolean(right) && this.center.equals(right.center) && this.halfAxes.equals(right.halfAxes);
11261
- }
11262
-
11263
- getBoundingSphere(result = new _bounding_sphere__WEBPACK_IMPORTED_MODULE_1__["default"]()) {
11264
- const halfAxes = this.halfAxes;
11265
- const u = halfAxes.getColumn(0, scratchVectorU);
11266
- const v = halfAxes.getColumn(1, scratchVectorV);
11267
- const w = halfAxes.getColumn(2, scratchVectorW);
11268
- const cornerVector = scratchVector3.copy(u).add(v).add(w);
11269
- result.center.copy(this.center);
11270
- result.radius = cornerVector.magnitude();
11271
- return result;
11272
- }
11273
-
11274
- intersectPlane(plane) {
11275
- const center = this.center;
11276
- const normal = plane.normal;
11277
- const halfAxes = this.halfAxes;
11278
- const normalX = normal.x;
11279
- const normalY = normal.y;
11280
- const normalZ = normal.z;
11281
- const radEffective = Math.abs(normalX * halfAxes[MATRIX3.COLUMN0ROW0] + normalY * halfAxes[MATRIX3.COLUMN0ROW1] + normalZ * halfAxes[MATRIX3.COLUMN0ROW2]) + Math.abs(normalX * halfAxes[MATRIX3.COLUMN1ROW0] + normalY * halfAxes[MATRIX3.COLUMN1ROW1] + normalZ * halfAxes[MATRIX3.COLUMN1ROW2]) + Math.abs(normalX * halfAxes[MATRIX3.COLUMN2ROW0] + normalY * halfAxes[MATRIX3.COLUMN2ROW1] + normalZ * halfAxes[MATRIX3.COLUMN2ROW2]);
11282
- const distanceToPlane = normal.dot(center) + plane.distance;
11283
-
11284
- if (distanceToPlane <= -radEffective) {
11285
- return _constants__WEBPACK_IMPORTED_MODULE_2__["INTERSECTION"].OUTSIDE;
11286
- } else if (distanceToPlane >= radEffective) {
11287
- return _constants__WEBPACK_IMPORTED_MODULE_2__["INTERSECTION"].INSIDE;
11288
- }
11289
-
11290
- return _constants__WEBPACK_IMPORTED_MODULE_2__["INTERSECTION"].INTERSECTING;
11291
- }
11292
-
11293
- distanceTo(point) {
11294
- return Math.sqrt(this.distanceSquaredTo(point));
11295
- }
11296
-
11297
- distanceSquaredTo(point) {
11298
- const offset = scratchOffset.from(point).subtract(this.center);
11299
- const halfAxes = this.halfAxes;
11300
- const u = halfAxes.getColumn(0, scratchVectorU);
11301
- const v = halfAxes.getColumn(1, scratchVectorV);
11302
- const w = halfAxes.getColumn(2, scratchVectorW);
11303
- const uHalf = u.magnitude();
11304
- const vHalf = v.magnitude();
11305
- const wHalf = w.magnitude();
11306
- u.normalize();
11307
- v.normalize();
11308
- w.normalize();
11309
- let distanceSquared = 0.0;
11310
- let d;
11311
- d = Math.abs(offset.dot(u)) - uHalf;
11312
-
11313
- if (d > 0) {
11314
- distanceSquared += d * d;
11315
- }
11316
-
11317
- d = Math.abs(offset.dot(v)) - vHalf;
11318
-
11319
- if (d > 0) {
11320
- distanceSquared += d * d;
11321
- }
11322
-
11323
- d = Math.abs(offset.dot(w)) - wHalf;
11324
-
11325
- if (d > 0) {
11326
- distanceSquared += d * d;
11327
- }
11328
-
11329
- return distanceSquared;
11330
- }
11331
-
11332
- computePlaneDistances(position, direction, result = [-0, -0]) {
11333
- let minDist = Number.POSITIVE_INFINITY;
11334
- let maxDist = Number.NEGATIVE_INFINITY;
11335
- const center = this.center;
11336
- const halfAxes = this.halfAxes;
11337
- const u = halfAxes.getColumn(0, scratchVectorU);
11338
- const v = halfAxes.getColumn(1, scratchVectorV);
11339
- const w = halfAxes.getColumn(2, scratchVectorW);
11340
- const corner = scratchCorner.copy(u).add(v).add(w).add(center);
11341
- const toCenter = scratchToCenter.copy(corner).subtract(position);
11342
- let mag = direction.dot(toCenter);
11343
- minDist = Math.min(mag, minDist);
11344
- maxDist = Math.max(mag, maxDist);
11345
- corner.copy(center).add(u).add(v).subtract(w);
11346
- toCenter.copy(corner).subtract(position);
11347
- mag = direction.dot(toCenter);
11348
- minDist = Math.min(mag, minDist);
11349
- maxDist = Math.max(mag, maxDist);
11350
- corner.copy(center).add(u).subtract(v).add(w);
11351
- toCenter.copy(corner).subtract(position);
11352
- mag = direction.dot(toCenter);
11353
- minDist = Math.min(mag, minDist);
11354
- maxDist = Math.max(mag, maxDist);
11355
- corner.copy(center).add(u).subtract(v).subtract(w);
11356
- toCenter.copy(corner).subtract(position);
11357
- mag = direction.dot(toCenter);
11358
- minDist = Math.min(mag, minDist);
11359
- maxDist = Math.max(mag, maxDist);
11360
- center.copy(corner).subtract(u).add(v).add(w);
11361
- toCenter.copy(corner).subtract(position);
11362
- mag = direction.dot(toCenter);
11363
- minDist = Math.min(mag, minDist);
11364
- maxDist = Math.max(mag, maxDist);
11365
- center.copy(corner).subtract(u).add(v).subtract(w);
11366
- toCenter.copy(corner).subtract(position);
11367
- mag = direction.dot(toCenter);
11368
- minDist = Math.min(mag, minDist);
11369
- maxDist = Math.max(mag, maxDist);
11370
- center.copy(corner).subtract(u).subtract(v).add(w);
11371
- toCenter.copy(corner).subtract(position);
11372
- mag = direction.dot(toCenter);
11373
- minDist = Math.min(mag, minDist);
11374
- maxDist = Math.max(mag, maxDist);
11375
- center.copy(corner).subtract(u).subtract(v).subtract(w);
11376
- toCenter.copy(corner).subtract(position);
11377
- mag = direction.dot(toCenter);
11378
- minDist = Math.min(mag, minDist);
11379
- maxDist = Math.max(mag, maxDist);
11380
- result[0] = minDist;
11381
- result[1] = maxDist;
11382
- return result;
11383
- }
11384
-
11385
- transform(transformation) {
11386
- this.center.transformAsPoint(transformation);
11387
- const xAxis = this.halfAxes.getColumn(0, scratchVectorU);
11388
- xAxis.transformAsPoint(transformation);
11389
- const yAxis = this.halfAxes.getColumn(1, scratchVectorV);
11390
- yAxis.transformAsPoint(transformation);
11391
- const zAxis = this.halfAxes.getColumn(2, scratchVectorW);
11392
- zAxis.transformAsPoint(transformation);
11393
- this.halfAxes = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Matrix3"]([...xAxis, ...yAxis, ...zAxis]);
11394
- return this;
11395
- }
11396
-
11397
- getTransform() {
11398
- throw new Error('not implemented');
11399
- }
11400
-
11401
- }
11402
- //# sourceMappingURL=oriented-bounding-box.js.map
11403
-
11404
- /***/ }),
11405
-
11406
- /***/ "../../node_modules/@math.gl/culling/dist/esm/lib/culling-volume.js":
11407
- /*!***********************************************************************************************!*\
11408
- !*** /Users/alasarr/dev/deck.gl/node_modules/@math.gl/culling/dist/esm/lib/culling-volume.js ***!
11409
- \***********************************************************************************************/
11410
- /*! exports provided: default */
11411
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
11412
-
11413
- "use strict";
11414
- __webpack_require__.r(__webpack_exports__);
11415
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return CullingVolume; });
11416
- /* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @math.gl/core */ "../../node_modules/@math.gl/core/dist/esm/index.js");
11417
- /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants */ "../../node_modules/@math.gl/culling/dist/esm/constants.js");
11418
- /* harmony import */ var _plane__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./plane */ "../../node_modules/@math.gl/culling/dist/esm/lib/plane.js");
11419
-
11420
-
11421
-
11422
- const faces = [new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]([1, 0, 0]), new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]([0, 1, 0]), new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]([0, 0, 1])];
11423
- const scratchPlaneCenter = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
11424
- const scratchPlaneNormal = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
11425
- const scratchPlane = new _plane__WEBPACK_IMPORTED_MODULE_2__["default"](new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"](1.0, 0.0, 0.0), 0.0);
11426
- class CullingVolume {
11427
- static get MASK_OUTSIDE() {
11428
- return 0xffffffff;
11429
- }
11430
-
11431
- static get MASK_INSIDE() {
11432
- return 0x00000000;
11433
- }
11434
-
11435
- static get MASK_INDETERMINATE() {
11436
- return 0x7fffffff;
11437
- }
11438
-
11439
- constructor(planes = []) {
11440
- this.planes = planes;
11441
- Object(_math_gl_core__WEBPACK_IMPORTED_MODULE_0__["assert"])(this.planes.every(plane => plane instanceof _plane__WEBPACK_IMPORTED_MODULE_2__["default"]));
11442
- }
11443
-
11444
- fromBoundingSphere(boundingSphere) {
11445
- this.planes.length = 2 * faces.length;
11446
- const center = boundingSphere.center;
11447
- const radius = boundingSphere.radius;
11448
- let planeIndex = 0;
11449
-
11450
- for (const faceNormal of faces) {
11451
- let plane0 = this.planes[planeIndex];
11452
- let plane1 = this.planes[planeIndex + 1];
11453
-
11454
- if (!plane0) {
11455
- plane0 = this.planes[planeIndex] = new _plane__WEBPACK_IMPORTED_MODULE_2__["default"]();
11456
- }
11457
-
11458
- if (!plane1) {
11459
- plane1 = this.planes[planeIndex + 1] = new _plane__WEBPACK_IMPORTED_MODULE_2__["default"]();
11460
- }
11461
-
11462
- const plane0Center = scratchPlaneCenter.copy(faceNormal).scale(-radius).add(center);
11463
- const plane0Distance = -faceNormal.dot(plane0Center);
11464
- plane0.fromPointNormal(plane0Center, faceNormal);
11465
- const plane1Center = scratchPlaneCenter.copy(faceNormal).scale(radius).add(center);
11466
- const negatedFaceNormal = scratchPlaneNormal.copy(faceNormal).negate();
11467
- const plane1Distance = -negatedFaceNormal.dot(plane1Center);
11468
- plane1.fromPointNormal(plane1Center, negatedFaceNormal);
11469
- planeIndex += 2;
11470
- }
11471
-
11472
- return this;
11473
- }
11474
-
11475
- computeVisibility(boundingVolume) {
11476
- Object(_math_gl_core__WEBPACK_IMPORTED_MODULE_0__["assert"])(boundingVolume);
11477
- let intersect = _constants__WEBPACK_IMPORTED_MODULE_1__["INTERSECTION"].INSIDE;
11478
-
11479
- for (const plane of this.planes) {
11480
- const result = boundingVolume.intersectPlane(plane);
11481
-
11482
- switch (result) {
11483
- case _constants__WEBPACK_IMPORTED_MODULE_1__["INTERSECTION"].OUTSIDE:
11484
- return _constants__WEBPACK_IMPORTED_MODULE_1__["INTERSECTION"].OUTSIDE;
11485
-
11486
- case _constants__WEBPACK_IMPORTED_MODULE_1__["INTERSECTION"].INTERSECTING:
11487
- intersect = _constants__WEBPACK_IMPORTED_MODULE_1__["INTERSECTION"].INTERSECTING;
11488
- break;
11489
-
11490
- default:
11491
- }
11492
- }
11493
-
11494
- return intersect;
11495
- }
11496
-
11497
- computeVisibilityWithPlaneMask(boundingVolume, parentPlaneMask) {
11498
- Object(_math_gl_core__WEBPACK_IMPORTED_MODULE_0__["assert"])(boundingVolume, 'boundingVolume is required.');
11499
- Object(_math_gl_core__WEBPACK_IMPORTED_MODULE_0__["assert"])(Number.isFinite(parentPlaneMask), 'parentPlaneMask is required.');
11500
-
11501
- if (parentPlaneMask === CullingVolume.MASK_OUTSIDE || parentPlaneMask === CullingVolume.MASK_INSIDE) {
11502
- return parentPlaneMask;
11503
- }
11504
-
11505
- let mask = CullingVolume.MASK_INSIDE;
11506
- const planes = this.planes;
11507
-
11508
- for (let k = 0; k < this.planes.length; ++k) {
11509
- const flag = k < 31 ? 1 << k : 0;
11510
-
11511
- if (k < 31 && (parentPlaneMask & flag) === 0) {
11512
- continue;
11513
- }
11514
-
11515
- const plane = planes[k];
11516
- const result = boundingVolume.intersectPlane(plane);
11517
-
11518
- if (result === _constants__WEBPACK_IMPORTED_MODULE_1__["INTERSECTION"].OUTSIDE) {
11519
- return CullingVolume.MASK_OUTSIDE;
11520
- } else if (result === _constants__WEBPACK_IMPORTED_MODULE_1__["INTERSECTION"].INTERSECTING) {
11521
- mask |= flag;
11522
- }
11523
- }
11524
-
11525
- return mask;
11526
- }
11527
-
11528
- }
11529
- //# sourceMappingURL=culling-volume.js.map
11530
-
11531
- /***/ }),
11532
-
11533
- /***/ "../../node_modules/@math.gl/culling/dist/esm/lib/perspective-frustum.js":
11534
- /*!****************************************************************************************************!*\
11535
- !*** /Users/alasarr/dev/deck.gl/node_modules/@math.gl/culling/dist/esm/lib/perspective-frustum.js ***!
11536
- \****************************************************************************************************/
11537
- /*! exports provided: default */
11538
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
11539
-
11540
- "use strict";
11541
- __webpack_require__.r(__webpack_exports__);
11542
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return PerspectiveFrustum; });
11543
- /* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @math.gl/core */ "../../node_modules/@math.gl/core/dist/esm/index.js");
11544
- /* harmony import */ var _perspective_off_center_frustum__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./perspective-off-center-frustum */ "../../node_modules/@math.gl/culling/dist/esm/lib/perspective-off-center-frustum.js");
11545
-
11546
-
11547
-
11548
- const defined = val => val !== null && typeof val !== 'undefined';
11549
-
11550
- class PerspectiveFrustum {
11551
- constructor(options = {}) {
11552
- options = {
11553
- near: 1.0,
11554
- far: 500000000.0,
11555
- xOffset: 0.0,
11556
- yOffset: 0.0,
11557
- ...options
11558
- };
11559
- this._offCenterFrustum = new _perspective_off_center_frustum__WEBPACK_IMPORTED_MODULE_1__["default"]();
11560
- this.fov = options.fov;
11561
- this._fov = undefined;
11562
- this._fovy = undefined;
11563
- this._sseDenominator = undefined;
11564
- this.aspectRatio = options.aspectRatio;
11565
- this._aspectRatio = undefined;
11566
- this.near = options.near;
11567
- this._near = this.near;
11568
- this.far = options.far;
11569
- this._far = this.far;
11570
- this.xOffset = options.xOffset;
11571
- this._xOffset = this.xOffset;
11572
- this.yOffset = options.yOffset;
11573
- this._yOffset = this.yOffset;
11574
- }
11575
-
11576
- clone() {
11577
- return new PerspectiveFrustum({
11578
- aspectRatio: this.aspectRatio,
11579
- fov: this.fov,
11580
- near: this.near,
11581
- far: this.far
11582
- });
11583
- }
11584
-
11585
- equals(other) {
11586
- if (!defined(other) || !(other instanceof PerspectiveFrustum)) {
11587
- return false;
11588
- }
11589
-
11590
- update(this);
11591
- update(other);
11592
- return this.fov === other.fov && this.aspectRatio === other.aspectRatio && this.near === other.near && this.far === other.far && this._offCenterFrustum.equals(other._offCenterFrustum);
11593
- }
11594
-
11595
- get projectionMatrix() {
11596
- update(this);
11597
- return this._offCenterFrustum.projectionMatrix;
11598
- }
11599
-
11600
- get infiniteProjectionMatrix() {
11601
- update(this);
11602
- return this._offCenterFrustum.infiniteProjectionMatrix;
11603
- }
11604
-
11605
- get fovy() {
11606
- update(this);
11607
- return this._fovy;
11608
- }
11609
-
11610
- get sseDenominator() {
11611
- update(this);
11612
- return this._sseDenominator;
11613
- }
11614
-
11615
- computeCullingVolume(position, direction, up) {
11616
- update(this);
11617
- return this._offCenterFrustum.computeCullingVolume(position, direction, up);
11618
- }
11619
-
11620
- getPixelDimensions(drawingBufferWidth, drawingBufferHeight, distance, result) {
11621
- update(this);
11622
- return this._offCenterFrustum.getPixelDimensions(drawingBufferWidth, drawingBufferHeight, distance, result);
11623
- }
11624
-
11625
- }
11626
-
11627
- function update(frustum) {
11628
- Object(_math_gl_core__WEBPACK_IMPORTED_MODULE_0__["assert"])(Number.isFinite(frustum.fov) && Number.isFinite(frustum.aspectRatio) && Number.isFinite(frustum.near) && Number.isFinite(frustum.far));
11629
- const f = frustum._offCenterFrustum;
11630
-
11631
- if (frustum.fov !== frustum._fov || frustum.aspectRatio !== frustum._aspectRatio || frustum.near !== frustum._near || frustum.far !== frustum._far || frustum.xOffset !== frustum._xOffset || frustum.yOffset !== frustum._yOffset) {
11632
- Object(_math_gl_core__WEBPACK_IMPORTED_MODULE_0__["assert"])(frustum.fov >= 0 && frustum.fov < Math.PI);
11633
- Object(_math_gl_core__WEBPACK_IMPORTED_MODULE_0__["assert"])(frustum.aspectRatio > 0);
11634
- Object(_math_gl_core__WEBPACK_IMPORTED_MODULE_0__["assert"])(frustum.near >= 0 && frustum.near < frustum.far);
11635
- frustum._aspectRatio = frustum.aspectRatio;
11636
- frustum._fov = frustum.fov;
11637
- frustum._fovy = frustum.aspectRatio <= 1 ? frustum.fov : Math.atan(Math.tan(frustum.fov * 0.5) / frustum.aspectRatio) * 2.0;
11638
- frustum._near = frustum.near;
11639
- frustum._far = frustum.far;
11640
- frustum._sseDenominator = 2.0 * Math.tan(0.5 * frustum._fovy);
11641
- frustum._xOffset = frustum.xOffset;
11642
- frustum._yOffset = frustum.yOffset;
11643
- f.top = frustum.near * Math.tan(0.5 * frustum._fovy);
11644
- f.bottom = -f.top;
11645
- f.right = frustum.aspectRatio * f.top;
11646
- f.left = -f.right;
11647
- f.near = frustum.near;
11648
- f.far = frustum.far;
11649
- f.right += frustum.xOffset;
11650
- f.left += frustum.xOffset;
11651
- f.top += frustum.yOffset;
11652
- f.bottom += frustum.yOffset;
11653
- }
11654
- }
11655
- //# sourceMappingURL=perspective-frustum.js.map
11656
-
11657
- /***/ }),
11658
-
11659
- /***/ "../../node_modules/@math.gl/culling/dist/esm/lib/perspective-off-center-frustum.js":
11660
- /*!***************************************************************************************************************!*\
11661
- !*** /Users/alasarr/dev/deck.gl/node_modules/@math.gl/culling/dist/esm/lib/perspective-off-center-frustum.js ***!
11662
- \***************************************************************************************************************/
11663
- /*! exports provided: default */
11664
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
11665
-
11666
- "use strict";
11667
- __webpack_require__.r(__webpack_exports__);
11668
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return PerspectiveOffCenterFrustum; });
11669
- /* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @math.gl/core */ "../../node_modules/@math.gl/core/dist/esm/index.js");
11670
- /* harmony import */ var _culling_volume__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./culling-volume */ "../../node_modules/@math.gl/culling/dist/esm/lib/culling-volume.js");
11671
- /* harmony import */ var _plane__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./plane */ "../../node_modules/@math.gl/culling/dist/esm/lib/plane.js");
11672
-
11673
-
11674
-
11675
- const scratchPlaneUpVector = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
11676
- const scratchPlaneRightVector = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
11677
- const scratchPlaneNearCenter = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
11678
- const scratchPlaneFarCenter = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
11679
- const scratchPlaneNormal = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
11680
- class PerspectiveOffCenterFrustum {
11681
- constructor(options = {}) {
11682
- options = {
11683
- near: 1.0,
11684
- far: 500000000.0,
11685
- ...options
11686
- };
11687
- this.left = options.left;
11688
- this._left = undefined;
11689
- this.right = options.right;
11690
- this._right = undefined;
11691
- this.top = options.top;
11692
- this._top = undefined;
11693
- this.bottom = options.bottom;
11694
- this._bottom = undefined;
11695
- this.near = options.near;
11696
- this._near = this.near;
11697
- this.far = options.far;
11698
- this._far = this.far;
11699
- this._cullingVolume = new _culling_volume__WEBPACK_IMPORTED_MODULE_1__["default"]([new _plane__WEBPACK_IMPORTED_MODULE_2__["default"](), new _plane__WEBPACK_IMPORTED_MODULE_2__["default"](), new _plane__WEBPACK_IMPORTED_MODULE_2__["default"](), new _plane__WEBPACK_IMPORTED_MODULE_2__["default"](), new _plane__WEBPACK_IMPORTED_MODULE_2__["default"](), new _plane__WEBPACK_IMPORTED_MODULE_2__["default"]()]);
11700
- this._perspectiveMatrix = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Matrix4"]();
11701
- this._infinitePerspective = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Matrix4"]();
11702
- }
11703
-
11704
- clone() {
11705
- return new PerspectiveOffCenterFrustum({
11706
- right: this.right,
11707
- left: this.left,
11708
- top: this.top,
11709
- bottom: this.bottom,
11710
- near: this.near,
11711
- far: this.far
11712
- });
11713
- }
11714
-
11715
- equals(other) {
11716
- return other && other instanceof PerspectiveOffCenterFrustum && this.right === other.right && this.left === other.left && this.top === other.top && this.bottom === other.bottom && this.near === other.near && this.far === other.far;
11717
- }
11718
-
11719
- get projectionMatrix() {
11720
- update(this);
11721
- return this._perspectiveMatrix;
11722
- }
11723
-
11724
- get infiniteProjectionMatrix() {
11725
- update(this);
11726
- return this._infinitePerspective;
11727
- }
11728
-
11729
- computeCullingVolume(position, direction, up) {
11730
- Object(_math_gl_core__WEBPACK_IMPORTED_MODULE_0__["assert"])(position, 'position is required.');
11731
- Object(_math_gl_core__WEBPACK_IMPORTED_MODULE_0__["assert"])(direction, 'direction is required.');
11732
- Object(_math_gl_core__WEBPACK_IMPORTED_MODULE_0__["assert"])(up, 'up is required.');
11733
- const planes = this._cullingVolume.planes;
11734
- up = scratchPlaneUpVector.copy(up).normalize();
11735
- const right = scratchPlaneRightVector.copy(direction).cross(up).normalize();
11736
- const nearCenter = scratchPlaneNearCenter.copy(direction).multiplyByScalar(this.near).add(position);
11737
- const farCenter = scratchPlaneFarCenter.copy(direction).multiplyByScalar(this.far).add(position);
11738
- let normal = scratchPlaneNormal;
11739
- normal.copy(right).multiplyByScalar(this.left).add(nearCenter).subtract(position).cross(up);
11740
- planes[0].fromPointNormal(position, normal);
11741
- normal.copy(right).multiplyByScalar(this.right).add(nearCenter).subtract(position).cross(up).negate();
11742
- planes[1].fromPointNormal(position, normal);
11743
- normal.copy(up).multiplyByScalar(this.bottom).add(nearCenter).subtract(position).cross(right).negate();
11744
- planes[2].fromPointNormal(position, normal);
11745
- normal.copy(up).multiplyByScalar(this.top).add(nearCenter).subtract(position).cross(right);
11746
- planes[3].fromPointNormal(position, normal);
11747
- normal = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]().copy(direction);
11748
- planes[4].fromPointNormal(nearCenter, normal);
11749
- normal.negate();
11750
- planes[5].fromPointNormal(farCenter, normal);
11751
- return this._cullingVolume;
11752
- }
11753
-
11754
- getPixelDimensions(drawingBufferWidth, drawingBufferHeight, distance, result) {
11755
- update(this);
11756
- Object(_math_gl_core__WEBPACK_IMPORTED_MODULE_0__["assert"])(Number.isFinite(drawingBufferWidth) && Number.isFinite(drawingBufferHeight));
11757
- Object(_math_gl_core__WEBPACK_IMPORTED_MODULE_0__["assert"])(drawingBufferWidth > 0);
11758
- Object(_math_gl_core__WEBPACK_IMPORTED_MODULE_0__["assert"])(drawingBufferHeight > 0);
11759
- Object(_math_gl_core__WEBPACK_IMPORTED_MODULE_0__["assert"])(distance > 0);
11760
- Object(_math_gl_core__WEBPACK_IMPORTED_MODULE_0__["assert"])(result);
11761
- const inverseNear = 1.0 / this.near;
11762
- let tanTheta = this.top * inverseNear;
11763
- const pixelHeight = 2.0 * distance * tanTheta / drawingBufferHeight;
11764
- tanTheta = this.right * inverseNear;
11765
- const pixelWidth = 2.0 * distance * tanTheta / drawingBufferWidth;
11766
- result.x = pixelWidth;
11767
- result.y = pixelHeight;
11768
- return result;
11769
- }
11770
-
11771
- }
11772
-
11773
- function update(frustum) {
11774
- Object(_math_gl_core__WEBPACK_IMPORTED_MODULE_0__["assert"])(Number.isFinite(frustum.right) && Number.isFinite(frustum.left) && Number.isFinite(frustum.top) && Number.isFinite(frustum.bottom) && Number.isFinite(frustum.near) && Number.isFinite(frustum.far));
11775
- const {
11776
- top,
11777
- bottom,
11778
- right,
11779
- left,
11780
- near,
11781
- far
11782
- } = frustum;
11783
-
11784
- if (top !== frustum._top || bottom !== frustum._bottom || left !== frustum._left || right !== frustum._right || near !== frustum._near || far !== frustum._far) {
11785
- Object(_math_gl_core__WEBPACK_IMPORTED_MODULE_0__["assert"])(frustum.near > 0 && frustum.near < frustum.far, 'near must be greater than zero and less than far.');
11786
- frustum._left = left;
11787
- frustum._right = right;
11788
- frustum._top = top;
11789
- frustum._bottom = bottom;
11790
- frustum._near = near;
11791
- frustum._far = far;
11792
- frustum._perspectiveMatrix = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Matrix4"]().frustum({
11793
- left,
11794
- right,
11795
- bottom,
11796
- top,
11797
- near,
11798
- far
11799
- });
11800
- frustum._infinitePerspective = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Matrix4"]().frustum({
11801
- left,
11802
- right,
11803
- bottom,
11804
- top,
11805
- near,
11806
- far: Infinity
11807
- });
11808
- }
11809
- }
11810
- //# sourceMappingURL=perspective-off-center-frustum.js.map
11811
-
11812
- /***/ }),
11813
-
11814
- /***/ "../../node_modules/@math.gl/culling/dist/esm/lib/plane.js":
11815
- /*!**************************************************************************************!*\
11816
- !*** /Users/alasarr/dev/deck.gl/node_modules/@math.gl/culling/dist/esm/lib/plane.js ***!
11817
- \**************************************************************************************/
11818
- /*! exports provided: default */
11819
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
11820
-
11821
- "use strict";
11822
- __webpack_require__.r(__webpack_exports__);
11823
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Plane; });
11824
- /* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @math.gl/core */ "../../node_modules/@math.gl/core/dist/esm/index.js");
11825
-
11826
- const scratchPosition = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
11827
- const scratchNormal = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
11828
- class Plane {
11829
- constructor(normal = [0, 0, 1], distance = 0) {
11830
- this.normal = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__["Vector3"]();
11831
- this.distance = -0;
11832
- this.fromNormalDistance(normal, distance);
11833
- }
11834
-
11835
- fromNormalDistance(normal, distance) {
11836
- Object(_math_gl_core__WEBPACK_IMPORTED_MODULE_0__["assert"])(Number.isFinite(distance));
11837
- this.normal.from(normal).normalize();
11838
- this.distance = distance;
11839
- return this;
11840
- }
11841
-
11842
- fromPointNormal(point, normal) {
11843
- point = scratchPosition.from(point);
11844
- this.normal.from(normal).normalize();
11845
- const distance = -this.normal.dot(point);
11846
- this.distance = distance;
11847
- return this;
11848
- }
11849
-
11850
- fromCoefficients(a, b, c, d) {
11851
- this.normal.set(a, b, c);
11852
- Object(_math_gl_core__WEBPACK_IMPORTED_MODULE_0__["assert"])(Object(_math_gl_core__WEBPACK_IMPORTED_MODULE_0__["equals"])(this.normal.len(), 1));
11853
- this.distance = d;
11854
- return this;
11855
- }
11856
-
11857
- clone(plane) {
11858
- return new Plane(this.normal, this.distance);
11859
- }
11860
-
11861
- equals(right) {
11862
- return Object(_math_gl_core__WEBPACK_IMPORTED_MODULE_0__["equals"])(this.distance, right.distance) && Object(_math_gl_core__WEBPACK_IMPORTED_MODULE_0__["equals"])(this.normal, right.normal);
11863
- }
11864
-
11865
- getPointDistance(point) {
11866
- return this.normal.dot(point) + this.distance;
11867
- }
11868
-
11869
- transform(matrix4) {
11870
- const normal = scratchNormal.copy(this.normal).transformAsVector(matrix4).normalize();
11871
- const point = this.normal.scale(-this.distance).transform(matrix4);
11872
- return this.fromPointNormal(point, normal);
11873
- }
11874
-
11875
- projectPointOntoPlane(point, result = [0, 0, 0]) {
11876
- point = scratchPosition.from(point);
11877
- const pointDistance = this.getPointDistance(point);
11878
- const scaledNormal = scratchNormal.copy(this.normal).scale(pointDistance);
11879
- return point.subtract(scaledNormal).to(result);
11880
- }
11881
-
11882
- }
11883
- //# sourceMappingURL=plane.js.map
11884
-
11885
- /***/ }),
11886
-
11887
10472
  /***/ "../../node_modules/@math.gl/polygon/dist/esm/cut-by-grid.js":
11888
10473
  /*!****************************************************************************************!*\
11889
10474
  !*** /Users/alasarr/dev/deck.gl/node_modules/@math.gl/polygon/dist/esm/cut-by-grid.js ***!
@@ -13316,921 +11901,6 @@ function getPointAtIndex(positions, index, size, offset, out = []) {
13316
11901
 
13317
11902
  /***/ }),
13318
11903
 
13319
- /***/ "../../node_modules/@math.gl/web-mercator/dist/esm/assert.js":
13320
- /*!****************************************************************************************!*\
13321
- !*** /Users/alasarr/dev/deck.gl/node_modules/@math.gl/web-mercator/dist/esm/assert.js ***!
13322
- \****************************************************************************************/
13323
- /*! exports provided: default */
13324
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
13325
-
13326
- "use strict";
13327
- __webpack_require__.r(__webpack_exports__);
13328
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return assert; });
13329
- function assert(condition, message) {
13330
- if (!condition) {
13331
- throw new Error(message || '@math.gl/web-mercator: assertion failed.');
13332
- }
13333
- }
13334
- //# sourceMappingURL=assert.js.map
13335
-
13336
- /***/ }),
13337
-
13338
- /***/ "../../node_modules/@math.gl/web-mercator/dist/esm/fit-bounds.js":
13339
- /*!********************************************************************************************!*\
13340
- !*** /Users/alasarr/dev/deck.gl/node_modules/@math.gl/web-mercator/dist/esm/fit-bounds.js ***!
13341
- \********************************************************************************************/
13342
- /*! exports provided: default */
13343
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
13344
-
13345
- "use strict";
13346
- __webpack_require__.r(__webpack_exports__);
13347
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return fitBounds; });
13348
- /* harmony import */ var _web_mercator_viewport__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./web-mercator-viewport */ "../../node_modules/@math.gl/web-mercator/dist/esm/web-mercator-viewport.js");
13349
- /* harmony import */ var _assert__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./assert */ "../../node_modules/@math.gl/web-mercator/dist/esm/assert.js");
13350
- /* harmony import */ var _math_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math-utils */ "../../node_modules/@math.gl/web-mercator/dist/esm/math-utils.js");
13351
-
13352
-
13353
-
13354
- function fitBounds({
13355
- width,
13356
- height,
13357
- bounds,
13358
- minExtent = 0,
13359
- maxZoom = 24,
13360
- padding = 0,
13361
- offset = [0, 0]
13362
- }) {
13363
- const [[west, south], [east, north]] = bounds;
13364
-
13365
- if (Number.isFinite(padding)) {
13366
- const p = padding;
13367
- padding = {
13368
- top: p,
13369
- bottom: p,
13370
- left: p,
13371
- right: p
13372
- };
13373
- } else {
13374
- Object(_assert__WEBPACK_IMPORTED_MODULE_1__["default"])(Number.isFinite(padding.top) && Number.isFinite(padding.bottom) && Number.isFinite(padding.left) && Number.isFinite(padding.right));
13375
- }
13376
-
13377
- const viewport = new _web_mercator_viewport__WEBPACK_IMPORTED_MODULE_0__["default"]({
13378
- width,
13379
- height,
13380
- longitude: 0,
13381
- latitude: 0,
13382
- zoom: 0
13383
- });
13384
- const nw = viewport.project([west, north]);
13385
- const se = viewport.project([east, south]);
13386
- const size = [Math.max(Math.abs(se[0] - nw[0]), minExtent), Math.max(Math.abs(se[1] - nw[1]), minExtent)];
13387
- const targetSize = [width - padding.left - padding.right - Math.abs(offset[0]) * 2, height - padding.top - padding.bottom - Math.abs(offset[1]) * 2];
13388
- Object(_assert__WEBPACK_IMPORTED_MODULE_1__["default"])(targetSize[0] > 0 && targetSize[1] > 0);
13389
- const scaleX = targetSize[0] / size[0];
13390
- const scaleY = targetSize[1] / size[1];
13391
- const offsetX = (padding.right - padding.left) / 2 / scaleX;
13392
- const offsetY = (padding.bottom - padding.top) / 2 / scaleY;
13393
- const center = [(se[0] + nw[0]) / 2 + offsetX, (se[1] + nw[1]) / 2 + offsetY];
13394
- const centerLngLat = viewport.unproject(center);
13395
- const zoom = Math.min(maxZoom, viewport.zoom + Object(_math_utils__WEBPACK_IMPORTED_MODULE_2__["log2"])(Math.abs(Math.min(scaleX, scaleY))));
13396
- Object(_assert__WEBPACK_IMPORTED_MODULE_1__["default"])(Number.isFinite(zoom));
13397
- return {
13398
- longitude: centerLngLat[0],
13399
- latitude: centerLngLat[1],
13400
- zoom
13401
- };
13402
- }
13403
- //# sourceMappingURL=fit-bounds.js.map
13404
-
13405
- /***/ }),
13406
-
13407
- /***/ "../../node_modules/@math.gl/web-mercator/dist/esm/fly-to-viewport.js":
13408
- /*!*************************************************************************************************!*\
13409
- !*** /Users/alasarr/dev/deck.gl/node_modules/@math.gl/web-mercator/dist/esm/fly-to-viewport.js ***!
13410
- \*************************************************************************************************/
13411
- /*! exports provided: default, getFlyToDuration */
13412
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
13413
-
13414
- "use strict";
13415
- __webpack_require__.r(__webpack_exports__);
13416
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return flyToViewport; });
13417
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getFlyToDuration", function() { return getFlyToDuration; });
13418
- /* harmony import */ var _math_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math-utils */ "../../node_modules/@math.gl/web-mercator/dist/esm/math-utils.js");
13419
- /* harmony import */ var _web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./web-mercator-utils */ "../../node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js");
13420
- /* harmony import */ var gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix/vec2 */ "../../node_modules/gl-matrix/esm/vec2.js");
13421
-
13422
-
13423
-
13424
- const EPSILON = 0.01;
13425
- const VIEWPORT_TRANSITION_PROPS = ['longitude', 'latitude', 'zoom'];
13426
- const DEFAULT_OPTS = {
13427
- curve: 1.414,
13428
- speed: 1.2
13429
- };
13430
- function flyToViewport(startProps, endProps, t, opts = {}) {
13431
- const viewport = {};
13432
- const {
13433
- startZoom,
13434
- startCenterXY,
13435
- uDelta,
13436
- w0,
13437
- u1,
13438
- S,
13439
- rho,
13440
- rho2,
13441
- r0
13442
- } = getFlyToTransitionParams(startProps, endProps, opts);
13443
-
13444
- if (u1 < EPSILON) {
13445
- for (const key of VIEWPORT_TRANSITION_PROPS) {
13446
- const startValue = startProps[key];
13447
- const endValue = endProps[key];
13448
- viewport[key] = Object(_math_utils__WEBPACK_IMPORTED_MODULE_0__["lerp"])(startValue, endValue, t);
13449
- }
13450
-
13451
- return viewport;
13452
- }
13453
-
13454
- const s = t * S;
13455
- const w = Math.cosh(r0) / Math.cosh(r0 + rho * s);
13456
- const u = w0 * ((Math.cosh(r0) * Math.tanh(r0 + rho * s) - Math.sinh(r0)) / rho2) / u1;
13457
- const scaleIncrement = 1 / w;
13458
- const newZoom = startZoom + Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__["scaleToZoom"])(scaleIncrement);
13459
- const newCenterWorld = gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_2__["scale"]([], uDelta, u);
13460
- gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_2__["add"](newCenterWorld, newCenterWorld, startCenterXY);
13461
- const newCenter = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__["worldToLngLat"])(newCenterWorld);
13462
- viewport.longitude = newCenter[0];
13463
- viewport.latitude = newCenter[1];
13464
- viewport.zoom = newZoom;
13465
- return viewport;
13466
- }
13467
- function getFlyToDuration(startProps, endProps, opts = {}) {
13468
- opts = Object.assign({}, DEFAULT_OPTS, opts);
13469
- const {
13470
- screenSpeed,
13471
- speed,
13472
- maxDuration
13473
- } = opts;
13474
- const {
13475
- S,
13476
- rho
13477
- } = getFlyToTransitionParams(startProps, endProps, opts);
13478
- const length = 1000 * S;
13479
- let duration;
13480
-
13481
- if (Number.isFinite(screenSpeed)) {
13482
- duration = length / (screenSpeed / rho);
13483
- } else {
13484
- duration = length / speed;
13485
- }
13486
-
13487
- return Number.isFinite(maxDuration) && duration > maxDuration ? 0 : duration;
13488
- }
13489
-
13490
- function getFlyToTransitionParams(startProps, endProps, opts) {
13491
- opts = Object.assign({}, DEFAULT_OPTS, opts);
13492
- const rho = opts.curve;
13493
- const startZoom = startProps.zoom;
13494
- const startCenter = [startProps.longitude, startProps.latitude];
13495
- const startScale = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__["zoomToScale"])(startZoom);
13496
- const endZoom = endProps.zoom;
13497
- const endCenter = [endProps.longitude, endProps.latitude];
13498
- const scale = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__["zoomToScale"])(endZoom - startZoom);
13499
- const startCenterXY = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__["lngLatToWorld"])(startCenter);
13500
- const endCenterXY = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__["lngLatToWorld"])(endCenter);
13501
- const uDelta = gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_2__["sub"]([], endCenterXY, startCenterXY);
13502
- const w0 = Math.max(startProps.width, startProps.height);
13503
- const w1 = w0 / scale;
13504
- const u1 = gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_2__["length"](uDelta) * startScale;
13505
-
13506
- const _u1 = Math.max(u1, EPSILON);
13507
-
13508
- const rho2 = rho * rho;
13509
- const b0 = (w1 * w1 - w0 * w0 + rho2 * rho2 * _u1 * _u1) / (2 * w0 * rho2 * _u1);
13510
- const b1 = (w1 * w1 - w0 * w0 - rho2 * rho2 * _u1 * _u1) / (2 * w1 * rho2 * _u1);
13511
- const r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0);
13512
- const r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);
13513
- const S = (r1 - r0) / rho;
13514
- return {
13515
- startZoom,
13516
- startCenterXY,
13517
- uDelta,
13518
- w0,
13519
- u1,
13520
- S,
13521
- rho,
13522
- rho2,
13523
- r0,
13524
- r1
13525
- };
13526
- }
13527
- //# sourceMappingURL=fly-to-viewport.js.map
13528
-
13529
- /***/ }),
13530
-
13531
- /***/ "../../node_modules/@math.gl/web-mercator/dist/esm/get-bounds.js":
13532
- /*!********************************************************************************************!*\
13533
- !*** /Users/alasarr/dev/deck.gl/node_modules/@math.gl/web-mercator/dist/esm/get-bounds.js ***!
13534
- \********************************************************************************************/
13535
- /*! exports provided: default */
13536
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
13537
-
13538
- "use strict";
13539
- __webpack_require__.r(__webpack_exports__);
13540
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getBounds; });
13541
- /* harmony import */ var _web_mercator_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./web-mercator-utils */ "../../node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js");
13542
- /* harmony import */ var gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! gl-matrix/vec2 */ "../../node_modules/gl-matrix/esm/vec2.js");
13543
- /* harmony import */ var _math_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math-utils */ "../../node_modules/@math.gl/web-mercator/dist/esm/math-utils.js");
13544
-
13545
-
13546
-
13547
- const DEGREES_TO_RADIANS = Math.PI / 180;
13548
- function getBounds(viewport, z = 0) {
13549
- const {
13550
- width,
13551
- height,
13552
- unproject
13553
- } = viewport;
13554
- const unprojectOps = {
13555
- targetZ: z
13556
- };
13557
- const bottomLeft = unproject([0, height], unprojectOps);
13558
- const bottomRight = unproject([width, height], unprojectOps);
13559
- let topLeft;
13560
- let topRight;
13561
- const halfFov = viewport.fovy ? 0.5 * viewport.fovy * DEGREES_TO_RADIANS : Math.atan(0.5 / viewport.altitude);
13562
- const angleToGround = (90 - viewport.pitch) * DEGREES_TO_RADIANS;
13563
-
13564
- if (halfFov > angleToGround - 0.01) {
13565
- topLeft = unprojectOnFarPlane(viewport, 0, z);
13566
- topRight = unprojectOnFarPlane(viewport, width, z);
13567
- } else {
13568
- topLeft = unproject([0, 0], unprojectOps);
13569
- topRight = unproject([width, 0], unprojectOps);
13570
- }
13571
-
13572
- return [bottomLeft, bottomRight, topRight, topLeft];
13573
- }
13574
-
13575
- function unprojectOnFarPlane(viewport, x, targetZ) {
13576
- const {
13577
- pixelUnprojectionMatrix
13578
- } = viewport;
13579
- const coord0 = Object(_math_utils__WEBPACK_IMPORTED_MODULE_2__["transformVector"])(pixelUnprojectionMatrix, [x, 0, 1, 1]);
13580
- const coord1 = Object(_math_utils__WEBPACK_IMPORTED_MODULE_2__["transformVector"])(pixelUnprojectionMatrix, [x, viewport.height, 1, 1]);
13581
- const z = targetZ * viewport.distanceScales.unitsPerMeter[2];
13582
- const t = (z - coord0[2]) / (coord1[2] - coord0[2]);
13583
- const coord = gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_1__["lerp"]([], coord0, coord1, t);
13584
- const result = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_0__["worldToLngLat"])(coord);
13585
- result[2] = targetZ;
13586
- return result;
13587
- }
13588
- //# sourceMappingURL=get-bounds.js.map
13589
-
13590
- /***/ }),
13591
-
13592
- /***/ "../../node_modules/@math.gl/web-mercator/dist/esm/index.js":
13593
- /*!***************************************************************************************!*\
13594
- !*** /Users/alasarr/dev/deck.gl/node_modules/@math.gl/web-mercator/dist/esm/index.js ***!
13595
- \***************************************************************************************/
13596
- /*! exports provided: default, WebMercatorViewport, getBounds, fitBounds, normalizeViewportProps, flyToViewport, getFlyToDuration, lngLatToWorld, worldToLngLat, worldToPixels, pixelsToWorld, zoomToScale, scaleToZoom, altitudeToFovy, fovyToAltitude, getMeterZoom, getDistanceScales, addMetersToLngLat, getViewMatrix, getProjectionMatrix, getProjectionParameters */
13597
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
13598
-
13599
- "use strict";
13600
- __webpack_require__.r(__webpack_exports__);
13601
- /* harmony import */ var _web_mercator_viewport__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./web-mercator-viewport */ "../../node_modules/@math.gl/web-mercator/dist/esm/web-mercator-viewport.js");
13602
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _web_mercator_viewport__WEBPACK_IMPORTED_MODULE_0__["default"]; });
13603
-
13604
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "WebMercatorViewport", function() { return _web_mercator_viewport__WEBPACK_IMPORTED_MODULE_0__["default"]; });
13605
-
13606
- /* harmony import */ var _get_bounds__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./get-bounds */ "../../node_modules/@math.gl/web-mercator/dist/esm/get-bounds.js");
13607
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getBounds", function() { return _get_bounds__WEBPACK_IMPORTED_MODULE_1__["default"]; });
13608
-
13609
- /* harmony import */ var _fit_bounds__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fit-bounds */ "../../node_modules/@math.gl/web-mercator/dist/esm/fit-bounds.js");
13610
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fitBounds", function() { return _fit_bounds__WEBPACK_IMPORTED_MODULE_2__["default"]; });
13611
-
13612
- /* harmony import */ var _normalize_viewport_props__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./normalize-viewport-props */ "../../node_modules/@math.gl/web-mercator/dist/esm/normalize-viewport-props.js");
13613
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "normalizeViewportProps", function() { return _normalize_viewport_props__WEBPACK_IMPORTED_MODULE_3__["default"]; });
13614
-
13615
- /* harmony import */ var _fly_to_viewport__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./fly-to-viewport */ "../../node_modules/@math.gl/web-mercator/dist/esm/fly-to-viewport.js");
13616
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "flyToViewport", function() { return _fly_to_viewport__WEBPACK_IMPORTED_MODULE_4__["default"]; });
13617
-
13618
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getFlyToDuration", function() { return _fly_to_viewport__WEBPACK_IMPORTED_MODULE_4__["getFlyToDuration"]; });
13619
-
13620
- /* harmony import */ var _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./web-mercator-utils */ "../../node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js");
13621
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lngLatToWorld", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__["lngLatToWorld"]; });
13622
-
13623
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "worldToLngLat", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__["worldToLngLat"]; });
13624
-
13625
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "worldToPixels", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__["worldToPixels"]; });
13626
-
13627
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pixelsToWorld", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__["pixelsToWorld"]; });
13628
-
13629
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zoomToScale", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__["zoomToScale"]; });
13630
-
13631
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scaleToZoom", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__["scaleToZoom"]; });
13632
-
13633
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "altitudeToFovy", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__["altitudeToFovy"]; });
13634
-
13635
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fovyToAltitude", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__["fovyToAltitude"]; });
13636
-
13637
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getMeterZoom", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__["getMeterZoom"]; });
13638
-
13639
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getDistanceScales", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__["getDistanceScales"]; });
13640
-
13641
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "addMetersToLngLat", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__["addMetersToLngLat"]; });
13642
-
13643
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getViewMatrix", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__["getViewMatrix"]; });
13644
-
13645
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getProjectionMatrix", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__["getProjectionMatrix"]; });
13646
-
13647
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getProjectionParameters", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__["getProjectionParameters"]; });
13648
-
13649
-
13650
-
13651
-
13652
-
13653
-
13654
-
13655
-
13656
- //# sourceMappingURL=index.js.map
13657
-
13658
- /***/ }),
13659
-
13660
- /***/ "../../node_modules/@math.gl/web-mercator/dist/esm/math-utils.js":
13661
- /*!********************************************************************************************!*\
13662
- !*** /Users/alasarr/dev/deck.gl/node_modules/@math.gl/web-mercator/dist/esm/math-utils.js ***!
13663
- \********************************************************************************************/
13664
- /*! exports provided: createMat4, transformVector, mod, lerp, log2 */
13665
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
13666
-
13667
- "use strict";
13668
- __webpack_require__.r(__webpack_exports__);
13669
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createMat4", function() { return createMat4; });
13670
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "transformVector", function() { return transformVector; });
13671
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mod", function() { return mod; });
13672
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "lerp", function() { return lerp; });
13673
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "log2", function() { return log2; });
13674
- /* harmony import */ var gl_matrix_vec4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! gl-matrix/vec4 */ "../../node_modules/gl-matrix/esm/vec4.js");
13675
-
13676
- function createMat4() {
13677
- return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
13678
- }
13679
- function transformVector(matrix, vector) {
13680
- const result = gl_matrix_vec4__WEBPACK_IMPORTED_MODULE_0__["transformMat4"]([], vector, matrix);
13681
- gl_matrix_vec4__WEBPACK_IMPORTED_MODULE_0__["scale"](result, result, 1 / result[3]);
13682
- return result;
13683
- }
13684
- function mod(value, divisor) {
13685
- const modulus = value % divisor;
13686
- return modulus < 0 ? divisor + modulus : modulus;
13687
- }
13688
- function lerp(start, end, step) {
13689
- return step * end + (1 - step) * start;
13690
- }
13691
-
13692
- function ieLog2(x) {
13693
- return Math.log(x) * Math.LOG2E;
13694
- }
13695
-
13696
- const log2 = Math.log2 || ieLog2;
13697
- //# sourceMappingURL=math-utils.js.map
13698
-
13699
- /***/ }),
13700
-
13701
- /***/ "../../node_modules/@math.gl/web-mercator/dist/esm/normalize-viewport-props.js":
13702
- /*!**********************************************************************************************************!*\
13703
- !*** /Users/alasarr/dev/deck.gl/node_modules/@math.gl/web-mercator/dist/esm/normalize-viewport-props.js ***!
13704
- \**********************************************************************************************************/
13705
- /*! exports provided: default */
13706
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
13707
-
13708
- "use strict";
13709
- __webpack_require__.r(__webpack_exports__);
13710
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return normalizeViewportProps; });
13711
- /* harmony import */ var _web_mercator_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./web-mercator-utils */ "../../node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js");
13712
- /* harmony import */ var _math_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math-utils */ "../../node_modules/@math.gl/web-mercator/dist/esm/math-utils.js");
13713
-
13714
-
13715
- const TILE_SIZE = 512;
13716
- function normalizeViewportProps({
13717
- width,
13718
- height,
13719
- longitude,
13720
- latitude,
13721
- zoom,
13722
- pitch = 0,
13723
- bearing = 0
13724
- }) {
13725
- if (longitude < -180 || longitude > 180) {
13726
- longitude = Object(_math_utils__WEBPACK_IMPORTED_MODULE_1__["mod"])(longitude + 180, 360) - 180;
13727
- }
13728
-
13729
- if (bearing < -180 || bearing > 180) {
13730
- bearing = Object(_math_utils__WEBPACK_IMPORTED_MODULE_1__["mod"])(bearing + 180, 360) - 180;
13731
- }
13732
-
13733
- const minZoom = Object(_math_utils__WEBPACK_IMPORTED_MODULE_1__["log2"])(height / TILE_SIZE);
13734
-
13735
- if (zoom <= minZoom) {
13736
- zoom = minZoom;
13737
- latitude = 0;
13738
- } else {
13739
- const halfHeightPixels = height / 2 / Math.pow(2, zoom);
13740
- const minLatitude = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_0__["worldToLngLat"])([0, halfHeightPixels])[1];
13741
-
13742
- if (latitude < minLatitude) {
13743
- latitude = minLatitude;
13744
- } else {
13745
- const maxLatitude = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_0__["worldToLngLat"])([0, TILE_SIZE - halfHeightPixels])[1];
13746
-
13747
- if (latitude > maxLatitude) {
13748
- latitude = maxLatitude;
13749
- }
13750
- }
13751
- }
13752
-
13753
- return {
13754
- width,
13755
- height,
13756
- longitude,
13757
- latitude,
13758
- zoom,
13759
- pitch,
13760
- bearing
13761
- };
13762
- }
13763
- //# sourceMappingURL=normalize-viewport-props.js.map
13764
-
13765
- /***/ }),
13766
-
13767
- /***/ "../../node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js":
13768
- /*!****************************************************************************************************!*\
13769
- !*** /Users/alasarr/dev/deck.gl/node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js ***!
13770
- \****************************************************************************************************/
13771
- /*! exports provided: DEFAULT_ALTITUDE, zoomToScale, scaleToZoom, lngLatToWorld, worldToLngLat, getMeterZoom, getDistanceScales, addMetersToLngLat, getViewMatrix, getProjectionParameters, getProjectionMatrix, altitudeToFovy, fovyToAltitude, worldToPixels, pixelsToWorld */
13772
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
13773
-
13774
- "use strict";
13775
- __webpack_require__.r(__webpack_exports__);
13776
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DEFAULT_ALTITUDE", function() { return DEFAULT_ALTITUDE; });
13777
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "zoomToScale", function() { return zoomToScale; });
13778
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scaleToZoom", function() { return scaleToZoom; });
13779
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "lngLatToWorld", function() { return lngLatToWorld; });
13780
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "worldToLngLat", function() { return worldToLngLat; });
13781
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getMeterZoom", function() { return getMeterZoom; });
13782
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getDistanceScales", function() { return getDistanceScales; });
13783
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addMetersToLngLat", function() { return addMetersToLngLat; });
13784
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getViewMatrix", function() { return getViewMatrix; });
13785
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getProjectionParameters", function() { return getProjectionParameters; });
13786
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getProjectionMatrix", function() { return getProjectionMatrix; });
13787
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "altitudeToFovy", function() { return altitudeToFovy; });
13788
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fovyToAltitude", function() { return fovyToAltitude; });
13789
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "worldToPixels", function() { return worldToPixels; });
13790
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pixelsToWorld", function() { return pixelsToWorld; });
13791
- /* harmony import */ var _math_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math-utils */ "../../node_modules/@math.gl/web-mercator/dist/esm/math-utils.js");
13792
- /* harmony import */ var gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! gl-matrix/mat4 */ "../../node_modules/gl-matrix/esm/mat4.js");
13793
- /* harmony import */ var gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix/vec2 */ "../../node_modules/gl-matrix/esm/vec2.js");
13794
- /* harmony import */ var gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! gl-matrix/vec3 */ "../../node_modules/gl-matrix/esm/vec3.js");
13795
- /* harmony import */ var _assert__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./assert */ "../../node_modules/@math.gl/web-mercator/dist/esm/assert.js");
13796
-
13797
-
13798
-
13799
-
13800
-
13801
- const PI = Math.PI;
13802
- const PI_4 = PI / 4;
13803
- const DEGREES_TO_RADIANS = PI / 180;
13804
- const RADIANS_TO_DEGREES = 180 / PI;
13805
- const TILE_SIZE = 512;
13806
- const EARTH_CIRCUMFERENCE = 40.03e6;
13807
- const DEFAULT_ALTITUDE = 1.5;
13808
- function zoomToScale(zoom) {
13809
- return Math.pow(2, zoom);
13810
- }
13811
- function scaleToZoom(scale) {
13812
- return Object(_math_utils__WEBPACK_IMPORTED_MODULE_0__["log2"])(scale);
13813
- }
13814
- function lngLatToWorld([lng, lat]) {
13815
- Object(_assert__WEBPACK_IMPORTED_MODULE_4__["default"])(Number.isFinite(lng));
13816
- Object(_assert__WEBPACK_IMPORTED_MODULE_4__["default"])(Number.isFinite(lat) && lat >= -90 && lat <= 90, 'invalid latitude');
13817
- const lambda2 = lng * DEGREES_TO_RADIANS;
13818
- const phi2 = lat * DEGREES_TO_RADIANS;
13819
- const x = TILE_SIZE * (lambda2 + PI) / (2 * PI);
13820
- const y = TILE_SIZE * (PI + Math.log(Math.tan(PI_4 + phi2 * 0.5))) / (2 * PI);
13821
- return [x, y];
13822
- }
13823
- function worldToLngLat([x, y]) {
13824
- const lambda2 = x / TILE_SIZE * (2 * PI) - PI;
13825
- const phi2 = 2 * (Math.atan(Math.exp(y / TILE_SIZE * (2 * PI) - PI)) - PI_4);
13826
- return [lambda2 * RADIANS_TO_DEGREES, phi2 * RADIANS_TO_DEGREES];
13827
- }
13828
- function getMeterZoom({
13829
- latitude
13830
- }) {
13831
- Object(_assert__WEBPACK_IMPORTED_MODULE_4__["default"])(Number.isFinite(latitude));
13832
- const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);
13833
- return scaleToZoom(EARTH_CIRCUMFERENCE * latCosine) - 9;
13834
- }
13835
- function getDistanceScales({
13836
- latitude,
13837
- longitude,
13838
- highPrecision = false
13839
- }) {
13840
- Object(_assert__WEBPACK_IMPORTED_MODULE_4__["default"])(Number.isFinite(latitude) && Number.isFinite(longitude));
13841
- const result = {};
13842
- const worldSize = TILE_SIZE;
13843
- const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);
13844
- const unitsPerDegreeX = worldSize / 360;
13845
- const unitsPerDegreeY = unitsPerDegreeX / latCosine;
13846
- const altUnitsPerMeter = worldSize / EARTH_CIRCUMFERENCE / latCosine;
13847
- result.unitsPerMeter = [altUnitsPerMeter, altUnitsPerMeter, altUnitsPerMeter];
13848
- result.metersPerUnit = [1 / altUnitsPerMeter, 1 / altUnitsPerMeter, 1 / altUnitsPerMeter];
13849
- result.unitsPerDegree = [unitsPerDegreeX, unitsPerDegreeY, altUnitsPerMeter];
13850
- result.degreesPerUnit = [1 / unitsPerDegreeX, 1 / unitsPerDegreeY, 1 / altUnitsPerMeter];
13851
-
13852
- if (highPrecision) {
13853
- const latCosine2 = DEGREES_TO_RADIANS * Math.tan(latitude * DEGREES_TO_RADIANS) / latCosine;
13854
- const unitsPerDegreeY2 = unitsPerDegreeX * latCosine2 / 2;
13855
- const altUnitsPerDegree2 = worldSize / EARTH_CIRCUMFERENCE * latCosine2;
13856
- const altUnitsPerMeter2 = altUnitsPerDegree2 / unitsPerDegreeY * altUnitsPerMeter;
13857
- result.unitsPerDegree2 = [0, unitsPerDegreeY2, altUnitsPerDegree2];
13858
- result.unitsPerMeter2 = [altUnitsPerMeter2, 0, altUnitsPerMeter2];
13859
- }
13860
-
13861
- return result;
13862
- }
13863
- function addMetersToLngLat(lngLatZ, xyz) {
13864
- const [longitude, latitude, z0] = lngLatZ;
13865
- const [x, y, z] = xyz;
13866
- const {
13867
- unitsPerMeter,
13868
- unitsPerMeter2
13869
- } = getDistanceScales({
13870
- longitude,
13871
- latitude,
13872
- highPrecision: true
13873
- });
13874
- const worldspace = lngLatToWorld(lngLatZ);
13875
- worldspace[0] += x * (unitsPerMeter[0] + unitsPerMeter2[0] * y);
13876
- worldspace[1] += y * (unitsPerMeter[1] + unitsPerMeter2[1] * y);
13877
- const newLngLat = worldToLngLat(worldspace);
13878
- const newZ = (z0 || 0) + (z || 0);
13879
- return Number.isFinite(z0) || Number.isFinite(z) ? [newLngLat[0], newLngLat[1], newZ] : newLngLat;
13880
- }
13881
- function getViewMatrix({
13882
- height,
13883
- pitch,
13884
- bearing,
13885
- altitude,
13886
- scale,
13887
- center = null
13888
- }) {
13889
- const vm = Object(_math_utils__WEBPACK_IMPORTED_MODULE_0__["createMat4"])();
13890
- gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__["translate"](vm, vm, [0, 0, -altitude]);
13891
- gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__["rotateX"](vm, vm, -pitch * DEGREES_TO_RADIANS);
13892
- gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__["rotateZ"](vm, vm, bearing * DEGREES_TO_RADIANS);
13893
- scale /= height;
13894
- gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__["scale"](vm, vm, [scale, scale, scale]);
13895
-
13896
- if (center) {
13897
- gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__["translate"](vm, vm, gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_3__["negate"]([], center));
13898
- }
13899
-
13900
- return vm;
13901
- }
13902
- function getProjectionParameters({
13903
- width,
13904
- height,
13905
- fovy = altitudeToFovy(DEFAULT_ALTITUDE),
13906
- altitude,
13907
- pitch = 0,
13908
- nearZMultiplier = 1,
13909
- farZMultiplier = 1
13910
- }) {
13911
- if (altitude !== undefined) {
13912
- fovy = altitudeToFovy(altitude);
13913
- }
13914
-
13915
- const halfFov = 0.5 * fovy * DEGREES_TO_RADIANS;
13916
- const focalDistance = fovyToAltitude(fovy);
13917
- const pitchRadians = pitch * DEGREES_TO_RADIANS;
13918
- const topHalfSurfaceDistance = Math.sin(halfFov) * focalDistance / Math.sin(Math.min(Math.max(Math.PI / 2 - pitchRadians - halfFov, 0.01), Math.PI - 0.01));
13919
- const farZ = Math.sin(pitchRadians) * topHalfSurfaceDistance + focalDistance;
13920
- return {
13921
- fov: 2 * halfFov,
13922
- aspect: width / height,
13923
- focalDistance,
13924
- near: nearZMultiplier,
13925
- far: farZ * farZMultiplier
13926
- };
13927
- }
13928
- function getProjectionMatrix({
13929
- width,
13930
- height,
13931
- pitch,
13932
- altitude,
13933
- fovy,
13934
- nearZMultiplier,
13935
- farZMultiplier
13936
- }) {
13937
- const {
13938
- fov,
13939
- aspect,
13940
- near,
13941
- far
13942
- } = getProjectionParameters({
13943
- width,
13944
- height,
13945
- altitude,
13946
- fovy,
13947
- pitch,
13948
- nearZMultiplier,
13949
- farZMultiplier
13950
- });
13951
- const projectionMatrix = gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__["perspective"]([], fov, aspect, near, far);
13952
- return projectionMatrix;
13953
- }
13954
- function altitudeToFovy(altitude) {
13955
- return 2 * Math.atan(0.5 / altitude) * RADIANS_TO_DEGREES;
13956
- }
13957
- function fovyToAltitude(fovy) {
13958
- return 0.5 / Math.tan(0.5 * fovy * DEGREES_TO_RADIANS);
13959
- }
13960
- function worldToPixels(xyz, pixelProjectionMatrix) {
13961
- const [x, y, z = 0] = xyz;
13962
- Object(_assert__WEBPACK_IMPORTED_MODULE_4__["default"])(Number.isFinite(x) && Number.isFinite(y) && Number.isFinite(z));
13963
- return Object(_math_utils__WEBPACK_IMPORTED_MODULE_0__["transformVector"])(pixelProjectionMatrix, [x, y, z, 1]);
13964
- }
13965
- function pixelsToWorld(xyz, pixelUnprojectionMatrix, targetZ = 0) {
13966
- const [x, y, z] = xyz;
13967
- Object(_assert__WEBPACK_IMPORTED_MODULE_4__["default"])(Number.isFinite(x) && Number.isFinite(y), 'invalid pixel coordinate');
13968
-
13969
- if (Number.isFinite(z)) {
13970
- const coord = Object(_math_utils__WEBPACK_IMPORTED_MODULE_0__["transformVector"])(pixelUnprojectionMatrix, [x, y, z, 1]);
13971
- return coord;
13972
- }
13973
-
13974
- const coord0 = Object(_math_utils__WEBPACK_IMPORTED_MODULE_0__["transformVector"])(pixelUnprojectionMatrix, [x, y, 0, 1]);
13975
- const coord1 = Object(_math_utils__WEBPACK_IMPORTED_MODULE_0__["transformVector"])(pixelUnprojectionMatrix, [x, y, 1, 1]);
13976
- const z0 = coord0[2];
13977
- const z1 = coord1[2];
13978
- const t = z0 === z1 ? 0 : ((targetZ || 0) - z0) / (z1 - z0);
13979
- return gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_2__["lerp"]([], coord0, coord1, t);
13980
- }
13981
- //# sourceMappingURL=web-mercator-utils.js.map
13982
-
13983
- /***/ }),
13984
-
13985
- /***/ "../../node_modules/@math.gl/web-mercator/dist/esm/web-mercator-viewport.js":
13986
- /*!*******************************************************************************************************!*\
13987
- !*** /Users/alasarr/dev/deck.gl/node_modules/@math.gl/web-mercator/dist/esm/web-mercator-viewport.js ***!
13988
- \*******************************************************************************************************/
13989
- /*! exports provided: default */
13990
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
13991
-
13992
- "use strict";
13993
- __webpack_require__.r(__webpack_exports__);
13994
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return WebMercatorViewport; });
13995
- /* harmony import */ var _math_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math-utils */ "../../node_modules/@math.gl/web-mercator/dist/esm/math-utils.js");
13996
- /* harmony import */ var _web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./web-mercator-utils */ "../../node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js");
13997
- /* harmony import */ var _fit_bounds__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fit-bounds */ "../../node_modules/@math.gl/web-mercator/dist/esm/fit-bounds.js");
13998
- /* harmony import */ var _get_bounds__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./get-bounds */ "../../node_modules/@math.gl/web-mercator/dist/esm/get-bounds.js");
13999
- /* harmony import */ var gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! gl-matrix/mat4 */ "../../node_modules/gl-matrix/esm/mat4.js");
14000
- /* harmony import */ var gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! gl-matrix/vec2 */ "../../node_modules/gl-matrix/esm/vec2.js");
14001
- /* harmony import */ var gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! gl-matrix/vec3 */ "../../node_modules/gl-matrix/esm/vec3.js");
14002
-
14003
-
14004
-
14005
-
14006
-
14007
-
14008
-
14009
- class WebMercatorViewport {
14010
- constructor({
14011
- width,
14012
- height,
14013
- latitude = 0,
14014
- longitude = 0,
14015
- zoom = 0,
14016
- pitch = 0,
14017
- bearing = 0,
14018
- altitude = null,
14019
- fovy = null,
14020
- position = null,
14021
- nearZMultiplier = 0.02,
14022
- farZMultiplier = 1.01
14023
- } = {
14024
- width: 1,
14025
- height: 1
14026
- }) {
14027
- width = width || 1;
14028
- height = height || 1;
14029
-
14030
- if (fovy === null && altitude === null) {
14031
- altitude = _web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__["DEFAULT_ALTITUDE"];
14032
- fovy = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__["altitudeToFovy"])(altitude);
14033
- } else if (fovy === null) {
14034
- fovy = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__["altitudeToFovy"])(altitude);
14035
- } else if (altitude === null) {
14036
- altitude = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__["fovyToAltitude"])(fovy);
14037
- }
14038
-
14039
- const scale = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__["zoomToScale"])(zoom);
14040
- altitude = Math.max(0.75, altitude);
14041
- const distanceScales = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__["getDistanceScales"])({
14042
- longitude,
14043
- latitude
14044
- });
14045
- const center = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__["lngLatToWorld"])([longitude, latitude]);
14046
- center[2] = 0;
14047
-
14048
- if (position) {
14049
- gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_6__["add"](center, center, gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_6__["mul"]([], position, distanceScales.unitsPerMeter));
14050
- }
14051
-
14052
- this.projectionMatrix = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__["getProjectionMatrix"])({
14053
- width,
14054
- height,
14055
- pitch,
14056
- fovy,
14057
- nearZMultiplier,
14058
- farZMultiplier
14059
- });
14060
- this.viewMatrix = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__["getViewMatrix"])({
14061
- height,
14062
- scale,
14063
- center,
14064
- pitch,
14065
- bearing,
14066
- altitude
14067
- });
14068
- this.width = width;
14069
- this.height = height;
14070
- this.scale = scale;
14071
- this.latitude = latitude;
14072
- this.longitude = longitude;
14073
- this.zoom = zoom;
14074
- this.pitch = pitch;
14075
- this.bearing = bearing;
14076
- this.altitude = altitude;
14077
- this.fovy = fovy;
14078
- this.center = center;
14079
- this.meterOffset = position || [0, 0, 0];
14080
- this.distanceScales = distanceScales;
14081
-
14082
- this._initMatrices();
14083
-
14084
- this.equals = this.equals.bind(this);
14085
- this.project = this.project.bind(this);
14086
- this.unproject = this.unproject.bind(this);
14087
- this.projectPosition = this.projectPosition.bind(this);
14088
- this.unprojectPosition = this.unprojectPosition.bind(this);
14089
- Object.freeze(this);
14090
- }
14091
-
14092
- _initMatrices() {
14093
- const {
14094
- width,
14095
- height,
14096
- projectionMatrix,
14097
- viewMatrix
14098
- } = this;
14099
- const vpm = Object(_math_utils__WEBPACK_IMPORTED_MODULE_0__["createMat4"])();
14100
- gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_4__["multiply"](vpm, vpm, projectionMatrix);
14101
- gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_4__["multiply"](vpm, vpm, viewMatrix);
14102
- this.viewProjectionMatrix = vpm;
14103
- const m = Object(_math_utils__WEBPACK_IMPORTED_MODULE_0__["createMat4"])();
14104
- gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_4__["scale"](m, m, [width / 2, -height / 2, 1]);
14105
- gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_4__["translate"](m, m, [1, -1, 0]);
14106
- gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_4__["multiply"](m, m, vpm);
14107
- const mInverse = gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_4__["invert"](Object(_math_utils__WEBPACK_IMPORTED_MODULE_0__["createMat4"])(), m);
14108
-
14109
- if (!mInverse) {
14110
- throw new Error('Pixel project matrix not invertible');
14111
- }
14112
-
14113
- this.pixelProjectionMatrix = m;
14114
- this.pixelUnprojectionMatrix = mInverse;
14115
- }
14116
-
14117
- equals(viewport) {
14118
- if (!(viewport instanceof WebMercatorViewport)) {
14119
- return false;
14120
- }
14121
-
14122
- return viewport.width === this.width && viewport.height === this.height && gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_4__["equals"](viewport.projectionMatrix, this.projectionMatrix) && gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_4__["equals"](viewport.viewMatrix, this.viewMatrix);
14123
- }
14124
-
14125
- project(xyz, {
14126
- topLeft = true
14127
- } = {}) {
14128
- const worldPosition = this.projectPosition(xyz);
14129
- const coord = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__["worldToPixels"])(worldPosition, this.pixelProjectionMatrix);
14130
- const [x, y] = coord;
14131
- const y2 = topLeft ? y : this.height - y;
14132
- return xyz.length === 2 ? [x, y2] : [x, y2, coord[2]];
14133
- }
14134
-
14135
- unproject(xyz, {
14136
- topLeft = true,
14137
- targetZ = undefined
14138
- } = {}) {
14139
- const [x, y, z] = xyz;
14140
- const y2 = topLeft ? y : this.height - y;
14141
- const targetZWorld = targetZ && targetZ * this.distanceScales.unitsPerMeter[2];
14142
- const coord = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__["pixelsToWorld"])([x, y2, z], this.pixelUnprojectionMatrix, targetZWorld);
14143
- const [X, Y, Z] = this.unprojectPosition(coord);
14144
-
14145
- if (Number.isFinite(z)) {
14146
- return [X, Y, Z];
14147
- }
14148
-
14149
- return Number.isFinite(targetZ) ? [X, Y, targetZ] : [X, Y];
14150
- }
14151
-
14152
- projectPosition(xyz) {
14153
- const [X, Y] = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__["lngLatToWorld"])(xyz);
14154
- const Z = (xyz[2] || 0) * this.distanceScales.unitsPerMeter[2];
14155
- return [X, Y, Z];
14156
- }
14157
-
14158
- unprojectPosition(xyz) {
14159
- const [X, Y] = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__["worldToLngLat"])(xyz);
14160
- const Z = (xyz[2] || 0) * this.distanceScales.metersPerUnit[2];
14161
- return [X, Y, Z];
14162
- }
14163
-
14164
- projectFlat(lngLat) {
14165
- return Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__["lngLatToWorld"])(lngLat);
14166
- }
14167
-
14168
- unprojectFlat(xy) {
14169
- return Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__["worldToLngLat"])(xy);
14170
- }
14171
-
14172
- getMapCenterByLngLatPosition({
14173
- lngLat,
14174
- pos
14175
- }) {
14176
- const fromLocation = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__["pixelsToWorld"])(pos, this.pixelUnprojectionMatrix);
14177
- const toLocation = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__["lngLatToWorld"])(lngLat);
14178
- const translate = gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_5__["add"]([], toLocation, gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_5__["negate"]([], fromLocation));
14179
- const newCenter = gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_5__["add"]([], this.center, translate);
14180
- return Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__["worldToLngLat"])(newCenter);
14181
- }
14182
-
14183
- getLocationAtPoint({
14184
- lngLat,
14185
- pos
14186
- }) {
14187
- return this.getMapCenterByLngLatPosition({
14188
- lngLat,
14189
- pos
14190
- });
14191
- }
14192
-
14193
- fitBounds(bounds, options = {}) {
14194
- const {
14195
- width,
14196
- height
14197
- } = this;
14198
- const {
14199
- longitude,
14200
- latitude,
14201
- zoom
14202
- } = Object(_fit_bounds__WEBPACK_IMPORTED_MODULE_2__["default"])(Object.assign({
14203
- width,
14204
- height,
14205
- bounds
14206
- }, options));
14207
- return new WebMercatorViewport({
14208
- width,
14209
- height,
14210
- longitude,
14211
- latitude,
14212
- zoom
14213
- });
14214
- }
14215
-
14216
- getBounds(options) {
14217
- const corners = this.getBoundingRegion(options);
14218
- const west = Math.min(...corners.map(p => p[0]));
14219
- const east = Math.max(...corners.map(p => p[0]));
14220
- const south = Math.min(...corners.map(p => p[1]));
14221
- const north = Math.max(...corners.map(p => p[1]));
14222
- return [[west, south], [east, north]];
14223
- }
14224
-
14225
- getBoundingRegion(options = {}) {
14226
- return Object(_get_bounds__WEBPACK_IMPORTED_MODULE_3__["default"])(this, options.z || 0);
14227
- }
14228
-
14229
- }
14230
- //# sourceMappingURL=web-mercator-viewport.js.map
14231
-
14232
- /***/ }),
14233
-
14234
11904
  /***/ "../../node_modules/cartocolor/cartocolor.js":
14235
11905
  /*!************************************************************************!*\
14236
11906
  !*** /Users/alasarr/dev/deck.gl/node_modules/cartocolor/cartocolor.js ***!
@@ -54261,450 +51931,6 @@ attribute float instanceOffsets;
54261
51931
 
54262
51932
  /***/ }),
54263
51933
 
54264
- /***/ "../geo-layers/src/tile-layer/tile-2d-traversal.js":
54265
- /*!*********************************************************!*\
54266
- !*** ../geo-layers/src/tile-layer/tile-2d-traversal.js ***!
54267
- \*********************************************************/
54268
- /*! exports provided: getOSMTileIndices */
54269
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
54270
-
54271
- "use strict";
54272
- __webpack_require__.r(__webpack_exports__);
54273
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getOSMTileIndices", function() { return getOSMTileIndices; });
54274
- /* harmony import */ var _math_gl_culling__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @math.gl/culling */ "../../node_modules/@math.gl/culling/dist/esm/index.js");
54275
- /* harmony import */ var _math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @math.gl/web-mercator */ "../../node_modules/@math.gl/web-mercator/dist/esm/index.js");
54276
- /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ "../geo-layers/src/tile-layer/utils.js");
54277
- /* eslint-disable complexity */
54278
-
54279
-
54280
-
54281
- const TILE_SIZE = 512; // number of world copies to check
54282
-
54283
- const MAX_MAPS = 3; // for calculating bounding volume of a tile in a non-web-mercator viewport
54284
-
54285
- const REF_POINTS_5 = [[0.5, 0.5], [0, 0], [0, 1], [1, 0], [1, 1]]; // 4 corners and center
54286
-
54287
- const REF_POINTS_9 = REF_POINTS_5.concat([[0, 0.5], [0.5, 0], [1, 0.5], [0.5, 1]]); // 4 corners, center and 4 mid points
54288
-
54289
- const REF_POINTS_11 = REF_POINTS_9.concat([[0.25, 0.5], [0.75, 0.5]]); // 2 additional points on equator for top tile
54290
-
54291
- class OSMNode {
54292
- constructor(x, y, z) {
54293
- this.x = x;
54294
- this.y = y;
54295
- this.z = z;
54296
- }
54297
-
54298
- get children() {
54299
- if (!this._children) {
54300
- const x = this.x * 2;
54301
- const y = this.y * 2;
54302
- const z = this.z + 1;
54303
- this._children = [new OSMNode(x, y, z), new OSMNode(x, y + 1, z), new OSMNode(x + 1, y, z), new OSMNode(x + 1, y + 1, z)];
54304
- }
54305
-
54306
- return this._children;
54307
- }
54308
-
54309
- update(params) {
54310
- const {
54311
- viewport,
54312
- cullingVolume,
54313
- elevationBounds,
54314
- minZ,
54315
- maxZ,
54316
- bounds,
54317
- offset,
54318
- project
54319
- } = params;
54320
- const boundingVolume = this.getBoundingVolume(elevationBounds, offset, project); // First, check if this tile is visible
54321
-
54322
- if (bounds && !this.insideBounds(bounds)) {
54323
- return false;
54324
- }
54325
-
54326
- const isInside = cullingVolume.computeVisibility(boundingVolume);
54327
-
54328
- if (isInside < 0) {
54329
- return false;
54330
- } // Avoid loading overlapping tiles - if a descendant is requested, do not request the ancester
54331
-
54332
-
54333
- if (!this.childVisible) {
54334
- let {
54335
- z
54336
- } = this;
54337
-
54338
- if (z < maxZ && z >= minZ) {
54339
- // Adjust LOD
54340
- // If the tile is far enough from the camera, accept a lower zoom level
54341
- const distance = boundingVolume.distanceTo(viewport.cameraPosition) * viewport.scale / viewport.height;
54342
- z += Math.floor(Math.log2(distance));
54343
- }
54344
-
54345
- if (z >= maxZ) {
54346
- // LOD is acceptable
54347
- this.selected = true;
54348
- return true;
54349
- }
54350
- } // LOD is not enough, recursively test child tiles
54351
-
54352
-
54353
- this.selected = false;
54354
- this.childVisible = true;
54355
-
54356
- for (const child of this.children) {
54357
- child.update(params);
54358
- }
54359
-
54360
- return true;
54361
- }
54362
-
54363
- getSelected(result = []) {
54364
- if (this.selected) {
54365
- result.push(this);
54366
- }
54367
-
54368
- if (this._children) {
54369
- for (const node of this._children) {
54370
- node.getSelected(result);
54371
- }
54372
- }
54373
-
54374
- return result;
54375
- }
54376
-
54377
- insideBounds([minX, minY, maxX, maxY]) {
54378
- const scale = Math.pow(2, this.z);
54379
- const extent = TILE_SIZE / scale;
54380
- return this.x * extent < maxX && this.y * extent < maxY && (this.x + 1) * extent > minX && (this.y + 1) * extent > minY;
54381
- }
54382
-
54383
- getBoundingVolume(zRange, worldOffset, project) {
54384
- if (project) {
54385
- // Custom projection
54386
- // Estimate bounding box from sample points
54387
- // At low zoom level we need more samples to calculate the bounding volume correctly
54388
- const refPoints = this.z < 1 ? REF_POINTS_11 : this.z < 2 ? REF_POINTS_9 : REF_POINTS_5; // Convert from tile-relative coordinates to common space
54389
-
54390
- const refPointPositions = [];
54391
-
54392
- for (const p of refPoints) {
54393
- const lngLat = Object(_utils__WEBPACK_IMPORTED_MODULE_2__["osmTile2lngLat"])(this.x + p[0], this.y + p[1], this.z);
54394
- lngLat[2] = zRange[0];
54395
- refPointPositions.push(project(lngLat));
54396
-
54397
- if (zRange[0] !== zRange[1]) {
54398
- // Account for the elevation volume
54399
- lngLat[2] = zRange[1];
54400
- refPointPositions.push(project(lngLat));
54401
- }
54402
- }
54403
-
54404
- return Object(_math_gl_culling__WEBPACK_IMPORTED_MODULE_0__["makeOrientedBoundingBoxFromPoints"])(refPointPositions);
54405
- } // Use WebMercator projection
54406
-
54407
-
54408
- const scale = Math.pow(2, this.z);
54409
- const extent = TILE_SIZE / scale;
54410
- const originX = this.x * extent + worldOffset * TILE_SIZE; // deck's common space is y-flipped
54411
-
54412
- const originY = TILE_SIZE - (this.y + 1) * extent;
54413
- return new _math_gl_culling__WEBPACK_IMPORTED_MODULE_0__["AxisAlignedBoundingBox"]([originX, originY, zRange[0]], [originX + extent, originY + extent, zRange[1]]);
54414
- }
54415
-
54416
- }
54417
-
54418
- function getOSMTileIndices(viewport, maxZ, zRange, bounds) {
54419
- const project = viewport.resolution ? viewport.projectPosition : null; // Get the culling volume of the current camera
54420
-
54421
- const planes = Object.values(viewport.getFrustumPlanes()).map(({
54422
- normal,
54423
- distance
54424
- }) => new _math_gl_culling__WEBPACK_IMPORTED_MODULE_0__["Plane"](normal.clone().negate(), distance));
54425
- const cullingVolume = new _math_gl_culling__WEBPACK_IMPORTED_MODULE_0__["CullingVolume"](planes); // Project zRange from meters to common space
54426
-
54427
- const unitsPerMeter = viewport.distanceScales.unitsPerMeter[2];
54428
- const elevationMin = zRange && zRange[0] * unitsPerMeter || 0;
54429
- const elevationMax = zRange && zRange[1] * unitsPerMeter || 0; // Always load at the current zoom level if pitch is small
54430
-
54431
- const minZ = viewport.pitch <= 60 ? maxZ : 0; // Map extent to OSM position
54432
-
54433
- if (bounds) {
54434
- const [minLng, minLat, maxLng, maxLat] = bounds;
54435
- const topLeft = Object(_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__["lngLatToWorld"])([minLng, maxLat]);
54436
- const bottomRight = Object(_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__["lngLatToWorld"])([maxLng, minLat]);
54437
- bounds = [topLeft[0], TILE_SIZE - topLeft[1], bottomRight[0], TILE_SIZE - bottomRight[1]];
54438
- }
54439
-
54440
- const root = new OSMNode(0, 0, 0);
54441
- const traversalParams = {
54442
- viewport,
54443
- project,
54444
- cullingVolume,
54445
- elevationBounds: [elevationMin, elevationMax],
54446
- minZ,
54447
- maxZ,
54448
- bounds,
54449
- // num. of worlds from the center. For repeated maps
54450
- offset: 0
54451
- };
54452
- root.update(traversalParams);
54453
-
54454
- if (viewport.subViewports && viewport.subViewports.length > 1) {
54455
- // Check worlds in repeated maps
54456
- traversalParams.offset = -1;
54457
-
54458
- while (root.update(traversalParams)) {
54459
- if (--traversalParams.offset < -MAX_MAPS) {
54460
- break;
54461
- }
54462
- }
54463
-
54464
- traversalParams.offset = 1;
54465
-
54466
- while (root.update(traversalParams)) {
54467
- if (++traversalParams.offset > MAX_MAPS) {
54468
- break;
54469
- }
54470
- }
54471
- }
54472
-
54473
- return root.getSelected();
54474
- }
54475
-
54476
- /***/ }),
54477
-
54478
- /***/ "../geo-layers/src/tile-layer/utils.js":
54479
- /*!*********************************************!*\
54480
- !*** ../geo-layers/src/tile-layer/utils.js ***!
54481
- \*********************************************/
54482
- /*! exports provided: urlType, getURLFromTemplate, osmTile2lngLat, tileToBoundingBox, getTileIndices, isURLTemplate */
54483
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
54484
-
54485
- "use strict";
54486
- __webpack_require__.r(__webpack_exports__);
54487
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "urlType", function() { return urlType; });
54488
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getURLFromTemplate", function() { return getURLFromTemplate; });
54489
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "osmTile2lngLat", function() { return osmTile2lngLat; });
54490
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tileToBoundingBox", function() { return tileToBoundingBox; });
54491
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTileIndices", function() { return getTileIndices; });
54492
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isURLTemplate", function() { return isURLTemplate; });
54493
- /* harmony import */ var _tile_2d_traversal__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tile-2d-traversal */ "../geo-layers/src/tile-layer/tile-2d-traversal.js");
54494
-
54495
- const TILE_SIZE = 512;
54496
- const DEFAULT_EXTENT = [-Infinity, -Infinity, Infinity, Infinity];
54497
- const urlType = {
54498
- type: 'url',
54499
- value: null,
54500
- validate: (value, propType) => propType.optional && value === null || typeof value === 'string' || Array.isArray(value) && value.every(url => typeof url === 'string'),
54501
- equals: (value1, value2) => {
54502
- if (value1 === value2) {
54503
- return true;
54504
- }
54505
-
54506
- if (!Array.isArray(value1) || !Array.isArray(value2)) {
54507
- return false;
54508
- }
54509
-
54510
- const len = value1.length;
54511
-
54512
- if (len !== value2.length) {
54513
- return false;
54514
- }
54515
-
54516
- for (let i = 0; i < len; i++) {
54517
- if (value1[i] !== value2[i]) {
54518
- return false;
54519
- }
54520
- }
54521
-
54522
- return true;
54523
- }
54524
- };
54525
-
54526
- function transformBox(bbox, modelMatrix) {
54527
- const transformedCoords = [// top-left
54528
- modelMatrix.transformPoint([bbox[0], bbox[1]]), // top-right
54529
- modelMatrix.transformPoint([bbox[2], bbox[1]]), // bottom-left
54530
- modelMatrix.transformPoint([bbox[0], bbox[3]]), // bottom-right
54531
- modelMatrix.transformPoint([bbox[2], bbox[3]])];
54532
- const transformedBox = [// Minimum x coord
54533
- Math.min(...transformedCoords.map(i => i[0])), // Minimum y coord
54534
- Math.min(...transformedCoords.map(i => i[1])), // Max x coord
54535
- Math.max(...transformedCoords.map(i => i[0])), // Max y coord
54536
- Math.max(...transformedCoords.map(i => i[1]))];
54537
- return transformedBox;
54538
- }
54539
-
54540
- function getURLFromTemplate(template, properties) {
54541
- if (!template || !template.length) {
54542
- return null;
54543
- }
54544
-
54545
- if (Array.isArray(template)) {
54546
- const index = Math.abs(properties.x + properties.y) % template.length;
54547
- template = template[index];
54548
- }
54549
-
54550
- const {
54551
- x,
54552
- y,
54553
- z
54554
- } = properties;
54555
- return template.replace('{x}', x).replace('{y}', y).replace('{z}', z).replace('{-y}', Math.pow(2, z) - y - 1);
54556
- }
54557
- /**
54558
- * gets the bounding box of a viewport
54559
- */
54560
-
54561
- function getBoundingBox(viewport, zRange, extent) {
54562
- let bounds;
54563
-
54564
- if (zRange && zRange.length === 2) {
54565
- const [minZ, maxZ] = zRange;
54566
- const bounds0 = viewport.getBounds({
54567
- z: minZ
54568
- });
54569
- const bounds1 = viewport.getBounds({
54570
- z: maxZ
54571
- });
54572
- bounds = [Math.min(bounds0[0], bounds1[0]), Math.min(bounds0[1], bounds1[1]), Math.max(bounds0[2], bounds1[2]), Math.max(bounds0[3], bounds1[3])];
54573
- } else {
54574
- bounds = viewport.getBounds();
54575
- }
54576
-
54577
- if (!viewport.isGeospatial) {
54578
- return [// Top corner should not be more then bottom corner in either direction
54579
- Math.max(Math.min(bounds[0], extent[2]), extent[0]), Math.max(Math.min(bounds[1], extent[3]), extent[1]), // Bottom corner should not be less then top corner in either direction
54580
- Math.min(Math.max(bounds[2], extent[0]), extent[2]), Math.min(Math.max(bounds[3], extent[1]), extent[3])];
54581
- }
54582
-
54583
- return [Math.max(bounds[0], extent[0]), Math.max(bounds[1], extent[1]), Math.min(bounds[2], extent[2]), Math.min(bounds[3], extent[3])];
54584
- }
54585
-
54586
- function getIndexingCoords(bbox, scale, modelMatrixInverse) {
54587
- if (modelMatrixInverse) {
54588
- const transformedTileIndex = transformBox(bbox, modelMatrixInverse).map(i => i * scale / TILE_SIZE);
54589
- return transformedTileIndex;
54590
- }
54591
-
54592
- return bbox.map(i => i * scale / TILE_SIZE);
54593
- }
54594
-
54595
- function getScale(z, tileSize) {
54596
- return Math.pow(2, z) * TILE_SIZE / tileSize;
54597
- } // https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Lon..2Flat._to_tile_numbers_2
54598
-
54599
-
54600
- function osmTile2lngLat(x, y, z) {
54601
- const scale = getScale(z, TILE_SIZE);
54602
- const lng = x / scale * 360 - 180;
54603
- const n = Math.PI - 2 * Math.PI * y / scale;
54604
- const lat = 180 / Math.PI * Math.atan(0.5 * (Math.exp(n) - Math.exp(-n)));
54605
- return [lng, lat];
54606
- }
54607
-
54608
- function tile2XY(x, y, z, tileSize) {
54609
- const scale = getScale(z, tileSize);
54610
- return [x / scale * TILE_SIZE, y / scale * TILE_SIZE];
54611
- }
54612
-
54613
- function tileToBoundingBox(viewport, x, y, z, tileSize = TILE_SIZE) {
54614
- if (viewport.isGeospatial) {
54615
- const [west, north] = osmTile2lngLat(x, y, z);
54616
- const [east, south] = osmTile2lngLat(x + 1, y + 1, z);
54617
- return {
54618
- west,
54619
- north,
54620
- east,
54621
- south
54622
- };
54623
- }
54624
-
54625
- const [left, top] = tile2XY(x, y, z, tileSize);
54626
- const [right, bottom] = tile2XY(x + 1, y + 1, z, tileSize);
54627
- return {
54628
- left,
54629
- top,
54630
- right,
54631
- bottom
54632
- };
54633
- }
54634
-
54635
- function getIdentityTileIndices(viewport, z, tileSize, extent, modelMatrixInverse) {
54636
- const bbox = getBoundingBox(viewport, null, extent);
54637
- const scale = getScale(z, tileSize);
54638
- const [minX, minY, maxX, maxY] = getIndexingCoords(bbox, scale, modelMatrixInverse);
54639
- const indices = [];
54640
- /*
54641
- | TILE | TILE | TILE |
54642
- |(minX) |(maxX)
54643
- */
54644
-
54645
- for (let x = Math.floor(minX); x < maxX; x++) {
54646
- for (let y = Math.floor(minY); y < maxY; y++) {
54647
- indices.push({
54648
- x,
54649
- y,
54650
- z
54651
- });
54652
- }
54653
- }
54654
-
54655
- return indices;
54656
- }
54657
- /**
54658
- * Returns all tile indices in the current viewport. If the current zoom level is smaller
54659
- * than minZoom, return an empty array. If the current zoom level is greater than maxZoom,
54660
- * return tiles that are on maxZoom.
54661
- */
54662
- // eslint-disable-next-line complexity
54663
-
54664
-
54665
- function getTileIndices({
54666
- viewport,
54667
- maxZoom,
54668
- minZoom,
54669
- zRange,
54670
- extent,
54671
- tileSize = TILE_SIZE,
54672
- modelMatrix,
54673
- modelMatrixInverse,
54674
- zoomOffset = 0
54675
- }) {
54676
- let z = viewport.isGeospatial ? Math.round(viewport.zoom + Math.log2(TILE_SIZE / tileSize)) + zoomOffset : Math.ceil(viewport.zoom) + zoomOffset;
54677
-
54678
- if (Number.isFinite(minZoom) && z < minZoom) {
54679
- if (!extent) {
54680
- return [];
54681
- }
54682
-
54683
- z = minZoom;
54684
- }
54685
-
54686
- if (Number.isFinite(maxZoom) && z > maxZoom) {
54687
- z = maxZoom;
54688
- }
54689
-
54690
- let transformedExtent = extent;
54691
-
54692
- if (modelMatrix && modelMatrixInverse && extent && !viewport.isGeospatial) {
54693
- transformedExtent = transformBox(extent, modelMatrix);
54694
- }
54695
-
54696
- return viewport.isGeospatial ? Object(_tile_2d_traversal__WEBPACK_IMPORTED_MODULE_0__["getOSMTileIndices"])(viewport, z, zRange, extent) : getIdentityTileIndices(viewport, z, tileSize, transformedExtent || DEFAULT_EXTENT, modelMatrixInverse);
54697
- }
54698
- /**
54699
- * Returns true if s is a valid URL template
54700
- */
54701
-
54702
- function isURLTemplate(s) {
54703
- return /(?=.*{z})(?=.*{x})(?=.*({y}|{-y}))/.test(s);
54704
- }
54705
-
54706
- /***/ }),
54707
-
54708
51934
  /***/ "./bundle.ts":
54709
51935
  /*!*******************!*\
54710
51936
  !*** ./bundle.ts ***!
@@ -56087,7 +53313,6 @@ __webpack_require__.r(__webpack_exports__);
56087
53313
  /* harmony import */ var _deck_gl_extensions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @deck.gl/extensions */ "../extensions/src/index.ts");
56088
53314
  /* harmony import */ var _loaders_gl_gis__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @loaders.gl/gis */ "../../node_modules/@loaders.gl/gis/dist/esm/index.js");
56089
53315
  /* harmony import */ var _api_maps_api_common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../api/maps-api-common */ "./src/api/maps-api-common.js");
56090
- /* harmony import */ var _deck_gl_geo_layers_tile_layer_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @deck.gl/geo-layers/tile-layer/utils */ "../geo-layers/src/tile-layer/utils.js");
56091
53316
  /* global TextDecoder */
56092
53317
 
56093
53318
 
@@ -56096,7 +53321,6 @@ __webpack_require__.r(__webpack_exports__);
56096
53321
 
56097
53322
 
56098
53323
 
56099
-
56100
53324
  function parseJSON(arrayBuffer) {
56101
53325
  return JSON.parse(new TextDecoder().decode(arrayBuffer));
56102
53326
  }
@@ -56126,7 +53350,7 @@ const CartoDynamicTileLoader = {
56126
53350
  };
56127
53351
  class CartoDynamicTileLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["MVTLayer"] {
56128
53352
  getTileData(tile) {
56129
- let url = Object(_deck_gl_geo_layers_tile_layer_utils__WEBPACK_IMPORTED_MODULE_4__["getURLFromTemplate"])(this.state.data, tile);
53353
+ let url = Object(_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["_getURLFromTemplate"])(this.state.data, tile);
56130
53354
 
56131
53355
  if (!url) {
56132
53356
  return Promise.reject('Invalid URL');