@gmgis/gm-sdk 1.12.5 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/dist/dist/index.js +1848 -0
  2. package/dist/gm.min.js +16983 -16483
  3. package/dist/index.js +1436 -1434
  4. package/dist/resources/ThirdParty/Workers/pako_deflate.min.js +1 -2
  5. package/dist/resources/ThirdParty/Workers/pako_inflate.min.js +1 -2
  6. package/dist/resources/ThirdParty/Workers/z-worker-pako.js +1 -1
  7. package/dist/resources/ThirdParty/google-earth-dbroot-parser.js +1 -8337
  8. package/dist/resources/ThirdParty/wasm_splats_bg.wasm +0 -0
  9. package/dist/resources/Workers/chunk-35SHYARM.js +26 -0
  10. package/dist/resources/Workers/chunk-37F5JSTI.js +26 -0
  11. package/dist/resources/Workers/chunk-3SSKC3VN.js +26 -0
  12. package/dist/resources/Workers/chunk-3W4GT7KQ.js +26 -0
  13. package/dist/resources/Workers/chunk-4IW2T6GF.js +26 -0
  14. package/dist/resources/Workers/chunk-5YEWO3HT.js +26 -0
  15. package/dist/resources/Workers/chunk-64RSHJUE.js +28 -0
  16. package/dist/resources/Workers/chunk-77IHZJJ3.js +26 -0
  17. package/dist/resources/Workers/chunk-7HTKERZY.js +26 -0
  18. package/dist/resources/Workers/{chunk-I2ITFFPX.js → chunk-A56XVLQR.js} +2 -13
  19. package/dist/resources/Workers/chunk-AJYK4IVJ.js +26 -0
  20. package/dist/resources/Workers/{chunk-PRGYLLJT.js → chunk-ARG42DC4.js} +2 -31
  21. package/dist/resources/Workers/chunk-AU7IKHOH.js +26 -0
  22. package/dist/resources/Workers/chunk-B4AA3ARO.js +26 -0
  23. package/dist/resources/Workers/chunk-CNCV5UL7.js +26 -0
  24. package/dist/resources/Workers/chunk-CYCB63OH.js +26 -0
  25. package/dist/resources/Workers/{chunk-DI5NGJUP.js → chunk-D6AA5QVT.js} +2 -20
  26. package/dist/resources/Workers/chunk-D6C66QON.js +26 -0
  27. package/dist/resources/Workers/chunk-DEPHB2WM.js +26 -0
  28. package/dist/resources/Workers/chunk-DMEY62ID.js +26 -0
  29. package/dist/resources/Workers/chunk-DQQ63PYM.js +26 -0
  30. package/dist/resources/Workers/chunk-ED5JPB3S.js +27 -0
  31. package/dist/resources/Workers/chunk-EZUYS2JF.js +26 -0
  32. package/dist/resources/Workers/chunk-FEVXJ54I.js +26 -0
  33. package/dist/resources/Workers/chunk-G5AGHVVC.js +26 -0
  34. package/dist/resources/Workers/{chunk-7JO7GPJN.js → chunk-GBYLG25F.js} +2 -15
  35. package/dist/resources/Workers/chunk-GILIDQNQ.js +26 -0
  36. package/dist/resources/Workers/chunk-HMIYSTF6.js +26 -0
  37. package/dist/resources/Workers/chunk-HTFSEEMT.js +26 -0
  38. package/dist/resources/Workers/chunk-HWXX4CWK.js +26 -0
  39. package/dist/resources/Workers/chunk-IYTZ52EY.js +26 -0
  40. package/dist/resources/Workers/chunk-J6UP6FLE.js +26 -0
  41. package/dist/resources/Workers/chunk-LEYMRMBK.js +27 -0
  42. package/dist/resources/Workers/chunk-M3MGYQSL.js +26 -0
  43. package/dist/resources/Workers/chunk-N4VJKXZS.js +26 -0
  44. package/dist/resources/Workers/chunk-NB3ML6JO.js +26 -0
  45. package/dist/resources/Workers/chunk-OFUUQVMR.js +26 -0
  46. package/dist/resources/Workers/chunk-OSW76XDF.js +26 -0
  47. package/dist/resources/Workers/chunk-PSPPBZWI.js +66 -0
  48. package/dist/resources/Workers/chunk-QN3VOORQ.js +26 -0
  49. package/dist/resources/Workers/chunk-QOUAJ6TL.js +26 -0
  50. package/dist/resources/Workers/chunk-RCV6KWXS.js +26 -0
  51. package/dist/resources/Workers/chunk-TCGIRNHN.js +26 -0
  52. package/dist/resources/Workers/chunk-U4IEOH5K.js +26 -0
  53. package/dist/resources/Workers/chunk-UP6I5URU.js +26 -0
  54. package/dist/resources/Workers/chunk-VTAIKJXX.js +26 -0
  55. package/dist/resources/Workers/chunk-VTBDSFTG.js +26 -0
  56. package/dist/resources/Workers/chunk-VW6VD53G.js +26 -0
  57. package/dist/resources/Workers/chunk-WGGIH7QW.js +26 -0
  58. package/dist/resources/Workers/chunk-WWA5PL4H.js +26 -0
  59. package/dist/resources/Workers/{chunk-6CHGCNMW.js → chunk-WZDE3RYP.js} +4 -34
  60. package/dist/resources/Workers/chunk-XRL4AVS5.js +26 -0
  61. package/dist/resources/Workers/combineGeometry.js +2 -40
  62. package/dist/resources/Workers/createBoxGeometry.js +2 -32
  63. package/dist/resources/Workers/createBoxOutlineGeometry.js +2 -209
  64. package/dist/resources/Workers/createCircleGeometry.js +2 -175
  65. package/dist/resources/Workers/createCircleOutlineGeometry.js +2 -121
  66. package/dist/resources/Workers/createCoplanarPolygonGeometry.js +2 -481
  67. package/dist/resources/Workers/createCoplanarPolygonOutlineGeometry.js +2 -199
  68. package/dist/resources/Workers/createCorridorGeometry.js +2 -1237
  69. package/dist/resources/Workers/createCorridorOutlineGeometry.js +2 -542
  70. package/dist/resources/Workers/createCylinderGeometry.js +2 -34
  71. package/dist/resources/Workers/createCylinderOutlineGeometry.js +2 -205
  72. package/dist/resources/Workers/createEllipseGeometry.js +2 -45
  73. package/dist/resources/Workers/createEllipseOutlineGeometry.js +2 -38
  74. package/dist/resources/Workers/createEllipsoidGeometry.js +2 -33
  75. package/dist/resources/Workers/createEllipsoidOutlineGeometry.js +2 -35
  76. package/dist/resources/Workers/createFrustumGeometry.js +2 -32
  77. package/dist/resources/Workers/createFrustumOutlineGeometry.js +2 -210
  78. package/dist/resources/Workers/createGeometry.js +2 -144
  79. package/dist/resources/Workers/createGroundPolylineGeometry.js +2 -1582
  80. package/dist/resources/Workers/createPlaneGeometry.js +2 -198
  81. package/dist/resources/Workers/createPlaneOutlineGeometry.js +2 -98
  82. package/dist/resources/Workers/createPolygonGeometry.js +2 -1381
  83. package/dist/resources/Workers/createPolygonOutlineGeometry.js +2 -509
  84. package/dist/resources/Workers/createPolylineGeometry.js +2 -470
  85. package/dist/resources/Workers/createPolylineVolumeGeometry.js +2 -354
  86. package/dist/resources/Workers/createPolylineVolumeOutlineGeometry.js +2 -251
  87. package/dist/resources/Workers/createRectangleGeometry.js +2 -1246
  88. package/dist/resources/Workers/createRectangleOutlineGeometry.js +2 -453
  89. package/dist/resources/Workers/createSimplePolylineGeometry.js +2 -374
  90. package/dist/resources/Workers/createSphereGeometry.js +2 -92
  91. package/dist/resources/Workers/createSphereOutlineGeometry.js +2 -92
  92. package/dist/resources/Workers/createTaskProcessorWorker.js +2 -8
  93. package/dist/resources/Workers/createVectorTileClampedPolylines.js +2 -466
  94. package/dist/resources/Workers/createVectorTileGeometries.js +2 -361
  95. package/dist/resources/Workers/createVectorTilePoints.js +2 -88
  96. package/dist/resources/Workers/createVectorTilePolygons.js +2 -359
  97. package/dist/resources/Workers/createVectorTilePolylines.js +2 -236
  98. package/dist/resources/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +2 -539
  99. package/dist/resources/Workers/createVerticesFromHeightmap.js +2 -2252
  100. package/dist/resources/Workers/createVerticesFromQuantizedTerrainMesh.js +2 -729
  101. package/dist/resources/Workers/createWallGeometry.js +2 -464
  102. package/dist/resources/Workers/createWallOutlineGeometry.js +2 -312
  103. package/dist/resources/Workers/decodeDraco.js +2 -345
  104. package/dist/resources/Workers/decodeGoogleEarthEnterprisePacket.js +2 -2642
  105. package/dist/resources/Workers/decodeI3S.js +2 -1319
  106. package/dist/resources/Workers/gaussianSplatSorter.js +26 -0
  107. package/dist/resources/Workers/gaussianSplatTextureGenerator.js +26 -0
  108. package/dist/resources/Workers/transcodeKTX2.js +29 -3360
  109. package/dist/resources/Workers/transferTypedArrayTest.js +2 -17
  110. package/dist/resources/Workers/upsampleQuantizedTerrainMesh.js +2 -793
  111. package/package.json +74 -74
  112. package/dist/resources/ThirdParty/Workers/basis_transcoder.js +0 -21
  113. package/dist/resources/Workers/chunk-26GA3JAM.js +0 -139
  114. package/dist/resources/Workers/chunk-27HUZ7SA.js +0 -305
  115. package/dist/resources/Workers/chunk-2ZGOQXYU.js +0 -171
  116. package/dist/resources/Workers/chunk-3Q2L65QU.js +0 -1258
  117. package/dist/resources/Workers/chunk-472HQ3EH.js +0 -100
  118. package/dist/resources/Workers/chunk-5ODQSF26.js +0 -101
  119. package/dist/resources/Workers/chunk-5OOFQLKF.js +0 -634
  120. package/dist/resources/Workers/chunk-5PTXS2GO.js +0 -10390
  121. package/dist/resources/Workers/chunk-76BYBWHP.js +0 -122
  122. package/dist/resources/Workers/chunk-7BMOHCPM.js +0 -390
  123. package/dist/resources/Workers/chunk-7KTQP4VB.js +0 -59
  124. package/dist/resources/Workers/chunk-7O373FFS.js +0 -665
  125. package/dist/resources/Workers/chunk-AD63PIY6.js +0 -163
  126. package/dist/resources/Workers/chunk-BHQJ2NT7.js +0 -353
  127. package/dist/resources/Workers/chunk-C6YYBQXW.js +0 -102
  128. package/dist/resources/Workers/chunk-CKY7HOHV.js +0 -287
  129. package/dist/resources/Workers/chunk-DHYHSFFJ.js +0 -73
  130. package/dist/resources/Workers/chunk-E27BLMDD.js +0 -115
  131. package/dist/resources/Workers/chunk-E63IIM5T.js +0 -75
  132. package/dist/resources/Workers/chunk-E6V6SQZW.js +0 -456
  133. package/dist/resources/Workers/chunk-EJZTDTUH.js +0 -138
  134. package/dist/resources/Workers/chunk-FDOV2LBJ.js +0 -220
  135. package/dist/resources/Workers/chunk-FIGIZHAQ.js +0 -684
  136. package/dist/resources/Workers/chunk-GESF4OXQ.js +0 -1800
  137. package/dist/resources/Workers/chunk-GGZJN2TI.js +0 -2717
  138. package/dist/resources/Workers/chunk-GNBFYG7F.js +0 -1481
  139. package/dist/resources/Workers/chunk-GWCFU2SA.js +0 -300
  140. package/dist/resources/Workers/chunk-IBLIYJZR.js +0 -196
  141. package/dist/resources/Workers/chunk-JW4FOI6M.js +0 -476
  142. package/dist/resources/Workers/chunk-K4GQUNB5.js +0 -262
  143. package/dist/resources/Workers/chunk-M3GMB5OP.js +0 -834
  144. package/dist/resources/Workers/chunk-MXIZJAPH.js +0 -629
  145. package/dist/resources/Workers/chunk-N5KJGGCM.js +0 -1073
  146. package/dist/resources/Workers/chunk-NGPPMXRM.js +0 -435
  147. package/dist/resources/Workers/chunk-O3E4OAOE.js +0 -511
  148. package/dist/resources/Workers/chunk-PGRPDNHG.js +0 -1048
  149. package/dist/resources/Workers/chunk-S6MRMMQU.js +0 -157
  150. package/dist/resources/Workers/chunk-SMDOP47J.js +0 -945
  151. package/dist/resources/Workers/chunk-TGONEMZO.js +0 -421
  152. package/dist/resources/Workers/chunk-TKVT5GQM.js +0 -781
  153. package/dist/resources/Workers/chunk-U72QNFOJ.js +0 -758
  154. package/dist/resources/Workers/chunk-VJZB3WAV.js +0 -963
  155. package/dist/resources/Workers/chunk-VU2MNO7L.js +0 -239
  156. package/dist/resources/Workers/chunk-XY4BATBS.js +0 -500
  157. package/dist/resources/Workers/chunk-YFXQECWV.js +0 -2857
  158. package/dist/resources/Workers/chunk-YSGTGQQO.js +0 -398
  159. package/dist/resources/Workers/chunk-YZ733KKS.js +0 -368
