@pggis/pg-sdk 3.3.10 → 3.5.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/README.md +8 -8
- package/dist/index.js +1966 -4
- package/dist/pggis.min.css +1 -1
- package/dist/resources/ThirdParty/Workers/pako_deflate.min.js +1 -2
- package/dist/resources/ThirdParty/Workers/pako_inflate.min.js +1 -2
- package/dist/resources/ThirdParty/Workers/z-worker-pako.js +1 -1
- package/dist/resources/ThirdParty/google-earth-dbroot-parser.js +1 -8337
- package/dist/resources/ThirdParty/wasm_splats_bg.wasm +0 -0
- package/dist/resources/Workers/chunk-35SHYARM.js +26 -0
- package/dist/resources/Workers/chunk-37F5JSTI.js +26 -0
- package/dist/resources/Workers/chunk-3SSKC3VN.js +26 -0
- package/dist/resources/Workers/chunk-3W4GT7KQ.js +26 -0
- package/dist/resources/Workers/chunk-4IW2T6GF.js +26 -0
- package/dist/resources/Workers/chunk-5YEWO3HT.js +26 -0
- package/dist/resources/Workers/chunk-64RSHJUE.js +28 -0
- package/dist/resources/Workers/chunk-77IHZJJ3.js +26 -0
- package/dist/resources/Workers/chunk-7HTKERZY.js +26 -0
- package/dist/resources/Workers/{chunk-F3YA3Y2Z.js → chunk-A56XVLQR.js} +2 -13
- package/dist/resources/Workers/chunk-AJYK4IVJ.js +26 -0
- package/dist/resources/Workers/{chunk-EHWHNOEX.js → chunk-ARG42DC4.js} +2 -31
- package/dist/resources/Workers/chunk-AU7IKHOH.js +26 -0
- package/dist/resources/Workers/chunk-B4AA3ARO.js +26 -0
- package/dist/resources/Workers/chunk-CNCV5UL7.js +26 -0
- package/dist/resources/Workers/chunk-CYCB63OH.js +26 -0
- package/dist/resources/Workers/{chunk-4H7PY4U5.js → chunk-D6AA5QVT.js} +2 -20
- package/dist/resources/Workers/chunk-D6C66QON.js +26 -0
- package/dist/resources/Workers/chunk-DEPHB2WM.js +26 -0
- package/dist/resources/Workers/chunk-DMEY62ID.js +26 -0
- package/dist/resources/Workers/chunk-DQQ63PYM.js +26 -0
- package/dist/resources/Workers/chunk-ED5JPB3S.js +27 -0
- package/dist/resources/Workers/chunk-EZUYS2JF.js +26 -0
- package/dist/resources/Workers/chunk-FEVXJ54I.js +26 -0
- package/dist/resources/Workers/chunk-G5AGHVVC.js +26 -0
- package/dist/resources/Workers/{chunk-BBWDMCVU.js → chunk-GBYLG25F.js} +2 -15
- package/dist/resources/Workers/chunk-GILIDQNQ.js +26 -0
- package/dist/resources/Workers/chunk-HMIYSTF6.js +26 -0
- package/dist/resources/Workers/chunk-HTFSEEMT.js +26 -0
- package/dist/resources/Workers/chunk-HWXX4CWK.js +26 -0
- package/dist/resources/Workers/chunk-IYTZ52EY.js +26 -0
- package/dist/resources/Workers/chunk-J6UP6FLE.js +26 -0
- package/dist/resources/Workers/chunk-LEYMRMBK.js +27 -0
- package/dist/resources/Workers/chunk-M3MGYQSL.js +26 -0
- package/dist/resources/Workers/chunk-N4VJKXZS.js +26 -0
- package/dist/resources/Workers/chunk-NB3ML6JO.js +26 -0
- package/dist/resources/Workers/chunk-OFUUQVMR.js +26 -0
- package/dist/resources/Workers/chunk-OSW76XDF.js +26 -0
- package/dist/resources/Workers/chunk-PSPPBZWI.js +66 -0
- package/dist/resources/Workers/chunk-QN3VOORQ.js +26 -0
- package/dist/resources/Workers/chunk-QOUAJ6TL.js +26 -0
- package/dist/resources/Workers/chunk-RCV6KWXS.js +26 -0
- package/dist/resources/Workers/chunk-TCGIRNHN.js +26 -0
- package/dist/resources/Workers/chunk-U4IEOH5K.js +26 -0
- package/dist/resources/Workers/chunk-UP6I5URU.js +26 -0
- package/dist/resources/Workers/chunk-VTAIKJXX.js +26 -0
- package/dist/resources/Workers/chunk-VTBDSFTG.js +26 -0
- package/dist/resources/Workers/chunk-VW6VD53G.js +26 -0
- package/dist/resources/Workers/chunk-WGGIH7QW.js +26 -0
- package/dist/resources/Workers/chunk-WWA5PL4H.js +26 -0
- package/dist/resources/Workers/chunk-WZDE3RYP.js +28 -0
- package/dist/resources/Workers/chunk-XRL4AVS5.js +26 -0
- package/dist/resources/Workers/combineGeometry.js +2 -44
- package/dist/resources/Workers/createBoxGeometry.js +2 -34
- package/dist/resources/Workers/createBoxOutlineGeometry.js +2 -211
- package/dist/resources/Workers/createCircleGeometry.js +2 -173
- package/dist/resources/Workers/createCircleOutlineGeometry.js +2 -123
- package/dist/resources/Workers/createCoplanarPolygonGeometry.js +2 -482
- package/dist/resources/Workers/createCoplanarPolygonOutlineGeometry.js +2 -201
- package/dist/resources/Workers/createCorridorGeometry.js +2 -1239
- package/dist/resources/Workers/createCorridorOutlineGeometry.js +2 -544
- package/dist/resources/Workers/createCylinderGeometry.js +2 -36
- package/dist/resources/Workers/createCylinderOutlineGeometry.js +2 -207
- package/dist/resources/Workers/createEllipseGeometry.js +2 -47
- package/dist/resources/Workers/createEllipseOutlineGeometry.js +2 -40
- package/dist/resources/Workers/createEllipsoidGeometry.js +2 -35
- package/dist/resources/Workers/createEllipsoidOutlineGeometry.js +2 -37
- package/dist/resources/Workers/createFrustumGeometry.js +2 -34
- package/dist/resources/Workers/createFrustumOutlineGeometry.js +2 -211
- package/dist/resources/Workers/createGeometry.js +2 -147
- package/dist/resources/Workers/createGroundPolylineGeometry.js +2 -1584
- package/dist/resources/Workers/createPlaneGeometry.js +2 -200
- package/dist/resources/Workers/createPlaneOutlineGeometry.js +2 -100
- package/dist/resources/Workers/createPolygonGeometry.js +2 -1387
- package/dist/resources/Workers/createPolygonOutlineGeometry.js +2 -519
- package/dist/resources/Workers/createPolylineGeometry.js +2 -472
- package/dist/resources/Workers/createPolylineVolumeGeometry.js +2 -355
- package/dist/resources/Workers/createPolylineVolumeOutlineGeometry.js +2 -253
- package/dist/resources/Workers/createRectangleGeometry.js +2 -1250
- package/dist/resources/Workers/createRectangleOutlineGeometry.js +2 -455
- package/dist/resources/Workers/createSimplePolylineGeometry.js +2 -376
- package/dist/resources/Workers/createSphereGeometry.js +2 -94
- package/dist/resources/Workers/createSphereOutlineGeometry.js +2 -94
- package/dist/resources/Workers/createTaskProcessorWorker.js +2 -8
- package/dist/resources/Workers/createVectorTileClampedPolylines.js +2 -468
- package/dist/resources/Workers/createVectorTileGeometries.js +2 -363
- package/dist/resources/Workers/createVectorTilePoints.js +2 -88
- package/dist/resources/Workers/createVectorTilePolygons.js +2 -361
- package/dist/resources/Workers/createVectorTilePolylines.js +2 -238
- package/dist/resources/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +2 -545
- package/dist/resources/Workers/createVerticesFromHeightmap.js +2 -2254
- package/dist/resources/Workers/createVerticesFromQuantizedTerrainMesh.js +2 -722
- package/dist/resources/Workers/createWallGeometry.js +2 -466
- package/dist/resources/Workers/createWallOutlineGeometry.js +2 -314
- package/dist/resources/Workers/decodeDraco.js +2 -345
- package/dist/resources/Workers/decodeGoogleEarthEnterprisePacket.js +2 -2626
- package/dist/resources/Workers/decodeI3S.js +2 -1320
- package/dist/resources/Workers/gaussianSplatSorter.js +26 -0
- package/dist/resources/Workers/gaussianSplatTextureGenerator.js +26 -0
- package/dist/resources/Workers/transcodeKTX2.js +29 -3398
- package/dist/resources/Workers/transferTypedArrayTest.js +2 -17
- package/dist/resources/Workers/upsampleQuantizedTerrainMesh.js +2 -795
- package/package.json +9 -8
- package/dist/pggis.min.js +0 -14796
- package/dist/resources/ThirdParty/Workers/basis_transcoder.js +0 -21
- package/dist/resources/Workers/chunk-23UFSGND.js +0 -236
- package/dist/resources/Workers/chunk-2A75IWRS.js +0 -218
- package/dist/resources/Workers/chunk-2FRVPMCS.js +0 -1258
- package/dist/resources/Workers/chunk-2FWRMUTY.js +0 -138
- package/dist/resources/Workers/chunk-2UPKWTMJ.js +0 -117
- package/dist/resources/Workers/chunk-34FXV7D7.js +0 -73
- package/dist/resources/Workers/chunk-3VAZEH7M.js +0 -101
- package/dist/resources/Workers/chunk-4DO5W5XZ.js +0 -196
- package/dist/resources/Workers/chunk-5QULIR53.js +0 -501
- package/dist/resources/Workers/chunk-7TC63SJW.js +0 -302
- package/dist/resources/Workers/chunk-7ZFGPDJA.js +0 -122
- package/dist/resources/Workers/chunk-A5DWLWCY.js +0 -834
- package/dist/resources/Workers/chunk-BG4UCVXN.js +0 -73
- package/dist/resources/Workers/chunk-BIKA3NRA.js +0 -59
- package/dist/resources/Workers/chunk-BROJAZRZ.js +0 -390
- package/dist/resources/Workers/chunk-DDUQAJ4P.js +0 -476
- package/dist/resources/Workers/chunk-EERJKOAF.js +0 -305
- package/dist/resources/Workers/chunk-EG6PTBY2.js +0 -2716
- package/dist/resources/Workers/chunk-F4HFJMGM.js +0 -353
- package/dist/resources/Workers/chunk-FJKNFAKQ.js +0 -8219
- package/dist/resources/Workers/chunk-FNIRWHJB.js +0 -289
- package/dist/resources/Workers/chunk-FZRIVR7Y.js +0 -100
- package/dist/resources/Workers/chunk-G43QFN4Q.js +0 -157
- package/dist/resources/Workers/chunk-GATZHF3K.js +0 -1860
- package/dist/resources/Workers/chunk-GRC2ZTAF.js +0 -398
- package/dist/resources/Workers/chunk-HU6N6EXB.js +0 -767
- package/dist/resources/Workers/chunk-I46ZRR5W.js +0 -1052
- package/dist/resources/Workers/chunk-JURN7NPV.js +0 -1075
- package/dist/resources/Workers/chunk-KKCR2YOP.js +0 -421
- package/dist/resources/Workers/chunk-LPR3YNP2.js +0 -138
- package/dist/resources/Workers/chunk-M7ERACJJ.js +0 -511
- package/dist/resources/Workers/chunk-MDWEGWPA.js +0 -1007
- package/dist/resources/Workers/chunk-OGXZVPPM.js +0 -2365
- package/dist/resources/Workers/chunk-PGSJK77E.js +0 -634
- package/dist/resources/Workers/chunk-PPH7OFP3.js +0 -258
- package/dist/resources/Workers/chunk-SH5USDPI.js +0 -456
- package/dist/resources/Workers/chunk-SOWMRMWA.js +0 -629
- package/dist/resources/Workers/chunk-STW2DGFI.js +0 -58
- package/dist/resources/Workers/chunk-T3XIFPYR.js +0 -1477
- package/dist/resources/Workers/chunk-TTUZP4BO.js +0 -501
- package/dist/resources/Workers/chunk-UEXTBDBE.js +0 -693
- package/dist/resources/Workers/chunk-VOXYEYJT.js +0 -684
- package/dist/resources/Workers/chunk-X4356LRH.js +0 -368
- package/dist/resources/Workers/chunk-XGI5BXZY.js +0 -163
- package/dist/resources/Workers/chunk-Y2ME2IJV.js +0 -781
- package/dist/resources/Workers/chunk-Y5UQJLYE.js +0 -171
- package/dist/resources/Workers/chunk-YJEBABKH.js +0 -2977
- package/dist/resources/Workers/chunk-YWTJ2B4B.js +0 -77
- package/dist/resources/Workers/chunk-Z3TIFFGF.js +0 -430
- package/dist/resources/Workers/chunk-ZT7KWISZ.js +0 -102
|
@@ -1,1075 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Cesium - https://github.com/CesiumGS/cesium
|
|
4
|
-
* Version 1.115
|
|
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
|
-
EllipseGeometryLibrary_default
|
|
28
|
-
} from "./chunk-EERJKOAF.js";
|
|
29
|
-
import {
|
|
30
|
-
GeometryInstance_default
|
|
31
|
-
} from "./chunk-BIKA3NRA.js";
|
|
32
|
-
import {
|
|
33
|
-
GeometryPipeline_default
|
|
34
|
-
} from "./chunk-EG6PTBY2.js";
|
|
35
|
-
import {
|
|
36
|
-
GeometryOffsetAttribute_default
|
|
37
|
-
} from "./chunk-F3YA3Y2Z.js";
|
|
38
|
-
import {
|
|
39
|
-
VertexFormat_default
|
|
40
|
-
} from "./chunk-2FWRMUTY.js";
|
|
41
|
-
import {
|
|
42
|
-
IndexDatatype_default
|
|
43
|
-
} from "./chunk-LPR3YNP2.js";
|
|
44
|
-
import {
|
|
45
|
-
GeometryAttributes_default
|
|
46
|
-
} from "./chunk-4H7PY4U5.js";
|
|
47
|
-
import {
|
|
48
|
-
GeometryAttribute_default,
|
|
49
|
-
Geometry_default,
|
|
50
|
-
PrimitiveType_default
|
|
51
|
-
} from "./chunk-7TC63SJW.js";
|
|
52
|
-
import {
|
|
53
|
-
BoundingSphere_default,
|
|
54
|
-
GeographicProjection_default,
|
|
55
|
-
Quaternion_default
|
|
56
|
-
} from "./chunk-FJKNFAKQ.js";
|
|
57
|
-
import {
|
|
58
|
-
Rectangle_default
|
|
59
|
-
} from "./chunk-YJEBABKH.js";
|
|
60
|
-
import {
|
|
61
|
-
ComponentDatatype_default
|
|
62
|
-
} from "./chunk-PPH7OFP3.js";
|
|
63
|
-
import {
|
|
64
|
-
Cartesian2_default,
|
|
65
|
-
Cartesian3_default,
|
|
66
|
-
Cartographic_default,
|
|
67
|
-
Ellipsoid_default,
|
|
68
|
-
Matrix3_default
|
|
69
|
-
} from "./chunk-OGXZVPPM.js";
|
|
70
|
-
import {
|
|
71
|
-
Math_default
|
|
72
|
-
} from "./chunk-5QULIR53.js";
|
|
73
|
-
import {
|
|
74
|
-
defaultValue_default
|
|
75
|
-
} from "./chunk-BBWDMCVU.js";
|
|
76
|
-
import {
|
|
77
|
-
Check_default,
|
|
78
|
-
DeveloperError_default
|
|
79
|
-
} from "./chunk-XGI5BXZY.js";
|
|
80
|
-
import {
|
|
81
|
-
defined_default
|
|
82
|
-
} from "./chunk-YWTJ2B4B.js";
|
|
83
|
-
|
|
84
|
-
// packages/engine/Source/Core/EllipseGeometry.js
|
|
85
|
-
var scratchCartesian1 = new Cartesian3_default();
|
|
86
|
-
var scratchCartesian2 = new Cartesian3_default();
|
|
87
|
-
var scratchCartesian3 = new Cartesian3_default();
|
|
88
|
-
var scratchCartesian4 = new Cartesian3_default();
|
|
89
|
-
var texCoordScratch = new Cartesian2_default();
|
|
90
|
-
var textureMatrixScratch = new Matrix3_default();
|
|
91
|
-
var tangentMatrixScratch = new Matrix3_default();
|
|
92
|
-
var quaternionScratch = new Quaternion_default();
|
|
93
|
-
var scratchNormal = new Cartesian3_default();
|
|
94
|
-
var scratchTangent = new Cartesian3_default();
|
|
95
|
-
var scratchBitangent = new Cartesian3_default();
|
|
96
|
-
var scratchCartographic = new Cartographic_default();
|
|
97
|
-
var projectedCenterScratch = new Cartesian3_default();
|
|
98
|
-
var scratchMinTexCoord = new Cartesian2_default();
|
|
99
|
-
var scratchMaxTexCoord = new Cartesian2_default();
|
|
100
|
-
function computeTopBottomAttributes(positions, options, extrude) {
|
|
101
|
-
const vertexFormat = options.vertexFormat;
|
|
102
|
-
const center = options.center;
|
|
103
|
-
const semiMajorAxis = options.semiMajorAxis;
|
|
104
|
-
const semiMinorAxis = options.semiMinorAxis;
|
|
105
|
-
const ellipsoid = options.ellipsoid;
|
|
106
|
-
const stRotation = options.stRotation;
|
|
107
|
-
const size = extrude ? positions.length / 3 * 2 : positions.length / 3;
|
|
108
|
-
const shadowVolume = options.shadowVolume;
|
|
109
|
-
const textureCoordinates = vertexFormat.st ? new Float32Array(size * 2) : void 0;
|
|
110
|
-
const normals = vertexFormat.normal ? new Float32Array(size * 3) : void 0;
|
|
111
|
-
const tangents = vertexFormat.tangent ? new Float32Array(size * 3) : void 0;
|
|
112
|
-
const bitangents = vertexFormat.bitangent ? new Float32Array(size * 3) : void 0;
|
|
113
|
-
const extrudeNormals = shadowVolume ? new Float32Array(size * 3) : void 0;
|
|
114
|
-
let textureCoordIndex = 0;
|
|
115
|
-
let normal = scratchNormal;
|
|
116
|
-
let tangent = scratchTangent;
|
|
117
|
-
let bitangent = scratchBitangent;
|
|
118
|
-
const projection = new GeographicProjection_default(ellipsoid);
|
|
119
|
-
const projectedCenter = projection.project(
|
|
120
|
-
ellipsoid.cartesianToCartographic(center, scratchCartographic),
|
|
121
|
-
projectedCenterScratch
|
|
122
|
-
);
|
|
123
|
-
const geodeticNormal = ellipsoid.scaleToGeodeticSurface(
|
|
124
|
-
center,
|
|
125
|
-
scratchCartesian1
|
|
126
|
-
);
|
|
127
|
-
ellipsoid.geodeticSurfaceNormal(geodeticNormal, geodeticNormal);
|
|
128
|
-
let textureMatrix = textureMatrixScratch;
|
|
129
|
-
let tangentMatrix = tangentMatrixScratch;
|
|
130
|
-
if (stRotation !== 0) {
|
|
131
|
-
let rotation = Quaternion_default.fromAxisAngle(
|
|
132
|
-
geodeticNormal,
|
|
133
|
-
stRotation,
|
|
134
|
-
quaternionScratch
|
|
135
|
-
);
|
|
136
|
-
textureMatrix = Matrix3_default.fromQuaternion(rotation, textureMatrix);
|
|
137
|
-
rotation = Quaternion_default.fromAxisAngle(
|
|
138
|
-
geodeticNormal,
|
|
139
|
-
-stRotation,
|
|
140
|
-
quaternionScratch
|
|
141
|
-
);
|
|
142
|
-
tangentMatrix = Matrix3_default.fromQuaternion(rotation, tangentMatrix);
|
|
143
|
-
} else {
|
|
144
|
-
textureMatrix = Matrix3_default.clone(Matrix3_default.IDENTITY, textureMatrix);
|
|
145
|
-
tangentMatrix = Matrix3_default.clone(Matrix3_default.IDENTITY, tangentMatrix);
|
|
146
|
-
}
|
|
147
|
-
const minTexCoord = Cartesian2_default.fromElements(
|
|
148
|
-
Number.POSITIVE_INFINITY,
|
|
149
|
-
Number.POSITIVE_INFINITY,
|
|
150
|
-
scratchMinTexCoord
|
|
151
|
-
);
|
|
152
|
-
const maxTexCoord = Cartesian2_default.fromElements(
|
|
153
|
-
Number.NEGATIVE_INFINITY,
|
|
154
|
-
Number.NEGATIVE_INFINITY,
|
|
155
|
-
scratchMaxTexCoord
|
|
156
|
-
);
|
|
157
|
-
let length = positions.length;
|
|
158
|
-
const bottomOffset = extrude ? length : 0;
|
|
159
|
-
const stOffset = bottomOffset / 3 * 2;
|
|
160
|
-
for (let i = 0; i < length; i += 3) {
|
|
161
|
-
const i1 = i + 1;
|
|
162
|
-
const i2 = i + 2;
|
|
163
|
-
const position = Cartesian3_default.fromArray(positions, i, scratchCartesian1);
|
|
164
|
-
if (vertexFormat.st) {
|
|
165
|
-
const rotatedPoint = Matrix3_default.multiplyByVector(
|
|
166
|
-
textureMatrix,
|
|
167
|
-
position,
|
|
168
|
-
scratchCartesian2
|
|
169
|
-
);
|
|
170
|
-
const projectedPoint = projection.project(
|
|
171
|
-
ellipsoid.cartesianToCartographic(rotatedPoint, scratchCartographic),
|
|
172
|
-
scratchCartesian3
|
|
173
|
-
);
|
|
174
|
-
Cartesian3_default.subtract(projectedPoint, projectedCenter, projectedPoint);
|
|
175
|
-
texCoordScratch.x = (projectedPoint.x + semiMajorAxis) / (2 * semiMajorAxis);
|
|
176
|
-
texCoordScratch.y = (projectedPoint.y + semiMinorAxis) / (2 * semiMinorAxis);
|
|
177
|
-
minTexCoord.x = Math.min(texCoordScratch.x, minTexCoord.x);
|
|
178
|
-
minTexCoord.y = Math.min(texCoordScratch.y, minTexCoord.y);
|
|
179
|
-
maxTexCoord.x = Math.max(texCoordScratch.x, maxTexCoord.x);
|
|
180
|
-
maxTexCoord.y = Math.max(texCoordScratch.y, maxTexCoord.y);
|
|
181
|
-
if (extrude) {
|
|
182
|
-
textureCoordinates[textureCoordIndex + stOffset] = texCoordScratch.x;
|
|
183
|
-
textureCoordinates[textureCoordIndex + 1 + stOffset] = texCoordScratch.y;
|
|
184
|
-
}
|
|
185
|
-
textureCoordinates[textureCoordIndex++] = texCoordScratch.x;
|
|
186
|
-
textureCoordinates[textureCoordIndex++] = texCoordScratch.y;
|
|
187
|
-
}
|
|
188
|
-
if (vertexFormat.normal || vertexFormat.tangent || vertexFormat.bitangent || shadowVolume) {
|
|
189
|
-
normal = ellipsoid.geodeticSurfaceNormal(position, normal);
|
|
190
|
-
if (shadowVolume) {
|
|
191
|
-
extrudeNormals[i + bottomOffset] = -normal.x;
|
|
192
|
-
extrudeNormals[i1 + bottomOffset] = -normal.y;
|
|
193
|
-
extrudeNormals[i2 + bottomOffset] = -normal.z;
|
|
194
|
-
}
|
|
195
|
-
if (vertexFormat.normal || vertexFormat.tangent || vertexFormat.bitangent) {
|
|
196
|
-
if (vertexFormat.tangent || vertexFormat.bitangent) {
|
|
197
|
-
tangent = Cartesian3_default.normalize(
|
|
198
|
-
Cartesian3_default.cross(Cartesian3_default.UNIT_Z, normal, tangent),
|
|
199
|
-
tangent
|
|
200
|
-
);
|
|
201
|
-
Matrix3_default.multiplyByVector(tangentMatrix, tangent, tangent);
|
|
202
|
-
}
|
|
203
|
-
if (vertexFormat.normal) {
|
|
204
|
-
normals[i] = normal.x;
|
|
205
|
-
normals[i1] = normal.y;
|
|
206
|
-
normals[i2] = normal.z;
|
|
207
|
-
if (extrude) {
|
|
208
|
-
normals[i + bottomOffset] = -normal.x;
|
|
209
|
-
normals[i1 + bottomOffset] = -normal.y;
|
|
210
|
-
normals[i2 + bottomOffset] = -normal.z;
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
if (vertexFormat.tangent) {
|
|
214
|
-
tangents[i] = tangent.x;
|
|
215
|
-
tangents[i1] = tangent.y;
|
|
216
|
-
tangents[i2] = tangent.z;
|
|
217
|
-
if (extrude) {
|
|
218
|
-
tangents[i + bottomOffset] = -tangent.x;
|
|
219
|
-
tangents[i1 + bottomOffset] = -tangent.y;
|
|
220
|
-
tangents[i2 + bottomOffset] = -tangent.z;
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
if (vertexFormat.bitangent) {
|
|
224
|
-
bitangent = Cartesian3_default.normalize(
|
|
225
|
-
Cartesian3_default.cross(normal, tangent, bitangent),
|
|
226
|
-
bitangent
|
|
227
|
-
);
|
|
228
|
-
bitangents[i] = bitangent.x;
|
|
229
|
-
bitangents[i1] = bitangent.y;
|
|
230
|
-
bitangents[i2] = bitangent.z;
|
|
231
|
-
if (extrude) {
|
|
232
|
-
bitangents[i + bottomOffset] = bitangent.x;
|
|
233
|
-
bitangents[i1 + bottomOffset] = bitangent.y;
|
|
234
|
-
bitangents[i2 + bottomOffset] = bitangent.z;
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
if (vertexFormat.st) {
|
|
241
|
-
length = textureCoordinates.length;
|
|
242
|
-
for (let k = 0; k < length; k += 2) {
|
|
243
|
-
textureCoordinates[k] = (textureCoordinates[k] - minTexCoord.x) / (maxTexCoord.x - minTexCoord.x);
|
|
244
|
-
textureCoordinates[k + 1] = (textureCoordinates[k + 1] - minTexCoord.y) / (maxTexCoord.y - minTexCoord.y);
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
const attributes = new GeometryAttributes_default();
|
|
248
|
-
if (vertexFormat.position) {
|
|
249
|
-
const finalPositions = EllipseGeometryLibrary_default.raisePositionsToHeight(
|
|
250
|
-
positions,
|
|
251
|
-
options,
|
|
252
|
-
extrude
|
|
253
|
-
);
|
|
254
|
-
attributes.position = new GeometryAttribute_default({
|
|
255
|
-
componentDatatype: ComponentDatatype_default.DOUBLE,
|
|
256
|
-
componentsPerAttribute: 3,
|
|
257
|
-
values: finalPositions
|
|
258
|
-
});
|
|
259
|
-
}
|
|
260
|
-
if (vertexFormat.st) {
|
|
261
|
-
attributes.st = new GeometryAttribute_default({
|
|
262
|
-
componentDatatype: ComponentDatatype_default.FLOAT,
|
|
263
|
-
componentsPerAttribute: 2,
|
|
264
|
-
values: textureCoordinates
|
|
265
|
-
});
|
|
266
|
-
}
|
|
267
|
-
if (vertexFormat.normal) {
|
|
268
|
-
attributes.normal = new GeometryAttribute_default({
|
|
269
|
-
componentDatatype: ComponentDatatype_default.FLOAT,
|
|
270
|
-
componentsPerAttribute: 3,
|
|
271
|
-
values: normals
|
|
272
|
-
});
|
|
273
|
-
}
|
|
274
|
-
if (vertexFormat.tangent) {
|
|
275
|
-
attributes.tangent = new GeometryAttribute_default({
|
|
276
|
-
componentDatatype: ComponentDatatype_default.FLOAT,
|
|
277
|
-
componentsPerAttribute: 3,
|
|
278
|
-
values: tangents
|
|
279
|
-
});
|
|
280
|
-
}
|
|
281
|
-
if (vertexFormat.bitangent) {
|
|
282
|
-
attributes.bitangent = new GeometryAttribute_default({
|
|
283
|
-
componentDatatype: ComponentDatatype_default.FLOAT,
|
|
284
|
-
componentsPerAttribute: 3,
|
|
285
|
-
values: bitangents
|
|
286
|
-
});
|
|
287
|
-
}
|
|
288
|
-
if (shadowVolume) {
|
|
289
|
-
attributes.extrudeDirection = new GeometryAttribute_default({
|
|
290
|
-
componentDatatype: ComponentDatatype_default.FLOAT,
|
|
291
|
-
componentsPerAttribute: 3,
|
|
292
|
-
values: extrudeNormals
|
|
293
|
-
});
|
|
294
|
-
}
|
|
295
|
-
if (extrude && defined_default(options.offsetAttribute)) {
|
|
296
|
-
let offsetAttribute = new Uint8Array(size);
|
|
297
|
-
if (options.offsetAttribute === GeometryOffsetAttribute_default.TOP) {
|
|
298
|
-
offsetAttribute = offsetAttribute.fill(1, 0, size / 2);
|
|
299
|
-
} else {
|
|
300
|
-
const offsetValue = options.offsetAttribute === GeometryOffsetAttribute_default.NONE ? 0 : 1;
|
|
301
|
-
offsetAttribute = offsetAttribute.fill(offsetValue);
|
|
302
|
-
}
|
|
303
|
-
attributes.applyOffset = new GeometryAttribute_default({
|
|
304
|
-
componentDatatype: ComponentDatatype_default.UNSIGNED_BYTE,
|
|
305
|
-
componentsPerAttribute: 1,
|
|
306
|
-
values: offsetAttribute
|
|
307
|
-
});
|
|
308
|
-
}
|
|
309
|
-
return attributes;
|
|
310
|
-
}
|
|
311
|
-
function topIndices(numPts) {
|
|
312
|
-
const indices = new Array(12 * (numPts * (numPts + 1)) - 6);
|
|
313
|
-
let indicesIndex = 0;
|
|
314
|
-
let prevIndex;
|
|
315
|
-
let numInterior;
|
|
316
|
-
let positionIndex;
|
|
317
|
-
let i;
|
|
318
|
-
let j;
|
|
319
|
-
prevIndex = 0;
|
|
320
|
-
positionIndex = 1;
|
|
321
|
-
for (i = 0; i < 3; i++) {
|
|
322
|
-
indices[indicesIndex++] = positionIndex++;
|
|
323
|
-
indices[indicesIndex++] = prevIndex;
|
|
324
|
-
indices[indicesIndex++] = positionIndex;
|
|
325
|
-
}
|
|
326
|
-
for (i = 2; i < numPts + 1; ++i) {
|
|
327
|
-
positionIndex = i * (i + 1) - 1;
|
|
328
|
-
prevIndex = (i - 1) * i - 1;
|
|
329
|
-
indices[indicesIndex++] = positionIndex++;
|
|
330
|
-
indices[indicesIndex++] = prevIndex;
|
|
331
|
-
indices[indicesIndex++] = positionIndex;
|
|
332
|
-
numInterior = 2 * i;
|
|
333
|
-
for (j = 0; j < numInterior - 1; ++j) {
|
|
334
|
-
indices[indicesIndex++] = positionIndex;
|
|
335
|
-
indices[indicesIndex++] = prevIndex++;
|
|
336
|
-
indices[indicesIndex++] = prevIndex;
|
|
337
|
-
indices[indicesIndex++] = positionIndex++;
|
|
338
|
-
indices[indicesIndex++] = prevIndex;
|
|
339
|
-
indices[indicesIndex++] = positionIndex;
|
|
340
|
-
}
|
|
341
|
-
indices[indicesIndex++] = positionIndex++;
|
|
342
|
-
indices[indicesIndex++] = prevIndex;
|
|
343
|
-
indices[indicesIndex++] = positionIndex;
|
|
344
|
-
}
|
|
345
|
-
numInterior = numPts * 2;
|
|
346
|
-
++positionIndex;
|
|
347
|
-
++prevIndex;
|
|
348
|
-
for (i = 0; i < numInterior - 1; ++i) {
|
|
349
|
-
indices[indicesIndex++] = positionIndex;
|
|
350
|
-
indices[indicesIndex++] = prevIndex++;
|
|
351
|
-
indices[indicesIndex++] = prevIndex;
|
|
352
|
-
indices[indicesIndex++] = positionIndex++;
|
|
353
|
-
indices[indicesIndex++] = prevIndex;
|
|
354
|
-
indices[indicesIndex++] = positionIndex;
|
|
355
|
-
}
|
|
356
|
-
indices[indicesIndex++] = positionIndex;
|
|
357
|
-
indices[indicesIndex++] = prevIndex++;
|
|
358
|
-
indices[indicesIndex++] = prevIndex;
|
|
359
|
-
indices[indicesIndex++] = positionIndex++;
|
|
360
|
-
indices[indicesIndex++] = prevIndex++;
|
|
361
|
-
indices[indicesIndex++] = prevIndex;
|
|
362
|
-
++prevIndex;
|
|
363
|
-
for (i = numPts - 1; i > 1; --i) {
|
|
364
|
-
indices[indicesIndex++] = prevIndex++;
|
|
365
|
-
indices[indicesIndex++] = prevIndex;
|
|
366
|
-
indices[indicesIndex++] = positionIndex;
|
|
367
|
-
numInterior = 2 * i;
|
|
368
|
-
for (j = 0; j < numInterior - 1; ++j) {
|
|
369
|
-
indices[indicesIndex++] = positionIndex;
|
|
370
|
-
indices[indicesIndex++] = prevIndex++;
|
|
371
|
-
indices[indicesIndex++] = prevIndex;
|
|
372
|
-
indices[indicesIndex++] = positionIndex++;
|
|
373
|
-
indices[indicesIndex++] = prevIndex;
|
|
374
|
-
indices[indicesIndex++] = positionIndex;
|
|
375
|
-
}
|
|
376
|
-
indices[indicesIndex++] = prevIndex++;
|
|
377
|
-
indices[indicesIndex++] = prevIndex++;
|
|
378
|
-
indices[indicesIndex++] = positionIndex++;
|
|
379
|
-
}
|
|
380
|
-
for (i = 0; i < 3; i++) {
|
|
381
|
-
indices[indicesIndex++] = prevIndex++;
|
|
382
|
-
indices[indicesIndex++] = prevIndex;
|
|
383
|
-
indices[indicesIndex++] = positionIndex;
|
|
384
|
-
}
|
|
385
|
-
return indices;
|
|
386
|
-
}
|
|
387
|
-
var boundingSphereCenter = new Cartesian3_default();
|
|
388
|
-
function computeEllipse(options) {
|
|
389
|
-
const center = options.center;
|
|
390
|
-
boundingSphereCenter = Cartesian3_default.multiplyByScalar(
|
|
391
|
-
options.ellipsoid.geodeticSurfaceNormal(center, boundingSphereCenter),
|
|
392
|
-
options.height,
|
|
393
|
-
boundingSphereCenter
|
|
394
|
-
);
|
|
395
|
-
boundingSphereCenter = Cartesian3_default.add(
|
|
396
|
-
center,
|
|
397
|
-
boundingSphereCenter,
|
|
398
|
-
boundingSphereCenter
|
|
399
|
-
);
|
|
400
|
-
const boundingSphere = new BoundingSphere_default(
|
|
401
|
-
boundingSphereCenter,
|
|
402
|
-
options.semiMajorAxis
|
|
403
|
-
);
|
|
404
|
-
const cep = EllipseGeometryLibrary_default.computeEllipsePositions(
|
|
405
|
-
options,
|
|
406
|
-
true,
|
|
407
|
-
false
|
|
408
|
-
);
|
|
409
|
-
const positions = cep.positions;
|
|
410
|
-
const numPts = cep.numPts;
|
|
411
|
-
const attributes = computeTopBottomAttributes(positions, options, false);
|
|
412
|
-
let indices = topIndices(numPts);
|
|
413
|
-
indices = IndexDatatype_default.createTypedArray(positions.length / 3, indices);
|
|
414
|
-
return {
|
|
415
|
-
boundingSphere,
|
|
416
|
-
attributes,
|
|
417
|
-
indices
|
|
418
|
-
};
|
|
419
|
-
}
|
|
420
|
-
function computeWallAttributes(positions, options) {
|
|
421
|
-
const vertexFormat = options.vertexFormat;
|
|
422
|
-
const center = options.center;
|
|
423
|
-
const semiMajorAxis = options.semiMajorAxis;
|
|
424
|
-
const semiMinorAxis = options.semiMinorAxis;
|
|
425
|
-
const ellipsoid = options.ellipsoid;
|
|
426
|
-
const height = options.height;
|
|
427
|
-
const extrudedHeight = options.extrudedHeight;
|
|
428
|
-
const stRotation = options.stRotation;
|
|
429
|
-
const size = positions.length / 3 * 2;
|
|
430
|
-
const finalPositions = new Float64Array(size * 3);
|
|
431
|
-
const textureCoordinates = vertexFormat.st ? new Float32Array(size * 2) : void 0;
|
|
432
|
-
const normals = vertexFormat.normal ? new Float32Array(size * 3) : void 0;
|
|
433
|
-
const tangents = vertexFormat.tangent ? new Float32Array(size * 3) : void 0;
|
|
434
|
-
const bitangents = vertexFormat.bitangent ? new Float32Array(size * 3) : void 0;
|
|
435
|
-
const shadowVolume = options.shadowVolume;
|
|
436
|
-
const extrudeNormals = shadowVolume ? new Float32Array(size * 3) : void 0;
|
|
437
|
-
let textureCoordIndex = 0;
|
|
438
|
-
let normal = scratchNormal;
|
|
439
|
-
let tangent = scratchTangent;
|
|
440
|
-
let bitangent = scratchBitangent;
|
|
441
|
-
const projection = new GeographicProjection_default(ellipsoid);
|
|
442
|
-
const projectedCenter = projection.project(
|
|
443
|
-
ellipsoid.cartesianToCartographic(center, scratchCartographic),
|
|
444
|
-
projectedCenterScratch
|
|
445
|
-
);
|
|
446
|
-
const geodeticNormal = ellipsoid.scaleToGeodeticSurface(
|
|
447
|
-
center,
|
|
448
|
-
scratchCartesian1
|
|
449
|
-
);
|
|
450
|
-
ellipsoid.geodeticSurfaceNormal(geodeticNormal, geodeticNormal);
|
|
451
|
-
const rotation = Quaternion_default.fromAxisAngle(
|
|
452
|
-
geodeticNormal,
|
|
453
|
-
stRotation,
|
|
454
|
-
quaternionScratch
|
|
455
|
-
);
|
|
456
|
-
const textureMatrix = Matrix3_default.fromQuaternion(rotation, textureMatrixScratch);
|
|
457
|
-
const minTexCoord = Cartesian2_default.fromElements(
|
|
458
|
-
Number.POSITIVE_INFINITY,
|
|
459
|
-
Number.POSITIVE_INFINITY,
|
|
460
|
-
scratchMinTexCoord
|
|
461
|
-
);
|
|
462
|
-
const maxTexCoord = Cartesian2_default.fromElements(
|
|
463
|
-
Number.NEGATIVE_INFINITY,
|
|
464
|
-
Number.NEGATIVE_INFINITY,
|
|
465
|
-
scratchMaxTexCoord
|
|
466
|
-
);
|
|
467
|
-
let length = positions.length;
|
|
468
|
-
const stOffset = length / 3 * 2;
|
|
469
|
-
for (let i = 0; i < length; i += 3) {
|
|
470
|
-
const i1 = i + 1;
|
|
471
|
-
const i2 = i + 2;
|
|
472
|
-
let position = Cartesian3_default.fromArray(positions, i, scratchCartesian1);
|
|
473
|
-
let extrudedPosition;
|
|
474
|
-
if (vertexFormat.st) {
|
|
475
|
-
const rotatedPoint = Matrix3_default.multiplyByVector(
|
|
476
|
-
textureMatrix,
|
|
477
|
-
position,
|
|
478
|
-
scratchCartesian2
|
|
479
|
-
);
|
|
480
|
-
const projectedPoint = projection.project(
|
|
481
|
-
ellipsoid.cartesianToCartographic(rotatedPoint, scratchCartographic),
|
|
482
|
-
scratchCartesian3
|
|
483
|
-
);
|
|
484
|
-
Cartesian3_default.subtract(projectedPoint, projectedCenter, projectedPoint);
|
|
485
|
-
texCoordScratch.x = (projectedPoint.x + semiMajorAxis) / (2 * semiMajorAxis);
|
|
486
|
-
texCoordScratch.y = (projectedPoint.y + semiMinorAxis) / (2 * semiMinorAxis);
|
|
487
|
-
minTexCoord.x = Math.min(texCoordScratch.x, minTexCoord.x);
|
|
488
|
-
minTexCoord.y = Math.min(texCoordScratch.y, minTexCoord.y);
|
|
489
|
-
maxTexCoord.x = Math.max(texCoordScratch.x, maxTexCoord.x);
|
|
490
|
-
maxTexCoord.y = Math.max(texCoordScratch.y, maxTexCoord.y);
|
|
491
|
-
textureCoordinates[textureCoordIndex + stOffset] = texCoordScratch.x;
|
|
492
|
-
textureCoordinates[textureCoordIndex + 1 + stOffset] = texCoordScratch.y;
|
|
493
|
-
textureCoordinates[textureCoordIndex++] = texCoordScratch.x;
|
|
494
|
-
textureCoordinates[textureCoordIndex++] = texCoordScratch.y;
|
|
495
|
-
}
|
|
496
|
-
position = ellipsoid.scaleToGeodeticSurface(position, position);
|
|
497
|
-
extrudedPosition = Cartesian3_default.clone(position, scratchCartesian2);
|
|
498
|
-
normal = ellipsoid.geodeticSurfaceNormal(position, normal);
|
|
499
|
-
if (shadowVolume) {
|
|
500
|
-
extrudeNormals[i + length] = -normal.x;
|
|
501
|
-
extrudeNormals[i1 + length] = -normal.y;
|
|
502
|
-
extrudeNormals[i2 + length] = -normal.z;
|
|
503
|
-
}
|
|
504
|
-
let scaledNormal = Cartesian3_default.multiplyByScalar(
|
|
505
|
-
normal,
|
|
506
|
-
height,
|
|
507
|
-
scratchCartesian4
|
|
508
|
-
);
|
|
509
|
-
position = Cartesian3_default.add(position, scaledNormal, position);
|
|
510
|
-
scaledNormal = Cartesian3_default.multiplyByScalar(
|
|
511
|
-
normal,
|
|
512
|
-
extrudedHeight,
|
|
513
|
-
scaledNormal
|
|
514
|
-
);
|
|
515
|
-
extrudedPosition = Cartesian3_default.add(
|
|
516
|
-
extrudedPosition,
|
|
517
|
-
scaledNormal,
|
|
518
|
-
extrudedPosition
|
|
519
|
-
);
|
|
520
|
-
if (vertexFormat.position) {
|
|
521
|
-
finalPositions[i + length] = extrudedPosition.x;
|
|
522
|
-
finalPositions[i1 + length] = extrudedPosition.y;
|
|
523
|
-
finalPositions[i2 + length] = extrudedPosition.z;
|
|
524
|
-
finalPositions[i] = position.x;
|
|
525
|
-
finalPositions[i1] = position.y;
|
|
526
|
-
finalPositions[i2] = position.z;
|
|
527
|
-
}
|
|
528
|
-
if (vertexFormat.normal || vertexFormat.tangent || vertexFormat.bitangent) {
|
|
529
|
-
bitangent = Cartesian3_default.clone(normal, bitangent);
|
|
530
|
-
const next = Cartesian3_default.fromArray(
|
|
531
|
-
positions,
|
|
532
|
-
(i + 3) % length,
|
|
533
|
-
scratchCartesian4
|
|
534
|
-
);
|
|
535
|
-
Cartesian3_default.subtract(next, position, next);
|
|
536
|
-
const bottom = Cartesian3_default.subtract(
|
|
537
|
-
extrudedPosition,
|
|
538
|
-
position,
|
|
539
|
-
scratchCartesian3
|
|
540
|
-
);
|
|
541
|
-
normal = Cartesian3_default.normalize(
|
|
542
|
-
Cartesian3_default.cross(bottom, next, normal),
|
|
543
|
-
normal
|
|
544
|
-
);
|
|
545
|
-
if (vertexFormat.normal) {
|
|
546
|
-
normals[i] = normal.x;
|
|
547
|
-
normals[i1] = normal.y;
|
|
548
|
-
normals[i2] = normal.z;
|
|
549
|
-
normals[i + length] = normal.x;
|
|
550
|
-
normals[i1 + length] = normal.y;
|
|
551
|
-
normals[i2 + length] = normal.z;
|
|
552
|
-
}
|
|
553
|
-
if (vertexFormat.tangent) {
|
|
554
|
-
tangent = Cartesian3_default.normalize(
|
|
555
|
-
Cartesian3_default.cross(bitangent, normal, tangent),
|
|
556
|
-
tangent
|
|
557
|
-
);
|
|
558
|
-
tangents[i] = tangent.x;
|
|
559
|
-
tangents[i1] = tangent.y;
|
|
560
|
-
tangents[i2] = tangent.z;
|
|
561
|
-
tangents[i + length] = tangent.x;
|
|
562
|
-
tangents[i + 1 + length] = tangent.y;
|
|
563
|
-
tangents[i + 2 + length] = tangent.z;
|
|
564
|
-
}
|
|
565
|
-
if (vertexFormat.bitangent) {
|
|
566
|
-
bitangents[i] = bitangent.x;
|
|
567
|
-
bitangents[i1] = bitangent.y;
|
|
568
|
-
bitangents[i2] = bitangent.z;
|
|
569
|
-
bitangents[i + length] = bitangent.x;
|
|
570
|
-
bitangents[i1 + length] = bitangent.y;
|
|
571
|
-
bitangents[i2 + length] = bitangent.z;
|
|
572
|
-
}
|
|
573
|
-
}
|
|
574
|
-
}
|
|
575
|
-
if (vertexFormat.st) {
|
|
576
|
-
length = textureCoordinates.length;
|
|
577
|
-
for (let k = 0; k < length; k += 2) {
|
|
578
|
-
textureCoordinates[k] = (textureCoordinates[k] - minTexCoord.x) / (maxTexCoord.x - minTexCoord.x);
|
|
579
|
-
textureCoordinates[k + 1] = (textureCoordinates[k + 1] - minTexCoord.y) / (maxTexCoord.y - minTexCoord.y);
|
|
580
|
-
}
|
|
581
|
-
}
|
|
582
|
-
const attributes = new GeometryAttributes_default();
|
|
583
|
-
if (vertexFormat.position) {
|
|
584
|
-
attributes.position = new GeometryAttribute_default({
|
|
585
|
-
componentDatatype: ComponentDatatype_default.DOUBLE,
|
|
586
|
-
componentsPerAttribute: 3,
|
|
587
|
-
values: finalPositions
|
|
588
|
-
});
|
|
589
|
-
}
|
|
590
|
-
if (vertexFormat.st) {
|
|
591
|
-
attributes.st = new GeometryAttribute_default({
|
|
592
|
-
componentDatatype: ComponentDatatype_default.FLOAT,
|
|
593
|
-
componentsPerAttribute: 2,
|
|
594
|
-
values: textureCoordinates
|
|
595
|
-
});
|
|
596
|
-
}
|
|
597
|
-
if (vertexFormat.normal) {
|
|
598
|
-
attributes.normal = new GeometryAttribute_default({
|
|
599
|
-
componentDatatype: ComponentDatatype_default.FLOAT,
|
|
600
|
-
componentsPerAttribute: 3,
|
|
601
|
-
values: normals
|
|
602
|
-
});
|
|
603
|
-
}
|
|
604
|
-
if (vertexFormat.tangent) {
|
|
605
|
-
attributes.tangent = new GeometryAttribute_default({
|
|
606
|
-
componentDatatype: ComponentDatatype_default.FLOAT,
|
|
607
|
-
componentsPerAttribute: 3,
|
|
608
|
-
values: tangents
|
|
609
|
-
});
|
|
610
|
-
}
|
|
611
|
-
if (vertexFormat.bitangent) {
|
|
612
|
-
attributes.bitangent = new GeometryAttribute_default({
|
|
613
|
-
componentDatatype: ComponentDatatype_default.FLOAT,
|
|
614
|
-
componentsPerAttribute: 3,
|
|
615
|
-
values: bitangents
|
|
616
|
-
});
|
|
617
|
-
}
|
|
618
|
-
if (shadowVolume) {
|
|
619
|
-
attributes.extrudeDirection = new GeometryAttribute_default({
|
|
620
|
-
componentDatatype: ComponentDatatype_default.FLOAT,
|
|
621
|
-
componentsPerAttribute: 3,
|
|
622
|
-
values: extrudeNormals
|
|
623
|
-
});
|
|
624
|
-
}
|
|
625
|
-
if (defined_default(options.offsetAttribute)) {
|
|
626
|
-
let offsetAttribute = new Uint8Array(size);
|
|
627
|
-
if (options.offsetAttribute === GeometryOffsetAttribute_default.TOP) {
|
|
628
|
-
offsetAttribute = offsetAttribute.fill(1, 0, size / 2);
|
|
629
|
-
} else {
|
|
630
|
-
const offsetValue = options.offsetAttribute === GeometryOffsetAttribute_default.NONE ? 0 : 1;
|
|
631
|
-
offsetAttribute = offsetAttribute.fill(offsetValue);
|
|
632
|
-
}
|
|
633
|
-
attributes.applyOffset = new GeometryAttribute_default({
|
|
634
|
-
componentDatatype: ComponentDatatype_default.UNSIGNED_BYTE,
|
|
635
|
-
componentsPerAttribute: 1,
|
|
636
|
-
values: offsetAttribute
|
|
637
|
-
});
|
|
638
|
-
}
|
|
639
|
-
return attributes;
|
|
640
|
-
}
|
|
641
|
-
function computeWallIndices(positions) {
|
|
642
|
-
const length = positions.length / 3;
|
|
643
|
-
const indices = IndexDatatype_default.createTypedArray(length, length * 6);
|
|
644
|
-
let index = 0;
|
|
645
|
-
for (let i = 0; i < length; i++) {
|
|
646
|
-
const UL = i;
|
|
647
|
-
const LL = i + length;
|
|
648
|
-
const UR = (UL + 1) % length;
|
|
649
|
-
const LR = UR + length;
|
|
650
|
-
indices[index++] = UL;
|
|
651
|
-
indices[index++] = LL;
|
|
652
|
-
indices[index++] = UR;
|
|
653
|
-
indices[index++] = UR;
|
|
654
|
-
indices[index++] = LL;
|
|
655
|
-
indices[index++] = LR;
|
|
656
|
-
}
|
|
657
|
-
return indices;
|
|
658
|
-
}
|
|
659
|
-
var topBoundingSphere = new BoundingSphere_default();
|
|
660
|
-
var bottomBoundingSphere = new BoundingSphere_default();
|
|
661
|
-
function computeExtrudedEllipse(options) {
|
|
662
|
-
const center = options.center;
|
|
663
|
-
const ellipsoid = options.ellipsoid;
|
|
664
|
-
const semiMajorAxis = options.semiMajorAxis;
|
|
665
|
-
let scaledNormal = Cartesian3_default.multiplyByScalar(
|
|
666
|
-
ellipsoid.geodeticSurfaceNormal(center, scratchCartesian1),
|
|
667
|
-
options.height,
|
|
668
|
-
scratchCartesian1
|
|
669
|
-
);
|
|
670
|
-
topBoundingSphere.center = Cartesian3_default.add(
|
|
671
|
-
center,
|
|
672
|
-
scaledNormal,
|
|
673
|
-
topBoundingSphere.center
|
|
674
|
-
);
|
|
675
|
-
topBoundingSphere.radius = semiMajorAxis;
|
|
676
|
-
scaledNormal = Cartesian3_default.multiplyByScalar(
|
|
677
|
-
ellipsoid.geodeticSurfaceNormal(center, scaledNormal),
|
|
678
|
-
options.extrudedHeight,
|
|
679
|
-
scaledNormal
|
|
680
|
-
);
|
|
681
|
-
bottomBoundingSphere.center = Cartesian3_default.add(
|
|
682
|
-
center,
|
|
683
|
-
scaledNormal,
|
|
684
|
-
bottomBoundingSphere.center
|
|
685
|
-
);
|
|
686
|
-
bottomBoundingSphere.radius = semiMajorAxis;
|
|
687
|
-
const cep = EllipseGeometryLibrary_default.computeEllipsePositions(
|
|
688
|
-
options,
|
|
689
|
-
true,
|
|
690
|
-
true
|
|
691
|
-
);
|
|
692
|
-
const positions = cep.positions;
|
|
693
|
-
const numPts = cep.numPts;
|
|
694
|
-
const outerPositions = cep.outerPositions;
|
|
695
|
-
const boundingSphere = BoundingSphere_default.union(
|
|
696
|
-
topBoundingSphere,
|
|
697
|
-
bottomBoundingSphere
|
|
698
|
-
);
|
|
699
|
-
const topBottomAttributes = computeTopBottomAttributes(
|
|
700
|
-
positions,
|
|
701
|
-
options,
|
|
702
|
-
true
|
|
703
|
-
);
|
|
704
|
-
let indices = topIndices(numPts);
|
|
705
|
-
const length = indices.length;
|
|
706
|
-
indices.length = length * 2;
|
|
707
|
-
const posLength = positions.length / 3;
|
|
708
|
-
for (let i = 0; i < length; i += 3) {
|
|
709
|
-
indices[i + length] = indices[i + 2] + posLength;
|
|
710
|
-
indices[i + 1 + length] = indices[i + 1] + posLength;
|
|
711
|
-
indices[i + 2 + length] = indices[i] + posLength;
|
|
712
|
-
}
|
|
713
|
-
const topBottomIndices = IndexDatatype_default.createTypedArray(
|
|
714
|
-
posLength * 2 / 3,
|
|
715
|
-
indices
|
|
716
|
-
);
|
|
717
|
-
const topBottomGeo = new Geometry_default({
|
|
718
|
-
attributes: topBottomAttributes,
|
|
719
|
-
indices: topBottomIndices,
|
|
720
|
-
primitiveType: PrimitiveType_default.TRIANGLES
|
|
721
|
-
});
|
|
722
|
-
const wallAttributes = computeWallAttributes(outerPositions, options);
|
|
723
|
-
indices = computeWallIndices(outerPositions);
|
|
724
|
-
const wallIndices = IndexDatatype_default.createTypedArray(
|
|
725
|
-
outerPositions.length * 2 / 3,
|
|
726
|
-
indices
|
|
727
|
-
);
|
|
728
|
-
const wallGeo = new Geometry_default({
|
|
729
|
-
attributes: wallAttributes,
|
|
730
|
-
indices: wallIndices,
|
|
731
|
-
primitiveType: PrimitiveType_default.TRIANGLES
|
|
732
|
-
});
|
|
733
|
-
const geo = GeometryPipeline_default.combineInstances([
|
|
734
|
-
new GeometryInstance_default({
|
|
735
|
-
geometry: topBottomGeo
|
|
736
|
-
}),
|
|
737
|
-
new GeometryInstance_default({
|
|
738
|
-
geometry: wallGeo
|
|
739
|
-
})
|
|
740
|
-
]);
|
|
741
|
-
return {
|
|
742
|
-
boundingSphere,
|
|
743
|
-
attributes: geo[0].attributes,
|
|
744
|
-
indices: geo[0].indices
|
|
745
|
-
};
|
|
746
|
-
}
|
|
747
|
-
function computeRectangle(center, semiMajorAxis, semiMinorAxis, rotation, granularity, ellipsoid, result) {
|
|
748
|
-
const cep = EllipseGeometryLibrary_default.computeEllipsePositions(
|
|
749
|
-
{
|
|
750
|
-
center,
|
|
751
|
-
semiMajorAxis,
|
|
752
|
-
semiMinorAxis,
|
|
753
|
-
rotation,
|
|
754
|
-
granularity
|
|
755
|
-
},
|
|
756
|
-
false,
|
|
757
|
-
true
|
|
758
|
-
);
|
|
759
|
-
const positionsFlat = cep.outerPositions;
|
|
760
|
-
const positionsCount = positionsFlat.length / 3;
|
|
761
|
-
const positions = new Array(positionsCount);
|
|
762
|
-
for (let i = 0; i < positionsCount; ++i) {
|
|
763
|
-
positions[i] = Cartesian3_default.fromArray(positionsFlat, i * 3);
|
|
764
|
-
}
|
|
765
|
-
const rectangle = Rectangle_default.fromCartesianArray(positions, ellipsoid, result);
|
|
766
|
-
if (rectangle.width > Math_default.PI) {
|
|
767
|
-
rectangle.north = rectangle.north > 0 ? Math_default.PI_OVER_TWO - Math_default.EPSILON7 : rectangle.north;
|
|
768
|
-
rectangle.south = rectangle.south < 0 ? Math_default.EPSILON7 - Math_default.PI_OVER_TWO : rectangle.south;
|
|
769
|
-
rectangle.east = Math_default.PI;
|
|
770
|
-
rectangle.west = -Math_default.PI;
|
|
771
|
-
}
|
|
772
|
-
return rectangle;
|
|
773
|
-
}
|
|
774
|
-
function EllipseGeometry(options) {
|
|
775
|
-
options = defaultValue_default(options, defaultValue_default.EMPTY_OBJECT);
|
|
776
|
-
const center = options.center;
|
|
777
|
-
const ellipsoid = defaultValue_default(options.ellipsoid, Ellipsoid_default.WGS84);
|
|
778
|
-
const semiMajorAxis = options.semiMajorAxis;
|
|
779
|
-
const semiMinorAxis = options.semiMinorAxis;
|
|
780
|
-
const granularity = defaultValue_default(
|
|
781
|
-
options.granularity,
|
|
782
|
-
Math_default.RADIANS_PER_DEGREE
|
|
783
|
-
);
|
|
784
|
-
const vertexFormat = defaultValue_default(options.vertexFormat, VertexFormat_default.DEFAULT);
|
|
785
|
-
Check_default.defined("options.center", center);
|
|
786
|
-
Check_default.typeOf.number("options.semiMajorAxis", semiMajorAxis);
|
|
787
|
-
Check_default.typeOf.number("options.semiMinorAxis", semiMinorAxis);
|
|
788
|
-
if (semiMajorAxis < semiMinorAxis) {
|
|
789
|
-
throw new DeveloperError_default(
|
|
790
|
-
"semiMajorAxis must be greater than or equal to the semiMinorAxis."
|
|
791
|
-
);
|
|
792
|
-
}
|
|
793
|
-
if (granularity <= 0) {
|
|
794
|
-
throw new DeveloperError_default("granularity must be greater than zero.");
|
|
795
|
-
}
|
|
796
|
-
const height = defaultValue_default(options.height, 0);
|
|
797
|
-
const extrudedHeight = defaultValue_default(options.extrudedHeight, height);
|
|
798
|
-
this._center = Cartesian3_default.clone(center);
|
|
799
|
-
this._semiMajorAxis = semiMajorAxis;
|
|
800
|
-
this._semiMinorAxis = semiMinorAxis;
|
|
801
|
-
this._ellipsoid = Ellipsoid_default.clone(ellipsoid);
|
|
802
|
-
this._rotation = defaultValue_default(options.rotation, 0);
|
|
803
|
-
this._stRotation = defaultValue_default(options.stRotation, 0);
|
|
804
|
-
this._height = Math.max(extrudedHeight, height);
|
|
805
|
-
this._granularity = granularity;
|
|
806
|
-
this._vertexFormat = VertexFormat_default.clone(vertexFormat);
|
|
807
|
-
this._extrudedHeight = Math.min(extrudedHeight, height);
|
|
808
|
-
this._shadowVolume = defaultValue_default(options.shadowVolume, false);
|
|
809
|
-
this._workerName = "createEllipseGeometry";
|
|
810
|
-
this._offsetAttribute = options.offsetAttribute;
|
|
811
|
-
this._rectangle = void 0;
|
|
812
|
-
this._textureCoordinateRotationPoints = void 0;
|
|
813
|
-
}
|
|
814
|
-
EllipseGeometry.packedLength = Cartesian3_default.packedLength + Ellipsoid_default.packedLength + VertexFormat_default.packedLength + 9;
|
|
815
|
-
EllipseGeometry.pack = function(value, array, startingIndex) {
|
|
816
|
-
Check_default.defined("value", value);
|
|
817
|
-
Check_default.defined("array", array);
|
|
818
|
-
startingIndex = defaultValue_default(startingIndex, 0);
|
|
819
|
-
Cartesian3_default.pack(value._center, array, startingIndex);
|
|
820
|
-
startingIndex += Cartesian3_default.packedLength;
|
|
821
|
-
Ellipsoid_default.pack(value._ellipsoid, array, startingIndex);
|
|
822
|
-
startingIndex += Ellipsoid_default.packedLength;
|
|
823
|
-
VertexFormat_default.pack(value._vertexFormat, array, startingIndex);
|
|
824
|
-
startingIndex += VertexFormat_default.packedLength;
|
|
825
|
-
array[startingIndex++] = value._semiMajorAxis;
|
|
826
|
-
array[startingIndex++] = value._semiMinorAxis;
|
|
827
|
-
array[startingIndex++] = value._rotation;
|
|
828
|
-
array[startingIndex++] = value._stRotation;
|
|
829
|
-
array[startingIndex++] = value._height;
|
|
830
|
-
array[startingIndex++] = value._granularity;
|
|
831
|
-
array[startingIndex++] = value._extrudedHeight;
|
|
832
|
-
array[startingIndex++] = value._shadowVolume ? 1 : 0;
|
|
833
|
-
array[startingIndex] = defaultValue_default(value._offsetAttribute, -1);
|
|
834
|
-
return array;
|
|
835
|
-
};
|
|
836
|
-
var scratchCenter = new Cartesian3_default();
|
|
837
|
-
var scratchEllipsoid = new Ellipsoid_default();
|
|
838
|
-
var scratchVertexFormat = new VertexFormat_default();
|
|
839
|
-
var scratchOptions = {
|
|
840
|
-
center: scratchCenter,
|
|
841
|
-
ellipsoid: scratchEllipsoid,
|
|
842
|
-
vertexFormat: scratchVertexFormat,
|
|
843
|
-
semiMajorAxis: void 0,
|
|
844
|
-
semiMinorAxis: void 0,
|
|
845
|
-
rotation: void 0,
|
|
846
|
-
stRotation: void 0,
|
|
847
|
-
height: void 0,
|
|
848
|
-
granularity: void 0,
|
|
849
|
-
extrudedHeight: void 0,
|
|
850
|
-
shadowVolume: void 0,
|
|
851
|
-
offsetAttribute: void 0
|
|
852
|
-
};
|
|
853
|
-
EllipseGeometry.unpack = function(array, startingIndex, result) {
|
|
854
|
-
Check_default.defined("array", array);
|
|
855
|
-
startingIndex = defaultValue_default(startingIndex, 0);
|
|
856
|
-
const center = Cartesian3_default.unpack(array, startingIndex, scratchCenter);
|
|
857
|
-
startingIndex += Cartesian3_default.packedLength;
|
|
858
|
-
const ellipsoid = Ellipsoid_default.unpack(array, startingIndex, scratchEllipsoid);
|
|
859
|
-
startingIndex += Ellipsoid_default.packedLength;
|
|
860
|
-
const vertexFormat = VertexFormat_default.unpack(
|
|
861
|
-
array,
|
|
862
|
-
startingIndex,
|
|
863
|
-
scratchVertexFormat
|
|
864
|
-
);
|
|
865
|
-
startingIndex += VertexFormat_default.packedLength;
|
|
866
|
-
const semiMajorAxis = array[startingIndex++];
|
|
867
|
-
const semiMinorAxis = array[startingIndex++];
|
|
868
|
-
const rotation = array[startingIndex++];
|
|
869
|
-
const stRotation = array[startingIndex++];
|
|
870
|
-
const height = array[startingIndex++];
|
|
871
|
-
const granularity = array[startingIndex++];
|
|
872
|
-
const extrudedHeight = array[startingIndex++];
|
|
873
|
-
const shadowVolume = array[startingIndex++] === 1;
|
|
874
|
-
const offsetAttribute = array[startingIndex];
|
|
875
|
-
if (!defined_default(result)) {
|
|
876
|
-
scratchOptions.height = height;
|
|
877
|
-
scratchOptions.extrudedHeight = extrudedHeight;
|
|
878
|
-
scratchOptions.granularity = granularity;
|
|
879
|
-
scratchOptions.stRotation = stRotation;
|
|
880
|
-
scratchOptions.rotation = rotation;
|
|
881
|
-
scratchOptions.semiMajorAxis = semiMajorAxis;
|
|
882
|
-
scratchOptions.semiMinorAxis = semiMinorAxis;
|
|
883
|
-
scratchOptions.shadowVolume = shadowVolume;
|
|
884
|
-
scratchOptions.offsetAttribute = offsetAttribute === -1 ? void 0 : offsetAttribute;
|
|
885
|
-
return new EllipseGeometry(scratchOptions);
|
|
886
|
-
}
|
|
887
|
-
result._center = Cartesian3_default.clone(center, result._center);
|
|
888
|
-
result._ellipsoid = Ellipsoid_default.clone(ellipsoid, result._ellipsoid);
|
|
889
|
-
result._vertexFormat = VertexFormat_default.clone(vertexFormat, result._vertexFormat);
|
|
890
|
-
result._semiMajorAxis = semiMajorAxis;
|
|
891
|
-
result._semiMinorAxis = semiMinorAxis;
|
|
892
|
-
result._rotation = rotation;
|
|
893
|
-
result._stRotation = stRotation;
|
|
894
|
-
result._height = height;
|
|
895
|
-
result._granularity = granularity;
|
|
896
|
-
result._extrudedHeight = extrudedHeight;
|
|
897
|
-
result._shadowVolume = shadowVolume;
|
|
898
|
-
result._offsetAttribute = offsetAttribute === -1 ? void 0 : offsetAttribute;
|
|
899
|
-
return result;
|
|
900
|
-
};
|
|
901
|
-
EllipseGeometry.computeRectangle = function(options, result) {
|
|
902
|
-
options = defaultValue_default(options, defaultValue_default.EMPTY_OBJECT);
|
|
903
|
-
const center = options.center;
|
|
904
|
-
const ellipsoid = defaultValue_default(options.ellipsoid, Ellipsoid_default.WGS84);
|
|
905
|
-
const semiMajorAxis = options.semiMajorAxis;
|
|
906
|
-
const semiMinorAxis = options.semiMinorAxis;
|
|
907
|
-
const granularity = defaultValue_default(
|
|
908
|
-
options.granularity,
|
|
909
|
-
Math_default.RADIANS_PER_DEGREE
|
|
910
|
-
);
|
|
911
|
-
const rotation = defaultValue_default(options.rotation, 0);
|
|
912
|
-
Check_default.defined("options.center", center);
|
|
913
|
-
Check_default.typeOf.number("options.semiMajorAxis", semiMajorAxis);
|
|
914
|
-
Check_default.typeOf.number("options.semiMinorAxis", semiMinorAxis);
|
|
915
|
-
if (semiMajorAxis < semiMinorAxis) {
|
|
916
|
-
throw new DeveloperError_default(
|
|
917
|
-
"semiMajorAxis must be greater than or equal to the semiMinorAxis."
|
|
918
|
-
);
|
|
919
|
-
}
|
|
920
|
-
if (granularity <= 0) {
|
|
921
|
-
throw new DeveloperError_default("granularity must be greater than zero.");
|
|
922
|
-
}
|
|
923
|
-
return computeRectangle(
|
|
924
|
-
center,
|
|
925
|
-
semiMajorAxis,
|
|
926
|
-
semiMinorAxis,
|
|
927
|
-
rotation,
|
|
928
|
-
granularity,
|
|
929
|
-
ellipsoid,
|
|
930
|
-
result
|
|
931
|
-
);
|
|
932
|
-
};
|
|
933
|
-
EllipseGeometry.createGeometry = function(ellipseGeometry) {
|
|
934
|
-
if (ellipseGeometry._semiMajorAxis <= 0 || ellipseGeometry._semiMinorAxis <= 0) {
|
|
935
|
-
return;
|
|
936
|
-
}
|
|
937
|
-
const height = ellipseGeometry._height;
|
|
938
|
-
const extrudedHeight = ellipseGeometry._extrudedHeight;
|
|
939
|
-
const extrude = !Math_default.equalsEpsilon(
|
|
940
|
-
height,
|
|
941
|
-
extrudedHeight,
|
|
942
|
-
0,
|
|
943
|
-
Math_default.EPSILON2
|
|
944
|
-
);
|
|
945
|
-
ellipseGeometry._center = ellipseGeometry._ellipsoid.scaleToGeodeticSurface(
|
|
946
|
-
ellipseGeometry._center,
|
|
947
|
-
ellipseGeometry._center
|
|
948
|
-
);
|
|
949
|
-
const options = {
|
|
950
|
-
center: ellipseGeometry._center,
|
|
951
|
-
semiMajorAxis: ellipseGeometry._semiMajorAxis,
|
|
952
|
-
semiMinorAxis: ellipseGeometry._semiMinorAxis,
|
|
953
|
-
ellipsoid: ellipseGeometry._ellipsoid,
|
|
954
|
-
rotation: ellipseGeometry._rotation,
|
|
955
|
-
height,
|
|
956
|
-
granularity: ellipseGeometry._granularity,
|
|
957
|
-
vertexFormat: ellipseGeometry._vertexFormat,
|
|
958
|
-
stRotation: ellipseGeometry._stRotation
|
|
959
|
-
};
|
|
960
|
-
let geometry;
|
|
961
|
-
if (extrude) {
|
|
962
|
-
options.extrudedHeight = extrudedHeight;
|
|
963
|
-
options.shadowVolume = ellipseGeometry._shadowVolume;
|
|
964
|
-
options.offsetAttribute = ellipseGeometry._offsetAttribute;
|
|
965
|
-
geometry = computeExtrudedEllipse(options);
|
|
966
|
-
} else {
|
|
967
|
-
geometry = computeEllipse(options);
|
|
968
|
-
if (defined_default(ellipseGeometry._offsetAttribute)) {
|
|
969
|
-
const length = geometry.attributes.position.values.length;
|
|
970
|
-
const offsetValue = ellipseGeometry._offsetAttribute === GeometryOffsetAttribute_default.NONE ? 0 : 1;
|
|
971
|
-
const applyOffset = new Uint8Array(length / 3).fill(offsetValue);
|
|
972
|
-
geometry.attributes.applyOffset = new GeometryAttribute_default({
|
|
973
|
-
componentDatatype: ComponentDatatype_default.UNSIGNED_BYTE,
|
|
974
|
-
componentsPerAttribute: 1,
|
|
975
|
-
values: applyOffset
|
|
976
|
-
});
|
|
977
|
-
}
|
|
978
|
-
}
|
|
979
|
-
return new Geometry_default({
|
|
980
|
-
attributes: geometry.attributes,
|
|
981
|
-
indices: geometry.indices,
|
|
982
|
-
primitiveType: PrimitiveType_default.TRIANGLES,
|
|
983
|
-
boundingSphere: geometry.boundingSphere,
|
|
984
|
-
offsetAttribute: ellipseGeometry._offsetAttribute
|
|
985
|
-
});
|
|
986
|
-
};
|
|
987
|
-
EllipseGeometry.createShadowVolume = function(ellipseGeometry, minHeightFunc, maxHeightFunc) {
|
|
988
|
-
const granularity = ellipseGeometry._granularity;
|
|
989
|
-
const ellipsoid = ellipseGeometry._ellipsoid;
|
|
990
|
-
const minHeight = minHeightFunc(granularity, ellipsoid);
|
|
991
|
-
const maxHeight = maxHeightFunc(granularity, ellipsoid);
|
|
992
|
-
return new EllipseGeometry({
|
|
993
|
-
center: ellipseGeometry._center,
|
|
994
|
-
semiMajorAxis: ellipseGeometry._semiMajorAxis,
|
|
995
|
-
semiMinorAxis: ellipseGeometry._semiMinorAxis,
|
|
996
|
-
ellipsoid,
|
|
997
|
-
rotation: ellipseGeometry._rotation,
|
|
998
|
-
stRotation: ellipseGeometry._stRotation,
|
|
999
|
-
granularity,
|
|
1000
|
-
extrudedHeight: minHeight,
|
|
1001
|
-
height: maxHeight,
|
|
1002
|
-
vertexFormat: VertexFormat_default.POSITION_ONLY,
|
|
1003
|
-
shadowVolume: true
|
|
1004
|
-
});
|
|
1005
|
-
};
|
|
1006
|
-
function textureCoordinateRotationPoints(ellipseGeometry) {
|
|
1007
|
-
const stRotation = -ellipseGeometry._stRotation;
|
|
1008
|
-
if (stRotation === 0) {
|
|
1009
|
-
return [0, 0, 0, 1, 1, 0];
|
|
1010
|
-
}
|
|
1011
|
-
const cep = EllipseGeometryLibrary_default.computeEllipsePositions(
|
|
1012
|
-
{
|
|
1013
|
-
center: ellipseGeometry._center,
|
|
1014
|
-
semiMajorAxis: ellipseGeometry._semiMajorAxis,
|
|
1015
|
-
semiMinorAxis: ellipseGeometry._semiMinorAxis,
|
|
1016
|
-
rotation: ellipseGeometry._rotation,
|
|
1017
|
-
granularity: ellipseGeometry._granularity
|
|
1018
|
-
},
|
|
1019
|
-
false,
|
|
1020
|
-
true
|
|
1021
|
-
);
|
|
1022
|
-
const positionsFlat = cep.outerPositions;
|
|
1023
|
-
const positionsCount = positionsFlat.length / 3;
|
|
1024
|
-
const positions = new Array(positionsCount);
|
|
1025
|
-
for (let i = 0; i < positionsCount; ++i) {
|
|
1026
|
-
positions[i] = Cartesian3_default.fromArray(positionsFlat, i * 3);
|
|
1027
|
-
}
|
|
1028
|
-
const ellipsoid = ellipseGeometry._ellipsoid;
|
|
1029
|
-
const boundingRectangle = ellipseGeometry.rectangle;
|
|
1030
|
-
return Geometry_default._textureCoordinateRotationPoints(
|
|
1031
|
-
positions,
|
|
1032
|
-
stRotation,
|
|
1033
|
-
ellipsoid,
|
|
1034
|
-
boundingRectangle
|
|
1035
|
-
);
|
|
1036
|
-
}
|
|
1037
|
-
Object.defineProperties(EllipseGeometry.prototype, {
|
|
1038
|
-
/**
|
|
1039
|
-
* @private
|
|
1040
|
-
*/
|
|
1041
|
-
rectangle: {
|
|
1042
|
-
get: function() {
|
|
1043
|
-
if (!defined_default(this._rectangle)) {
|
|
1044
|
-
this._rectangle = computeRectangle(
|
|
1045
|
-
this._center,
|
|
1046
|
-
this._semiMajorAxis,
|
|
1047
|
-
this._semiMinorAxis,
|
|
1048
|
-
this._rotation,
|
|
1049
|
-
this._granularity,
|
|
1050
|
-
this._ellipsoid
|
|
1051
|
-
);
|
|
1052
|
-
}
|
|
1053
|
-
return this._rectangle;
|
|
1054
|
-
}
|
|
1055
|
-
},
|
|
1056
|
-
/**
|
|
1057
|
-
* For remapping texture coordinates when rendering EllipseGeometries as GroundPrimitives.
|
|
1058
|
-
* @private
|
|
1059
|
-
*/
|
|
1060
|
-
textureCoordinateRotationPoints: {
|
|
1061
|
-
get: function() {
|
|
1062
|
-
if (!defined_default(this._textureCoordinateRotationPoints)) {
|
|
1063
|
-
this._textureCoordinateRotationPoints = textureCoordinateRotationPoints(
|
|
1064
|
-
this
|
|
1065
|
-
);
|
|
1066
|
-
}
|
|
1067
|
-
return this._textureCoordinateRotationPoints;
|
|
1068
|
-
}
|
|
1069
|
-
}
|
|
1070
|
-
});
|
|
1071
|
-
var EllipseGeometry_default = EllipseGeometry;
|
|
1072
|
-
|
|
1073
|
-
export {
|
|
1074
|
-
EllipseGeometry_default
|
|
1075
|
-
};
|