@cesium/engine 3.0.2 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Build/ThirdParty/Workers/pako_deflate.min.js +605 -0
- package/Build/ThirdParty/Workers/pako_inflate.min.js +800 -0
- package/Build/ThirdParty/Workers/z-worker-pako.js +502 -0
- package/Build/Workers/chunk-27R2KRIK.js +634 -0
- package/Build/Workers/chunk-2C65EKYA.js +55 -0
- package/Build/Workers/chunk-2NLMZNJI.js +138 -0
- package/Build/Workers/chunk-4V6RCTVH.js +289 -0
- package/Build/Workers/chunk-4VWUFKYW.js +368 -0
- package/Build/Workers/chunk-527JG4D7.js +629 -0
- package/Build/Workers/chunk-5U4UHRZ2.js +8644 -0
- package/Build/Workers/chunk-7CZEWQWE.js +353 -0
- package/Build/Workers/chunk-7IMAWM6A.js +842 -0
- package/Build/Workers/{package.js → chunk-A6EA6KIE.js} +13 -2
- package/Build/Workers/chunk-AXGQUPXA.js +1075 -0
- package/Build/Workers/chunk-BT6YIL2N.js +39 -0
- package/Build/Workers/chunk-C6MRR5YL.js +476 -0
- package/Build/Workers/chunk-DJUTBX6A.js +1860 -0
- package/Build/Workers/chunk-EQ6ZAP37.js +218 -0
- package/Build/Workers/chunk-F7P2HCYZ.js +73 -0
- package/Build/Workers/chunk-FE2XG3SS.js +73 -0
- package/Build/Workers/chunk-FKHRSGKP.js +781 -0
- package/Build/Workers/chunk-FVDTKX3F.js +58 -0
- package/Build/Workers/chunk-FYHCAKU6.js +684 -0
- package/Build/Workers/chunk-G3MOT7BZ.js +157 -0
- package/Build/Workers/chunk-H52L6U76.js +421 -0
- package/Build/Workers/chunk-H6MBQ4W4.js +305 -0
- package/Build/Workers/chunk-HCZR75II.js +2716 -0
- package/Build/Workers/chunk-I5MQWHBR.js +102 -0
- package/Build/Workers/chunk-KAFF2QX3.js +258 -0
- package/Build/Workers/chunk-LGSGX2RH.js +757 -0
- package/Build/Workers/chunk-LQRFWCNX.js +124 -0
- package/Build/Workers/chunk-N5MMDSD2.js +44 -0
- package/Build/Workers/chunk-NRETMGYL.js +390 -0
- package/Build/Workers/chunk-P4M4QUNQ.js +196 -0
- package/Build/Workers/chunk-P7PWX5HR.js +430 -0
- package/Build/Workers/chunk-PGB3EFR7.js +171 -0
- package/Build/Workers/chunk-PW5CA4MJ.js +3273 -0
- package/Build/Workers/chunk-PWDYKCNC.js +501 -0
- package/Build/Workers/chunk-QIS3NB7U.js +1258 -0
- package/Build/Workers/chunk-QVJ6IRKV.js +77 -0
- package/Build/Workers/chunk-RDCDRNJ7.js +117 -0
- package/Build/Workers/chunk-RDM3BKNC.js +1009 -0
- package/Build/Workers/chunk-RRUPTJ6P.js +452 -0
- package/Build/Workers/chunk-SGRWJKNO.js +400 -0
- package/Build/Workers/chunk-TF5D2H7B.js +138 -0
- package/Build/Workers/chunk-TVYIHH4V.js +513 -0
- package/Build/Workers/chunk-U5LKG6LX.js +101 -0
- package/Build/Workers/chunk-UGZGTV5K.js +302 -0
- package/Build/Workers/chunk-UN7AK64D.js +163 -0
- package/Build/Workers/chunk-V2LKNJGT.js +59 -0
- package/Build/Workers/chunk-VSCXSFHE.js +1477 -0
- package/Build/Workers/chunk-XJCTFTBM.js +2041 -0
- package/Build/Workers/chunk-XZVQMPWG.js +100 -0
- package/Build/Workers/chunk-YLAFWVOW.js +834 -0
- package/Build/Workers/chunk-YLS3FX3U.js +236 -0
- package/Build/Workers/chunk-YMJPANZZ.js +693 -0
- package/Build/Workers/combineGeometry.js +65 -15
- package/Build/Workers/createBoxGeometry.js +55 -10
- package/Build/Workers/createBoxOutlineGeometry.js +231 -310
- package/Build/Workers/createCircleGeometry.js +185 -202
- package/Build/Workers/createCircleOutlineGeometry.js +141 -155
- package/Build/Workers/createCoplanarPolygonGeometry.js +477 -557
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +218 -230
- package/Build/Workers/createCorridorGeometry.js +1162 -1307
- package/Build/Workers/createCorridorOutlineGeometry.js +533 -569
- package/Build/Workers/createCylinderGeometry.js +57 -10
- package/Build/Workers/createCylinderOutlineGeometry.js +224 -258
- package/Build/Workers/createEllipseGeometry.js +68 -12
- package/Build/Workers/createEllipseOutlineGeometry.js +61 -12
- package/Build/Workers/createEllipsoidGeometry.js +56 -10
- package/Build/Workers/createEllipsoidOutlineGeometry.js +58 -13
- package/Build/Workers/createFrustumGeometry.js +55 -10
- package/Build/Workers/createFrustumOutlineGeometry.js +226 -243
- package/Build/Workers/createGeometry.js +143 -48
- package/Build/Workers/createGroundPolylineGeometry.js +1484 -2012
- package/Build/Workers/createPlaneGeometry.js +216 -243
- package/Build/Workers/createPlaneOutlineGeometry.js +121 -113
- package/Build/Workers/createPolygonGeometry.js +1041 -1327
- package/Build/Workers/createPolygonOutlineGeometry.js +516 -657
- package/Build/Workers/createPolylineGeometry.js +471 -547
- package/Build/Workers/createPolylineVolumeGeometry.js +352 -384
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +271 -295
- package/Build/Workers/createRectangleGeometry.js +1128 -1331
- package/Build/Workers/createRectangleOutlineGeometry.js +445 -500
- package/Build/Workers/createSimplePolylineGeometry.js +381 -440
- package/Build/Workers/createSphereGeometry.js +112 -118
- package/Build/Workers/createSphereOutlineGeometry.js +112 -121
- package/Build/Workers/createTaskProcessorWorker.js +32 -127
- package/Build/Workers/createVectorTileClampedPolylines.js +462 -505
- package/Build/Workers/createVectorTileGeometries.js +377 -436
- package/Build/Workers/createVectorTilePoints.js +110 -77
- package/Build/Workers/createVectorTilePolygons.js +369 -391
- package/Build/Workers/createVectorTilePolylines.js +252 -244
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +543 -615
- package/Build/Workers/createVerticesFromHeightmap.js +2244 -2677
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +682 -904
- package/Build/Workers/createWallGeometry.js +459 -593
- package/Build/Workers/createWallOutlineGeometry.js +324 -419
- package/Build/Workers/decodeDraco.js +327 -347
- package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +2530 -3567
- package/Build/Workers/decodeI3S.js +765 -970
- package/Build/Workers/transcodeKTX2.js +3351 -1473
- package/Build/Workers/transferTypedArrayTest.js +3 -4
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +748 -953
- package/LICENSE.md +0 -12
- package/Source/Core/CesiumTerrainProvider.js +1 -2
- package/Source/Core/FeatureDetection.js +9 -0
- package/Source/Core/GoogleMaps.js +1 -1
- package/Source/Core/Ion.js +1 -1
- package/Source/Core/KTX2Transcoder.js +7 -3
- package/Source/Core/TaskProcessor.js +150 -146
- package/Source/Core/Transforms.js +2 -2
- package/Source/Core/buildModuleUrl.js +6 -5
- package/Source/Scene/ArcGisMapService.js +1 -1
- package/Source/Scene/DracoLoader.js +26 -3
- package/Source/Scene/I3SDataProvider.js +0 -27
- package/Source/Scene/I3SDecoder.js +127 -0
- package/Source/Scene/I3SNode.js +32 -110
- package/Source/Scene/Implicit3DTileContent.js +13 -0
- package/Source/Scene/ImplicitTileset.js +5 -0
- package/Source/Scene/Model/I3dmLoader.js +5 -1
- package/Source/Scene/Model/Model.js +4 -1
- package/Source/Scene/OpenStreetMapImageryProvider.js +4 -1
- package/Source/Scene/SingleTileImageryProvider.js +4 -2
- package/Source/ThirdParty/Workers/basis_transcoder.js +1 -1
- package/Source/{WorkersES6 → Workers}/createGeometry.js +11 -12
- package/Source/{WorkersES6 → Workers}/createTaskProcessorWorker.js +43 -59
- package/Source/{WorkersES6 → Workers}/decodeDraco.js +19 -25
- package/Source/{WorkersES6 → Workers}/decodeI3S.js +18 -32
- package/Source/{WorkersES6 → Workers}/transcodeKTX2.js +19 -26
- package/Source/Workers/transferTypedArrayTest.js +0 -6
- package/index.d.ts +16 -7
- package/index.js +252 -251
- package/package.json +2 -1
- package/Build/Workers/ArcType-2d9abbbc.js +0 -37
- package/Build/Workers/AttributeCompression-f9f6c717.js +0 -716
- package/Build/Workers/AxisAlignedBoundingBox-a03420b1.js +0 -258
- package/Build/Workers/BoundingRectangle-32fa8a4a.js +0 -369
- package/Build/Workers/BoxGeometry-cd550612.js +0 -884
- package/Build/Workers/Check-6ede7e26.js +0 -290
- package/Build/Workers/Color-571a6085.js +0 -2262
- package/Build/Workers/ComponentDatatype-cf1fa08e.js +0 -341
- package/Build/Workers/CoplanarPolygonGeometryLibrary-488b1a9f.js +0 -132
- package/Build/Workers/CorridorGeometryLibrary-fc4ff147.js +0 -498
- package/Build/Workers/CylinderGeometry-bc26926d.js +0 -467
- package/Build/Workers/CylinderGeometryLibrary-7bf291b4.js +0 -63
- package/Build/Workers/EllipseGeometry-89533a10.js +0 -1304
- package/Build/Workers/EllipseGeometryLibrary-b0d7df17.js +0 -366
- package/Build/Workers/EllipseOutlineGeometry-63ff7a87.js +0 -443
- package/Build/Workers/EllipsoidGeodesic-5b3623dc.js +0 -520
- package/Build/Workers/EllipsoidGeometry-07e99d2d.js +0 -637
- package/Build/Workers/EllipsoidOutlineGeometry-ba5c7ee2.js +0 -454
- package/Build/Workers/EllipsoidRhumbLine-ef872433.js +0 -741
- package/Build/Workers/EllipsoidTangentPlane-65d41b3e.js +0 -373
- package/Build/Workers/EncodedCartesian3-57415c8a.js +0 -171
- package/Build/Workers/FrustumGeometry-4a7589ed.js +0 -2540
- package/Build/Workers/GeometryAttribute-a5b6275b.js +0 -619
- package/Build/Workers/GeometryAttributes-ad136444.js +0 -91
- package/Build/Workers/GeometryInstance-34d9e21e.js +0 -121
- package/Build/Workers/GeometryOffsetAttribute-9ad0019c.js +0 -16
- package/Build/Workers/GeometryPipeline-fa9e6ffc.js +0 -3690
- package/Build/Workers/IndexDatatype-2643aa47.js +0 -200
- package/Build/Workers/IntersectionTests-feace3da.js +0 -1836
- package/Build/Workers/Math-0a2ac845.js +0 -1340
- package/Build/Workers/Matrix2-e1298525.js +0 -7086
- package/Build/Workers/Matrix3-41c58dde.js +0 -4283
- package/Build/Workers/OrientedBoundingBox-6b94d955.js +0 -1259
- package/Build/Workers/Plane-4c3d403b.js +0 -309
- package/Build/Workers/PolygonGeometryLibrary-4ffc457d.js +0 -1074
- package/Build/Workers/PolygonPipeline-d5e66350.js +0 -1344
- package/Build/Workers/PolylinePipeline-83410f0c.js +0 -573
- package/Build/Workers/PolylineVolumeGeometryLibrary-290e7aec.js +0 -781
- package/Build/Workers/PrimitivePipeline-6081d138.js +0 -966
- package/Build/Workers/RectangleGeometryLibrary-986710d8.js +0 -280
- package/Build/Workers/RuntimeError-ef395448.js +0 -68
- package/Build/Workers/TerrainEncoding-528e1d68.js +0 -1227
- package/Build/Workers/Transforms-b527bb09.js +0 -14714
- package/Build/Workers/VertexFormat-030f11ff.js +0 -312
- package/Build/Workers/WallGeometryLibrary-faf583f8.js +0 -211
- package/Build/Workers/WebGLConstants-0b1ce7ba.js +0 -620
- package/Build/Workers/WebMercatorProjection-13ed1a6e.js +0 -151
- package/Build/Workers/arrayRemoveDuplicates-d2061e85.js +0 -129
- package/Build/Workers/cesiumWorkerBootstrapper.js +0 -1363
- package/Build/Workers/combine-d9581036.js +0 -82
- package/Build/Workers/defaultValue-fe22d8c0.js +0 -51
- package/Source/ThirdParty/Workers/draco_decoder_nodejs.js +0 -117
- package/Source/Workers/cesiumWorkerBootstrapper.js +0 -2290
- package/Source/Workers/package.json +0 -1
- /package/Source/{WorkersES6 → Workers}/combineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createBoxGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createBoxOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createCircleGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createCircleOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createCoplanarPolygonGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createCoplanarPolygonOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createCorridorGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createCorridorOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createCylinderGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createCylinderOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createEllipseGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createEllipseOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createEllipsoidGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createEllipsoidOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createFrustumGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createFrustumOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createGroundPolylineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createPlaneGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createPlaneOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createPolygonGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createPolygonOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createPolylineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createPolylineVolumeGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createPolylineVolumeOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createRectangleGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createRectangleOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createSimplePolylineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createSphereGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createSphereOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createVectorTileClampedPolylines.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createVectorTileGeometries.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createVectorTilePoints.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createVectorTilePolygons.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createVectorTilePolylines.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createVerticesFromGoogleEarthEnterpriseBuffer.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createVerticesFromHeightmap.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createVerticesFromQuantizedTerrainMesh.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createWallGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/createWallOutlineGeometry.js +0 -0
- /package/Source/{WorkersES6 → Workers}/decodeGoogleEarthEnterprisePacket.js +0 -0
- /package/Source/{WorkersES6 → Workers}/upsampleQuantizedTerrainMesh.js +0 -0
|
@@ -1,1074 +0,0 @@
|
|
|
1
|
-
define(['exports', './ArcType-2d9abbbc', './arrayRemoveDuplicates-d2061e85', './Matrix2-e1298525', './Matrix3-41c58dde', './ComponentDatatype-cf1fa08e', './defaultValue-fe22d8c0', './EllipsoidRhumbLine-ef872433', './GeometryAttribute-a5b6275b', './GeometryAttributes-ad136444', './GeometryPipeline-fa9e6ffc', './IndexDatatype-2643aa47', './Math-0a2ac845', './PolygonPipeline-d5e66350', './Transforms-b527bb09'], (function (exports, ArcType, arrayRemoveDuplicates, Matrix2, Matrix3, ComponentDatatype, defaultValue, EllipsoidRhumbLine, GeometryAttribute, GeometryAttributes, GeometryPipeline, IndexDatatype, Math$1, PolygonPipeline, Transforms) { 'use strict';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* A queue that can enqueue items at the end, and dequeue items from the front.
|
|
5
|
-
*
|
|
6
|
-
* @alias Queue
|
|
7
|
-
* @constructor
|
|
8
|
-
*/
|
|
9
|
-
function Queue() {
|
|
10
|
-
this._array = [];
|
|
11
|
-
this._offset = 0;
|
|
12
|
-
this._length = 0;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
Object.defineProperties(Queue.prototype, {
|
|
16
|
-
/**
|
|
17
|
-
* The length of the queue.
|
|
18
|
-
*
|
|
19
|
-
* @memberof Queue.prototype
|
|
20
|
-
*
|
|
21
|
-
* @type {number}
|
|
22
|
-
* @readonly
|
|
23
|
-
*/
|
|
24
|
-
length: {
|
|
25
|
-
get: function () {
|
|
26
|
-
return this._length;
|
|
27
|
-
},
|
|
28
|
-
},
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Enqueues the specified item.
|
|
33
|
-
*
|
|
34
|
-
* @param {*} item The item to enqueue.
|
|
35
|
-
*/
|
|
36
|
-
Queue.prototype.enqueue = function (item) {
|
|
37
|
-
this._array.push(item);
|
|
38
|
-
this._length++;
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Dequeues an item. Returns undefined if the queue is empty.
|
|
43
|
-
*
|
|
44
|
-
* @returns {*} The the dequeued item.
|
|
45
|
-
*/
|
|
46
|
-
Queue.prototype.dequeue = function () {
|
|
47
|
-
if (this._length === 0) {
|
|
48
|
-
return undefined;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const array = this._array;
|
|
52
|
-
let offset = this._offset;
|
|
53
|
-
const item = array[offset];
|
|
54
|
-
array[offset] = undefined;
|
|
55
|
-
|
|
56
|
-
offset++;
|
|
57
|
-
if (offset > 10 && offset * 2 > array.length) {
|
|
58
|
-
//compact array
|
|
59
|
-
this._array = array.slice(offset);
|
|
60
|
-
offset = 0;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
this._offset = offset;
|
|
64
|
-
this._length--;
|
|
65
|
-
|
|
66
|
-
return item;
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Returns the item at the front of the queue. Returns undefined if the queue is empty.
|
|
71
|
-
*
|
|
72
|
-
* @returns {*} The item at the front of the queue.
|
|
73
|
-
*/
|
|
74
|
-
Queue.prototype.peek = function () {
|
|
75
|
-
if (this._length === 0) {
|
|
76
|
-
return undefined;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
return this._array[this._offset];
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Check whether this queue contains the specified item.
|
|
84
|
-
*
|
|
85
|
-
* @param {*} item The item to search for.
|
|
86
|
-
*/
|
|
87
|
-
Queue.prototype.contains = function (item) {
|
|
88
|
-
return this._array.indexOf(item) !== -1;
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Remove all items from the queue.
|
|
93
|
-
*/
|
|
94
|
-
Queue.prototype.clear = function () {
|
|
95
|
-
this._array.length = this._offset = this._length = 0;
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Sort the items in the queue in-place.
|
|
100
|
-
*
|
|
101
|
-
* @param {Queue.Comparator} compareFunction A function that defines the sort order.
|
|
102
|
-
*/
|
|
103
|
-
Queue.prototype.sort = function (compareFunction) {
|
|
104
|
-
if (this._offset > 0) {
|
|
105
|
-
//compact array
|
|
106
|
-
this._array = this._array.slice(this._offset);
|
|
107
|
-
this._offset = 0;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
this._array.sort(compareFunction);
|
|
111
|
-
};
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* @private
|
|
115
|
-
*/
|
|
116
|
-
const PolygonGeometryLibrary = {};
|
|
117
|
-
|
|
118
|
-
PolygonGeometryLibrary.computeHierarchyPackedLength = function (
|
|
119
|
-
polygonHierarchy,
|
|
120
|
-
CartesianX
|
|
121
|
-
) {
|
|
122
|
-
let numComponents = 0;
|
|
123
|
-
const stack = [polygonHierarchy];
|
|
124
|
-
while (stack.length > 0) {
|
|
125
|
-
const hierarchy = stack.pop();
|
|
126
|
-
if (!defaultValue.defined(hierarchy)) {
|
|
127
|
-
continue;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
numComponents += 2;
|
|
131
|
-
|
|
132
|
-
const positions = hierarchy.positions;
|
|
133
|
-
const holes = hierarchy.holes;
|
|
134
|
-
|
|
135
|
-
if (defaultValue.defined(positions) && positions.length > 0) {
|
|
136
|
-
numComponents += positions.length * CartesianX.packedLength;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
if (defaultValue.defined(holes)) {
|
|
140
|
-
const length = holes.length;
|
|
141
|
-
for (let i = 0; i < length; ++i) {
|
|
142
|
-
stack.push(holes[i]);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
return numComponents;
|
|
148
|
-
};
|
|
149
|
-
|
|
150
|
-
PolygonGeometryLibrary.packPolygonHierarchy = function (
|
|
151
|
-
polygonHierarchy,
|
|
152
|
-
array,
|
|
153
|
-
startingIndex,
|
|
154
|
-
CartesianX
|
|
155
|
-
) {
|
|
156
|
-
const stack = [polygonHierarchy];
|
|
157
|
-
while (stack.length > 0) {
|
|
158
|
-
const hierarchy = stack.pop();
|
|
159
|
-
if (!defaultValue.defined(hierarchy)) {
|
|
160
|
-
continue;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
const positions = hierarchy.positions;
|
|
164
|
-
const holes = hierarchy.holes;
|
|
165
|
-
|
|
166
|
-
array[startingIndex++] = defaultValue.defined(positions) ? positions.length : 0;
|
|
167
|
-
array[startingIndex++] = defaultValue.defined(holes) ? holes.length : 0;
|
|
168
|
-
|
|
169
|
-
if (defaultValue.defined(positions)) {
|
|
170
|
-
const positionsLength = positions.length;
|
|
171
|
-
for (
|
|
172
|
-
let i = 0;
|
|
173
|
-
i < positionsLength;
|
|
174
|
-
++i, startingIndex += CartesianX.packedLength
|
|
175
|
-
) {
|
|
176
|
-
CartesianX.pack(positions[i], array, startingIndex);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
if (defaultValue.defined(holes)) {
|
|
181
|
-
const holesLength = holes.length;
|
|
182
|
-
for (let j = 0; j < holesLength; ++j) {
|
|
183
|
-
stack.push(holes[j]);
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
return startingIndex;
|
|
189
|
-
};
|
|
190
|
-
|
|
191
|
-
PolygonGeometryLibrary.unpackPolygonHierarchy = function (
|
|
192
|
-
array,
|
|
193
|
-
startingIndex,
|
|
194
|
-
CartesianX
|
|
195
|
-
) {
|
|
196
|
-
const positionsLength = array[startingIndex++];
|
|
197
|
-
const holesLength = array[startingIndex++];
|
|
198
|
-
|
|
199
|
-
const positions = new Array(positionsLength);
|
|
200
|
-
const holes = holesLength > 0 ? new Array(holesLength) : undefined;
|
|
201
|
-
|
|
202
|
-
for (
|
|
203
|
-
let i = 0;
|
|
204
|
-
i < positionsLength;
|
|
205
|
-
++i, startingIndex += CartesianX.packedLength
|
|
206
|
-
) {
|
|
207
|
-
positions[i] = CartesianX.unpack(array, startingIndex);
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
for (let j = 0; j < holesLength; ++j) {
|
|
211
|
-
holes[j] = PolygonGeometryLibrary.unpackPolygonHierarchy(
|
|
212
|
-
array,
|
|
213
|
-
startingIndex,
|
|
214
|
-
CartesianX
|
|
215
|
-
);
|
|
216
|
-
startingIndex = holes[j].startingIndex;
|
|
217
|
-
delete holes[j].startingIndex;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
return {
|
|
221
|
-
positions: positions,
|
|
222
|
-
holes: holes,
|
|
223
|
-
startingIndex: startingIndex,
|
|
224
|
-
};
|
|
225
|
-
};
|
|
226
|
-
|
|
227
|
-
const distance2DScratch = new Matrix2.Cartesian2();
|
|
228
|
-
function getPointAtDistance2D(p0, p1, distance, length) {
|
|
229
|
-
Matrix2.Cartesian2.subtract(p1, p0, distance2DScratch);
|
|
230
|
-
Matrix2.Cartesian2.multiplyByScalar(
|
|
231
|
-
distance2DScratch,
|
|
232
|
-
distance / length,
|
|
233
|
-
distance2DScratch
|
|
234
|
-
);
|
|
235
|
-
Matrix2.Cartesian2.add(p0, distance2DScratch, distance2DScratch);
|
|
236
|
-
return [distance2DScratch.x, distance2DScratch.y];
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
const distanceScratch = new Matrix3.Cartesian3();
|
|
240
|
-
function getPointAtDistance(p0, p1, distance, length) {
|
|
241
|
-
Matrix3.Cartesian3.subtract(p1, p0, distanceScratch);
|
|
242
|
-
Matrix3.Cartesian3.multiplyByScalar(
|
|
243
|
-
distanceScratch,
|
|
244
|
-
distance / length,
|
|
245
|
-
distanceScratch
|
|
246
|
-
);
|
|
247
|
-
Matrix3.Cartesian3.add(p0, distanceScratch, distanceScratch);
|
|
248
|
-
return [distanceScratch.x, distanceScratch.y, distanceScratch.z];
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
PolygonGeometryLibrary.subdivideLineCount = function (p0, p1, minDistance) {
|
|
252
|
-
const distance = Matrix3.Cartesian3.distance(p0, p1);
|
|
253
|
-
const n = distance / minDistance;
|
|
254
|
-
const countDivide = Math.max(0, Math.ceil(Math$1.CesiumMath.log2(n)));
|
|
255
|
-
return Math.pow(2, countDivide);
|
|
256
|
-
};
|
|
257
|
-
|
|
258
|
-
const scratchCartographic0 = new Matrix3.Cartographic();
|
|
259
|
-
const scratchCartographic1 = new Matrix3.Cartographic();
|
|
260
|
-
const scratchCartographic2 = new Matrix3.Cartographic();
|
|
261
|
-
const scratchCartesian0 = new Matrix3.Cartesian3();
|
|
262
|
-
const scratchRhumbLine = new EllipsoidRhumbLine.EllipsoidRhumbLine();
|
|
263
|
-
PolygonGeometryLibrary.subdivideRhumbLineCount = function (
|
|
264
|
-
ellipsoid,
|
|
265
|
-
p0,
|
|
266
|
-
p1,
|
|
267
|
-
minDistance
|
|
268
|
-
) {
|
|
269
|
-
const c0 = ellipsoid.cartesianToCartographic(p0, scratchCartographic0);
|
|
270
|
-
const c1 = ellipsoid.cartesianToCartographic(p1, scratchCartographic1);
|
|
271
|
-
const rhumb = new EllipsoidRhumbLine.EllipsoidRhumbLine(c0, c1, ellipsoid);
|
|
272
|
-
const n = rhumb.surfaceDistance / minDistance;
|
|
273
|
-
const countDivide = Math.max(0, Math.ceil(Math$1.CesiumMath.log2(n)));
|
|
274
|
-
return Math.pow(2, countDivide);
|
|
275
|
-
};
|
|
276
|
-
|
|
277
|
-
/**
|
|
278
|
-
* Subdivides texture coordinates based on the subdivision of the associated world positions.
|
|
279
|
-
*
|
|
280
|
-
* @param {Cartesian2} t0 First texture coordinate.
|
|
281
|
-
* @param {Cartesian2} t1 Second texture coordinate.
|
|
282
|
-
* @param {Cartesian3} p0 First world position.
|
|
283
|
-
* @param {Cartesian3} p1 Second world position.
|
|
284
|
-
* @param {number} minDistance Minimum distance for a segment.
|
|
285
|
-
* @param {Cartesian2[]} result The subdivided texture coordinates.
|
|
286
|
-
*
|
|
287
|
-
* @private
|
|
288
|
-
*/
|
|
289
|
-
PolygonGeometryLibrary.subdivideTexcoordLine = function (
|
|
290
|
-
t0,
|
|
291
|
-
t1,
|
|
292
|
-
p0,
|
|
293
|
-
p1,
|
|
294
|
-
minDistance,
|
|
295
|
-
result
|
|
296
|
-
) {
|
|
297
|
-
// Compute the number of subdivisions.
|
|
298
|
-
const subdivisions = PolygonGeometryLibrary.subdivideLineCount(
|
|
299
|
-
p0,
|
|
300
|
-
p1,
|
|
301
|
-
minDistance
|
|
302
|
-
);
|
|
303
|
-
|
|
304
|
-
// Compute the distance between each subdivided point.
|
|
305
|
-
const length2D = Matrix2.Cartesian2.distance(t0, t1);
|
|
306
|
-
const distanceBetweenCoords = length2D / subdivisions;
|
|
307
|
-
|
|
308
|
-
// Resize the result array.
|
|
309
|
-
const texcoords = result;
|
|
310
|
-
texcoords.length = subdivisions * 2;
|
|
311
|
-
|
|
312
|
-
// Compute texture coordinates using linear interpolation.
|
|
313
|
-
let index = 0;
|
|
314
|
-
for (let i = 0; i < subdivisions; i++) {
|
|
315
|
-
const t = getPointAtDistance2D(t0, t1, i * distanceBetweenCoords, length2D);
|
|
316
|
-
texcoords[index++] = t[0];
|
|
317
|
-
texcoords[index++] = t[1];
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
return texcoords;
|
|
321
|
-
};
|
|
322
|
-
|
|
323
|
-
PolygonGeometryLibrary.subdivideLine = function (p0, p1, minDistance, result) {
|
|
324
|
-
const numVertices = PolygonGeometryLibrary.subdivideLineCount(
|
|
325
|
-
p0,
|
|
326
|
-
p1,
|
|
327
|
-
minDistance
|
|
328
|
-
);
|
|
329
|
-
const length = Matrix3.Cartesian3.distance(p0, p1);
|
|
330
|
-
const distanceBetweenVertices = length / numVertices;
|
|
331
|
-
|
|
332
|
-
if (!defaultValue.defined(result)) {
|
|
333
|
-
result = [];
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
const positions = result;
|
|
337
|
-
positions.length = numVertices * 3;
|
|
338
|
-
|
|
339
|
-
let index = 0;
|
|
340
|
-
for (let i = 0; i < numVertices; i++) {
|
|
341
|
-
const p = getPointAtDistance(p0, p1, i * distanceBetweenVertices, length);
|
|
342
|
-
positions[index++] = p[0];
|
|
343
|
-
positions[index++] = p[1];
|
|
344
|
-
positions[index++] = p[2];
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
return positions;
|
|
348
|
-
};
|
|
349
|
-
|
|
350
|
-
/**
|
|
351
|
-
* Subdivides texture coordinates based on the subdivision of the associated world positions using a rhumb line.
|
|
352
|
-
*
|
|
353
|
-
* @param {Cartesian2} t0 First texture coordinate.
|
|
354
|
-
* @param {Cartesian2} t1 Second texture coordinate.
|
|
355
|
-
* @param {Ellipsoid} ellipsoid The ellipsoid.
|
|
356
|
-
* @param {Cartesian3} p0 First world position.
|
|
357
|
-
* @param {Cartesian3} p1 Second world position.
|
|
358
|
-
* @param {number} minDistance Minimum distance for a segment.
|
|
359
|
-
* @param {Cartesian2[]} result The subdivided texture coordinates.
|
|
360
|
-
*
|
|
361
|
-
* @private
|
|
362
|
-
*/
|
|
363
|
-
PolygonGeometryLibrary.subdivideTexcoordRhumbLine = function (
|
|
364
|
-
t0,
|
|
365
|
-
t1,
|
|
366
|
-
ellipsoid,
|
|
367
|
-
p0,
|
|
368
|
-
p1,
|
|
369
|
-
minDistance,
|
|
370
|
-
result
|
|
371
|
-
) {
|
|
372
|
-
// Compute the surface distance.
|
|
373
|
-
const c0 = ellipsoid.cartesianToCartographic(p0, scratchCartographic0);
|
|
374
|
-
const c1 = ellipsoid.cartesianToCartographic(p1, scratchCartographic1);
|
|
375
|
-
scratchRhumbLine.setEndPoints(c0, c1);
|
|
376
|
-
const n = scratchRhumbLine.surfaceDistance / minDistance;
|
|
377
|
-
|
|
378
|
-
// Compute the number of subdivisions.
|
|
379
|
-
const countDivide = Math.max(0, Math.ceil(Math$1.CesiumMath.log2(n)));
|
|
380
|
-
const subdivisions = Math.pow(2, countDivide);
|
|
381
|
-
|
|
382
|
-
// Compute the distance between each subdivided point.
|
|
383
|
-
const length2D = Matrix2.Cartesian2.distance(t0, t1);
|
|
384
|
-
const distanceBetweenCoords = length2D / subdivisions;
|
|
385
|
-
|
|
386
|
-
// Resize the result array.
|
|
387
|
-
const texcoords = result;
|
|
388
|
-
texcoords.length = subdivisions * 2;
|
|
389
|
-
|
|
390
|
-
// Compute texture coordinates using linear interpolation.
|
|
391
|
-
let index = 0;
|
|
392
|
-
for (let i = 0; i < subdivisions; i++) {
|
|
393
|
-
const t = getPointAtDistance2D(t0, t1, i * distanceBetweenCoords, length2D);
|
|
394
|
-
texcoords[index++] = t[0];
|
|
395
|
-
texcoords[index++] = t[1];
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
return texcoords;
|
|
399
|
-
};
|
|
400
|
-
|
|
401
|
-
PolygonGeometryLibrary.subdivideRhumbLine = function (
|
|
402
|
-
ellipsoid,
|
|
403
|
-
p0,
|
|
404
|
-
p1,
|
|
405
|
-
minDistance,
|
|
406
|
-
result
|
|
407
|
-
) {
|
|
408
|
-
const c0 = ellipsoid.cartesianToCartographic(p0, scratchCartographic0);
|
|
409
|
-
const c1 = ellipsoid.cartesianToCartographic(p1, scratchCartographic1);
|
|
410
|
-
const rhumb = new EllipsoidRhumbLine.EllipsoidRhumbLine(c0, c1, ellipsoid);
|
|
411
|
-
|
|
412
|
-
const n = rhumb.surfaceDistance / minDistance;
|
|
413
|
-
const countDivide = Math.max(0, Math.ceil(Math$1.CesiumMath.log2(n)));
|
|
414
|
-
const numVertices = Math.pow(2, countDivide);
|
|
415
|
-
const distanceBetweenVertices = rhumb.surfaceDistance / numVertices;
|
|
416
|
-
|
|
417
|
-
if (!defaultValue.defined(result)) {
|
|
418
|
-
result = [];
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
const positions = result;
|
|
422
|
-
positions.length = numVertices * 3;
|
|
423
|
-
|
|
424
|
-
let index = 0;
|
|
425
|
-
for (let i = 0; i < numVertices; i++) {
|
|
426
|
-
const c = rhumb.interpolateUsingSurfaceDistance(
|
|
427
|
-
i * distanceBetweenVertices,
|
|
428
|
-
scratchCartographic2
|
|
429
|
-
);
|
|
430
|
-
const p = ellipsoid.cartographicToCartesian(c, scratchCartesian0);
|
|
431
|
-
positions[index++] = p.x;
|
|
432
|
-
positions[index++] = p.y;
|
|
433
|
-
positions[index++] = p.z;
|
|
434
|
-
}
|
|
435
|
-
|
|
436
|
-
return positions;
|
|
437
|
-
};
|
|
438
|
-
|
|
439
|
-
const scaleToGeodeticHeightN1 = new Matrix3.Cartesian3();
|
|
440
|
-
const scaleToGeodeticHeightN2 = new Matrix3.Cartesian3();
|
|
441
|
-
const scaleToGeodeticHeightP1 = new Matrix3.Cartesian3();
|
|
442
|
-
const scaleToGeodeticHeightP2 = new Matrix3.Cartesian3();
|
|
443
|
-
|
|
444
|
-
PolygonGeometryLibrary.scaleToGeodeticHeightExtruded = function (
|
|
445
|
-
geometry,
|
|
446
|
-
maxHeight,
|
|
447
|
-
minHeight,
|
|
448
|
-
ellipsoid,
|
|
449
|
-
perPositionHeight
|
|
450
|
-
) {
|
|
451
|
-
ellipsoid = defaultValue.defaultValue(ellipsoid, Matrix3.Ellipsoid.WGS84);
|
|
452
|
-
|
|
453
|
-
const n1 = scaleToGeodeticHeightN1;
|
|
454
|
-
let n2 = scaleToGeodeticHeightN2;
|
|
455
|
-
const p = scaleToGeodeticHeightP1;
|
|
456
|
-
let p2 = scaleToGeodeticHeightP2;
|
|
457
|
-
|
|
458
|
-
if (
|
|
459
|
-
defaultValue.defined(geometry) &&
|
|
460
|
-
defaultValue.defined(geometry.attributes) &&
|
|
461
|
-
defaultValue.defined(geometry.attributes.position)
|
|
462
|
-
) {
|
|
463
|
-
const positions = geometry.attributes.position.values;
|
|
464
|
-
const length = positions.length / 2;
|
|
465
|
-
|
|
466
|
-
for (let i = 0; i < length; i += 3) {
|
|
467
|
-
Matrix3.Cartesian3.fromArray(positions, i, p);
|
|
468
|
-
|
|
469
|
-
ellipsoid.geodeticSurfaceNormal(p, n1);
|
|
470
|
-
p2 = ellipsoid.scaleToGeodeticSurface(p, p2);
|
|
471
|
-
n2 = Matrix3.Cartesian3.multiplyByScalar(n1, minHeight, n2);
|
|
472
|
-
n2 = Matrix3.Cartesian3.add(p2, n2, n2);
|
|
473
|
-
positions[i + length] = n2.x;
|
|
474
|
-
positions[i + 1 + length] = n2.y;
|
|
475
|
-
positions[i + 2 + length] = n2.z;
|
|
476
|
-
|
|
477
|
-
if (perPositionHeight) {
|
|
478
|
-
p2 = Matrix3.Cartesian3.clone(p, p2);
|
|
479
|
-
}
|
|
480
|
-
n2 = Matrix3.Cartesian3.multiplyByScalar(n1, maxHeight, n2);
|
|
481
|
-
n2 = Matrix3.Cartesian3.add(p2, n2, n2);
|
|
482
|
-
positions[i] = n2.x;
|
|
483
|
-
positions[i + 1] = n2.y;
|
|
484
|
-
positions[i + 2] = n2.z;
|
|
485
|
-
}
|
|
486
|
-
}
|
|
487
|
-
return geometry;
|
|
488
|
-
};
|
|
489
|
-
|
|
490
|
-
PolygonGeometryLibrary.polygonOutlinesFromHierarchy = function (
|
|
491
|
-
polygonHierarchy,
|
|
492
|
-
scaleToEllipsoidSurface,
|
|
493
|
-
ellipsoid
|
|
494
|
-
) {
|
|
495
|
-
// create from a polygon hierarchy
|
|
496
|
-
// Algorithm adapted from http://www.geometrictools.com/Documentation/TriangulationByEarClipping.pdf
|
|
497
|
-
const polygons = [];
|
|
498
|
-
const queue = new Queue();
|
|
499
|
-
queue.enqueue(polygonHierarchy);
|
|
500
|
-
let i;
|
|
501
|
-
let j;
|
|
502
|
-
let length;
|
|
503
|
-
while (queue.length !== 0) {
|
|
504
|
-
const outerNode = queue.dequeue();
|
|
505
|
-
let outerRing = outerNode.positions;
|
|
506
|
-
if (scaleToEllipsoidSurface) {
|
|
507
|
-
length = outerRing.length;
|
|
508
|
-
for (i = 0; i < length; i++) {
|
|
509
|
-
ellipsoid.scaleToGeodeticSurface(outerRing[i], outerRing[i]);
|
|
510
|
-
}
|
|
511
|
-
}
|
|
512
|
-
outerRing = arrayRemoveDuplicates.arrayRemoveDuplicates(
|
|
513
|
-
outerRing,
|
|
514
|
-
Matrix3.Cartesian3.equalsEpsilon,
|
|
515
|
-
true
|
|
516
|
-
);
|
|
517
|
-
if (outerRing.length < 3) {
|
|
518
|
-
continue;
|
|
519
|
-
}
|
|
520
|
-
|
|
521
|
-
const numChildren = outerNode.holes ? outerNode.holes.length : 0;
|
|
522
|
-
// The outer polygon contains inner polygons
|
|
523
|
-
for (i = 0; i < numChildren; i++) {
|
|
524
|
-
const hole = outerNode.holes[i];
|
|
525
|
-
let holePositions = hole.positions;
|
|
526
|
-
if (scaleToEllipsoidSurface) {
|
|
527
|
-
length = holePositions.length;
|
|
528
|
-
for (j = 0; j < length; ++j) {
|
|
529
|
-
ellipsoid.scaleToGeodeticSurface(holePositions[j], holePositions[j]);
|
|
530
|
-
}
|
|
531
|
-
}
|
|
532
|
-
holePositions = arrayRemoveDuplicates.arrayRemoveDuplicates(
|
|
533
|
-
holePositions,
|
|
534
|
-
Matrix3.Cartesian3.equalsEpsilon,
|
|
535
|
-
true
|
|
536
|
-
);
|
|
537
|
-
if (holePositions.length < 3) {
|
|
538
|
-
continue;
|
|
539
|
-
}
|
|
540
|
-
polygons.push(holePositions);
|
|
541
|
-
|
|
542
|
-
let numGrandchildren = 0;
|
|
543
|
-
if (defaultValue.defined(hole.holes)) {
|
|
544
|
-
numGrandchildren = hole.holes.length;
|
|
545
|
-
}
|
|
546
|
-
|
|
547
|
-
for (j = 0; j < numGrandchildren; j++) {
|
|
548
|
-
queue.enqueue(hole.holes[j]);
|
|
549
|
-
}
|
|
550
|
-
}
|
|
551
|
-
|
|
552
|
-
polygons.push(outerRing);
|
|
553
|
-
}
|
|
554
|
-
|
|
555
|
-
return polygons;
|
|
556
|
-
};
|
|
557
|
-
|
|
558
|
-
PolygonGeometryLibrary.polygonsFromHierarchy = function (
|
|
559
|
-
polygonHierarchy,
|
|
560
|
-
keepDuplicates,
|
|
561
|
-
projectPointsTo2D,
|
|
562
|
-
scaleToEllipsoidSurface,
|
|
563
|
-
ellipsoid
|
|
564
|
-
) {
|
|
565
|
-
// create from a polygon hierarchy
|
|
566
|
-
// Algorithm adapted from http://www.geometrictools.com/Documentation/TriangulationByEarClipping.pdf
|
|
567
|
-
const hierarchy = [];
|
|
568
|
-
const polygons = [];
|
|
569
|
-
|
|
570
|
-
const queue = new Queue();
|
|
571
|
-
queue.enqueue(polygonHierarchy);
|
|
572
|
-
|
|
573
|
-
while (queue.length !== 0) {
|
|
574
|
-
const outerNode = queue.dequeue();
|
|
575
|
-
let outerRing = outerNode.positions;
|
|
576
|
-
const holes = outerNode.holes;
|
|
577
|
-
|
|
578
|
-
let i;
|
|
579
|
-
let length;
|
|
580
|
-
if (scaleToEllipsoidSurface) {
|
|
581
|
-
length = outerRing.length;
|
|
582
|
-
for (i = 0; i < length; i++) {
|
|
583
|
-
ellipsoid.scaleToGeodeticSurface(outerRing[i], outerRing[i]);
|
|
584
|
-
}
|
|
585
|
-
}
|
|
586
|
-
|
|
587
|
-
if (!keepDuplicates) {
|
|
588
|
-
outerRing = arrayRemoveDuplicates.arrayRemoveDuplicates(
|
|
589
|
-
outerRing,
|
|
590
|
-
Matrix3.Cartesian3.equalsEpsilon,
|
|
591
|
-
true
|
|
592
|
-
);
|
|
593
|
-
}
|
|
594
|
-
if (outerRing.length < 3) {
|
|
595
|
-
continue;
|
|
596
|
-
}
|
|
597
|
-
|
|
598
|
-
let positions2D = projectPointsTo2D(outerRing);
|
|
599
|
-
if (!defaultValue.defined(positions2D)) {
|
|
600
|
-
continue;
|
|
601
|
-
}
|
|
602
|
-
const holeIndices = [];
|
|
603
|
-
|
|
604
|
-
let originalWindingOrder = PolygonPipeline.PolygonPipeline.computeWindingOrder2D(
|
|
605
|
-
positions2D
|
|
606
|
-
);
|
|
607
|
-
if (originalWindingOrder === PolygonPipeline.WindingOrder.CLOCKWISE) {
|
|
608
|
-
positions2D.reverse();
|
|
609
|
-
outerRing = outerRing.slice().reverse();
|
|
610
|
-
}
|
|
611
|
-
|
|
612
|
-
let positions = outerRing.slice();
|
|
613
|
-
const numChildren = defaultValue.defined(holes) ? holes.length : 0;
|
|
614
|
-
const polygonHoles = [];
|
|
615
|
-
let j;
|
|
616
|
-
|
|
617
|
-
for (i = 0; i < numChildren; i++) {
|
|
618
|
-
const hole = holes[i];
|
|
619
|
-
let holePositions = hole.positions;
|
|
620
|
-
if (scaleToEllipsoidSurface) {
|
|
621
|
-
length = holePositions.length;
|
|
622
|
-
for (j = 0; j < length; ++j) {
|
|
623
|
-
ellipsoid.scaleToGeodeticSurface(holePositions[j], holePositions[j]);
|
|
624
|
-
}
|
|
625
|
-
}
|
|
626
|
-
|
|
627
|
-
if (!keepDuplicates) {
|
|
628
|
-
holePositions = arrayRemoveDuplicates.arrayRemoveDuplicates(
|
|
629
|
-
holePositions,
|
|
630
|
-
Matrix3.Cartesian3.equalsEpsilon,
|
|
631
|
-
true
|
|
632
|
-
);
|
|
633
|
-
}
|
|
634
|
-
if (holePositions.length < 3) {
|
|
635
|
-
continue;
|
|
636
|
-
}
|
|
637
|
-
|
|
638
|
-
const holePositions2D = projectPointsTo2D(holePositions);
|
|
639
|
-
if (!defaultValue.defined(holePositions2D)) {
|
|
640
|
-
continue;
|
|
641
|
-
}
|
|
642
|
-
|
|
643
|
-
originalWindingOrder = PolygonPipeline.PolygonPipeline.computeWindingOrder2D(
|
|
644
|
-
holePositions2D
|
|
645
|
-
);
|
|
646
|
-
if (originalWindingOrder === PolygonPipeline.WindingOrder.CLOCKWISE) {
|
|
647
|
-
holePositions2D.reverse();
|
|
648
|
-
holePositions = holePositions.slice().reverse();
|
|
649
|
-
}
|
|
650
|
-
|
|
651
|
-
polygonHoles.push(holePositions);
|
|
652
|
-
holeIndices.push(positions.length);
|
|
653
|
-
positions = positions.concat(holePositions);
|
|
654
|
-
positions2D = positions2D.concat(holePositions2D);
|
|
655
|
-
|
|
656
|
-
let numGrandchildren = 0;
|
|
657
|
-
if (defaultValue.defined(hole.holes)) {
|
|
658
|
-
numGrandchildren = hole.holes.length;
|
|
659
|
-
}
|
|
660
|
-
|
|
661
|
-
for (j = 0; j < numGrandchildren; j++) {
|
|
662
|
-
queue.enqueue(hole.holes[j]);
|
|
663
|
-
}
|
|
664
|
-
}
|
|
665
|
-
|
|
666
|
-
hierarchy.push({
|
|
667
|
-
outerRing: outerRing,
|
|
668
|
-
holes: polygonHoles,
|
|
669
|
-
});
|
|
670
|
-
polygons.push({
|
|
671
|
-
positions: positions,
|
|
672
|
-
positions2D: positions2D,
|
|
673
|
-
holes: holeIndices,
|
|
674
|
-
});
|
|
675
|
-
}
|
|
676
|
-
|
|
677
|
-
return {
|
|
678
|
-
hierarchy: hierarchy,
|
|
679
|
-
polygons: polygons,
|
|
680
|
-
};
|
|
681
|
-
};
|
|
682
|
-
|
|
683
|
-
const computeBoundingRectangleCartesian2 = new Matrix2.Cartesian2();
|
|
684
|
-
const computeBoundingRectangleCartesian3 = new Matrix3.Cartesian3();
|
|
685
|
-
const computeBoundingRectangleQuaternion = new Transforms.Quaternion();
|
|
686
|
-
const computeBoundingRectangleMatrix3 = new Matrix3.Matrix3();
|
|
687
|
-
PolygonGeometryLibrary.computeBoundingRectangle = function (
|
|
688
|
-
planeNormal,
|
|
689
|
-
projectPointTo2D,
|
|
690
|
-
positions,
|
|
691
|
-
angle,
|
|
692
|
-
result
|
|
693
|
-
) {
|
|
694
|
-
const rotation = Transforms.Quaternion.fromAxisAngle(
|
|
695
|
-
planeNormal,
|
|
696
|
-
angle,
|
|
697
|
-
computeBoundingRectangleQuaternion
|
|
698
|
-
);
|
|
699
|
-
const textureMatrix = Matrix3.Matrix3.fromQuaternion(
|
|
700
|
-
rotation,
|
|
701
|
-
computeBoundingRectangleMatrix3
|
|
702
|
-
);
|
|
703
|
-
|
|
704
|
-
let minX = Number.POSITIVE_INFINITY;
|
|
705
|
-
let maxX = Number.NEGATIVE_INFINITY;
|
|
706
|
-
let minY = Number.POSITIVE_INFINITY;
|
|
707
|
-
let maxY = Number.NEGATIVE_INFINITY;
|
|
708
|
-
|
|
709
|
-
const length = positions.length;
|
|
710
|
-
for (let i = 0; i < length; ++i) {
|
|
711
|
-
const p = Matrix3.Cartesian3.clone(
|
|
712
|
-
positions[i],
|
|
713
|
-
computeBoundingRectangleCartesian3
|
|
714
|
-
);
|
|
715
|
-
Matrix3.Matrix3.multiplyByVector(textureMatrix, p, p);
|
|
716
|
-
const st = projectPointTo2D(p, computeBoundingRectangleCartesian2);
|
|
717
|
-
|
|
718
|
-
if (defaultValue.defined(st)) {
|
|
719
|
-
minX = Math.min(minX, st.x);
|
|
720
|
-
maxX = Math.max(maxX, st.x);
|
|
721
|
-
|
|
722
|
-
minY = Math.min(minY, st.y);
|
|
723
|
-
maxY = Math.max(maxY, st.y);
|
|
724
|
-
}
|
|
725
|
-
}
|
|
726
|
-
|
|
727
|
-
result.x = minX;
|
|
728
|
-
result.y = minY;
|
|
729
|
-
result.width = maxX - minX;
|
|
730
|
-
result.height = maxY - minY;
|
|
731
|
-
return result;
|
|
732
|
-
};
|
|
733
|
-
|
|
734
|
-
PolygonGeometryLibrary.createGeometryFromPositions = function (
|
|
735
|
-
ellipsoid,
|
|
736
|
-
polygon,
|
|
737
|
-
textureCoordinates,
|
|
738
|
-
granularity,
|
|
739
|
-
perPositionHeight,
|
|
740
|
-
vertexFormat,
|
|
741
|
-
arcType
|
|
742
|
-
) {
|
|
743
|
-
let indices = PolygonPipeline.PolygonPipeline.triangulate(polygon.positions2D, polygon.holes);
|
|
744
|
-
|
|
745
|
-
/* If polygon is completely unrenderable, just use the first three vertices */
|
|
746
|
-
if (indices.length < 3) {
|
|
747
|
-
indices = [0, 1, 2];
|
|
748
|
-
}
|
|
749
|
-
|
|
750
|
-
const positions = polygon.positions;
|
|
751
|
-
|
|
752
|
-
const hasTexcoords = defaultValue.defined(textureCoordinates);
|
|
753
|
-
const texcoords = hasTexcoords ? textureCoordinates.positions : undefined;
|
|
754
|
-
|
|
755
|
-
if (perPositionHeight) {
|
|
756
|
-
const length = positions.length;
|
|
757
|
-
const flattenedPositions = new Array(length * 3);
|
|
758
|
-
let index = 0;
|
|
759
|
-
for (let i = 0; i < length; i++) {
|
|
760
|
-
const p = positions[i];
|
|
761
|
-
flattenedPositions[index++] = p.x;
|
|
762
|
-
flattenedPositions[index++] = p.y;
|
|
763
|
-
flattenedPositions[index++] = p.z;
|
|
764
|
-
}
|
|
765
|
-
|
|
766
|
-
const geometryOptions = {
|
|
767
|
-
attributes: {
|
|
768
|
-
position: new GeometryAttribute.GeometryAttribute({
|
|
769
|
-
componentDatatype: ComponentDatatype.ComponentDatatype.DOUBLE,
|
|
770
|
-
componentsPerAttribute: 3,
|
|
771
|
-
values: flattenedPositions,
|
|
772
|
-
}),
|
|
773
|
-
},
|
|
774
|
-
indices: indices,
|
|
775
|
-
primitiveType: GeometryAttribute.PrimitiveType.TRIANGLES,
|
|
776
|
-
};
|
|
777
|
-
|
|
778
|
-
if (hasTexcoords) {
|
|
779
|
-
geometryOptions.attributes.st = new GeometryAttribute.GeometryAttribute({
|
|
780
|
-
componentDatatype: ComponentDatatype.ComponentDatatype.FLOAT,
|
|
781
|
-
componentsPerAttribute: 2,
|
|
782
|
-
values: Matrix2.Cartesian2.packArray(texcoords),
|
|
783
|
-
});
|
|
784
|
-
}
|
|
785
|
-
|
|
786
|
-
const geometry = new GeometryAttribute.Geometry(geometryOptions);
|
|
787
|
-
|
|
788
|
-
if (vertexFormat.normal) {
|
|
789
|
-
return GeometryPipeline.GeometryPipeline.computeNormal(geometry);
|
|
790
|
-
}
|
|
791
|
-
|
|
792
|
-
return geometry;
|
|
793
|
-
}
|
|
794
|
-
|
|
795
|
-
if (arcType === ArcType.ArcType.GEODESIC) {
|
|
796
|
-
return PolygonPipeline.PolygonPipeline.computeSubdivision(
|
|
797
|
-
ellipsoid,
|
|
798
|
-
positions,
|
|
799
|
-
indices,
|
|
800
|
-
texcoords,
|
|
801
|
-
granularity
|
|
802
|
-
);
|
|
803
|
-
} else if (arcType === ArcType.ArcType.RHUMB) {
|
|
804
|
-
return PolygonPipeline.PolygonPipeline.computeRhumbLineSubdivision(
|
|
805
|
-
ellipsoid,
|
|
806
|
-
positions,
|
|
807
|
-
indices,
|
|
808
|
-
texcoords,
|
|
809
|
-
granularity
|
|
810
|
-
);
|
|
811
|
-
}
|
|
812
|
-
};
|
|
813
|
-
|
|
814
|
-
const computeWallTexcoordsSubdivided = [];
|
|
815
|
-
const computeWallIndicesSubdivided = [];
|
|
816
|
-
const p1Scratch = new Matrix3.Cartesian3();
|
|
817
|
-
const p2Scratch = new Matrix3.Cartesian3();
|
|
818
|
-
|
|
819
|
-
PolygonGeometryLibrary.computeWallGeometry = function (
|
|
820
|
-
positions,
|
|
821
|
-
textureCoordinates,
|
|
822
|
-
ellipsoid,
|
|
823
|
-
granularity,
|
|
824
|
-
perPositionHeight,
|
|
825
|
-
arcType
|
|
826
|
-
) {
|
|
827
|
-
let edgePositions;
|
|
828
|
-
let topEdgeLength;
|
|
829
|
-
let i;
|
|
830
|
-
let p1;
|
|
831
|
-
let p2;
|
|
832
|
-
let t1;
|
|
833
|
-
let t2;
|
|
834
|
-
let edgeTexcoords;
|
|
835
|
-
let topEdgeTexcoordLength;
|
|
836
|
-
|
|
837
|
-
let length = positions.length;
|
|
838
|
-
let index = 0;
|
|
839
|
-
let textureIndex = 0;
|
|
840
|
-
|
|
841
|
-
const hasTexcoords = defaultValue.defined(textureCoordinates);
|
|
842
|
-
const texcoords = hasTexcoords ? textureCoordinates.positions : undefined;
|
|
843
|
-
|
|
844
|
-
if (!perPositionHeight) {
|
|
845
|
-
const minDistance = Math$1.CesiumMath.chordLength(
|
|
846
|
-
granularity,
|
|
847
|
-
ellipsoid.maximumRadius
|
|
848
|
-
);
|
|
849
|
-
|
|
850
|
-
let numVertices = 0;
|
|
851
|
-
if (arcType === ArcType.ArcType.GEODESIC) {
|
|
852
|
-
for (i = 0; i < length; i++) {
|
|
853
|
-
numVertices += PolygonGeometryLibrary.subdivideLineCount(
|
|
854
|
-
positions[i],
|
|
855
|
-
positions[(i + 1) % length],
|
|
856
|
-
minDistance
|
|
857
|
-
);
|
|
858
|
-
}
|
|
859
|
-
} else if (arcType === ArcType.ArcType.RHUMB) {
|
|
860
|
-
for (i = 0; i < length; i++) {
|
|
861
|
-
numVertices += PolygonGeometryLibrary.subdivideRhumbLineCount(
|
|
862
|
-
ellipsoid,
|
|
863
|
-
positions[i],
|
|
864
|
-
positions[(i + 1) % length],
|
|
865
|
-
minDistance
|
|
866
|
-
);
|
|
867
|
-
}
|
|
868
|
-
}
|
|
869
|
-
|
|
870
|
-
topEdgeLength = (numVertices + length) * 3;
|
|
871
|
-
edgePositions = new Array(topEdgeLength * 2);
|
|
872
|
-
|
|
873
|
-
if (hasTexcoords) {
|
|
874
|
-
topEdgeTexcoordLength = (numVertices + length) * 2;
|
|
875
|
-
edgeTexcoords = new Array(topEdgeTexcoordLength * 2);
|
|
876
|
-
}
|
|
877
|
-
|
|
878
|
-
for (i = 0; i < length; i++) {
|
|
879
|
-
p1 = positions[i];
|
|
880
|
-
p2 = positions[(i + 1) % length];
|
|
881
|
-
|
|
882
|
-
let tempPositions;
|
|
883
|
-
let tempTexcoords;
|
|
884
|
-
|
|
885
|
-
if (hasTexcoords) {
|
|
886
|
-
t1 = texcoords[i];
|
|
887
|
-
t2 = texcoords[(i + 1) % length];
|
|
888
|
-
}
|
|
889
|
-
|
|
890
|
-
if (arcType === ArcType.ArcType.GEODESIC) {
|
|
891
|
-
tempPositions = PolygonGeometryLibrary.subdivideLine(
|
|
892
|
-
p1,
|
|
893
|
-
p2,
|
|
894
|
-
minDistance,
|
|
895
|
-
computeWallIndicesSubdivided
|
|
896
|
-
);
|
|
897
|
-
if (hasTexcoords) {
|
|
898
|
-
tempTexcoords = PolygonGeometryLibrary.subdivideTexcoordLine(
|
|
899
|
-
t1,
|
|
900
|
-
t2,
|
|
901
|
-
p1,
|
|
902
|
-
p2,
|
|
903
|
-
minDistance,
|
|
904
|
-
computeWallTexcoordsSubdivided
|
|
905
|
-
);
|
|
906
|
-
}
|
|
907
|
-
} else if (arcType === ArcType.ArcType.RHUMB) {
|
|
908
|
-
tempPositions = PolygonGeometryLibrary.subdivideRhumbLine(
|
|
909
|
-
ellipsoid,
|
|
910
|
-
p1,
|
|
911
|
-
p2,
|
|
912
|
-
minDistance,
|
|
913
|
-
computeWallIndicesSubdivided
|
|
914
|
-
);
|
|
915
|
-
if (hasTexcoords) {
|
|
916
|
-
tempTexcoords = PolygonGeometryLibrary.subdivideTexcoordRhumbLine(
|
|
917
|
-
t1,
|
|
918
|
-
t2,
|
|
919
|
-
ellipsoid,
|
|
920
|
-
p1,
|
|
921
|
-
p2,
|
|
922
|
-
minDistance,
|
|
923
|
-
computeWallTexcoordsSubdivided
|
|
924
|
-
);
|
|
925
|
-
}
|
|
926
|
-
}
|
|
927
|
-
const tempPositionsLength = tempPositions.length;
|
|
928
|
-
for (let j = 0; j < tempPositionsLength; ++j, ++index) {
|
|
929
|
-
edgePositions[index] = tempPositions[j];
|
|
930
|
-
edgePositions[index + topEdgeLength] = tempPositions[j];
|
|
931
|
-
}
|
|
932
|
-
|
|
933
|
-
edgePositions[index] = p2.x;
|
|
934
|
-
edgePositions[index + topEdgeLength] = p2.x;
|
|
935
|
-
++index;
|
|
936
|
-
|
|
937
|
-
edgePositions[index] = p2.y;
|
|
938
|
-
edgePositions[index + topEdgeLength] = p2.y;
|
|
939
|
-
++index;
|
|
940
|
-
|
|
941
|
-
edgePositions[index] = p2.z;
|
|
942
|
-
edgePositions[index + topEdgeLength] = p2.z;
|
|
943
|
-
++index;
|
|
944
|
-
|
|
945
|
-
if (hasTexcoords) {
|
|
946
|
-
const tempTexcoordsLength = tempTexcoords.length;
|
|
947
|
-
for (let k = 0; k < tempTexcoordsLength; ++k, ++textureIndex) {
|
|
948
|
-
edgeTexcoords[textureIndex] = tempTexcoords[k];
|
|
949
|
-
edgeTexcoords[textureIndex + topEdgeTexcoordLength] =
|
|
950
|
-
tempTexcoords[k];
|
|
951
|
-
}
|
|
952
|
-
|
|
953
|
-
edgeTexcoords[textureIndex] = t2.x;
|
|
954
|
-
edgeTexcoords[textureIndex + topEdgeTexcoordLength] = t2.x;
|
|
955
|
-
++textureIndex;
|
|
956
|
-
|
|
957
|
-
edgeTexcoords[textureIndex] = t2.y;
|
|
958
|
-
edgeTexcoords[textureIndex + topEdgeTexcoordLength] = t2.y;
|
|
959
|
-
++textureIndex;
|
|
960
|
-
}
|
|
961
|
-
}
|
|
962
|
-
} else {
|
|
963
|
-
topEdgeLength = length * 3 * 2;
|
|
964
|
-
edgePositions = new Array(topEdgeLength * 2);
|
|
965
|
-
|
|
966
|
-
if (hasTexcoords) {
|
|
967
|
-
topEdgeTexcoordLength = length * 2 * 2;
|
|
968
|
-
edgeTexcoords = new Array(topEdgeTexcoordLength * 2);
|
|
969
|
-
}
|
|
970
|
-
|
|
971
|
-
for (i = 0; i < length; i++) {
|
|
972
|
-
p1 = positions[i];
|
|
973
|
-
p2 = positions[(i + 1) % length];
|
|
974
|
-
edgePositions[index] = edgePositions[index + topEdgeLength] = p1.x;
|
|
975
|
-
++index;
|
|
976
|
-
edgePositions[index] = edgePositions[index + topEdgeLength] = p1.y;
|
|
977
|
-
++index;
|
|
978
|
-
edgePositions[index] = edgePositions[index + topEdgeLength] = p1.z;
|
|
979
|
-
++index;
|
|
980
|
-
edgePositions[index] = edgePositions[index + topEdgeLength] = p2.x;
|
|
981
|
-
++index;
|
|
982
|
-
edgePositions[index] = edgePositions[index + topEdgeLength] = p2.y;
|
|
983
|
-
++index;
|
|
984
|
-
edgePositions[index] = edgePositions[index + topEdgeLength] = p2.z;
|
|
985
|
-
++index;
|
|
986
|
-
|
|
987
|
-
if (hasTexcoords) {
|
|
988
|
-
t1 = texcoords[i];
|
|
989
|
-
t2 = texcoords[(i + 1) % length];
|
|
990
|
-
edgeTexcoords[textureIndex] = edgeTexcoords[
|
|
991
|
-
textureIndex + topEdgeTexcoordLength
|
|
992
|
-
] = t1.x;
|
|
993
|
-
++textureIndex;
|
|
994
|
-
edgeTexcoords[textureIndex] = edgeTexcoords[
|
|
995
|
-
textureIndex + topEdgeTexcoordLength
|
|
996
|
-
] = t1.y;
|
|
997
|
-
++textureIndex;
|
|
998
|
-
edgeTexcoords[textureIndex] = edgeTexcoords[
|
|
999
|
-
textureIndex + topEdgeTexcoordLength
|
|
1000
|
-
] = t2.x;
|
|
1001
|
-
++textureIndex;
|
|
1002
|
-
edgeTexcoords[textureIndex] = edgeTexcoords[
|
|
1003
|
-
textureIndex + topEdgeTexcoordLength
|
|
1004
|
-
] = t2.y;
|
|
1005
|
-
++textureIndex;
|
|
1006
|
-
}
|
|
1007
|
-
}
|
|
1008
|
-
}
|
|
1009
|
-
|
|
1010
|
-
length = edgePositions.length;
|
|
1011
|
-
const indices = IndexDatatype.IndexDatatype.createTypedArray(
|
|
1012
|
-
length / 3,
|
|
1013
|
-
length - positions.length * 6
|
|
1014
|
-
);
|
|
1015
|
-
let edgeIndex = 0;
|
|
1016
|
-
length /= 6;
|
|
1017
|
-
|
|
1018
|
-
for (i = 0; i < length; i++) {
|
|
1019
|
-
const UL = i;
|
|
1020
|
-
const UR = UL + 1;
|
|
1021
|
-
const LL = UL + length;
|
|
1022
|
-
const LR = LL + 1;
|
|
1023
|
-
|
|
1024
|
-
p1 = Matrix3.Cartesian3.fromArray(edgePositions, UL * 3, p1Scratch);
|
|
1025
|
-
p2 = Matrix3.Cartesian3.fromArray(edgePositions, UR * 3, p2Scratch);
|
|
1026
|
-
if (
|
|
1027
|
-
Matrix3.Cartesian3.equalsEpsilon(
|
|
1028
|
-
p1,
|
|
1029
|
-
p2,
|
|
1030
|
-
Math$1.CesiumMath.EPSILON10,
|
|
1031
|
-
Math$1.CesiumMath.EPSILON10
|
|
1032
|
-
)
|
|
1033
|
-
) {
|
|
1034
|
-
//skip corner
|
|
1035
|
-
continue;
|
|
1036
|
-
}
|
|
1037
|
-
|
|
1038
|
-
indices[edgeIndex++] = UL;
|
|
1039
|
-
indices[edgeIndex++] = LL;
|
|
1040
|
-
indices[edgeIndex++] = UR;
|
|
1041
|
-
indices[edgeIndex++] = UR;
|
|
1042
|
-
indices[edgeIndex++] = LL;
|
|
1043
|
-
indices[edgeIndex++] = LR;
|
|
1044
|
-
}
|
|
1045
|
-
|
|
1046
|
-
const geometryOptions = {
|
|
1047
|
-
attributes: new GeometryAttributes.GeometryAttributes({
|
|
1048
|
-
position: new GeometryAttribute.GeometryAttribute({
|
|
1049
|
-
componentDatatype: ComponentDatatype.ComponentDatatype.DOUBLE,
|
|
1050
|
-
componentsPerAttribute: 3,
|
|
1051
|
-
values: edgePositions,
|
|
1052
|
-
}),
|
|
1053
|
-
}),
|
|
1054
|
-
indices: indices,
|
|
1055
|
-
primitiveType: GeometryAttribute.PrimitiveType.TRIANGLES,
|
|
1056
|
-
};
|
|
1057
|
-
|
|
1058
|
-
if (hasTexcoords) {
|
|
1059
|
-
geometryOptions.attributes.st = new GeometryAttribute.GeometryAttribute({
|
|
1060
|
-
componentDatatype: ComponentDatatype.ComponentDatatype.FLOAT,
|
|
1061
|
-
componentsPerAttribute: 2,
|
|
1062
|
-
values: edgeTexcoords,
|
|
1063
|
-
});
|
|
1064
|
-
}
|
|
1065
|
-
|
|
1066
|
-
const geometry = new GeometryAttribute.Geometry(geometryOptions);
|
|
1067
|
-
|
|
1068
|
-
return geometry;
|
|
1069
|
-
};
|
|
1070
|
-
var PolygonGeometryLibrary$1 = PolygonGeometryLibrary;
|
|
1071
|
-
|
|
1072
|
-
exports.PolygonGeometryLibrary = PolygonGeometryLibrary$1;
|
|
1073
|
-
|
|
1074
|
-
}));
|