@vcmap/ui 6.0.0-rc.1 → 6.0.0-rc.2
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/config/base.config.json +4 -4
- package/dist/assets/cesium/Assets/approximateTerrainHeights.json +1 -1
- package/dist/assets/cesium/ThirdParty/Workers/z-worker-pako.js +1 -1
- package/dist/assets/cesium/Workers/{chunk-ZA25DG4Y.js → chunk-3DRPXHZ4.js} +11 -11
- package/dist/assets/cesium/Workers/{chunk-OAVNIRB4.js → chunk-3GI7DWF7.js} +5 -7
- package/dist/assets/cesium/Workers/{chunk-TFC6TZ3S.js → chunk-4EW3HFFI.js} +33 -22
- package/dist/assets/cesium/Workers/{chunk-LLUNNUJV.js → chunk-4OX4RYLB.js} +5 -5
- package/dist/assets/cesium/Workers/{chunk-66QLLS45.js → chunk-4RJH3H6D.js} +11 -9
- package/dist/assets/cesium/Workers/{chunk-MPAZH4BF.js → chunk-5OUTANXX.js} +1 -1
- package/dist/assets/cesium/Workers/{chunk-WXTV4ATB.js → chunk-6DH5PLFD.js} +1 -1
- package/dist/assets/cesium/Workers/{chunk-A4JVFBQ3.js → chunk-6DXIYFX3.js} +2 -2
- package/dist/assets/cesium/Workers/chunk-A5C2A5O5.js +963 -0
- package/dist/assets/cesium/Workers/{chunk-HQF437NJ.js → chunk-AGTH5JMJ.js} +6 -6
- package/dist/assets/cesium/Workers/{chunk-RP2A7BR5.js → chunk-AVFIYUKX.js} +12 -14
- package/dist/assets/cesium/Workers/{chunk-227AJNOA.js → chunk-BAJAVGUF.js} +5 -5
- package/dist/assets/cesium/Workers/{chunk-N3JIFFX2.js → chunk-BPY4HDAK.js} +5 -6
- package/dist/assets/cesium/Workers/{chunk-ABADGKYE.js → chunk-D6PDWQXW.js} +2 -2
- package/dist/assets/cesium/Workers/{chunk-34YUDLRP.js → chunk-DR7LK6PG.js} +13 -13
- package/dist/assets/cesium/Workers/{chunk-OYFCF4PL.js → chunk-DTACCQDR.js} +6 -6
- package/dist/assets/cesium/Workers/{chunk-C3SXRKRW.js → chunk-EVU2UNBD.js} +7 -7
- package/dist/assets/cesium/Workers/{chunk-6BTKZDRG.js → chunk-F7IEM66T.js} +3 -5
- package/dist/assets/cesium/Workers/{chunk-QT3MPEMI.js → chunk-FSXNF76Y.js} +4 -4
- package/dist/assets/cesium/Workers/{chunk-PCJWUS4M.js → chunk-FYYT5EVH.js} +830 -14
- package/dist/assets/cesium/Workers/{chunk-QMEMZIJI.js → chunk-FZDKIUDT.js} +4 -4
- package/dist/assets/cesium/Workers/{chunk-XTY7B2N6.js → chunk-G6346EDR.js} +16 -16
- package/dist/assets/cesium/Workers/{chunk-CHHNOC2C.js → chunk-H7PSTL64.js} +95 -155
- package/dist/assets/cesium/Workers/{chunk-2R5O53JW.js → chunk-I67V66MN.js} +6 -6
- package/dist/assets/cesium/Workers/{chunk-JS3AW5BK.js → chunk-IALQGTA2.js} +6 -6
- package/dist/assets/cesium/Workers/{chunk-K36FEYS7.js → chunk-KNMGSIIN.js} +16 -12
- package/dist/assets/cesium/Workers/{chunk-J3JY6I2C.js → chunk-L4XQPD6P.js} +49 -88
- package/dist/assets/cesium/Workers/{chunk-X4SU25DT.js → chunk-LMTN7R7M.js} +10 -12
- package/dist/assets/cesium/Workers/{chunk-JB2LWGH4.js → chunk-LUYI3XCB.js} +14 -14
- package/dist/assets/cesium/Workers/{chunk-AFFLIKOH.js → chunk-N5MIFVXJ.js} +7 -7
- package/dist/assets/cesium/Workers/{chunk-MYZB7C4T.js → chunk-O7OUBDMZ.js} +10 -10
- package/dist/assets/cesium/Workers/{chunk-VLGOATD6.js → chunk-P24I5VUS.js} +22 -22
- package/dist/assets/cesium/Workers/{chunk-KD4Y7CZL.js → chunk-PIOKSAZH.js} +15 -17
- package/dist/assets/cesium/Workers/{chunk-3W63OHNJ.js → chunk-PRKEY4QK.js} +5 -5
- package/dist/assets/cesium/Workers/{chunk-O5AMBQ36.js → chunk-Q7PM4W34.js} +8 -8
- package/dist/assets/cesium/Workers/{chunk-GLZBE3ML.js → chunk-QLC66ZRL.js} +13 -13
- package/dist/assets/cesium/Workers/{chunk-OZJDGN5F.js → chunk-RRLGJV3Q.js} +16 -16
- package/dist/assets/cesium/Workers/{chunk-CCFQRR6D.js → chunk-S2UEXF6T.js} +1 -1
- package/dist/assets/cesium/Workers/{chunk-QIKODV5G.js → chunk-S4VTLNAJ.js} +4 -4
- package/dist/assets/cesium/Workers/{chunk-EW2GWJYB.js → chunk-SJC5PRDX.js} +2 -2
- package/dist/assets/cesium/Workers/{chunk-KTJSNCK4.js → chunk-T6TZXGG5.js} +230 -20
- package/dist/assets/cesium/Workers/{chunk-RW6LU2CJ.js → chunk-TLGODPEV.js} +5 -5
- package/dist/assets/cesium/Workers/{chunk-CTELOFLA.js → chunk-UC566ISB.js} +6 -6
- package/dist/assets/cesium/Workers/{chunk-ZFOBYDGF.js → chunk-UMX265HW.js} +2 -2
- package/dist/assets/cesium/Workers/{chunk-Z24VKNDO.js → chunk-V7WJDCPA.js} +12 -12
- package/dist/assets/cesium/Workers/{chunk-4MFFIWUA.js → chunk-VD6G7UPU.js} +2 -2
- package/dist/assets/cesium/Workers/{chunk-XY7MGBKC.js → chunk-WMVCLETM.js} +14 -16
- package/dist/assets/cesium/Workers/{chunk-IPA4EACJ.js → chunk-WOA6WSHH.js} +12 -12
- package/dist/assets/cesium/Workers/{chunk-PFQBCKBM.js → chunk-X67EJ6X6.js} +4398 -2722
- package/dist/assets/cesium/Workers/{chunk-V3NGATMV.js → chunk-XGI4FRXF.js} +11 -13
- package/dist/assets/cesium/Workers/{chunk-AHKEZ2OE.js → chunk-YFVI4SQI.js} +1 -1
- package/dist/assets/cesium/Workers/{chunk-HARLBUOL.js → chunk-YFYPR4MW.js} +11 -8
- package/dist/assets/cesium/Workers/combineGeometry.js +22 -23
- package/dist/assets/cesium/Workers/createBoxGeometry.js +16 -17
- package/dist/assets/cesium/Workers/createBoxOutlineGeometry.js +14 -15
- package/dist/assets/cesium/Workers/createCircleGeometry.js +29 -26
- package/dist/assets/cesium/Workers/createCircleOutlineGeometry.js +17 -18
- package/dist/assets/cesium/Workers/createCoplanarPolygonGeometry.js +35 -36
- package/dist/assets/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +29 -30
- package/dist/assets/cesium/Workers/createCorridorGeometry.js +29 -30
- package/dist/assets/cesium/Workers/createCorridorOutlineGeometry.js +27 -28
- package/dist/assets/cesium/Workers/createCylinderGeometry.js +18 -19
- package/dist/assets/cesium/Workers/createCylinderOutlineGeometry.js +17 -19
- package/dist/assets/cesium/Workers/createEllipseGeometry.js +24 -25
- package/dist/assets/cesium/Workers/createEllipseOutlineGeometry.js +17 -18
- package/dist/assets/cesium/Workers/createEllipsoidGeometry.js +17 -18
- package/dist/assets/cesium/Workers/createEllipsoidOutlineGeometry.js +16 -17
- package/dist/assets/cesium/Workers/createFrustumGeometry.js +16 -17
- package/dist/assets/cesium/Workers/createFrustumOutlineGeometry.js +18 -18
- package/dist/assets/cesium/Workers/createGeometry.js +52 -33
- package/dist/assets/cesium/Workers/createGroundPolylineGeometry.js +28 -29
- package/dist/assets/cesium/Workers/createPlaneGeometry.js +14 -15
- package/dist/assets/cesium/Workers/createPlaneOutlineGeometry.js +13 -14
- package/dist/assets/cesium/Workers/createPolygonGeometry.js +451 -176
- package/dist/assets/cesium/Workers/createPolygonOutlineGeometry.js +29 -30
- package/dist/assets/cesium/Workers/createPolylineGeometry.js +24 -25
- package/dist/assets/cesium/Workers/createPolylineVolumeGeometry.js +31 -33
- package/dist/assets/cesium/Workers/createPolylineVolumeOutlineGeometry.js +27 -29
- package/dist/assets/cesium/Workers/createRectangleGeometry.js +30 -31
- package/dist/assets/cesium/Workers/createRectangleOutlineGeometry.js +21 -24
- package/dist/assets/cesium/Workers/createSimplePolylineGeometry.js +22 -23
- package/dist/assets/cesium/Workers/createSphereGeometry.js +17 -18
- package/dist/assets/cesium/Workers/createSphereOutlineGeometry.js +16 -17
- package/dist/assets/cesium/Workers/createTaskProcessorWorker.js +3 -3
- package/dist/assets/cesium/Workers/createVectorTileClampedPolylines.js +14 -16
- package/dist/assets/cesium/Workers/createVectorTileGeometries.js +22 -23
- package/dist/assets/cesium/Workers/createVectorTilePoints.js +12 -12
- package/dist/assets/cesium/Workers/createVectorTilePolygons.js +20 -21
- package/dist/assets/cesium/Workers/createVectorTilePolylines.js +14 -16
- package/dist/assets/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +24 -25
- package/dist/assets/cesium/Workers/createVerticesFromHeightmap.js +25 -26
- package/dist/assets/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +19 -21
- package/dist/assets/cesium/Workers/createWallGeometry.js +23 -24
- package/dist/assets/cesium/Workers/createWallOutlineGeometry.js +22 -23
- package/dist/assets/cesium/Workers/decodeDraco.js +11 -11
- package/dist/assets/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +12 -19
- package/dist/assets/cesium/Workers/decodeI3S.js +600 -92
- package/dist/assets/cesium/Workers/transcodeKTX2.js +46 -82
- package/dist/assets/cesium/Workers/transferTypedArrayTest.js +1 -1
- package/dist/assets/cesium/Workers/upsampleQuantizedTerrainMesh.js +21 -22
- package/dist/assets/{cesium.6b12b4.js → cesium.0b750d.js} +151166 -145641
- package/dist/assets/cesium.js +1 -1
- package/dist/assets/{core.074b78.js → core.cbf44a.js} +1944 -1902
- package/dist/assets/core.js +1 -1
- package/dist/assets/index-8eGauqjA.js +1 -0
- package/dist/assets/ol.js +1 -1
- package/dist/assets/ui.7c276c.css +1 -0
- package/dist/assets/{ui.715986.js → ui.7c276c.js} +13826 -12887
- package/dist/assets/ui.js +1 -1
- package/dist/assets/vue.js +1 -1
- package/dist/assets/{vuetify.28d881.js → vuetify.4d18fe.js} +1 -1
- package/dist/assets/vuetify.js +1 -1
- package/dist/index.html +1 -1
- package/index.d.ts +2 -0
- package/index.js +1 -0
- package/package.json +7 -6
- package/plugins/@vcmap-show-case/list-example/src/ListExample.vue +24 -86
- package/plugins/@vcmap-show-case/vector-properties-example/src/VectorPropertiesExample.vue +35 -10
- package/plugins/@vcmap-show-case/wizard-example/src/WizardExample.vue +40 -54
- package/src/application/VcsApp.vue +1 -2
- package/src/application/VcsCustomScreen.vue +4 -4
- package/src/application/VcsCustomScreen.vue.d.ts +1 -1
- package/src/application/VcsNavbar.vue.d.ts +1 -1
- package/src/application/VcsSplashScreen.vue +18 -21
- package/src/application/VcsSplashScreen.vue.d.ts +5 -5
- package/src/application/VcsTextPage.vue +4 -4
- package/src/application/VcsTextPage.vue.d.ts +1 -1
- package/src/application/markdownHelper.js +2 -17
- package/src/components/buttons/VcsButton.vue +1 -1
- package/src/components/buttons/VcsButton.vue.d.ts +3 -3
- package/src/components/buttons/VcsFormButton.vue +1 -1
- package/src/components/buttons/VcsFormButton.vue.d.ts +2 -2
- package/src/components/buttons/VcsToolButton.vue +1 -1
- package/src/components/buttons/VcsToolButton.vue.d.ts +4 -4
- package/src/components/composables.d.ts +7 -0
- package/src/components/composables.js +35 -1
- package/src/components/form-inputs-controls/VcsCheckbox.vue +12 -8
- package/src/components/form-inputs-controls/VcsCheckbox.vue.d.ts +1 -0
- package/src/components/form-inputs-controls/VcsChipArrayInput.vue +1 -1
- package/src/components/form-inputs-controls/VcsDatePicker.vue.d.ts +1 -1
- package/src/components/form-inputs-controls/VcsFileInput.vue +2 -2
- package/src/components/form-inputs-controls/VcsFormSection.vue.d.ts +1 -1
- package/src/components/form-inputs-controls/VcsLabel.vue +31 -1
- package/src/components/form-inputs-controls/VcsLabel.vue.d.ts +21 -1
- package/src/components/form-inputs-controls/VcsRadio.vue +2 -2
- package/src/components/form-inputs-controls/VcsSelect.vue +7 -16
- package/src/components/form-inputs-controls/VcsSelect.vue.d.ts +2 -2
- package/src/components/form-inputs-controls/VcsSlider.vue +36 -10
- package/src/components/form-inputs-controls/VcsSlider.vue.d.ts +25 -2
- package/src/components/form-inputs-controls/VcsTextArea.vue +35 -20
- package/src/components/form-inputs-controls/VcsTextField.vue +17 -12
- package/src/components/form-inputs-controls/VcsTextField.vue.d.ts +1 -0
- package/src/components/form-inputs-controls/VcsWizard.vue +89 -112
- package/src/components/form-inputs-controls/VcsWizard.vue.d.ts +3 -13
- package/src/components/form-inputs-controls/VcsWizardStep.vue +75 -57
- package/src/components/form-inputs-controls/VcsWizardStep.vue.d.ts +24 -11
- package/src/components/form-inputs-controls/vcsTextField.scss +5 -0
- package/src/components/form-output/VcsFormattedNumber.vue +25 -9
- package/src/components/form-output/VcsFormattedNumber.vue.d.ts +18 -0
- package/src/components/form-output/VcsMarkdown.vue +53 -0
- package/src/components/form-output/VcsMarkdown.vue.d.ts +16 -0
- package/src/components/lists/VcsActionList.vue +43 -27
- package/src/components/lists/VcsActionList.vue.d.ts +3 -1
- package/src/components/lists/VcsList.vue +82 -151
- package/src/components/lists/VcsList.vue.d.ts +5 -8
- package/src/components/lists/VcsListItem.vue +154 -0
- package/src/components/lists/VcsListItem.vue.d.ts +21 -0
- package/src/components/lists/VcsTreeviewLeaf.vue +1 -1
- package/src/components/modelHelper.d.ts +11 -0
- package/src/components/modelHelper.js +42 -2
- package/src/components/vector-properties/VcsFeatureEditingWindow.vue +14 -6
- package/src/components/vector-properties/VcsFeatureEditingWindow.vue.d.ts +3 -3
- package/src/components/vector-properties/VcsVectorPropertiesComponent.vue +474 -585
- package/src/components/vector-properties/VcsVectorPropertiesComponent.vue.d.ts +193 -22
- package/src/manager/window/windowManager.d.ts +4 -4
- package/src/manager/window/windowManager.js +2 -2
- package/src/navigation/MapNavigation.vue +6 -3
- package/src/navigation/OrientationToolsButton.vue +39 -26
- package/src/navigation/OrientationToolsButton.vue.d.ts +5 -1
- package/src/navigation/TiltSlider.vue +83 -88
- package/src/navigation/TiltSlider.vue.d.ts +10 -7
- package/src/navigation/VcsCompass.vue +17 -11
- package/src/navigation/VcsCompass.vue.d.ts +2 -0
- package/src/styles/_typography.scss +1 -0
- package/src/vcsUiApp.d.ts +11 -17
- package/src/vcsUiApp.js +10 -3
- package/src/vuePlugins/i18n.js +7 -0
- package/src/vuePlugins/vuetify.js +4 -0
- package/dist/assets/cesium/Workers/chunk-DUHWWBQQ.js +0 -3273
- package/dist/assets/cesium/Workers/chunk-QJ3DFBH3.js +0 -73
- package/dist/assets/index-ca7EmZ3d.js +0 -1
- package/dist/assets/ui.715986.css +0 -1
- package/src/components/vector-properties/composables.d.ts +0 -33
- package/src/components/vector-properties/composables.js +0 -100
- /package/dist/assets/{ol.8b2e3a.js → ol.86e93c.js} +0 -0
- /package/dist/assets/{vue.0f2c53.js → vue.a3cd64.js} +0 -0
- /package/dist/assets/{vuetify.28d881.css → vuetify.4d18fe.css} +0 -0
@@ -0,0 +1,963 @@
|
|
1
|
+
/**
|
2
|
+
* @license
|
3
|
+
* Cesium - https://github.com/CesiumGS/cesium
|
4
|
+
* Version 1.119.1
|
5
|
+
*
|
6
|
+
* Copyright 2011-2022 Cesium Contributors
|
7
|
+
*
|
8
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
9
|
+
* you may not use this file except in compliance with the License.
|
10
|
+
* You may obtain a copy of the License at
|
11
|
+
*
|
12
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
13
|
+
*
|
14
|
+
* Unless required by applicable law or agreed to in writing, software
|
15
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
16
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17
|
+
* See the License for the specific language governing permissions and
|
18
|
+
* limitations under the License.
|
19
|
+
*
|
20
|
+
* Columbus View (Pat. Pend.)
|
21
|
+
*
|
22
|
+
* Portions licensed separately.
|
23
|
+
* See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details.
|
24
|
+
*/
|
25
|
+
|
26
|
+
import {
|
27
|
+
Matrix4_default,
|
28
|
+
Rectangle_default
|
29
|
+
} from "./chunk-X67EJ6X6.js";
|
30
|
+
import {
|
31
|
+
Cartesian3_default,
|
32
|
+
Cartographic_default,
|
33
|
+
Ellipsoid_default,
|
34
|
+
Matrix3_default
|
35
|
+
} from "./chunk-FYYT5EVH.js";
|
36
|
+
import {
|
37
|
+
Math_default
|
38
|
+
} from "./chunk-BPY4HDAK.js";
|
39
|
+
import {
|
40
|
+
defaultValue_default
|
41
|
+
} from "./chunk-6DH5PLFD.js";
|
42
|
+
import {
|
43
|
+
Check_default,
|
44
|
+
DeveloperError_default
|
45
|
+
} from "./chunk-VD6G7UPU.js";
|
46
|
+
import {
|
47
|
+
defined_default
|
48
|
+
} from "./chunk-F7IEM66T.js";
|
49
|
+
|
50
|
+
// packages/engine/Source/Core/GeographicProjection.js
|
51
|
+
function GeographicProjection(ellipsoid) {
|
52
|
+
this._ellipsoid = defaultValue_default(ellipsoid, Ellipsoid_default.default);
|
53
|
+
this._semimajorAxis = this._ellipsoid.maximumRadius;
|
54
|
+
this._oneOverSemimajorAxis = 1 / this._semimajorAxis;
|
55
|
+
}
|
56
|
+
Object.defineProperties(GeographicProjection.prototype, {
|
57
|
+
/**
|
58
|
+
* Gets the {@link Ellipsoid}.
|
59
|
+
*
|
60
|
+
* @memberof GeographicProjection.prototype
|
61
|
+
*
|
62
|
+
* @type {Ellipsoid}
|
63
|
+
* @readonly
|
64
|
+
*/
|
65
|
+
ellipsoid: {
|
66
|
+
get: function() {
|
67
|
+
return this._ellipsoid;
|
68
|
+
}
|
69
|
+
}
|
70
|
+
});
|
71
|
+
GeographicProjection.prototype.project = function(cartographic, result) {
|
72
|
+
const semimajorAxis = this._semimajorAxis;
|
73
|
+
const x = cartographic.longitude * semimajorAxis;
|
74
|
+
const y = cartographic.latitude * semimajorAxis;
|
75
|
+
const z = cartographic.height;
|
76
|
+
if (!defined_default(result)) {
|
77
|
+
return new Cartesian3_default(x, y, z);
|
78
|
+
}
|
79
|
+
result.x = x;
|
80
|
+
result.y = y;
|
81
|
+
result.z = z;
|
82
|
+
return result;
|
83
|
+
};
|
84
|
+
GeographicProjection.prototype.unproject = function(cartesian, result) {
|
85
|
+
if (!defined_default(cartesian)) {
|
86
|
+
throw new DeveloperError_default("cartesian is required");
|
87
|
+
}
|
88
|
+
const oneOverEarthSemimajorAxis = this._oneOverSemimajorAxis;
|
89
|
+
const longitude = cartesian.x * oneOverEarthSemimajorAxis;
|
90
|
+
const latitude = cartesian.y * oneOverEarthSemimajorAxis;
|
91
|
+
const height = cartesian.z;
|
92
|
+
if (!defined_default(result)) {
|
93
|
+
return new Cartographic_default(longitude, latitude, height);
|
94
|
+
}
|
95
|
+
result.longitude = longitude;
|
96
|
+
result.latitude = latitude;
|
97
|
+
result.height = height;
|
98
|
+
return result;
|
99
|
+
};
|
100
|
+
var GeographicProjection_default = GeographicProjection;
|
101
|
+
|
102
|
+
// packages/engine/Source/Core/Intersect.js
|
103
|
+
var Intersect = {
|
104
|
+
/**
|
105
|
+
* Represents that an object is not contained within the frustum.
|
106
|
+
*
|
107
|
+
* @type {number}
|
108
|
+
* @constant
|
109
|
+
*/
|
110
|
+
OUTSIDE: -1,
|
111
|
+
/**
|
112
|
+
* Represents that an object intersects one of the frustum's planes.
|
113
|
+
*
|
114
|
+
* @type {number}
|
115
|
+
* @constant
|
116
|
+
*/
|
117
|
+
INTERSECTING: 0,
|
118
|
+
/**
|
119
|
+
* Represents that an object is fully within the frustum.
|
120
|
+
*
|
121
|
+
* @type {number}
|
122
|
+
* @constant
|
123
|
+
*/
|
124
|
+
INSIDE: 1
|
125
|
+
};
|
126
|
+
var Intersect_default = Object.freeze(Intersect);
|
127
|
+
|
128
|
+
// packages/engine/Source/Core/Interval.js
|
129
|
+
function Interval(start, stop) {
|
130
|
+
this.start = defaultValue_default(start, 0);
|
131
|
+
this.stop = defaultValue_default(stop, 0);
|
132
|
+
}
|
133
|
+
var Interval_default = Interval;
|
134
|
+
|
135
|
+
// packages/engine/Source/Core/BoundingSphere.js
|
136
|
+
function BoundingSphere(center, radius) {
|
137
|
+
this.center = Cartesian3_default.clone(defaultValue_default(center, Cartesian3_default.ZERO));
|
138
|
+
this.radius = defaultValue_default(radius, 0);
|
139
|
+
}
|
140
|
+
var fromPointsXMin = new Cartesian3_default();
|
141
|
+
var fromPointsYMin = new Cartesian3_default();
|
142
|
+
var fromPointsZMin = new Cartesian3_default();
|
143
|
+
var fromPointsXMax = new Cartesian3_default();
|
144
|
+
var fromPointsYMax = new Cartesian3_default();
|
145
|
+
var fromPointsZMax = new Cartesian3_default();
|
146
|
+
var fromPointsCurrentPos = new Cartesian3_default();
|
147
|
+
var fromPointsScratch = new Cartesian3_default();
|
148
|
+
var fromPointsRitterCenter = new Cartesian3_default();
|
149
|
+
var fromPointsMinBoxPt = new Cartesian3_default();
|
150
|
+
var fromPointsMaxBoxPt = new Cartesian3_default();
|
151
|
+
var fromPointsNaiveCenterScratch = new Cartesian3_default();
|
152
|
+
var volumeConstant = 4 / 3 * Math_default.PI;
|
153
|
+
BoundingSphere.fromPoints = function(positions, result) {
|
154
|
+
if (!defined_default(result)) {
|
155
|
+
result = new BoundingSphere();
|
156
|
+
}
|
157
|
+
if (!defined_default(positions) || positions.length === 0) {
|
158
|
+
result.center = Cartesian3_default.clone(Cartesian3_default.ZERO, result.center);
|
159
|
+
result.radius = 0;
|
160
|
+
return result;
|
161
|
+
}
|
162
|
+
const currentPos = Cartesian3_default.clone(positions[0], fromPointsCurrentPos);
|
163
|
+
const xMin = Cartesian3_default.clone(currentPos, fromPointsXMin);
|
164
|
+
const yMin = Cartesian3_default.clone(currentPos, fromPointsYMin);
|
165
|
+
const zMin = Cartesian3_default.clone(currentPos, fromPointsZMin);
|
166
|
+
const xMax = Cartesian3_default.clone(currentPos, fromPointsXMax);
|
167
|
+
const yMax = Cartesian3_default.clone(currentPos, fromPointsYMax);
|
168
|
+
const zMax = Cartesian3_default.clone(currentPos, fromPointsZMax);
|
169
|
+
const numPositions = positions.length;
|
170
|
+
let i;
|
171
|
+
for (i = 1; i < numPositions; i++) {
|
172
|
+
Cartesian3_default.clone(positions[i], currentPos);
|
173
|
+
const x = currentPos.x;
|
174
|
+
const y = currentPos.y;
|
175
|
+
const z = currentPos.z;
|
176
|
+
if (x < xMin.x) {
|
177
|
+
Cartesian3_default.clone(currentPos, xMin);
|
178
|
+
}
|
179
|
+
if (x > xMax.x) {
|
180
|
+
Cartesian3_default.clone(currentPos, xMax);
|
181
|
+
}
|
182
|
+
if (y < yMin.y) {
|
183
|
+
Cartesian3_default.clone(currentPos, yMin);
|
184
|
+
}
|
185
|
+
if (y > yMax.y) {
|
186
|
+
Cartesian3_default.clone(currentPos, yMax);
|
187
|
+
}
|
188
|
+
if (z < zMin.z) {
|
189
|
+
Cartesian3_default.clone(currentPos, zMin);
|
190
|
+
}
|
191
|
+
if (z > zMax.z) {
|
192
|
+
Cartesian3_default.clone(currentPos, zMax);
|
193
|
+
}
|
194
|
+
}
|
195
|
+
const xSpan = Cartesian3_default.magnitudeSquared(
|
196
|
+
Cartesian3_default.subtract(xMax, xMin, fromPointsScratch)
|
197
|
+
);
|
198
|
+
const ySpan = Cartesian3_default.magnitudeSquared(
|
199
|
+
Cartesian3_default.subtract(yMax, yMin, fromPointsScratch)
|
200
|
+
);
|
201
|
+
const zSpan = Cartesian3_default.magnitudeSquared(
|
202
|
+
Cartesian3_default.subtract(zMax, zMin, fromPointsScratch)
|
203
|
+
);
|
204
|
+
let diameter1 = xMin;
|
205
|
+
let diameter2 = xMax;
|
206
|
+
let maxSpan = xSpan;
|
207
|
+
if (ySpan > maxSpan) {
|
208
|
+
maxSpan = ySpan;
|
209
|
+
diameter1 = yMin;
|
210
|
+
diameter2 = yMax;
|
211
|
+
}
|
212
|
+
if (zSpan > maxSpan) {
|
213
|
+
maxSpan = zSpan;
|
214
|
+
diameter1 = zMin;
|
215
|
+
diameter2 = zMax;
|
216
|
+
}
|
217
|
+
const ritterCenter = fromPointsRitterCenter;
|
218
|
+
ritterCenter.x = (diameter1.x + diameter2.x) * 0.5;
|
219
|
+
ritterCenter.y = (diameter1.y + diameter2.y) * 0.5;
|
220
|
+
ritterCenter.z = (diameter1.z + diameter2.z) * 0.5;
|
221
|
+
let radiusSquared = Cartesian3_default.magnitudeSquared(
|
222
|
+
Cartesian3_default.subtract(diameter2, ritterCenter, fromPointsScratch)
|
223
|
+
);
|
224
|
+
let ritterRadius = Math.sqrt(radiusSquared);
|
225
|
+
const minBoxPt = fromPointsMinBoxPt;
|
226
|
+
minBoxPt.x = xMin.x;
|
227
|
+
minBoxPt.y = yMin.y;
|
228
|
+
minBoxPt.z = zMin.z;
|
229
|
+
const maxBoxPt = fromPointsMaxBoxPt;
|
230
|
+
maxBoxPt.x = xMax.x;
|
231
|
+
maxBoxPt.y = yMax.y;
|
232
|
+
maxBoxPt.z = zMax.z;
|
233
|
+
const naiveCenter = Cartesian3_default.midpoint(
|
234
|
+
minBoxPt,
|
235
|
+
maxBoxPt,
|
236
|
+
fromPointsNaiveCenterScratch
|
237
|
+
);
|
238
|
+
let naiveRadius = 0;
|
239
|
+
for (i = 0; i < numPositions; i++) {
|
240
|
+
Cartesian3_default.clone(positions[i], currentPos);
|
241
|
+
const r = Cartesian3_default.magnitude(
|
242
|
+
Cartesian3_default.subtract(currentPos, naiveCenter, fromPointsScratch)
|
243
|
+
);
|
244
|
+
if (r > naiveRadius) {
|
245
|
+
naiveRadius = r;
|
246
|
+
}
|
247
|
+
const oldCenterToPointSquared = Cartesian3_default.magnitudeSquared(
|
248
|
+
Cartesian3_default.subtract(currentPos, ritterCenter, fromPointsScratch)
|
249
|
+
);
|
250
|
+
if (oldCenterToPointSquared > radiusSquared) {
|
251
|
+
const oldCenterToPoint = Math.sqrt(oldCenterToPointSquared);
|
252
|
+
ritterRadius = (ritterRadius + oldCenterToPoint) * 0.5;
|
253
|
+
radiusSquared = ritterRadius * ritterRadius;
|
254
|
+
const oldToNew = oldCenterToPoint - ritterRadius;
|
255
|
+
ritterCenter.x = (ritterRadius * ritterCenter.x + oldToNew * currentPos.x) / oldCenterToPoint;
|
256
|
+
ritterCenter.y = (ritterRadius * ritterCenter.y + oldToNew * currentPos.y) / oldCenterToPoint;
|
257
|
+
ritterCenter.z = (ritterRadius * ritterCenter.z + oldToNew * currentPos.z) / oldCenterToPoint;
|
258
|
+
}
|
259
|
+
}
|
260
|
+
if (ritterRadius < naiveRadius) {
|
261
|
+
Cartesian3_default.clone(ritterCenter, result.center);
|
262
|
+
result.radius = ritterRadius;
|
263
|
+
} else {
|
264
|
+
Cartesian3_default.clone(naiveCenter, result.center);
|
265
|
+
result.radius = naiveRadius;
|
266
|
+
}
|
267
|
+
return result;
|
268
|
+
};
|
269
|
+
var defaultProjection = new GeographicProjection_default();
|
270
|
+
var fromRectangle2DLowerLeft = new Cartesian3_default();
|
271
|
+
var fromRectangle2DUpperRight = new Cartesian3_default();
|
272
|
+
var fromRectangle2DSouthwest = new Cartographic_default();
|
273
|
+
var fromRectangle2DNortheast = new Cartographic_default();
|
274
|
+
BoundingSphere.fromRectangle2D = function(rectangle, projection, result) {
|
275
|
+
return BoundingSphere.fromRectangleWithHeights2D(
|
276
|
+
rectangle,
|
277
|
+
projection,
|
278
|
+
0,
|
279
|
+
0,
|
280
|
+
result
|
281
|
+
);
|
282
|
+
};
|
283
|
+
BoundingSphere.fromRectangleWithHeights2D = function(rectangle, projection, minimumHeight, maximumHeight, result) {
|
284
|
+
if (!defined_default(result)) {
|
285
|
+
result = new BoundingSphere();
|
286
|
+
}
|
287
|
+
if (!defined_default(rectangle)) {
|
288
|
+
result.center = Cartesian3_default.clone(Cartesian3_default.ZERO, result.center);
|
289
|
+
result.radius = 0;
|
290
|
+
return result;
|
291
|
+
}
|
292
|
+
defaultProjection._ellipsoid = Ellipsoid_default.default;
|
293
|
+
projection = defaultValue_default(projection, defaultProjection);
|
294
|
+
Rectangle_default.southwest(rectangle, fromRectangle2DSouthwest);
|
295
|
+
fromRectangle2DSouthwest.height = minimumHeight;
|
296
|
+
Rectangle_default.northeast(rectangle, fromRectangle2DNortheast);
|
297
|
+
fromRectangle2DNortheast.height = maximumHeight;
|
298
|
+
const lowerLeft = projection.project(
|
299
|
+
fromRectangle2DSouthwest,
|
300
|
+
fromRectangle2DLowerLeft
|
301
|
+
);
|
302
|
+
const upperRight = projection.project(
|
303
|
+
fromRectangle2DNortheast,
|
304
|
+
fromRectangle2DUpperRight
|
305
|
+
);
|
306
|
+
const width = upperRight.x - lowerLeft.x;
|
307
|
+
const height = upperRight.y - lowerLeft.y;
|
308
|
+
const elevation = upperRight.z - lowerLeft.z;
|
309
|
+
result.radius = Math.sqrt(width * width + height * height + elevation * elevation) * 0.5;
|
310
|
+
const center = result.center;
|
311
|
+
center.x = lowerLeft.x + width * 0.5;
|
312
|
+
center.y = lowerLeft.y + height * 0.5;
|
313
|
+
center.z = lowerLeft.z + elevation * 0.5;
|
314
|
+
return result;
|
315
|
+
};
|
316
|
+
var fromRectangle3DScratch = [];
|
317
|
+
BoundingSphere.fromRectangle3D = function(rectangle, ellipsoid, surfaceHeight, result) {
|
318
|
+
ellipsoid = defaultValue_default(ellipsoid, Ellipsoid_default.default);
|
319
|
+
surfaceHeight = defaultValue_default(surfaceHeight, 0);
|
320
|
+
if (!defined_default(result)) {
|
321
|
+
result = new BoundingSphere();
|
322
|
+
}
|
323
|
+
if (!defined_default(rectangle)) {
|
324
|
+
result.center = Cartesian3_default.clone(Cartesian3_default.ZERO, result.center);
|
325
|
+
result.radius = 0;
|
326
|
+
return result;
|
327
|
+
}
|
328
|
+
const positions = Rectangle_default.subsample(
|
329
|
+
rectangle,
|
330
|
+
ellipsoid,
|
331
|
+
surfaceHeight,
|
332
|
+
fromRectangle3DScratch
|
333
|
+
);
|
334
|
+
return BoundingSphere.fromPoints(positions, result);
|
335
|
+
};
|
336
|
+
BoundingSphere.fromVertices = function(positions, center, stride, result) {
|
337
|
+
if (!defined_default(result)) {
|
338
|
+
result = new BoundingSphere();
|
339
|
+
}
|
340
|
+
if (!defined_default(positions) || positions.length === 0) {
|
341
|
+
result.center = Cartesian3_default.clone(Cartesian3_default.ZERO, result.center);
|
342
|
+
result.radius = 0;
|
343
|
+
return result;
|
344
|
+
}
|
345
|
+
center = defaultValue_default(center, Cartesian3_default.ZERO);
|
346
|
+
stride = defaultValue_default(stride, 3);
|
347
|
+
Check_default.typeOf.number.greaterThanOrEquals("stride", stride, 3);
|
348
|
+
const currentPos = fromPointsCurrentPos;
|
349
|
+
currentPos.x = positions[0] + center.x;
|
350
|
+
currentPos.y = positions[1] + center.y;
|
351
|
+
currentPos.z = positions[2] + center.z;
|
352
|
+
const xMin = Cartesian3_default.clone(currentPos, fromPointsXMin);
|
353
|
+
const yMin = Cartesian3_default.clone(currentPos, fromPointsYMin);
|
354
|
+
const zMin = Cartesian3_default.clone(currentPos, fromPointsZMin);
|
355
|
+
const xMax = Cartesian3_default.clone(currentPos, fromPointsXMax);
|
356
|
+
const yMax = Cartesian3_default.clone(currentPos, fromPointsYMax);
|
357
|
+
const zMax = Cartesian3_default.clone(currentPos, fromPointsZMax);
|
358
|
+
const numElements = positions.length;
|
359
|
+
let i;
|
360
|
+
for (i = 0; i < numElements; i += stride) {
|
361
|
+
const x = positions[i] + center.x;
|
362
|
+
const y = positions[i + 1] + center.y;
|
363
|
+
const z = positions[i + 2] + center.z;
|
364
|
+
currentPos.x = x;
|
365
|
+
currentPos.y = y;
|
366
|
+
currentPos.z = z;
|
367
|
+
if (x < xMin.x) {
|
368
|
+
Cartesian3_default.clone(currentPos, xMin);
|
369
|
+
}
|
370
|
+
if (x > xMax.x) {
|
371
|
+
Cartesian3_default.clone(currentPos, xMax);
|
372
|
+
}
|
373
|
+
if (y < yMin.y) {
|
374
|
+
Cartesian3_default.clone(currentPos, yMin);
|
375
|
+
}
|
376
|
+
if (y > yMax.y) {
|
377
|
+
Cartesian3_default.clone(currentPos, yMax);
|
378
|
+
}
|
379
|
+
if (z < zMin.z) {
|
380
|
+
Cartesian3_default.clone(currentPos, zMin);
|
381
|
+
}
|
382
|
+
if (z > zMax.z) {
|
383
|
+
Cartesian3_default.clone(currentPos, zMax);
|
384
|
+
}
|
385
|
+
}
|
386
|
+
const xSpan = Cartesian3_default.magnitudeSquared(
|
387
|
+
Cartesian3_default.subtract(xMax, xMin, fromPointsScratch)
|
388
|
+
);
|
389
|
+
const ySpan = Cartesian3_default.magnitudeSquared(
|
390
|
+
Cartesian3_default.subtract(yMax, yMin, fromPointsScratch)
|
391
|
+
);
|
392
|
+
const zSpan = Cartesian3_default.magnitudeSquared(
|
393
|
+
Cartesian3_default.subtract(zMax, zMin, fromPointsScratch)
|
394
|
+
);
|
395
|
+
let diameter1 = xMin;
|
396
|
+
let diameter2 = xMax;
|
397
|
+
let maxSpan = xSpan;
|
398
|
+
if (ySpan > maxSpan) {
|
399
|
+
maxSpan = ySpan;
|
400
|
+
diameter1 = yMin;
|
401
|
+
diameter2 = yMax;
|
402
|
+
}
|
403
|
+
if (zSpan > maxSpan) {
|
404
|
+
maxSpan = zSpan;
|
405
|
+
diameter1 = zMin;
|
406
|
+
diameter2 = zMax;
|
407
|
+
}
|
408
|
+
const ritterCenter = fromPointsRitterCenter;
|
409
|
+
ritterCenter.x = (diameter1.x + diameter2.x) * 0.5;
|
410
|
+
ritterCenter.y = (diameter1.y + diameter2.y) * 0.5;
|
411
|
+
ritterCenter.z = (diameter1.z + diameter2.z) * 0.5;
|
412
|
+
let radiusSquared = Cartesian3_default.magnitudeSquared(
|
413
|
+
Cartesian3_default.subtract(diameter2, ritterCenter, fromPointsScratch)
|
414
|
+
);
|
415
|
+
let ritterRadius = Math.sqrt(radiusSquared);
|
416
|
+
const minBoxPt = fromPointsMinBoxPt;
|
417
|
+
minBoxPt.x = xMin.x;
|
418
|
+
minBoxPt.y = yMin.y;
|
419
|
+
minBoxPt.z = zMin.z;
|
420
|
+
const maxBoxPt = fromPointsMaxBoxPt;
|
421
|
+
maxBoxPt.x = xMax.x;
|
422
|
+
maxBoxPt.y = yMax.y;
|
423
|
+
maxBoxPt.z = zMax.z;
|
424
|
+
const naiveCenter = Cartesian3_default.midpoint(
|
425
|
+
minBoxPt,
|
426
|
+
maxBoxPt,
|
427
|
+
fromPointsNaiveCenterScratch
|
428
|
+
);
|
429
|
+
let naiveRadius = 0;
|
430
|
+
for (i = 0; i < numElements; i += stride) {
|
431
|
+
currentPos.x = positions[i] + center.x;
|
432
|
+
currentPos.y = positions[i + 1] + center.y;
|
433
|
+
currentPos.z = positions[i + 2] + center.z;
|
434
|
+
const r = Cartesian3_default.magnitude(
|
435
|
+
Cartesian3_default.subtract(currentPos, naiveCenter, fromPointsScratch)
|
436
|
+
);
|
437
|
+
if (r > naiveRadius) {
|
438
|
+
naiveRadius = r;
|
439
|
+
}
|
440
|
+
const oldCenterToPointSquared = Cartesian3_default.magnitudeSquared(
|
441
|
+
Cartesian3_default.subtract(currentPos, ritterCenter, fromPointsScratch)
|
442
|
+
);
|
443
|
+
if (oldCenterToPointSquared > radiusSquared) {
|
444
|
+
const oldCenterToPoint = Math.sqrt(oldCenterToPointSquared);
|
445
|
+
ritterRadius = (ritterRadius + oldCenterToPoint) * 0.5;
|
446
|
+
radiusSquared = ritterRadius * ritterRadius;
|
447
|
+
const oldToNew = oldCenterToPoint - ritterRadius;
|
448
|
+
ritterCenter.x = (ritterRadius * ritterCenter.x + oldToNew * currentPos.x) / oldCenterToPoint;
|
449
|
+
ritterCenter.y = (ritterRadius * ritterCenter.y + oldToNew * currentPos.y) / oldCenterToPoint;
|
450
|
+
ritterCenter.z = (ritterRadius * ritterCenter.z + oldToNew * currentPos.z) / oldCenterToPoint;
|
451
|
+
}
|
452
|
+
}
|
453
|
+
if (ritterRadius < naiveRadius) {
|
454
|
+
Cartesian3_default.clone(ritterCenter, result.center);
|
455
|
+
result.radius = ritterRadius;
|
456
|
+
} else {
|
457
|
+
Cartesian3_default.clone(naiveCenter, result.center);
|
458
|
+
result.radius = naiveRadius;
|
459
|
+
}
|
460
|
+
return result;
|
461
|
+
};
|
462
|
+
BoundingSphere.fromEncodedCartesianVertices = function(positionsHigh, positionsLow, result) {
|
463
|
+
if (!defined_default(result)) {
|
464
|
+
result = new BoundingSphere();
|
465
|
+
}
|
466
|
+
if (!defined_default(positionsHigh) || !defined_default(positionsLow) || positionsHigh.length !== positionsLow.length || positionsHigh.length === 0) {
|
467
|
+
result.center = Cartesian3_default.clone(Cartesian3_default.ZERO, result.center);
|
468
|
+
result.radius = 0;
|
469
|
+
return result;
|
470
|
+
}
|
471
|
+
const currentPos = fromPointsCurrentPos;
|
472
|
+
currentPos.x = positionsHigh[0] + positionsLow[0];
|
473
|
+
currentPos.y = positionsHigh[1] + positionsLow[1];
|
474
|
+
currentPos.z = positionsHigh[2] + positionsLow[2];
|
475
|
+
const xMin = Cartesian3_default.clone(currentPos, fromPointsXMin);
|
476
|
+
const yMin = Cartesian3_default.clone(currentPos, fromPointsYMin);
|
477
|
+
const zMin = Cartesian3_default.clone(currentPos, fromPointsZMin);
|
478
|
+
const xMax = Cartesian3_default.clone(currentPos, fromPointsXMax);
|
479
|
+
const yMax = Cartesian3_default.clone(currentPos, fromPointsYMax);
|
480
|
+
const zMax = Cartesian3_default.clone(currentPos, fromPointsZMax);
|
481
|
+
const numElements = positionsHigh.length;
|
482
|
+
let i;
|
483
|
+
for (i = 0; i < numElements; i += 3) {
|
484
|
+
const x = positionsHigh[i] + positionsLow[i];
|
485
|
+
const y = positionsHigh[i + 1] + positionsLow[i + 1];
|
486
|
+
const z = positionsHigh[i + 2] + positionsLow[i + 2];
|
487
|
+
currentPos.x = x;
|
488
|
+
currentPos.y = y;
|
489
|
+
currentPos.z = z;
|
490
|
+
if (x < xMin.x) {
|
491
|
+
Cartesian3_default.clone(currentPos, xMin);
|
492
|
+
}
|
493
|
+
if (x > xMax.x) {
|
494
|
+
Cartesian3_default.clone(currentPos, xMax);
|
495
|
+
}
|
496
|
+
if (y < yMin.y) {
|
497
|
+
Cartesian3_default.clone(currentPos, yMin);
|
498
|
+
}
|
499
|
+
if (y > yMax.y) {
|
500
|
+
Cartesian3_default.clone(currentPos, yMax);
|
501
|
+
}
|
502
|
+
if (z < zMin.z) {
|
503
|
+
Cartesian3_default.clone(currentPos, zMin);
|
504
|
+
}
|
505
|
+
if (z > zMax.z) {
|
506
|
+
Cartesian3_default.clone(currentPos, zMax);
|
507
|
+
}
|
508
|
+
}
|
509
|
+
const xSpan = Cartesian3_default.magnitudeSquared(
|
510
|
+
Cartesian3_default.subtract(xMax, xMin, fromPointsScratch)
|
511
|
+
);
|
512
|
+
const ySpan = Cartesian3_default.magnitudeSquared(
|
513
|
+
Cartesian3_default.subtract(yMax, yMin, fromPointsScratch)
|
514
|
+
);
|
515
|
+
const zSpan = Cartesian3_default.magnitudeSquared(
|
516
|
+
Cartesian3_default.subtract(zMax, zMin, fromPointsScratch)
|
517
|
+
);
|
518
|
+
let diameter1 = xMin;
|
519
|
+
let diameter2 = xMax;
|
520
|
+
let maxSpan = xSpan;
|
521
|
+
if (ySpan > maxSpan) {
|
522
|
+
maxSpan = ySpan;
|
523
|
+
diameter1 = yMin;
|
524
|
+
diameter2 = yMax;
|
525
|
+
}
|
526
|
+
if (zSpan > maxSpan) {
|
527
|
+
maxSpan = zSpan;
|
528
|
+
diameter1 = zMin;
|
529
|
+
diameter2 = zMax;
|
530
|
+
}
|
531
|
+
const ritterCenter = fromPointsRitterCenter;
|
532
|
+
ritterCenter.x = (diameter1.x + diameter2.x) * 0.5;
|
533
|
+
ritterCenter.y = (diameter1.y + diameter2.y) * 0.5;
|
534
|
+
ritterCenter.z = (diameter1.z + diameter2.z) * 0.5;
|
535
|
+
let radiusSquared = Cartesian3_default.magnitudeSquared(
|
536
|
+
Cartesian3_default.subtract(diameter2, ritterCenter, fromPointsScratch)
|
537
|
+
);
|
538
|
+
let ritterRadius = Math.sqrt(radiusSquared);
|
539
|
+
const minBoxPt = fromPointsMinBoxPt;
|
540
|
+
minBoxPt.x = xMin.x;
|
541
|
+
minBoxPt.y = yMin.y;
|
542
|
+
minBoxPt.z = zMin.z;
|
543
|
+
const maxBoxPt = fromPointsMaxBoxPt;
|
544
|
+
maxBoxPt.x = xMax.x;
|
545
|
+
maxBoxPt.y = yMax.y;
|
546
|
+
maxBoxPt.z = zMax.z;
|
547
|
+
const naiveCenter = Cartesian3_default.midpoint(
|
548
|
+
minBoxPt,
|
549
|
+
maxBoxPt,
|
550
|
+
fromPointsNaiveCenterScratch
|
551
|
+
);
|
552
|
+
let naiveRadius = 0;
|
553
|
+
for (i = 0; i < numElements; i += 3) {
|
554
|
+
currentPos.x = positionsHigh[i] + positionsLow[i];
|
555
|
+
currentPos.y = positionsHigh[i + 1] + positionsLow[i + 1];
|
556
|
+
currentPos.z = positionsHigh[i + 2] + positionsLow[i + 2];
|
557
|
+
const r = Cartesian3_default.magnitude(
|
558
|
+
Cartesian3_default.subtract(currentPos, naiveCenter, fromPointsScratch)
|
559
|
+
);
|
560
|
+
if (r > naiveRadius) {
|
561
|
+
naiveRadius = r;
|
562
|
+
}
|
563
|
+
const oldCenterToPointSquared = Cartesian3_default.magnitudeSquared(
|
564
|
+
Cartesian3_default.subtract(currentPos, ritterCenter, fromPointsScratch)
|
565
|
+
);
|
566
|
+
if (oldCenterToPointSquared > radiusSquared) {
|
567
|
+
const oldCenterToPoint = Math.sqrt(oldCenterToPointSquared);
|
568
|
+
ritterRadius = (ritterRadius + oldCenterToPoint) * 0.5;
|
569
|
+
radiusSquared = ritterRadius * ritterRadius;
|
570
|
+
const oldToNew = oldCenterToPoint - ritterRadius;
|
571
|
+
ritterCenter.x = (ritterRadius * ritterCenter.x + oldToNew * currentPos.x) / oldCenterToPoint;
|
572
|
+
ritterCenter.y = (ritterRadius * ritterCenter.y + oldToNew * currentPos.y) / oldCenterToPoint;
|
573
|
+
ritterCenter.z = (ritterRadius * ritterCenter.z + oldToNew * currentPos.z) / oldCenterToPoint;
|
574
|
+
}
|
575
|
+
}
|
576
|
+
if (ritterRadius < naiveRadius) {
|
577
|
+
Cartesian3_default.clone(ritterCenter, result.center);
|
578
|
+
result.radius = ritterRadius;
|
579
|
+
} else {
|
580
|
+
Cartesian3_default.clone(naiveCenter, result.center);
|
581
|
+
result.radius = naiveRadius;
|
582
|
+
}
|
583
|
+
return result;
|
584
|
+
};
|
585
|
+
BoundingSphere.fromCornerPoints = function(corner, oppositeCorner, result) {
|
586
|
+
Check_default.typeOf.object("corner", corner);
|
587
|
+
Check_default.typeOf.object("oppositeCorner", oppositeCorner);
|
588
|
+
if (!defined_default(result)) {
|
589
|
+
result = new BoundingSphere();
|
590
|
+
}
|
591
|
+
const center = Cartesian3_default.midpoint(corner, oppositeCorner, result.center);
|
592
|
+
result.radius = Cartesian3_default.distance(center, oppositeCorner);
|
593
|
+
return result;
|
594
|
+
};
|
595
|
+
BoundingSphere.fromEllipsoid = function(ellipsoid, result) {
|
596
|
+
Check_default.typeOf.object("ellipsoid", ellipsoid);
|
597
|
+
if (!defined_default(result)) {
|
598
|
+
result = new BoundingSphere();
|
599
|
+
}
|
600
|
+
Cartesian3_default.clone(Cartesian3_default.ZERO, result.center);
|
601
|
+
result.radius = ellipsoid.maximumRadius;
|
602
|
+
return result;
|
603
|
+
};
|
604
|
+
var fromBoundingSpheresScratch = new Cartesian3_default();
|
605
|
+
BoundingSphere.fromBoundingSpheres = function(boundingSpheres, result) {
|
606
|
+
if (!defined_default(result)) {
|
607
|
+
result = new BoundingSphere();
|
608
|
+
}
|
609
|
+
if (!defined_default(boundingSpheres) || boundingSpheres.length === 0) {
|
610
|
+
result.center = Cartesian3_default.clone(Cartesian3_default.ZERO, result.center);
|
611
|
+
result.radius = 0;
|
612
|
+
return result;
|
613
|
+
}
|
614
|
+
const length = boundingSpheres.length;
|
615
|
+
if (length === 1) {
|
616
|
+
return BoundingSphere.clone(boundingSpheres[0], result);
|
617
|
+
}
|
618
|
+
if (length === 2) {
|
619
|
+
return BoundingSphere.union(boundingSpheres[0], boundingSpheres[1], result);
|
620
|
+
}
|
621
|
+
const positions = [];
|
622
|
+
let i;
|
623
|
+
for (i = 0; i < length; i++) {
|
624
|
+
positions.push(boundingSpheres[i].center);
|
625
|
+
}
|
626
|
+
result = BoundingSphere.fromPoints(positions, result);
|
627
|
+
const center = result.center;
|
628
|
+
let radius = result.radius;
|
629
|
+
for (i = 0; i < length; i++) {
|
630
|
+
const tmp = boundingSpheres[i];
|
631
|
+
radius = Math.max(
|
632
|
+
radius,
|
633
|
+
Cartesian3_default.distance(center, tmp.center, fromBoundingSpheresScratch) + tmp.radius
|
634
|
+
);
|
635
|
+
}
|
636
|
+
result.radius = radius;
|
637
|
+
return result;
|
638
|
+
};
|
639
|
+
var fromOrientedBoundingBoxScratchU = new Cartesian3_default();
|
640
|
+
var fromOrientedBoundingBoxScratchV = new Cartesian3_default();
|
641
|
+
var fromOrientedBoundingBoxScratchW = new Cartesian3_default();
|
642
|
+
BoundingSphere.fromOrientedBoundingBox = function(orientedBoundingBox, result) {
|
643
|
+
Check_default.defined("orientedBoundingBox", orientedBoundingBox);
|
644
|
+
if (!defined_default(result)) {
|
645
|
+
result = new BoundingSphere();
|
646
|
+
}
|
647
|
+
const halfAxes = orientedBoundingBox.halfAxes;
|
648
|
+
const u = Matrix3_default.getColumn(halfAxes, 0, fromOrientedBoundingBoxScratchU);
|
649
|
+
const v = Matrix3_default.getColumn(halfAxes, 1, fromOrientedBoundingBoxScratchV);
|
650
|
+
const w = Matrix3_default.getColumn(halfAxes, 2, fromOrientedBoundingBoxScratchW);
|
651
|
+
Cartesian3_default.add(u, v, u);
|
652
|
+
Cartesian3_default.add(u, w, u);
|
653
|
+
result.center = Cartesian3_default.clone(orientedBoundingBox.center, result.center);
|
654
|
+
result.radius = Cartesian3_default.magnitude(u);
|
655
|
+
return result;
|
656
|
+
};
|
657
|
+
var scratchFromTransformationCenter = new Cartesian3_default();
|
658
|
+
var scratchFromTransformationScale = new Cartesian3_default();
|
659
|
+
BoundingSphere.fromTransformation = function(transformation, result) {
|
660
|
+
Check_default.typeOf.object("transformation", transformation);
|
661
|
+
if (!defined_default(result)) {
|
662
|
+
result = new BoundingSphere();
|
663
|
+
}
|
664
|
+
const center = Matrix4_default.getTranslation(
|
665
|
+
transformation,
|
666
|
+
scratchFromTransformationCenter
|
667
|
+
);
|
668
|
+
const scale = Matrix4_default.getScale(
|
669
|
+
transformation,
|
670
|
+
scratchFromTransformationScale
|
671
|
+
);
|
672
|
+
const radius = 0.5 * Cartesian3_default.magnitude(scale);
|
673
|
+
result.center = Cartesian3_default.clone(center, result.center);
|
674
|
+
result.radius = radius;
|
675
|
+
return result;
|
676
|
+
};
|
677
|
+
BoundingSphere.clone = function(sphere, result) {
|
678
|
+
if (!defined_default(sphere)) {
|
679
|
+
return void 0;
|
680
|
+
}
|
681
|
+
if (!defined_default(result)) {
|
682
|
+
return new BoundingSphere(sphere.center, sphere.radius);
|
683
|
+
}
|
684
|
+
result.center = Cartesian3_default.clone(sphere.center, result.center);
|
685
|
+
result.radius = sphere.radius;
|
686
|
+
return result;
|
687
|
+
};
|
688
|
+
BoundingSphere.packedLength = 4;
|
689
|
+
BoundingSphere.pack = function(value, array, startingIndex) {
|
690
|
+
Check_default.typeOf.object("value", value);
|
691
|
+
Check_default.defined("array", array);
|
692
|
+
startingIndex = defaultValue_default(startingIndex, 0);
|
693
|
+
const center = value.center;
|
694
|
+
array[startingIndex++] = center.x;
|
695
|
+
array[startingIndex++] = center.y;
|
696
|
+
array[startingIndex++] = center.z;
|
697
|
+
array[startingIndex] = value.radius;
|
698
|
+
return array;
|
699
|
+
};
|
700
|
+
BoundingSphere.unpack = function(array, startingIndex, result) {
|
701
|
+
Check_default.defined("array", array);
|
702
|
+
startingIndex = defaultValue_default(startingIndex, 0);
|
703
|
+
if (!defined_default(result)) {
|
704
|
+
result = new BoundingSphere();
|
705
|
+
}
|
706
|
+
const center = result.center;
|
707
|
+
center.x = array[startingIndex++];
|
708
|
+
center.y = array[startingIndex++];
|
709
|
+
center.z = array[startingIndex++];
|
710
|
+
result.radius = array[startingIndex];
|
711
|
+
return result;
|
712
|
+
};
|
713
|
+
var unionScratch = new Cartesian3_default();
|
714
|
+
var unionScratchCenter = new Cartesian3_default();
|
715
|
+
BoundingSphere.union = function(left, right, result) {
|
716
|
+
Check_default.typeOf.object("left", left);
|
717
|
+
Check_default.typeOf.object("right", right);
|
718
|
+
if (!defined_default(result)) {
|
719
|
+
result = new BoundingSphere();
|
720
|
+
}
|
721
|
+
const leftCenter = left.center;
|
722
|
+
const leftRadius = left.radius;
|
723
|
+
const rightCenter = right.center;
|
724
|
+
const rightRadius = right.radius;
|
725
|
+
const toRightCenter = Cartesian3_default.subtract(
|
726
|
+
rightCenter,
|
727
|
+
leftCenter,
|
728
|
+
unionScratch
|
729
|
+
);
|
730
|
+
const centerSeparation = Cartesian3_default.magnitude(toRightCenter);
|
731
|
+
if (leftRadius >= centerSeparation + rightRadius) {
|
732
|
+
left.clone(result);
|
733
|
+
return result;
|
734
|
+
}
|
735
|
+
if (rightRadius >= centerSeparation + leftRadius) {
|
736
|
+
right.clone(result);
|
737
|
+
return result;
|
738
|
+
}
|
739
|
+
const halfDistanceBetweenTangentPoints = (leftRadius + centerSeparation + rightRadius) * 0.5;
|
740
|
+
const center = Cartesian3_default.multiplyByScalar(
|
741
|
+
toRightCenter,
|
742
|
+
(-leftRadius + halfDistanceBetweenTangentPoints) / centerSeparation,
|
743
|
+
unionScratchCenter
|
744
|
+
);
|
745
|
+
Cartesian3_default.add(center, leftCenter, center);
|
746
|
+
Cartesian3_default.clone(center, result.center);
|
747
|
+
result.radius = halfDistanceBetweenTangentPoints;
|
748
|
+
return result;
|
749
|
+
};
|
750
|
+
var expandScratch = new Cartesian3_default();
|
751
|
+
BoundingSphere.expand = function(sphere, point, result) {
|
752
|
+
Check_default.typeOf.object("sphere", sphere);
|
753
|
+
Check_default.typeOf.object("point", point);
|
754
|
+
result = BoundingSphere.clone(sphere, result);
|
755
|
+
const radius = Cartesian3_default.magnitude(
|
756
|
+
Cartesian3_default.subtract(point, result.center, expandScratch)
|
757
|
+
);
|
758
|
+
if (radius > result.radius) {
|
759
|
+
result.radius = radius;
|
760
|
+
}
|
761
|
+
return result;
|
762
|
+
};
|
763
|
+
BoundingSphere.intersectPlane = function(sphere, plane) {
|
764
|
+
Check_default.typeOf.object("sphere", sphere);
|
765
|
+
Check_default.typeOf.object("plane", plane);
|
766
|
+
const center = sphere.center;
|
767
|
+
const radius = sphere.radius;
|
768
|
+
const normal = plane.normal;
|
769
|
+
const distanceToPlane = Cartesian3_default.dot(normal, center) + plane.distance;
|
770
|
+
if (distanceToPlane < -radius) {
|
771
|
+
return Intersect_default.OUTSIDE;
|
772
|
+
} else if (distanceToPlane < radius) {
|
773
|
+
return Intersect_default.INTERSECTING;
|
774
|
+
}
|
775
|
+
return Intersect_default.INSIDE;
|
776
|
+
};
|
777
|
+
BoundingSphere.transform = function(sphere, transform, result) {
|
778
|
+
Check_default.typeOf.object("sphere", sphere);
|
779
|
+
Check_default.typeOf.object("transform", transform);
|
780
|
+
if (!defined_default(result)) {
|
781
|
+
result = new BoundingSphere();
|
782
|
+
}
|
783
|
+
result.center = Matrix4_default.multiplyByPoint(
|
784
|
+
transform,
|
785
|
+
sphere.center,
|
786
|
+
result.center
|
787
|
+
);
|
788
|
+
result.radius = Matrix4_default.getMaximumScale(transform) * sphere.radius;
|
789
|
+
return result;
|
790
|
+
};
|
791
|
+
var distanceSquaredToScratch = new Cartesian3_default();
|
792
|
+
BoundingSphere.distanceSquaredTo = function(sphere, cartesian) {
|
793
|
+
Check_default.typeOf.object("sphere", sphere);
|
794
|
+
Check_default.typeOf.object("cartesian", cartesian);
|
795
|
+
const diff = Cartesian3_default.subtract(
|
796
|
+
sphere.center,
|
797
|
+
cartesian,
|
798
|
+
distanceSquaredToScratch
|
799
|
+
);
|
800
|
+
const distance = Cartesian3_default.magnitude(diff) - sphere.radius;
|
801
|
+
if (distance <= 0) {
|
802
|
+
return 0;
|
803
|
+
}
|
804
|
+
return distance * distance;
|
805
|
+
};
|
806
|
+
BoundingSphere.transformWithoutScale = function(sphere, transform, result) {
|
807
|
+
Check_default.typeOf.object("sphere", sphere);
|
808
|
+
Check_default.typeOf.object("transform", transform);
|
809
|
+
if (!defined_default(result)) {
|
810
|
+
result = new BoundingSphere();
|
811
|
+
}
|
812
|
+
result.center = Matrix4_default.multiplyByPoint(
|
813
|
+
transform,
|
814
|
+
sphere.center,
|
815
|
+
result.center
|
816
|
+
);
|
817
|
+
result.radius = sphere.radius;
|
818
|
+
return result;
|
819
|
+
};
|
820
|
+
var scratchCartesian3 = new Cartesian3_default();
|
821
|
+
BoundingSphere.computePlaneDistances = function(sphere, position, direction, result) {
|
822
|
+
Check_default.typeOf.object("sphere", sphere);
|
823
|
+
Check_default.typeOf.object("position", position);
|
824
|
+
Check_default.typeOf.object("direction", direction);
|
825
|
+
if (!defined_default(result)) {
|
826
|
+
result = new Interval_default();
|
827
|
+
}
|
828
|
+
const toCenter = Cartesian3_default.subtract(
|
829
|
+
sphere.center,
|
830
|
+
position,
|
831
|
+
scratchCartesian3
|
832
|
+
);
|
833
|
+
const mag = Cartesian3_default.dot(direction, toCenter);
|
834
|
+
result.start = mag - sphere.radius;
|
835
|
+
result.stop = mag + sphere.radius;
|
836
|
+
return result;
|
837
|
+
};
|
838
|
+
var projectTo2DNormalScratch = new Cartesian3_default();
|
839
|
+
var projectTo2DEastScratch = new Cartesian3_default();
|
840
|
+
var projectTo2DNorthScratch = new Cartesian3_default();
|
841
|
+
var projectTo2DWestScratch = new Cartesian3_default();
|
842
|
+
var projectTo2DSouthScratch = new Cartesian3_default();
|
843
|
+
var projectTo2DCartographicScratch = new Cartographic_default();
|
844
|
+
var projectTo2DPositionsScratch = new Array(8);
|
845
|
+
for (let n = 0; n < 8; ++n) {
|
846
|
+
projectTo2DPositionsScratch[n] = new Cartesian3_default();
|
847
|
+
}
|
848
|
+
var projectTo2DProjection = new GeographicProjection_default();
|
849
|
+
BoundingSphere.projectTo2D = function(sphere, projection, result) {
|
850
|
+
Check_default.typeOf.object("sphere", sphere);
|
851
|
+
projectTo2DProjection._ellipsoid = Ellipsoid_default.default;
|
852
|
+
projection = defaultValue_default(projection, projectTo2DProjection);
|
853
|
+
const ellipsoid = projection.ellipsoid;
|
854
|
+
let center = sphere.center;
|
855
|
+
const radius = sphere.radius;
|
856
|
+
let normal;
|
857
|
+
if (Cartesian3_default.equals(center, Cartesian3_default.ZERO)) {
|
858
|
+
normal = Cartesian3_default.clone(Cartesian3_default.UNIT_X, projectTo2DNormalScratch);
|
859
|
+
} else {
|
860
|
+
normal = ellipsoid.geodeticSurfaceNormal(center, projectTo2DNormalScratch);
|
861
|
+
}
|
862
|
+
const east = Cartesian3_default.cross(
|
863
|
+
Cartesian3_default.UNIT_Z,
|
864
|
+
normal,
|
865
|
+
projectTo2DEastScratch
|
866
|
+
);
|
867
|
+
Cartesian3_default.normalize(east, east);
|
868
|
+
const north = Cartesian3_default.cross(normal, east, projectTo2DNorthScratch);
|
869
|
+
Cartesian3_default.normalize(north, north);
|
870
|
+
Cartesian3_default.multiplyByScalar(normal, radius, normal);
|
871
|
+
Cartesian3_default.multiplyByScalar(north, radius, north);
|
872
|
+
Cartesian3_default.multiplyByScalar(east, radius, east);
|
873
|
+
const south = Cartesian3_default.negate(north, projectTo2DSouthScratch);
|
874
|
+
const west = Cartesian3_default.negate(east, projectTo2DWestScratch);
|
875
|
+
const positions = projectTo2DPositionsScratch;
|
876
|
+
let corner = positions[0];
|
877
|
+
Cartesian3_default.add(normal, north, corner);
|
878
|
+
Cartesian3_default.add(corner, east, corner);
|
879
|
+
corner = positions[1];
|
880
|
+
Cartesian3_default.add(normal, north, corner);
|
881
|
+
Cartesian3_default.add(corner, west, corner);
|
882
|
+
corner = positions[2];
|
883
|
+
Cartesian3_default.add(normal, south, corner);
|
884
|
+
Cartesian3_default.add(corner, west, corner);
|
885
|
+
corner = positions[3];
|
886
|
+
Cartesian3_default.add(normal, south, corner);
|
887
|
+
Cartesian3_default.add(corner, east, corner);
|
888
|
+
Cartesian3_default.negate(normal, normal);
|
889
|
+
corner = positions[4];
|
890
|
+
Cartesian3_default.add(normal, north, corner);
|
891
|
+
Cartesian3_default.add(corner, east, corner);
|
892
|
+
corner = positions[5];
|
893
|
+
Cartesian3_default.add(normal, north, corner);
|
894
|
+
Cartesian3_default.add(corner, west, corner);
|
895
|
+
corner = positions[6];
|
896
|
+
Cartesian3_default.add(normal, south, corner);
|
897
|
+
Cartesian3_default.add(corner, west, corner);
|
898
|
+
corner = positions[7];
|
899
|
+
Cartesian3_default.add(normal, south, corner);
|
900
|
+
Cartesian3_default.add(corner, east, corner);
|
901
|
+
const length = positions.length;
|
902
|
+
for (let i = 0; i < length; ++i) {
|
903
|
+
const position = positions[i];
|
904
|
+
Cartesian3_default.add(center, position, position);
|
905
|
+
const cartographic = ellipsoid.cartesianToCartographic(
|
906
|
+
position,
|
907
|
+
projectTo2DCartographicScratch
|
908
|
+
);
|
909
|
+
projection.project(cartographic, position);
|
910
|
+
}
|
911
|
+
result = BoundingSphere.fromPoints(positions, result);
|
912
|
+
center = result.center;
|
913
|
+
const x = center.x;
|
914
|
+
const y = center.y;
|
915
|
+
const z = center.z;
|
916
|
+
center.x = z;
|
917
|
+
center.y = x;
|
918
|
+
center.z = y;
|
919
|
+
return result;
|
920
|
+
};
|
921
|
+
BoundingSphere.isOccluded = function(sphere, occluder) {
|
922
|
+
Check_default.typeOf.object("sphere", sphere);
|
923
|
+
Check_default.typeOf.object("occluder", occluder);
|
924
|
+
return !occluder.isBoundingSphereVisible(sphere);
|
925
|
+
};
|
926
|
+
BoundingSphere.equals = function(left, right) {
|
927
|
+
return left === right || defined_default(left) && defined_default(right) && Cartesian3_default.equals(left.center, right.center) && left.radius === right.radius;
|
928
|
+
};
|
929
|
+
BoundingSphere.prototype.intersectPlane = function(plane) {
|
930
|
+
return BoundingSphere.intersectPlane(this, plane);
|
931
|
+
};
|
932
|
+
BoundingSphere.prototype.distanceSquaredTo = function(cartesian) {
|
933
|
+
return BoundingSphere.distanceSquaredTo(this, cartesian);
|
934
|
+
};
|
935
|
+
BoundingSphere.prototype.computePlaneDistances = function(position, direction, result) {
|
936
|
+
return BoundingSphere.computePlaneDistances(
|
937
|
+
this,
|
938
|
+
position,
|
939
|
+
direction,
|
940
|
+
result
|
941
|
+
);
|
942
|
+
};
|
943
|
+
BoundingSphere.prototype.isOccluded = function(occluder) {
|
944
|
+
return BoundingSphere.isOccluded(this, occluder);
|
945
|
+
};
|
946
|
+
BoundingSphere.prototype.equals = function(right) {
|
947
|
+
return BoundingSphere.equals(this, right);
|
948
|
+
};
|
949
|
+
BoundingSphere.prototype.clone = function(result) {
|
950
|
+
return BoundingSphere.clone(this, result);
|
951
|
+
};
|
952
|
+
BoundingSphere.prototype.volume = function() {
|
953
|
+
const radius = this.radius;
|
954
|
+
return volumeConstant * radius * radius * radius;
|
955
|
+
};
|
956
|
+
var BoundingSphere_default = BoundingSphere;
|
957
|
+
|
958
|
+
export {
|
959
|
+
GeographicProjection_default,
|
960
|
+
Intersect_default,
|
961
|
+
Interval_default,
|
962
|
+
BoundingSphere_default
|
963
|
+
};
|