@@ -1,1481 +0,0 @@
1
- /**
2
- * @license
3
- * Cesium - https://github.com/CesiumGS/cesium
4
- * Version 1.122
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
- VertexFormat_default
28
- } from "./chunk-EJZTDTUH.js";
29
- import {
30
- Plane_default
31
- } from "./chunk-2ZGOQXYU.js";
32
- import {
33
- GeometryAttributes_default
34
- } from "./chunk-DI5NGJUP.js";
35
- import {
36
- GeometryAttribute_default,
37
- Geometry_default,
38
- PrimitiveType_default
39
- } from "./chunk-GWCFU2SA.js";
40
- import {
41
- BoundingSphere_default,
42
- Intersect_default
43
- } from "./chunk-VJZB3WAV.js";
44
- import {
45
- Cartesian4_default,
46
- Matrix4_default,
47
- Quaternion_default
48
- } from "./chunk-5PTXS2GO.js";
49
- import {
50
- ComponentDatatype_default
51
- } from "./chunk-K4GQUNB5.js";
52
- import {
53
- Cartesian3_default,
54
- Matrix3_default
55
- } from "./chunk-YFXQECWV.js";
56
- import {
57
- Math_default
58
- } from "./chunk-XY4BATBS.js";
59
- import {
60
- defaultValue_default
61
- } from "./chunk-7JO7GPJN.js";
62
- import {
63
- Check_default,
64
- DeveloperError_default
65
- } from "./chunk-AD63PIY6.js";
66
- import {
67
- defined_default
68
- } from "./chunk-E63IIM5T.js";
69
-
70
- // packages/engine/Source/Core/CullingVolume.js
71
- function CullingVolume(planes) {
72
- this.planes = defaultValue_default(planes, []);
73
- }
74
- var faces = [new Cartesian3_default(), new Cartesian3_default(), new Cartesian3_default()];
75
- Cartesian3_default.clone(Cartesian3_default.UNIT_X, faces[0]);
76
- Cartesian3_default.clone(Cartesian3_default.UNIT_Y, faces[1]);
77
- Cartesian3_default.clone(Cartesian3_default.UNIT_Z, faces[2]);
78
- var scratchPlaneCenter = new Cartesian3_default();
79
- var scratchPlaneNormal = new Cartesian3_default();
80
- var scratchPlane = new Plane_default(new Cartesian3_default(1, 0, 0), 0);
81
- CullingVolume.fromBoundingSphere = function(boundingSphere, result) {
82
- if (!defined_default(boundingSphere)) {
83
- throw new DeveloperError_default("boundingSphere is required.");
84
- }
85
- if (!defined_default(result)) {
86
- result = new CullingVolume();
87
- }
88
- const length = faces.length;
89
- const planes = result.planes;
90
- planes.length = 2 * length;
91
- const center = boundingSphere.center;
92
- const radius = boundingSphere.radius;
93
- let planeIndex = 0;
94
- for (let i = 0; i < length; ++i) {
95
- const faceNormal = faces[i];
96
- let plane0 = planes[planeIndex];
97
- let plane1 = planes[planeIndex + 1];
98
- if (!defined_default(plane0)) {
99
- plane0 = planes[planeIndex] = new Cartesian4_default();
100
- }
101
- if (!defined_default(plane1)) {
102
- plane1 = planes[planeIndex + 1] = new Cartesian4_default();
103
- }
104
- Cartesian3_default.multiplyByScalar(faceNormal, -radius, scratchPlaneCenter);
105
- Cartesian3_default.add(center, scratchPlaneCenter, scratchPlaneCenter);
106
- plane0.x = faceNormal.x;
107
- plane0.y = faceNormal.y;
108
- plane0.z = faceNormal.z;
109
- plane0.w = -Cartesian3_default.dot(faceNormal, scratchPlaneCenter);
110
- Cartesian3_default.multiplyByScalar(faceNormal, radius, scratchPlaneCenter);
111
- Cartesian3_default.add(center, scratchPlaneCenter, scratchPlaneCenter);
112
- plane1.x = -faceNormal.x;
113
- plane1.y = -faceNormal.y;
114
- plane1.z = -faceNormal.z;
115
- plane1.w = -Cartesian3_default.dot(
116
- Cartesian3_default.negate(faceNormal, scratchPlaneNormal),
117
- scratchPlaneCenter
118
- );
119
- planeIndex += 2;
120
- }
121
- return result;
122
- };
123
- CullingVolume.prototype.computeVisibility = function(boundingVolume) {
124
- if (!defined_default(boundingVolume)) {
125
- throw new DeveloperError_default("boundingVolume is required.");
126
- }
127
- const planes = this.planes;
128
- let intersecting = false;
129
- for (let k = 0, len = planes.length; k < len; ++k) {
130
- const result = boundingVolume.intersectPlane(
131
- Plane_default.fromCartesian4(planes[k], scratchPlane)
132
- );
133
- if (result === Intersect_default.OUTSIDE) {
134
- return Intersect_default.OUTSIDE;
135
- } else if (result === Intersect_default.INTERSECTING) {
136
- intersecting = true;
137
- }
138
- }
139
- return intersecting ? Intersect_default.INTERSECTING : Intersect_default.INSIDE;
140
- };
141
- CullingVolume.prototype.computeVisibilityWithPlaneMask = function(boundingVolume, parentPlaneMask) {
142
- if (!defined_default(boundingVolume)) {
143
- throw new DeveloperError_default("boundingVolume is required.");
144
- }
145
- if (!defined_default(parentPlaneMask)) {
146
- throw new DeveloperError_default("parentPlaneMask is required.");
147
- }
148
- if (parentPlaneMask === CullingVolume.MASK_OUTSIDE || parentPlaneMask === CullingVolume.MASK_INSIDE) {
149
- return parentPlaneMask;
150
- }
151
- let mask = CullingVolume.MASK_INSIDE;
152
- const planes = this.planes;
153
- for (let k = 0, len = planes.length; k < len; ++k) {
154
- const flag = k < 31 ? 1 << k : 0;
155
- if (k < 31 && (parentPlaneMask & flag) === 0) {
156
- continue;
157
- }
158
- const result = boundingVolume.intersectPlane(
159
- Plane_default.fromCartesian4(planes[k], scratchPlane)
160
- );
161
- if (result === Intersect_default.OUTSIDE) {
162
- return CullingVolume.MASK_OUTSIDE;
163
- } else if (result === Intersect_default.INTERSECTING) {
164
- mask |= flag;
165
- }
166
- }
167
- return mask;
168
- };
169
- CullingVolume.MASK_OUTSIDE = 4294967295;
170
- CullingVolume.MASK_INSIDE = 0;
171
- CullingVolume.MASK_INDETERMINATE = 2147483647;
172
- var CullingVolume_default = CullingVolume;
173
-
174
- // packages/engine/Source/Core/OrthographicOffCenterFrustum.js
175
- function OrthographicOffCenterFrustum(options) {
176
- options = defaultValue_default(options, defaultValue_default.EMPTY_OBJECT);
177
- this.left = options.left;
178
- this._left = void 0;
179
- this.right = options.right;
180
- this._right = void 0;
181
- this.top = options.top;
182
- this._top = void 0;
183
- this.bottom = options.bottom;
184
- this._bottom = void 0;
185
- this.near = defaultValue_default(options.near, 1);
186
- this._near = this.near;
187
- this.far = defaultValue_default(options.far, 5e8);
188
- this._far = this.far;
189
- this._cullingVolume = new CullingVolume_default();
190
- this._orthographicMatrix = new Matrix4_default();
191
- }
192
- function update(frustum) {
193
- if (!defined_default(frustum.right) || !defined_default(frustum.left) || !defined_default(frustum.top) || !defined_default(frustum.bottom) || !defined_default(frustum.near) || !defined_default(frustum.far)) {
194
- throw new DeveloperError_default(
195
- "right, left, top, bottom, near, or far parameters are not set."
196
- );
197
- }
198
- if (frustum.top !== frustum._top || frustum.bottom !== frustum._bottom || frustum.left !== frustum._left || frustum.right !== frustum._right || frustum.near !== frustum._near || frustum.far !== frustum._far) {
199
- if (frustum.left > frustum.right) {
200
- throw new DeveloperError_default("right must be greater than left.");
201
- }
202
- if (frustum.bottom > frustum.top) {
203
- throw new DeveloperError_default("top must be greater than bottom.");
204
- }
205
- if (frustum.near <= 0 || frustum.near > frustum.far) {
206
- throw new DeveloperError_default(
207
- "near must be greater than zero and less than far."
208
- );
209
- }
210
- frustum._left = frustum.left;
211
- frustum._right = frustum.right;
212
- frustum._top = frustum.top;
213
- frustum._bottom = frustum.bottom;
214
- frustum._near = frustum.near;
215
- frustum._far = frustum.far;
216
- frustum._orthographicMatrix = Matrix4_default.computeOrthographicOffCenter(
217
- frustum.left,
218
- frustum.right,
219
- frustum.bottom,
220
- frustum.top,
221
- frustum.near,
222
- frustum.far,
223
- frustum._orthographicMatrix
224
- );
225
- }
226
- }
227
- Object.defineProperties(OrthographicOffCenterFrustum.prototype, {
228
- /**
229
- * Gets the orthographic projection matrix computed from the view frustum.
230
- * @memberof OrthographicOffCenterFrustum.prototype
231
- * @type {Matrix4}
232
- * @readonly
233
- */
234
- projectionMatrix: {
235
- get: function() {
236
- update(this);
237
- return this._orthographicMatrix;
238
- }
239
- }
240
- });
241
- var getPlanesRight = new Cartesian3_default();
242
- var getPlanesNearCenter = new Cartesian3_default();
243
- var getPlanesPoint = new Cartesian3_default();
244
- var negateScratch = new Cartesian3_default();
245
- OrthographicOffCenterFrustum.prototype.computeCullingVolume = function(position, direction, up) {
246
- if (!defined_default(position)) {
247
- throw new DeveloperError_default("position is required.");
248
- }
249
- if (!defined_default(direction)) {
250
- throw new DeveloperError_default("direction is required.");
251
- }
252
- if (!defined_default(up)) {
253
- throw new DeveloperError_default("up is required.");
254
- }
255
- const planes = this._cullingVolume.planes;
256
- const t = this.top;
257
- const b = this.bottom;
258
- const r = this.right;
259
- const l = this.left;
260
- const n = this.near;
261
- const f = this.far;
262
- const right = Cartesian3_default.cross(direction, up, getPlanesRight);
263
- Cartesian3_default.normalize(right, right);
264
- const nearCenter = getPlanesNearCenter;
265
- Cartesian3_default.multiplyByScalar(direction, n, nearCenter);
266
- Cartesian3_default.add(position, nearCenter, nearCenter);
267
- const point = getPlanesPoint;
268
- Cartesian3_default.multiplyByScalar(right, l, point);
269
- Cartesian3_default.add(nearCenter, point, point);
270
- let plane = planes[0];
271
- if (!defined_default(plane)) {
272
- plane = planes[0] = new Cartesian4_default();
273
- }
274
- plane.x = right.x;
275
- plane.y = right.y;
276
- plane.z = right.z;
277
- plane.w = -Cartesian3_default.dot(right, point);
278
- Cartesian3_default.multiplyByScalar(right, r, point);
279
- Cartesian3_default.add(nearCenter, point, point);
280
- plane = planes[1];
281
- if (!defined_default(plane)) {
282
- plane = planes[1] = new Cartesian4_default();
283
- }
284
- plane.x = -right.x;
285
- plane.y = -right.y;
286
- plane.z = -right.z;
287
- plane.w = -Cartesian3_default.dot(Cartesian3_default.negate(right, negateScratch), point);
288
- Cartesian3_default.multiplyByScalar(up, b, point);
289
- Cartesian3_default.add(nearCenter, point, point);
290
- plane = planes[2];
291
- if (!defined_default(plane)) {
292
- plane = planes[2] = new Cartesian4_default();
293
- }
294
- plane.x = up.x;
295
- plane.y = up.y;
296
- plane.z = up.z;
297
- plane.w = -Cartesian3_default.dot(up, point);
298
- Cartesian3_default.multiplyByScalar(up, t, point);
299
- Cartesian3_default.add(nearCenter, point, point);
300
- plane = planes[3];
301
- if (!defined_default(plane)) {
302
- plane = planes[3] = new Cartesian4_default();
303
- }
304
- plane.x = -up.x;
305
- plane.y = -up.y;
306
- plane.z = -up.z;
307
- plane.w = -Cartesian3_default.dot(Cartesian3_default.negate(up, negateScratch), point);
308
- plane = planes[4];
309
- if (!defined_default(plane)) {
310
- plane = planes[4] = new Cartesian4_default();
311
- }
312
- plane.x = direction.x;
313
- plane.y = direction.y;
314
- plane.z = direction.z;
315
- plane.w = -Cartesian3_default.dot(direction, nearCenter);
316
- Cartesian3_default.multiplyByScalar(direction, f, point);
317
- Cartesian3_default.add(position, point, point);
318
- plane = planes[5];
319
- if (!defined_default(plane)) {
320
- plane = planes[5] = new Cartesian4_default();
321
- }
322
- plane.x = -direction.x;
323
- plane.y = -direction.y;
324
- plane.z = -direction.z;
325
- plane.w = -Cartesian3_default.dot(Cartesian3_default.negate(direction, negateScratch), point);
326
- return this._cullingVolume;
327
- };
328
- OrthographicOffCenterFrustum.prototype.getPixelDimensions = function(drawingBufferWidth, drawingBufferHeight, distance, pixelRatio, result) {
329
- update(this);
330
- if (!defined_default(drawingBufferWidth) || !defined_default(drawingBufferHeight)) {
331
- throw new DeveloperError_default(
332
- "Both drawingBufferWidth and drawingBufferHeight are required."
333
- );
334
- }
335
- if (drawingBufferWidth <= 0) {
336
- throw new DeveloperError_default("drawingBufferWidth must be greater than zero.");
337
- }
338
- if (drawingBufferHeight <= 0) {
339
- throw new DeveloperError_default("drawingBufferHeight must be greater than zero.");
340
- }
341
- if (!defined_default(distance)) {
342
- throw new DeveloperError_default("distance is required.");
343
- }
344
- if (!defined_default(pixelRatio)) {
345
- throw new DeveloperError_default("pixelRatio is required.");
346
- }
347
- if (pixelRatio <= 0) {
348
- throw new DeveloperError_default("pixelRatio must be greater than zero.");
349
- }
350
- if (!defined_default(result)) {
351
- throw new DeveloperError_default("A result object is required.");
352
- }
353
- const frustumWidth = this.right - this.left;
354
- const frustumHeight = this.top - this.bottom;
355
- const pixelWidth = pixelRatio * frustumWidth / drawingBufferWidth;
356
- const pixelHeight = pixelRatio * frustumHeight / drawingBufferHeight;
357
- result.x = pixelWidth;
358
- result.y = pixelHeight;
359
- return result;
360
- };
361
- OrthographicOffCenterFrustum.prototype.clone = function(result) {
362
- if (!defined_default(result)) {
363
- result = new OrthographicOffCenterFrustum();
364
- }
365
- result.left = this.left;
366
- result.right = this.right;
367
- result.top = this.top;
368
- result.bottom = this.bottom;
369
- result.near = this.near;
370
- result.far = this.far;
371
- result._left = void 0;
372
- result._right = void 0;
373
- result._top = void 0;
374
- result._bottom = void 0;
375
- result._near = void 0;
376
- result._far = void 0;
377
- return result;
378
- };
379
- OrthographicOffCenterFrustum.prototype.equals = function(other) {
380
- return defined_default(other) && other instanceof OrthographicOffCenterFrustum && this.right === other.right && this.left === other.left && this.top === other.top && this.bottom === other.bottom && this.near === other.near && this.far === other.far;
381
- };
382
- OrthographicOffCenterFrustum.prototype.equalsEpsilon = function(other, relativeEpsilon, absoluteEpsilon) {
383
- return other === this || defined_default(other) && other instanceof OrthographicOffCenterFrustum && Math_default.equalsEpsilon(
384
- this.right,
385
- other.right,
386
- relativeEpsilon,
387
- absoluteEpsilon
388
- ) && Math_default.equalsEpsilon(
389
- this.left,
390
- other.left,
391
- relativeEpsilon,
392
- absoluteEpsilon
393
- ) && Math_default.equalsEpsilon(
394
- this.top,
395
- other.top,
396
- relativeEpsilon,
397
- absoluteEpsilon
398
- ) && Math_default.equalsEpsilon(
399
- this.bottom,
400
- other.bottom,
401
- relativeEpsilon,
402
- absoluteEpsilon
403
- ) && Math_default.equalsEpsilon(
404
- this.near,
405
- other.near,
406
- relativeEpsilon,
407
- absoluteEpsilon
408
- ) && Math_default.equalsEpsilon(
409
- this.far,
410
- other.far,
411
- relativeEpsilon,
412
- absoluteEpsilon
413
- );
414
- };
415
- var OrthographicOffCenterFrustum_default = OrthographicOffCenterFrustum;
416
-
417
- // packages/engine/Source/Core/OrthographicFrustum.js
418
- function OrthographicFrustum(options) {
419
- options = defaultValue_default(options, defaultValue_default.EMPTY_OBJECT);
420
- this._offCenterFrustum = new OrthographicOffCenterFrustum_default();
421
- this.width = options.width;
422
- this._width = void 0;
423
- this.aspectRatio = options.aspectRatio;
424
- this._aspectRatio = void 0;
425
- this.near = defaultValue_default(options.near, 1);
426
- this._near = this.near;
427
- this.far = defaultValue_default(options.far, 5e8);
428
- this._far = this.far;
429
- }
430
- OrthographicFrustum.packedLength = 4;
431
- OrthographicFrustum.pack = function(value, array, startingIndex) {
432
- Check_default.typeOf.object("value", value);
433
- Check_default.defined("array", array);
434
- startingIndex = defaultValue_default(startingIndex, 0);
435
- array[startingIndex++] = value.width;
436
- array[startingIndex++] = value.aspectRatio;
437
- array[startingIndex++] = value.near;
438
- array[startingIndex] = value.far;
439
- return array;
440
- };
441
- OrthographicFrustum.unpack = function(array, startingIndex, result) {
442
- Check_default.defined("array", array);
443
- startingIndex = defaultValue_default(startingIndex, 0);
444
- if (!defined_default(result)) {
445
- result = new OrthographicFrustum();
446
- }
447
- result.width = array[startingIndex++];
448
- result.aspectRatio = array[startingIndex++];
449
- result.near = array[startingIndex++];
450
- result.far = array[startingIndex];
451
- return result;
452
- };
453
- function update2(frustum) {
454
- if (!defined_default(frustum.width) || !defined_default(frustum.aspectRatio) || !defined_default(frustum.near) || !defined_default(frustum.far)) {
455
- throw new DeveloperError_default(
456
- "width, aspectRatio, near, or far parameters are not set."
457
- );
458
- }
459
- const f = frustum._offCenterFrustum;
460
- if (frustum.width !== frustum._width || frustum.aspectRatio !== frustum._aspectRatio || frustum.near !== frustum._near || frustum.far !== frustum._far) {
461
- if (frustum.aspectRatio < 0) {
462
- throw new DeveloperError_default("aspectRatio must be positive.");
463
- }
464
- if (frustum.near < 0 || frustum.near > frustum.far) {
465
- throw new DeveloperError_default(
466
- "near must be greater than zero and less than far."
467
- );
468
- }
469
- frustum._aspectRatio = frustum.aspectRatio;
470
- frustum._width = frustum.width;
471
- frustum._near = frustum.near;
472
- frustum._far = frustum.far;
473
- const ratio = 1 / frustum.aspectRatio;
474
- f.right = frustum.width * 0.5;
475
- f.left = -f.right;
476
- f.top = ratio * f.right;
477
- f.bottom = -f.top;
478
- f.near = frustum.near;
479
- f.far = frustum.far;
480
- }
481
- }
482
- Object.defineProperties(OrthographicFrustum.prototype, {
483
- /**
484
- * Gets the orthographic projection matrix computed from the view frustum.
485
- * @memberof OrthographicFrustum.prototype
486
- * @type {Matrix4}
487
- * @readonly
488
- */
489
- projectionMatrix: {
490
- get: function() {
491
- update2(this);
492
- return this._offCenterFrustum.projectionMatrix;
493
- }
494
- },
495
- /**
496
- * Gets the orthographic projection matrix computed from the view frustum.
497
- * @memberof OrthographicFrustum.prototype
498
- * @type {OrthographicOffCenterFrustum}
499
- * @readonly
500
- * @private
501
- */
502
- offCenterFrustum: {
503
- get: function() {
504
- update2(this);
505
- return this._offCenterFrustum;
506
- }
507
- }
508
- });
509
- OrthographicFrustum.prototype.computeCullingVolume = function(position, direction, up) {
510
- update2(this);
511
- return this._offCenterFrustum.computeCullingVolume(position, direction, up);
512
- };
513
- OrthographicFrustum.prototype.getPixelDimensions = function(drawingBufferWidth, drawingBufferHeight, distance, pixelRatio, result) {
514
- update2(this);
515
- return this._offCenterFrustum.getPixelDimensions(
516
- drawingBufferWidth,
517
- drawingBufferHeight,
518
- distance,
519
- pixelRatio,
520
- result
521
- );
522
- };
523
- OrthographicFrustum.prototype.clone = function(result) {
524
- if (!defined_default(result)) {
525
- result = new OrthographicFrustum();
526
- }
527
- result.aspectRatio = this.aspectRatio;
528
- result.width = this.width;
529
- result.near = this.near;
530
- result.far = this.far;
531
- result._aspectRatio = void 0;
532
- result._width = void 0;
533
- result._near = void 0;
534
- result._far = void 0;
535
- this._offCenterFrustum.clone(result._offCenterFrustum);
536
- return result;
537
- };
538
- OrthographicFrustum.prototype.equals = function(other) {
539
- if (!defined_default(other) || !(other instanceof OrthographicFrustum)) {
540
- return false;
541
- }
542
- update2(this);
543
- update2(other);
544
- return this.width === other.width && this.aspectRatio === other.aspectRatio && this._offCenterFrustum.equals(other._offCenterFrustum);
545
- };
546
- OrthographicFrustum.prototype.equalsEpsilon = function(other, relativeEpsilon, absoluteEpsilon) {
547
- if (!defined_default(other) || !(other instanceof OrthographicFrustum)) {
548
- return false;
549
- }
550
- update2(this);
551
- update2(other);
552
- return Math_default.equalsEpsilon(
553
- this.width,
554
- other.width,
555
- relativeEpsilon,
556
- absoluteEpsilon
557
- ) && Math_default.equalsEpsilon(
558
- this.aspectRatio,
559
- other.aspectRatio,
560
- relativeEpsilon,
561
- absoluteEpsilon
562
- ) && this._offCenterFrustum.equalsEpsilon(
563
- other._offCenterFrustum,
564
- relativeEpsilon,
565
- absoluteEpsilon
566
- );
567
- };
568
- var OrthographicFrustum_default = OrthographicFrustum;
569
-
570
- // packages/engine/Source/Core/PerspectiveOffCenterFrustum.js
571
- function PerspectiveOffCenterFrustum(options) {
572
- options = defaultValue_default(options, defaultValue_default.EMPTY_OBJECT);
573
- this.left = options.left;
574
- this._left = void 0;
575
- this.right = options.right;
576
- this._right = void 0;
577
- this.top = options.top;
578
- this._top = void 0;
579
- this.bottom = options.bottom;
580
- this._bottom = void 0;
581
- this.near = defaultValue_default(options.near, 1);
582
- this._near = this.near;
583
- this.far = defaultValue_default(options.far, 5e8);
584
- this._far = this.far;
585
- this._cullingVolume = new CullingVolume_default();
586
- this._perspectiveMatrix = new Matrix4_default();
587
- this._infinitePerspective = new Matrix4_default();
588
- }
589
- function update3(frustum) {
590
- if (!defined_default(frustum.right) || !defined_default(frustum.left) || !defined_default(frustum.top) || !defined_default(frustum.bottom) || !defined_default(frustum.near) || !defined_default(frustum.far)) {
591
- throw new DeveloperError_default(
592
- "right, left, top, bottom, near, or far parameters are not set."
593
- );
594
- }
595
- const { top, bottom, right, left, near, far } = frustum;
596
- const changed = top !== frustum._top || bottom !== frustum._bottom || left !== frustum._left || right !== frustum._right || near !== frustum._near || far !== frustum._far;
597
- if (!changed) {
598
- return;
599
- }
600
- if (frustum.near <= 0 || frustum.near > frustum.far) {
601
- throw new DeveloperError_default(
602
- "near must be greater than zero and less than far."
603
- );
604
- }
605
- frustum._left = left;
606
- frustum._right = right;
607
- frustum._top = top;
608
- frustum._bottom = bottom;
609
- frustum._near = near;
610
- frustum._far = far;
611
- frustum._perspectiveMatrix = Matrix4_default.computePerspectiveOffCenter(
612
- left,
613
- right,
614
- bottom,
615
- top,
616
- near,
617
- far,
618
- frustum._perspectiveMatrix
619
- );
620
- frustum._infinitePerspective = Matrix4_default.computeInfinitePerspectiveOffCenter(
621
- left,
622
- right,
623
- bottom,
624
- top,
625
- near,
626
- frustum._infinitePerspective
627
- );
628
- }
629
- Object.defineProperties(PerspectiveOffCenterFrustum.prototype, {
630
- /**
631
- * Gets the perspective projection matrix computed from the view frustum.
632
- * The projection matrix will be recomputed if any frustum parameters have changed.
633
- *
634
- * @memberof PerspectiveOffCenterFrustum.prototype
635
- * @type {Matrix4}
636
- * @readonly
637
- *
638
- * @see PerspectiveOffCenterFrustum#infiniteProjectionMatrix
639
- */
640
- projectionMatrix: {
641
- get: function() {
642
- update3(this);
643
- return this._perspectiveMatrix;
644
- }
645
- },
646
- /**
647
- * Gets the perspective projection matrix computed from the view frustum with an infinite far plane.
648
- * @memberof PerspectiveOffCenterFrustum.prototype
649
- * @type {Matrix4}
650
- * @readonly
651
- *
652
- * @see PerspectiveOffCenterFrustum#projectionMatrix
653
- */
654
- infiniteProjectionMatrix: {
655
- get: function() {
656
- update3(this);
657
- return this._infinitePerspective;
658
- }
659
- }
660
- });
661
- var getPlanesRight2 = new Cartesian3_default();
662
- var getPlanesNearCenter2 = new Cartesian3_default();
663
- var getPlanesFarCenter = new Cartesian3_default();
664
- var getPlanesNormal = new Cartesian3_default();
665
- PerspectiveOffCenterFrustum.prototype.computeCullingVolume = function(position, direction, up) {
666
- if (!defined_default(position)) {
667
- throw new DeveloperError_default("position is required.");
668
- }
669
- if (!defined_default(direction)) {
670
- throw new DeveloperError_default("direction is required.");
671
- }
672
- if (!defined_default(up)) {
673
- throw new DeveloperError_default("up is required.");
674
- }
675
- const planes = this._cullingVolume.planes;
676
- const t = this.top;
677
- const b = this.bottom;
678
- const r = this.right;
679
- const l = this.left;
680
- const n = this.near;
681
- const f = this.far;
682
- const right = Cartesian3_default.cross(direction, up, getPlanesRight2);
683
- const nearCenter = getPlanesNearCenter2;
684
- Cartesian3_default.multiplyByScalar(direction, n, nearCenter);
685
- Cartesian3_default.add(position, nearCenter, nearCenter);
686
- const farCenter = getPlanesFarCenter;
687
- Cartesian3_default.multiplyByScalar(direction, f, farCenter);
688
- Cartesian3_default.add(position, farCenter, farCenter);
689
- const normal = getPlanesNormal;
690
- Cartesian3_default.multiplyByScalar(right, l, normal);
691
- Cartesian3_default.add(nearCenter, normal, normal);
692
- Cartesian3_default.subtract(normal, position, normal);
693
- Cartesian3_default.normalize(normal, normal);
694
- Cartesian3_default.cross(normal, up, normal);
695
- Cartesian3_default.normalize(normal, normal);
696
- let plane = planes[0];
697
- if (!defined_default(plane)) {
698
- plane = planes[0] = new Cartesian4_default();
699
- }
700
- plane.x = normal.x;
701
- plane.y = normal.y;
702
- plane.z = normal.z;
703
- plane.w = -Cartesian3_default.dot(normal, position);
704
- Cartesian3_default.multiplyByScalar(right, r, normal);
705
- Cartesian3_default.add(nearCenter, normal, normal);
706
- Cartesian3_default.subtract(normal, position, normal);
707
- Cartesian3_default.cross(up, normal, normal);
708
- Cartesian3_default.normalize(normal, normal);
709
- plane = planes[1];
710
- if (!defined_default(plane)) {
711
- plane = planes[1] = new Cartesian4_default();
712
- }
713
- plane.x = normal.x;
714
- plane.y = normal.y;
715
- plane.z = normal.z;
716
- plane.w = -Cartesian3_default.dot(normal, position);
717
- Cartesian3_default.multiplyByScalar(up, b, normal);
718
- Cartesian3_default.add(nearCenter, normal, normal);
719
- Cartesian3_default.subtract(normal, position, normal);
720
- Cartesian3_default.cross(right, normal, normal);
721
- Cartesian3_default.normalize(normal, normal);
722
- plane = planes[2];
723
- if (!defined_default(plane)) {
724
- plane = planes[2] = new Cartesian4_default();
725
- }
726
- plane.x = normal.x;
727
- plane.y = normal.y;
728
- plane.z = normal.z;
729
- plane.w = -Cartesian3_default.dot(normal, position);
730
- Cartesian3_default.multiplyByScalar(up, t, normal);
731
- Cartesian3_default.add(nearCenter, normal, normal);
732
- Cartesian3_default.subtract(normal, position, normal);
733
- Cartesian3_default.cross(normal, right, normal);
734
- Cartesian3_default.normalize(normal, normal);
735
- plane = planes[3];
736
- if (!defined_default(plane)) {
737
- plane = planes[3] = new Cartesian4_default();
738
- }
739
- plane.x = normal.x;
740
- plane.y = normal.y;
741
- plane.z = normal.z;
742
- plane.w = -Cartesian3_default.dot(normal, position);
743
- plane = planes[4];
744
- if (!defined_default(plane)) {
745
- plane = planes[4] = new Cartesian4_default();
746
- }
747
- plane.x = direction.x;
748
- plane.y = direction.y;
749
- plane.z = direction.z;
750
- plane.w = -Cartesian3_default.dot(direction, nearCenter);
751
- Cartesian3_default.negate(direction, normal);
752
- plane = planes[5];
753
- if (!defined_default(plane)) {
754
- plane = planes[5] = new Cartesian4_default();
755
- }
756
- plane.x = normal.x;
757
- plane.y = normal.y;
758
- plane.z = normal.z;
759
- plane.w = -Cartesian3_default.dot(normal, farCenter);
760
- return this._cullingVolume;
761
- };
762
- PerspectiveOffCenterFrustum.prototype.getPixelDimensions = function(drawingBufferWidth, drawingBufferHeight, distance, pixelRatio, result) {
763
- update3(this);
764
- if (!defined_default(drawingBufferWidth) || !defined_default(drawingBufferHeight)) {
765
- throw new DeveloperError_default(
766
- "Both drawingBufferWidth and drawingBufferHeight are required."
767
- );
768
- }
769
- if (drawingBufferWidth <= 0) {
770
- throw new DeveloperError_default("drawingBufferWidth must be greater than zero.");
771
- }
772
- if (drawingBufferHeight <= 0) {
773
- throw new DeveloperError_default("drawingBufferHeight must be greater than zero.");
774
- }
775
- if (!defined_default(distance)) {
776
- throw new DeveloperError_default("distance is required.");
777
- }
778
- if (!defined_default(pixelRatio)) {
779
- throw new DeveloperError_default("pixelRatio is required");
780
- }
781
- if (pixelRatio <= 0) {
782
- throw new DeveloperError_default("pixelRatio must be greater than zero.");
783
- }
784
- if (!defined_default(result)) {
785
- throw new DeveloperError_default("A result object is required.");
786
- }
787
- const inverseNear = 1 / this.near;
788
- let tanTheta = this.top * inverseNear;
789
- const pixelHeight = 2 * pixelRatio * distance * tanTheta / drawingBufferHeight;
790
- tanTheta = this.right * inverseNear;
791
- const pixelWidth = 2 * pixelRatio * distance * tanTheta / drawingBufferWidth;
792
- result.x = pixelWidth;
793
- result.y = pixelHeight;
794
- return result;
795
- };
796
- PerspectiveOffCenterFrustum.prototype.clone = function(result) {
797
- if (!defined_default(result)) {
798
- result = new PerspectiveOffCenterFrustum();
799
- }
800
- result.right = this.right;
801
- result.left = this.left;
802
- result.top = this.top;
803
- result.bottom = this.bottom;
804
- result.near = this.near;
805
- result.far = this.far;
806
- result._left = void 0;
807
- result._right = void 0;
808
- result._top = void 0;
809
- result._bottom = void 0;
810
- result._near = void 0;
811
- result._far = void 0;
812
- return result;
813
- };
814
- PerspectiveOffCenterFrustum.prototype.equals = function(other) {
815
- return defined_default(other) && other instanceof PerspectiveOffCenterFrustum && this.right === other.right && this.left === other.left && this.top === other.top && this.bottom === other.bottom && this.near === other.near && this.far === other.far;
816
- };
817
- PerspectiveOffCenterFrustum.prototype.equalsEpsilon = function(other, relativeEpsilon, absoluteEpsilon) {
818
- return other === this || defined_default(other) && other instanceof PerspectiveOffCenterFrustum && Math_default.equalsEpsilon(
819
- this.right,
820
- other.right,
821
- relativeEpsilon,
822
- absoluteEpsilon
823
- ) && Math_default.equalsEpsilon(
824
- this.left,
825
- other.left,
826
- relativeEpsilon,
827
- absoluteEpsilon
828
- ) && Math_default.equalsEpsilon(
829
- this.top,
830
- other.top,
831
- relativeEpsilon,
832
- absoluteEpsilon
833
- ) && Math_default.equalsEpsilon(
834
- this.bottom,
835
- other.bottom,
836
- relativeEpsilon,
837
- absoluteEpsilon
838
- ) && Math_default.equalsEpsilon(
839
- this.near,
840
- other.near,
841
- relativeEpsilon,
842
- absoluteEpsilon
843
- ) && Math_default.equalsEpsilon(
844
- this.far,
845
- other.far,
846
- relativeEpsilon,
847
- absoluteEpsilon
848
- );
849
- };
850
- var PerspectiveOffCenterFrustum_default = PerspectiveOffCenterFrustum;
851
-
852
- // packages/engine/Source/Core/PerspectiveFrustum.js
853
- function PerspectiveFrustum(options) {
854
- options = defaultValue_default(options, defaultValue_default.EMPTY_OBJECT);
855
- this._offCenterFrustum = new PerspectiveOffCenterFrustum_default();
856
- this.fov = options.fov;
857
- this._fov = void 0;
858
- this._fovy = void 0;
859
- this._sseDenominator = void 0;
860
- this.aspectRatio = options.aspectRatio;
861
- this._aspectRatio = void 0;
862
- this.near = defaultValue_default(options.near, 1);
863
- this._near = this.near;
864
- this.far = defaultValue_default(options.far, 5e8);
865
- this._far = this.far;
866
- this.xOffset = defaultValue_default(options.xOffset, 0);
867
- this._xOffset = this.xOffset;
868
- this.yOffset = defaultValue_default(options.yOffset, 0);
869
- this._yOffset = this.yOffset;
870
- }
871
- PerspectiveFrustum.packedLength = 6;
872
- PerspectiveFrustum.pack = function(value, array, startingIndex) {
873
- Check_default.typeOf.object("value", value);
874
- Check_default.defined("array", array);
875
- startingIndex = defaultValue_default(startingIndex, 0);
876
- array[startingIndex++] = value.fov;
877
- array[startingIndex++] = value.aspectRatio;
878
- array[startingIndex++] = value.near;
879
- array[startingIndex++] = value.far;
880
- array[startingIndex++] = value.xOffset;
881
- array[startingIndex] = value.yOffset;
882
- return array;
883
- };
884
- PerspectiveFrustum.unpack = function(array, startingIndex, result) {
885
- Check_default.defined("array", array);
886
- startingIndex = defaultValue_default(startingIndex, 0);
887
- if (!defined_default(result)) {
888
- result = new PerspectiveFrustum();
889
- }
890
- result.fov = array[startingIndex++];
891
- result.aspectRatio = array[startingIndex++];
892
- result.near = array[startingIndex++];
893
- result.far = array[startingIndex++];
894
- result.xOffset = array[startingIndex++];
895
- result.yOffset = array[startingIndex];
896
- return result;
897
- };
898
- function update4(frustum) {
899
- if (!defined_default(frustum.fov) || !defined_default(frustum.aspectRatio) || !defined_default(frustum.near) || !defined_default(frustum.far)) {
900
- throw new DeveloperError_default(
901
- "fov, aspectRatio, near, or far parameters are not set."
902
- );
903
- }
904
- const changed = frustum.fov !== frustum._fov || frustum.aspectRatio !== frustum._aspectRatio || frustum.near !== frustum._near || frustum.far !== frustum._far || frustum.xOffset !== frustum._xOffset || frustum.yOffset !== frustum._yOffset;
905
- if (!changed) {
906
- return;
907
- }
908
- Check_default.typeOf.number.greaterThanOrEquals("fov", frustum.fov, 0);
909
- Check_default.typeOf.number.lessThan("fov", frustum.fov, Math.PI);
910
- Check_default.typeOf.number.greaterThanOrEquals(
911
- "aspectRatio",
912
- frustum.aspectRatio,
913
- 0
914
- );
915
- Check_default.typeOf.number.greaterThanOrEquals("near", frustum.near, 0);
916
- if (frustum.near > frustum.far) {
917
- throw new DeveloperError_default("near must be less than far.");
918
- }
919
- frustum._aspectRatio = frustum.aspectRatio;
920
- frustum._fov = frustum.fov;
921
- frustum._fovy = frustum.aspectRatio <= 1 ? frustum.fov : Math.atan(Math.tan(frustum.fov * 0.5) / frustum.aspectRatio) * 2;
922
- frustum._near = frustum.near;
923
- frustum._far = frustum.far;
924
- frustum._sseDenominator = 2 * Math.tan(0.5 * frustum._fovy);
925
- frustum._xOffset = frustum.xOffset;
926
- frustum._yOffset = frustum.yOffset;
927
- const f = frustum._offCenterFrustum;
928
- f.top = frustum.near * Math.tan(0.5 * frustum._fovy);
929
- f.bottom = -f.top;
930
- f.right = frustum.aspectRatio * f.top;
931
- f.left = -f.right;
932
- f.near = frustum.near;
933
- f.far = frustum.far;
934
- f.right += frustum.xOffset;
935
- f.left += frustum.xOffset;
936
- f.top += frustum.yOffset;
937
- f.bottom += frustum.yOffset;
938
- }
939
- Object.defineProperties(PerspectiveFrustum.prototype, {
940
- /**
941
- * Gets the perspective projection matrix computed from the view frustum.
942
- * If necessary, the projection matrix will be recomputed.
943
- *
944
- * @memberof PerspectiveFrustum.prototype
945
- * @type {Matrix4}
946
- * @readonly
947
- *
948
- * @see PerspectiveOffCenterFrustum#projectionMatrix.
949
- * @see PerspectiveFrustum#infiniteProjectionMatrix
950
- */
951
- projectionMatrix: {
952
- get: function() {
953
- update4(this);
954
- return this._offCenterFrustum.projectionMatrix;
955
- }
956
- },
957
- /**
958
- * The perspective projection matrix computed from the view frustum with an infinite far plane.
959
- * @memberof PerspectiveFrustum.prototype
960
- * @type {Matrix4}
961
- * @readonly
962
- *
963
- * @see PerspectiveFrustum#projectionMatrix
964
- */
965
- infiniteProjectionMatrix: {
966
- get: function() {
967
- update4(this);
968
- return this._offCenterFrustum.infiniteProjectionMatrix;
969
- }
970
- },
971
- /**
972
- * Gets the angle of the vertical field of view, in radians.
973
- * @memberof PerspectiveFrustum.prototype
974
- * @type {number|undefined}
975
- * @readonly
976
- * @default undefined
977
- */
978
- fovy: {
979
- get: function() {
980
- update4(this);
981
- return this._fovy;
982
- }
983
- },
984
- /**
985
- * @readonly
986
- * @private
987
- */
988
- sseDenominator: {
989
- get: function() {
990
- update4(this);
991
- return this._sseDenominator;
992
- }
993
- },
994
- /**
995
- * Gets the orthographic projection matrix computed from the view frustum.
996
- * @memberof PerspectiveFrustum.prototype
997
- * @type {PerspectiveOffCenterFrustum}
998
- * @readonly
999
- * @private
1000
- */
1001
- offCenterFrustum: {
1002
- get: function() {
1003
- update4(this);
1004
- return this._offCenterFrustum;
1005
- }
1006
- }
1007
- });
1008
- PerspectiveFrustum.prototype.computeCullingVolume = function(position, direction, up) {
1009
- update4(this);
1010
- return this._offCenterFrustum.computeCullingVolume(position, direction, up);
1011
- };
1012
- PerspectiveFrustum.prototype.getPixelDimensions = function(drawingBufferWidth, drawingBufferHeight, distance, pixelRatio, result) {
1013
- update4(this);
1014
- return this._offCenterFrustum.getPixelDimensions(
1015
- drawingBufferWidth,
1016
- drawingBufferHeight,
1017
- distance,
1018
- pixelRatio,
1019
- result
1020
- );
1021
- };
1022
- PerspectiveFrustum.prototype.clone = function(result) {
1023
- if (!defined_default(result)) {
1024
- result = new PerspectiveFrustum();
1025
- }
1026
- result.aspectRatio = this.aspectRatio;
1027
- result.fov = this.fov;
1028
- result.near = this.near;
1029
- result.far = this.far;
1030
- result._aspectRatio = void 0;
1031
- result._fov = void 0;
1032
- result._near = void 0;
1033
- result._far = void 0;
1034
- this._offCenterFrustum.clone(result._offCenterFrustum);
1035
- return result;
1036
- };
1037
- PerspectiveFrustum.prototype.equals = function(other) {
1038
- if (!defined_default(other) || !(other instanceof PerspectiveFrustum)) {
1039
- return false;
1040
- }
1041
- update4(this);
1042
- update4(other);
1043
- return this.fov === other.fov && this.aspectRatio === other.aspectRatio && this._offCenterFrustum.equals(other._offCenterFrustum);
1044
- };
1045
- PerspectiveFrustum.prototype.equalsEpsilon = function(other, relativeEpsilon, absoluteEpsilon) {
1046
- if (!defined_default(other) || !(other instanceof PerspectiveFrustum)) {
1047
- return false;
1048
- }
1049
- update4(this);
1050
- update4(other);
1051
- return Math_default.equalsEpsilon(
1052
- this.fov,
1053
- other.fov,
1054
- relativeEpsilon,
1055
- absoluteEpsilon
1056
- ) && Math_default.equalsEpsilon(
1057
- this.aspectRatio,
1058
- other.aspectRatio,
1059
- relativeEpsilon,
1060
- absoluteEpsilon
1061
- ) && this._offCenterFrustum.equalsEpsilon(
1062
- other._offCenterFrustum,
1063
- relativeEpsilon,
1064
- absoluteEpsilon
1065
- );
1066
- };
1067
- var PerspectiveFrustum_default = PerspectiveFrustum;
1068
-
1069
- // packages/engine/Source/Core/FrustumGeometry.js
1070
- var PERSPECTIVE = 0;
1071
- var ORTHOGRAPHIC = 1;
1072
- function FrustumGeometry(options) {
1073
- Check_default.typeOf.object("options", options);
1074
- Check_default.typeOf.object("options.frustum", options.frustum);
1075
- Check_default.typeOf.object("options.origin", options.origin);
1076
- Check_default.typeOf.object("options.orientation", options.orientation);
1077
- const frustum = options.frustum;
1078
- const orientation = options.orientation;
1079
- const origin = options.origin;
1080
- const vertexFormat = defaultValue_default(options.vertexFormat, VertexFormat_default.DEFAULT);
1081
- const drawNearPlane = defaultValue_default(options._drawNearPlane, true);
1082
- let frustumType;
1083
- let frustumPackedLength;
1084
- if (frustum instanceof PerspectiveFrustum_default) {
1085
- frustumType = PERSPECTIVE;
1086
- frustumPackedLength = PerspectiveFrustum_default.packedLength;
1087
- } else if (frustum instanceof OrthographicFrustum_default) {
1088
- frustumType = ORTHOGRAPHIC;
1089
- frustumPackedLength = OrthographicFrustum_default.packedLength;
1090
- }
1091
- this._frustumType = frustumType;
1092
- this._frustum = frustum.clone();
1093
- this._origin = Cartesian3_default.clone(origin);
1094
- this._orientation = Quaternion_default.clone(orientation);
1095
- this._drawNearPlane = drawNearPlane;
1096
- this._vertexFormat = vertexFormat;
1097
- this._workerName = "createFrustumGeometry";
1098
- this.packedLength = 2 + frustumPackedLength + Cartesian3_default.packedLength + Quaternion_default.packedLength + VertexFormat_default.packedLength;
1099
- }
1100
- FrustumGeometry.pack = function(value, array, startingIndex) {
1101
- Check_default.typeOf.object("value", value);
1102
- Check_default.defined("array", array);
1103
- startingIndex = defaultValue_default(startingIndex, 0);
1104
- const frustumType = value._frustumType;
1105
- const frustum = value._frustum;
1106
- array[startingIndex++] = frustumType;
1107
- if (frustumType === PERSPECTIVE) {
1108
- PerspectiveFrustum_default.pack(frustum, array, startingIndex);
1109
- startingIndex += PerspectiveFrustum_default.packedLength;
1110
- } else {
1111
- OrthographicFrustum_default.pack(frustum, array, startingIndex);
1112
- startingIndex += OrthographicFrustum_default.packedLength;
1113
- }
1114
- Cartesian3_default.pack(value._origin, array, startingIndex);
1115
- startingIndex += Cartesian3_default.packedLength;
1116
- Quaternion_default.pack(value._orientation, array, startingIndex);
1117
- startingIndex += Quaternion_default.packedLength;
1118
- VertexFormat_default.pack(value._vertexFormat, array, startingIndex);
1119
- startingIndex += VertexFormat_default.packedLength;
1120
- array[startingIndex] = value._drawNearPlane ? 1 : 0;
1121
- return array;
1122
- };
1123
- var scratchPackPerspective = new PerspectiveFrustum_default();
1124
- var scratchPackOrthographic = new OrthographicFrustum_default();
1125
- var scratchPackQuaternion = new Quaternion_default();
1126
- var scratchPackorigin = new Cartesian3_default();
1127
- var scratchVertexFormat = new VertexFormat_default();
1128
- FrustumGeometry.unpack = function(array, startingIndex, result) {
1129
- Check_default.defined("array", array);
1130
- startingIndex = defaultValue_default(startingIndex, 0);
1131
- const frustumType = array[startingIndex++];
1132
- let frustum;
1133
- if (frustumType === PERSPECTIVE) {
1134
- frustum = PerspectiveFrustum_default.unpack(
1135
- array,
1136
- startingIndex,
1137
- scratchPackPerspective
1138
- );
1139
- startingIndex += PerspectiveFrustum_default.packedLength;
1140
- } else {
1141
- frustum = OrthographicFrustum_default.unpack(
1142
- array,
1143
- startingIndex,
1144
- scratchPackOrthographic
1145
- );
1146
- startingIndex += OrthographicFrustum_default.packedLength;
1147
- }
1148
- const origin = Cartesian3_default.unpack(array, startingIndex, scratchPackorigin);
1149
- startingIndex += Cartesian3_default.packedLength;
1150
- const orientation = Quaternion_default.unpack(
1151
- array,
1152
- startingIndex,
1153
- scratchPackQuaternion
1154
- );
1155
- startingIndex += Quaternion_default.packedLength;
1156
- const vertexFormat = VertexFormat_default.unpack(
1157
- array,
1158
- startingIndex,
1159
- scratchVertexFormat
1160
- );
1161
- startingIndex += VertexFormat_default.packedLength;
1162
- const drawNearPlane = array[startingIndex] === 1;
1163
- if (!defined_default(result)) {
1164
- return new FrustumGeometry({
1165
- frustum,
1166
- origin,
1167
- orientation,
1168
- vertexFormat,
1169
- _drawNearPlane: drawNearPlane
1170
- });
1171
- }
1172
- const frustumResult = frustumType === result._frustumType ? result._frustum : void 0;
1173
- result._frustum = frustum.clone(frustumResult);
1174
- result._frustumType = frustumType;
1175
- result._origin = Cartesian3_default.clone(origin, result._origin);
1176
- result._orientation = Quaternion_default.clone(orientation, result._orientation);
1177
- result._vertexFormat = VertexFormat_default.clone(vertexFormat, result._vertexFormat);
1178
- result._drawNearPlane = drawNearPlane;
1179
- return result;
1180
- };
1181
- function getAttributes(offset, normals, tangents, bitangents, st, normal, tangent, bitangent) {
1182
- const stOffset = offset / 3 * 2;
1183
- for (let i = 0; i < 4; ++i) {
1184
- if (defined_default(normals)) {
1185
- normals[offset] = normal.x;
1186
- normals[offset + 1] = normal.y;
1187
- normals[offset + 2] = normal.z;
1188
- }
1189
- if (defined_default(tangents)) {
1190
- tangents[offset] = tangent.x;
1191
- tangents[offset + 1] = tangent.y;
1192
- tangents[offset + 2] = tangent.z;
1193
- }
1194
- if (defined_default(bitangents)) {
1195
- bitangents[offset] = bitangent.x;
1196
- bitangents[offset + 1] = bitangent.y;
1197
- bitangents[offset + 2] = bitangent.z;
1198
- }
1199
- offset += 3;
1200
- }
1201
- st[stOffset] = 0;
1202
- st[stOffset + 1] = 0;
1203
- st[stOffset + 2] = 1;
1204
- st[stOffset + 3] = 0;
1205
- st[stOffset + 4] = 1;
1206
- st[stOffset + 5] = 1;
1207
- st[stOffset + 6] = 0;
1208
- st[stOffset + 7] = 1;
1209
- }
1210
- var scratchRotationMatrix = new Matrix3_default();
1211
- var scratchViewMatrix = new Matrix4_default();
1212
- var scratchInverseMatrix = new Matrix4_default();
1213
- var scratchXDirection = new Cartesian3_default();
1214
- var scratchYDirection = new Cartesian3_default();
1215
- var scratchZDirection = new Cartesian3_default();
1216
- var scratchNegativeX = new Cartesian3_default();
1217
- var scratchNegativeY = new Cartesian3_default();
1218
- var scratchNegativeZ = new Cartesian3_default();
1219
- var frustumSplits = new Array(3);
1220
- var frustumCornersNDC = new Array(4);
1221
- frustumCornersNDC[0] = new Cartesian4_default(-1, -1, 1, 1);
1222
- frustumCornersNDC[1] = new Cartesian4_default(1, -1, 1, 1);
1223
- frustumCornersNDC[2] = new Cartesian4_default(1, 1, 1, 1);
1224
- frustumCornersNDC[3] = new Cartesian4_default(-1, 1, 1, 1);
1225
- var scratchFrustumCorners = new Array(4);
1226
- for (let i = 0; i < 4; ++i) {
1227
- scratchFrustumCorners[i] = new Cartesian4_default();
1228
- }
1229
- FrustumGeometry._computeNearFarPlanes = function(origin, orientation, frustumType, frustum, positions, xDirection, yDirection, zDirection) {
1230
- const rotationMatrix = Matrix3_default.fromQuaternion(
1231
- orientation,
1232
- scratchRotationMatrix
1233
- );
1234
- let x = defaultValue_default(xDirection, scratchXDirection);
1235
- let y = defaultValue_default(yDirection, scratchYDirection);
1236
- let z = defaultValue_default(zDirection, scratchZDirection);
1237
- x = Matrix3_default.getColumn(rotationMatrix, 0, x);
1238
- y = Matrix3_default.getColumn(rotationMatrix, 1, y);
1239
- z = Matrix3_default.getColumn(rotationMatrix, 2, z);
1240
- Cartesian3_default.normalize(x, x);
1241
- Cartesian3_default.normalize(y, y);
1242
- Cartesian3_default.normalize(z, z);
1243
- Cartesian3_default.negate(x, x);
1244
- const view = Matrix4_default.computeView(origin, z, y, x, scratchViewMatrix);
1245
- let inverseView;
1246
- let inverseViewProjection;
1247
- const projection = frustum.projectionMatrix;
1248
- if (frustumType === PERSPECTIVE) {
1249
- const viewProjection = Matrix4_default.multiply(
1250
- projection,
1251
- view,
1252
- scratchInverseMatrix
1253
- );
1254
- inverseViewProjection = Matrix4_default.inverse(
1255
- viewProjection,
1256
- scratchInverseMatrix
1257
- );
1258
- } else {
1259
- inverseView = Matrix4_default.inverseTransformation(view, scratchInverseMatrix);
1260
- }
1261
- if (defined_default(inverseViewProjection)) {
1262
- frustumSplits[0] = frustum.near;
1263
- frustumSplits[1] = frustum.far;
1264
- } else {
1265
- frustumSplits[0] = 0;
1266
- frustumSplits[1] = frustum.near;
1267
- frustumSplits[2] = frustum.far;
1268
- }
1269
- for (let i = 0; i < 2; ++i) {
1270
- for (let j = 0; j < 4; ++j) {
1271
- let corner = Cartesian4_default.clone(
1272
- frustumCornersNDC[j],
1273
- scratchFrustumCorners[j]
1274
- );
1275
- if (!defined_default(inverseViewProjection)) {
1276
- const offCenterFrustum = frustum.offCenterFrustum;
1277
- if (defined_default(offCenterFrustum)) {
1278
- frustum = offCenterFrustum;
1279
- }
1280
- const near = frustumSplits[i];
1281
- const far = frustumSplits[i + 1];
1282
- corner.x = (corner.x * (frustum.right - frustum.left) + frustum.left + frustum.right) * 0.5;
1283
- corner.y = (corner.y * (frustum.top - frustum.bottom) + frustum.bottom + frustum.top) * 0.5;
1284
- corner.z = (corner.z * (near - far) - near - far) * 0.5;
1285
- corner.w = 1;
1286
- Matrix4_default.multiplyByVector(inverseView, corner, corner);
1287
- } else {
1288
- corner = Matrix4_default.multiplyByVector(
1289
- inverseViewProjection,
1290
- corner,
1291
- corner
1292
- );
1293
- const w = 1 / corner.w;
1294
- Cartesian3_default.multiplyByScalar(corner, w, corner);
1295
- Cartesian3_default.subtract(corner, origin, corner);
1296
- Cartesian3_default.normalize(corner, corner);
1297
- const fac = Cartesian3_default.dot(z, corner);
1298
- Cartesian3_default.multiplyByScalar(corner, frustumSplits[i] / fac, corner);
1299
- Cartesian3_default.add(corner, origin, corner);
1300
- }
1301
- positions[12 * i + j * 3] = corner.x;
1302
- positions[12 * i + j * 3 + 1] = corner.y;
1303
- positions[12 * i + j * 3 + 2] = corner.z;
1304
- }
1305
- }
1306
- };
1307
- FrustumGeometry.createGeometry = function(frustumGeometry) {
1308
- const frustumType = frustumGeometry._frustumType;
1309
- const frustum = frustumGeometry._frustum;
1310
- const origin = frustumGeometry._origin;
1311
- const orientation = frustumGeometry._orientation;
1312
- const drawNearPlane = frustumGeometry._drawNearPlane;
1313
- const vertexFormat = frustumGeometry._vertexFormat;
1314
- const numberOfPlanes = drawNearPlane ? 6 : 5;
1315
- let positions = new Float64Array(3 * 4 * 6);
1316
- FrustumGeometry._computeNearFarPlanes(
1317
- origin,
1318
- orientation,
1319
- frustumType,
1320
- frustum,
1321
- positions
1322
- );
1323
- let offset = 3 * 4 * 2;
1324
- positions[offset] = positions[3 * 4];
1325
- positions[offset + 1] = positions[3 * 4 + 1];
1326
- positions[offset + 2] = positions[3 * 4 + 2];
1327
- positions[offset + 3] = positions[0];
1328
- positions[offset + 4] = positions[1];
1329
- positions[offset + 5] = positions[2];
1330
- positions[offset + 6] = positions[3 * 3];
1331
- positions[offset + 7] = positions[3 * 3 + 1];
1332
- positions[offset + 8] = positions[3 * 3 + 2];
1333
- positions[offset + 9] = positions[3 * 7];
1334
- positions[offset + 10] = positions[3 * 7 + 1];
1335
- positions[offset + 11] = positions[3 * 7 + 2];
1336
- offset += 3 * 4;
1337
- positions[offset] = positions[3 * 5];
1338
- positions[offset + 1] = positions[3 * 5 + 1];
1339
- positions[offset + 2] = positions[3 * 5 + 2];
1340
- positions[offset + 3] = positions[3];
1341
- positions[offset + 4] = positions[3 + 1];
1342
- positions[offset + 5] = positions[3 + 2];
1343
- positions[offset + 6] = positions[0];
1344
- positions[offset + 7] = positions[1];
1345
- positions[offset + 8] = positions[2];
1346
- positions[offset + 9] = positions[3 * 4];
1347
- positions[offset + 10] = positions[3 * 4 + 1];
1348
- positions[offset + 11] = positions[3 * 4 + 2];
1349
- offset += 3 * 4;
1350
- positions[offset] = positions[3];
1351
- positions[offset + 1] = positions[3 + 1];
1352
- positions[offset + 2] = positions[3 + 2];
1353
- positions[offset + 3] = positions[3 * 5];
1354
- positions[offset + 4] = positions[3 * 5 + 1];
1355
- positions[offset + 5] = positions[3 * 5 + 2];
1356
- positions[offset + 6] = positions[3 * 6];
1357
- positions[offset + 7] = positions[3 * 6 + 1];
1358
- positions[offset + 8] = positions[3 * 6 + 2];
1359
- positions[offset + 9] = positions[3 * 2];
1360
- positions[offset + 10] = positions[3 * 2 + 1];
1361
- positions[offset + 11] = positions[3 * 2 + 2];
1362
- offset += 3 * 4;
1363
- positions[offset] = positions[3 * 2];
1364
- positions[offset + 1] = positions[3 * 2 + 1];
1365
- positions[offset + 2] = positions[3 * 2 + 2];
1366
- positions[offset + 3] = positions[3 * 6];
1367
- positions[offset + 4] = positions[3 * 6 + 1];
1368
- positions[offset + 5] = positions[3 * 6 + 2];
1369
- positions[offset + 6] = positions[3 * 7];
1370
- positions[offset + 7] = positions[3 * 7 + 1];
1371
- positions[offset + 8] = positions[3 * 7 + 2];
1372
- positions[offset + 9] = positions[3 * 3];
1373
- positions[offset + 10] = positions[3 * 3 + 1];
1374
- positions[offset + 11] = positions[3 * 3 + 2];
1375
- if (!drawNearPlane) {
1376
- positions = positions.subarray(3 * 4);
1377
- }
1378
- const attributes = new GeometryAttributes_default({
1379
- position: new GeometryAttribute_default({
1380
- componentDatatype: ComponentDatatype_default.DOUBLE,
1381
- componentsPerAttribute: 3,
1382
- values: positions
1383
- })
1384
- });
1385
- if (defined_default(vertexFormat.normal) || defined_default(vertexFormat.tangent) || defined_default(vertexFormat.bitangent) || defined_default(vertexFormat.st)) {
1386
- const normals = defined_default(vertexFormat.normal) ? new Float32Array(3 * 4 * numberOfPlanes) : void 0;
1387
- const tangents = defined_default(vertexFormat.tangent) ? new Float32Array(3 * 4 * numberOfPlanes) : void 0;
1388
- const bitangents = defined_default(vertexFormat.bitangent) ? new Float32Array(3 * 4 * numberOfPlanes) : void 0;
1389
- const st = defined_default(vertexFormat.st) ? new Float32Array(2 * 4 * numberOfPlanes) : void 0;
1390
- const x = scratchXDirection;
1391
- const y = scratchYDirection;
1392
- const z = scratchZDirection;
1393
- const negativeX = Cartesian3_default.negate(x, scratchNegativeX);
1394
- const negativeY = Cartesian3_default.negate(y, scratchNegativeY);
1395
- const negativeZ = Cartesian3_default.negate(z, scratchNegativeZ);
1396
- offset = 0;
1397
- if (drawNearPlane) {
1398
- getAttributes(offset, normals, tangents, bitangents, st, negativeZ, x, y);
1399
- offset += 3 * 4;
1400
- }
1401
- getAttributes(offset, normals, tangents, bitangents, st, z, negativeX, y);
1402
- offset += 3 * 4;
1403
- getAttributes(
1404
- offset,
1405
- normals,
1406
- tangents,
1407
- bitangents,
1408
- st,
1409
- negativeX,
1410
- negativeZ,
1411
- y
1412
- );
1413
- offset += 3 * 4;
1414
- getAttributes(
1415
- offset,
1416
- normals,
1417
- tangents,
1418
- bitangents,
1419
- st,
1420
- negativeY,
1421
- negativeZ,
1422
- negativeX
1423
- );
1424
- offset += 3 * 4;
1425
- getAttributes(offset, normals, tangents, bitangents, st, x, z, y);
1426
- offset += 3 * 4;
1427
- getAttributes(offset, normals, tangents, bitangents, st, y, z, negativeX);
1428
- if (defined_default(normals)) {
1429
- attributes.normal = new GeometryAttribute_default({
1430
- componentDatatype: ComponentDatatype_default.FLOAT,
1431
- componentsPerAttribute: 3,
1432
- values: normals
1433
- });
1434
- }
1435
- if (defined_default(tangents)) {
1436
- attributes.tangent = new GeometryAttribute_default({
1437
- componentDatatype: ComponentDatatype_default.FLOAT,
1438
- componentsPerAttribute: 3,
1439
- values: tangents
1440
- });
1441
- }
1442
- if (defined_default(bitangents)) {
1443
- attributes.bitangent = new GeometryAttribute_default({
1444
- componentDatatype: ComponentDatatype_default.FLOAT,
1445
- componentsPerAttribute: 3,
1446
- values: bitangents
1447
- });
1448
- }
1449
- if (defined_default(st)) {
1450
- attributes.st = new GeometryAttribute_default({
1451
- componentDatatype: ComponentDatatype_default.FLOAT,
1452
- componentsPerAttribute: 2,
1453
- values: st
1454
- });
1455
- }
1456
- }
1457
- const indices = new Uint16Array(6 * numberOfPlanes);
1458
- for (let i = 0; i < numberOfPlanes; ++i) {
1459
- const indexOffset = i * 6;
1460
- const index = i * 4;
1461
- indices[indexOffset] = index;
1462
- indices[indexOffset + 1] = index + 1;
1463
- indices[indexOffset + 2] = index + 2;
1464
- indices[indexOffset + 3] = index;
1465
- indices[indexOffset + 4] = index + 2;
1466
- indices[indexOffset + 5] = index + 3;
1467
- }
1468
- return new Geometry_default({
1469
- attributes,
1470
- indices,
1471
- primitiveType: PrimitiveType_default.TRIANGLES,
1472
- boundingSphere: BoundingSphere_default.fromVertices(positions)
1473
- });
1474
- };
1475
- var FrustumGeometry_default = FrustumGeometry;
1476
-
1477
- export {
1478
- OrthographicFrustum_default,
1479
- PerspectiveFrustum_default,
1480
- FrustumGeometry_default
1481
- };