@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.
Files changed (163) hide show
  1. package/README.md +8 -8
  2. package/dist/index.js +1966 -4
  3. package/dist/pggis.min.css +1 -1
  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-F3YA3Y2Z.js → chunk-A56XVLQR.js} +2 -13
  19. package/dist/resources/Workers/chunk-AJYK4IVJ.js +26 -0
  20. package/dist/resources/Workers/{chunk-EHWHNOEX.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-4H7PY4U5.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-BBWDMCVU.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-WZDE3RYP.js +28 -0
  60. package/dist/resources/Workers/chunk-XRL4AVS5.js +26 -0
  61. package/dist/resources/Workers/combineGeometry.js +2 -44
  62. package/dist/resources/Workers/createBoxGeometry.js +2 -34
  63. package/dist/resources/Workers/createBoxOutlineGeometry.js +2 -211
  64. package/dist/resources/Workers/createCircleGeometry.js +2 -173
  65. package/dist/resources/Workers/createCircleOutlineGeometry.js +2 -123
  66. package/dist/resources/Workers/createCoplanarPolygonGeometry.js +2 -482
  67. package/dist/resources/Workers/createCoplanarPolygonOutlineGeometry.js +2 -201
  68. package/dist/resources/Workers/createCorridorGeometry.js +2 -1239
  69. package/dist/resources/Workers/createCorridorOutlineGeometry.js +2 -544
  70. package/dist/resources/Workers/createCylinderGeometry.js +2 -36
  71. package/dist/resources/Workers/createCylinderOutlineGeometry.js +2 -207
  72. package/dist/resources/Workers/createEllipseGeometry.js +2 -47
  73. package/dist/resources/Workers/createEllipseOutlineGeometry.js +2 -40
  74. package/dist/resources/Workers/createEllipsoidGeometry.js +2 -35
  75. package/dist/resources/Workers/createEllipsoidOutlineGeometry.js +2 -37
  76. package/dist/resources/Workers/createFrustumGeometry.js +2 -34
  77. package/dist/resources/Workers/createFrustumOutlineGeometry.js +2 -211
  78. package/dist/resources/Workers/createGeometry.js +2 -147
  79. package/dist/resources/Workers/createGroundPolylineGeometry.js +2 -1584
  80. package/dist/resources/Workers/createPlaneGeometry.js +2 -200
  81. package/dist/resources/Workers/createPlaneOutlineGeometry.js +2 -100
  82. package/dist/resources/Workers/createPolygonGeometry.js +2 -1387
  83. package/dist/resources/Workers/createPolygonOutlineGeometry.js +2 -519
  84. package/dist/resources/Workers/createPolylineGeometry.js +2 -472
  85. package/dist/resources/Workers/createPolylineVolumeGeometry.js +2 -355
  86. package/dist/resources/Workers/createPolylineVolumeOutlineGeometry.js +2 -253
  87. package/dist/resources/Workers/createRectangleGeometry.js +2 -1250
  88. package/dist/resources/Workers/createRectangleOutlineGeometry.js +2 -455
  89. package/dist/resources/Workers/createSimplePolylineGeometry.js +2 -376
  90. package/dist/resources/Workers/createSphereGeometry.js +2 -94
  91. package/dist/resources/Workers/createSphereOutlineGeometry.js +2 -94
  92. package/dist/resources/Workers/createTaskProcessorWorker.js +2 -8
  93. package/dist/resources/Workers/createVectorTileClampedPolylines.js +2 -468
  94. package/dist/resources/Workers/createVectorTileGeometries.js +2 -363
  95. package/dist/resources/Workers/createVectorTilePoints.js +2 -88
  96. package/dist/resources/Workers/createVectorTilePolygons.js +2 -361
  97. package/dist/resources/Workers/createVectorTilePolylines.js +2 -238
  98. package/dist/resources/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +2 -545
  99. package/dist/resources/Workers/createVerticesFromHeightmap.js +2 -2254
  100. package/dist/resources/Workers/createVerticesFromQuantizedTerrainMesh.js +2 -722
  101. package/dist/resources/Workers/createWallGeometry.js +2 -466
  102. package/dist/resources/Workers/createWallOutlineGeometry.js +2 -314
  103. package/dist/resources/Workers/decodeDraco.js +2 -345
  104. package/dist/resources/Workers/decodeGoogleEarthEnterprisePacket.js +2 -2626
  105. package/dist/resources/Workers/decodeI3S.js +2 -1320
  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 -3398
  109. package/dist/resources/Workers/transferTypedArrayTest.js +2 -17
  110. package/dist/resources/Workers/upsampleQuantizedTerrainMesh.js +2 -795
  111. package/package.json +9 -8
  112. package/dist/pggis.min.js +0 -14796
  113. package/dist/resources/ThirdParty/Workers/basis_transcoder.js +0 -21
  114. package/dist/resources/Workers/chunk-23UFSGND.js +0 -236
  115. package/dist/resources/Workers/chunk-2A75IWRS.js +0 -218
  116. package/dist/resources/Workers/chunk-2FRVPMCS.js +0 -1258
  117. package/dist/resources/Workers/chunk-2FWRMUTY.js +0 -138
  118. package/dist/resources/Workers/chunk-2UPKWTMJ.js +0 -117
  119. package/dist/resources/Workers/chunk-34FXV7D7.js +0 -73
  120. package/dist/resources/Workers/chunk-3VAZEH7M.js +0 -101
  121. package/dist/resources/Workers/chunk-4DO5W5XZ.js +0 -196
  122. package/dist/resources/Workers/chunk-5QULIR53.js +0 -501
  123. package/dist/resources/Workers/chunk-7TC63SJW.js +0 -302
  124. package/dist/resources/Workers/chunk-7ZFGPDJA.js +0 -122
  125. package/dist/resources/Workers/chunk-A5DWLWCY.js +0 -834
  126. package/dist/resources/Workers/chunk-BG4UCVXN.js +0 -73
  127. package/dist/resources/Workers/chunk-BIKA3NRA.js +0 -59
  128. package/dist/resources/Workers/chunk-BROJAZRZ.js +0 -390
  129. package/dist/resources/Workers/chunk-DDUQAJ4P.js +0 -476
  130. package/dist/resources/Workers/chunk-EERJKOAF.js +0 -305
  131. package/dist/resources/Workers/chunk-EG6PTBY2.js +0 -2716
  132. package/dist/resources/Workers/chunk-F4HFJMGM.js +0 -353
  133. package/dist/resources/Workers/chunk-FJKNFAKQ.js +0 -8219
  134. package/dist/resources/Workers/chunk-FNIRWHJB.js +0 -289
  135. package/dist/resources/Workers/chunk-FZRIVR7Y.js +0 -100
  136. package/dist/resources/Workers/chunk-G43QFN4Q.js +0 -157
  137. package/dist/resources/Workers/chunk-GATZHF3K.js +0 -1860
  138. package/dist/resources/Workers/chunk-GRC2ZTAF.js +0 -398
  139. package/dist/resources/Workers/chunk-HU6N6EXB.js +0 -767
  140. package/dist/resources/Workers/chunk-I46ZRR5W.js +0 -1052
  141. package/dist/resources/Workers/chunk-JURN7NPV.js +0 -1075
  142. package/dist/resources/Workers/chunk-KKCR2YOP.js +0 -421
  143. package/dist/resources/Workers/chunk-LPR3YNP2.js +0 -138
  144. package/dist/resources/Workers/chunk-M7ERACJJ.js +0 -511
  145. package/dist/resources/Workers/chunk-MDWEGWPA.js +0 -1007
  146. package/dist/resources/Workers/chunk-OGXZVPPM.js +0 -2365
  147. package/dist/resources/Workers/chunk-PGSJK77E.js +0 -634
  148. package/dist/resources/Workers/chunk-PPH7OFP3.js +0 -258
  149. package/dist/resources/Workers/chunk-SH5USDPI.js +0 -456
  150. package/dist/resources/Workers/chunk-SOWMRMWA.js +0 -629
  151. package/dist/resources/Workers/chunk-STW2DGFI.js +0 -58
  152. package/dist/resources/Workers/chunk-T3XIFPYR.js +0 -1477
  153. package/dist/resources/Workers/chunk-TTUZP4BO.js +0 -501
  154. package/dist/resources/Workers/chunk-UEXTBDBE.js +0 -693
  155. package/dist/resources/Workers/chunk-VOXYEYJT.js +0 -684
  156. package/dist/resources/Workers/chunk-X4356LRH.js +0 -368
  157. package/dist/resources/Workers/chunk-XGI5BXZY.js +0 -163
  158. package/dist/resources/Workers/chunk-Y2ME2IJV.js +0 -781
  159. package/dist/resources/Workers/chunk-Y5UQJLYE.js +0 -171
  160. package/dist/resources/Workers/chunk-YJEBABKH.js +0 -2977
  161. package/dist/resources/Workers/chunk-YWTJ2B4B.js +0 -77
  162. package/dist/resources/Workers/chunk-Z3TIFFGF.js +0 -430
  163. package/dist/resources/Workers/chunk-ZT7KWISZ.js +0 -102
@@ -1,1477 +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
- VertexFormat_default
28
- } from "./chunk-2FWRMUTY.js";
29
- import {
30
- Plane_default
31
- } from "./chunk-Y5UQJLYE.js";
32
- import {
33
- GeometryAttributes_default
34
- } from "./chunk-4H7PY4U5.js";
35
- import {
36
- GeometryAttribute_default,
37
- Geometry_default,
38
- PrimitiveType_default
39
- } from "./chunk-7TC63SJW.js";
40
- import {
41
- BoundingSphere_default,
42
- Intersect_default,
43
- Quaternion_default
44
- } from "./chunk-FJKNFAKQ.js";
45
- import {
46
- Cartesian4_default,
47
- Matrix4_default
48
- } from "./chunk-YJEBABKH.js";
49
- import {
50
- ComponentDatatype_default
51
- } from "./chunk-PPH7OFP3.js";
52
- import {
53
- Cartesian3_default,
54
- Matrix3_default
55
- } from "./chunk-OGXZVPPM.js";
56
- import {
57
- Math_default
58
- } from "./chunk-5QULIR53.js";
59
- import {
60
- defaultValue_default
61
- } from "./chunk-BBWDMCVU.js";
62
- import {
63
- Check_default,
64
- DeveloperError_default
65
- } from "./chunk-XGI5BXZY.js";
66
- import {
67
- defined_default
68
- } from "./chunk-YWTJ2B4B.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 t = frustum.top;
596
- const b = frustum.bottom;
597
- const r = frustum.right;
598
- const l = frustum.left;
599
- const n = frustum.near;
600
- const f = frustum.far;
601
- if (t !== frustum._top || b !== frustum._bottom || l !== frustum._left || r !== frustum._right || n !== frustum._near || f !== frustum._far) {
602
- if (frustum.near <= 0 || frustum.near > frustum.far) {
603
- throw new DeveloperError_default(
604
- "near must be greater than zero and less than far."
605
- );
606
- }
607
- frustum._left = l;
608
- frustum._right = r;
609
- frustum._top = t;
610
- frustum._bottom = b;
611
- frustum._near = n;
612
- frustum._far = f;
613
- frustum._perspectiveMatrix = Matrix4_default.computePerspectiveOffCenter(
614
- l,
615
- r,
616
- b,
617
- t,
618
- n,
619
- f,
620
- frustum._perspectiveMatrix
621
- );
622
- frustum._infinitePerspective = Matrix4_default.computeInfinitePerspectiveOffCenter(
623
- l,
624
- r,
625
- b,
626
- t,
627
- n,
628
- frustum._infinitePerspective
629
- );
630
- }
631
- }
632
- Object.defineProperties(PerspectiveOffCenterFrustum.prototype, {
633
- /**
634
- * Gets the perspective projection matrix computed from the view frustum.
635
- * @memberof PerspectiveOffCenterFrustum.prototype
636
- * @type {Matrix4}
637
- * @readonly
638
- *
639
- * @see PerspectiveOffCenterFrustum#infiniteProjectionMatrix
640
- */
641
- projectionMatrix: {
642
- get: function() {
643
- update3(this);
644
- return this._perspectiveMatrix;
645
- }
646
- },
647
- /**
648
- * Gets the perspective projection matrix computed from the view frustum with an infinite far plane.
649
- * @memberof PerspectiveOffCenterFrustum.prototype
650
- * @type {Matrix4}
651
- * @readonly
652
- *
653
- * @see PerspectiveOffCenterFrustum#projectionMatrix
654
- */
655
- infiniteProjectionMatrix: {
656
- get: function() {
657
- update3(this);
658
- return this._infinitePerspective;
659
- }
660
- }
661
- });
662
- var getPlanesRight2 = new Cartesian3_default();
663
- var getPlanesNearCenter2 = new Cartesian3_default();
664
- var getPlanesFarCenter = new Cartesian3_default();
665
- var getPlanesNormal = new Cartesian3_default();
666
- PerspectiveOffCenterFrustum.prototype.computeCullingVolume = function(position, direction, up) {
667
- if (!defined_default(position)) {
668
- throw new DeveloperError_default("position is required.");
669
- }
670
- if (!defined_default(direction)) {
671
- throw new DeveloperError_default("direction is required.");
672
- }
673
- if (!defined_default(up)) {
674
- throw new DeveloperError_default("up is required.");
675
- }
676
- const planes = this._cullingVolume.planes;
677
- const t = this.top;
678
- const b = this.bottom;
679
- const r = this.right;
680
- const l = this.left;
681
- const n = this.near;
682
- const f = this.far;
683
- const right = Cartesian3_default.cross(direction, up, getPlanesRight2);
684
- const nearCenter = getPlanesNearCenter2;
685
- Cartesian3_default.multiplyByScalar(direction, n, nearCenter);
686
- Cartesian3_default.add(position, nearCenter, nearCenter);
687
- const farCenter = getPlanesFarCenter;
688
- Cartesian3_default.multiplyByScalar(direction, f, farCenter);
689
- Cartesian3_default.add(position, farCenter, farCenter);
690
- const normal = getPlanesNormal;
691
- Cartesian3_default.multiplyByScalar(right, l, normal);
692
- Cartesian3_default.add(nearCenter, normal, normal);
693
- Cartesian3_default.subtract(normal, position, normal);
694
- Cartesian3_default.normalize(normal, normal);
695
- Cartesian3_default.cross(normal, up, normal);
696
- Cartesian3_default.normalize(normal, normal);
697
- let plane = planes[0];
698
- if (!defined_default(plane)) {
699
- plane = planes[0] = new Cartesian4_default();
700
- }
701
- plane.x = normal.x;
702
- plane.y = normal.y;
703
- plane.z = normal.z;
704
- plane.w = -Cartesian3_default.dot(normal, position);
705
- Cartesian3_default.multiplyByScalar(right, r, normal);
706
- Cartesian3_default.add(nearCenter, normal, normal);
707
- Cartesian3_default.subtract(normal, position, normal);
708
- Cartesian3_default.cross(up, normal, normal);
709
- Cartesian3_default.normalize(normal, normal);
710
- plane = planes[1];
711
- if (!defined_default(plane)) {
712
- plane = planes[1] = new Cartesian4_default();
713
- }
714
- plane.x = normal.x;
715
- plane.y = normal.y;
716
- plane.z = normal.z;
717
- plane.w = -Cartesian3_default.dot(normal, position);
718
- Cartesian3_default.multiplyByScalar(up, b, normal);
719
- Cartesian3_default.add(nearCenter, normal, normal);
720
- Cartesian3_default.subtract(normal, position, normal);
721
- Cartesian3_default.cross(right, normal, normal);
722
- Cartesian3_default.normalize(normal, normal);
723
- plane = planes[2];
724
- if (!defined_default(plane)) {
725
- plane = planes[2] = new Cartesian4_default();
726
- }
727
- plane.x = normal.x;
728
- plane.y = normal.y;
729
- plane.z = normal.z;
730
- plane.w = -Cartesian3_default.dot(normal, position);
731
- Cartesian3_default.multiplyByScalar(up, t, normal);
732
- Cartesian3_default.add(nearCenter, normal, normal);
733
- Cartesian3_default.subtract(normal, position, normal);
734
- Cartesian3_default.cross(normal, right, normal);
735
- Cartesian3_default.normalize(normal, normal);
736
- plane = planes[3];
737
- if (!defined_default(plane)) {
738
- plane = planes[3] = new Cartesian4_default();
739
- }
740
- plane.x = normal.x;
741
- plane.y = normal.y;
742
- plane.z = normal.z;
743
- plane.w = -Cartesian3_default.dot(normal, position);
744
- plane = planes[4];
745
- if (!defined_default(plane)) {
746
- plane = planes[4] = new Cartesian4_default();
747
- }
748
- plane.x = direction.x;
749
- plane.y = direction.y;
750
- plane.z = direction.z;
751
- plane.w = -Cartesian3_default.dot(direction, nearCenter);
752
- Cartesian3_default.negate(direction, normal);
753
- plane = planes[5];
754
- if (!defined_default(plane)) {
755
- plane = planes[5] = new Cartesian4_default();
756
- }
757
- plane.x = normal.x;
758
- plane.y = normal.y;
759
- plane.z = normal.z;
760
- plane.w = -Cartesian3_default.dot(normal, farCenter);
761
- return this._cullingVolume;
762
- };
763
- PerspectiveOffCenterFrustum.prototype.getPixelDimensions = function(drawingBufferWidth, drawingBufferHeight, distance, pixelRatio, result) {
764
- update3(this);
765
- if (!defined_default(drawingBufferWidth) || !defined_default(drawingBufferHeight)) {
766
- throw new DeveloperError_default(
767
- "Both drawingBufferWidth and drawingBufferHeight are required."
768
- );
769
- }
770
- if (drawingBufferWidth <= 0) {
771
- throw new DeveloperError_default("drawingBufferWidth must be greater than zero.");
772
- }
773
- if (drawingBufferHeight <= 0) {
774
- throw new DeveloperError_default("drawingBufferHeight must be greater than zero.");
775
- }
776
- if (!defined_default(distance)) {
777
- throw new DeveloperError_default("distance is required.");
778
- }
779
- if (!defined_default(pixelRatio)) {
780
- throw new DeveloperError_default("pixelRatio is required");
781
- }
782
- if (pixelRatio <= 0) {
783
- throw new DeveloperError_default("pixelRatio must be greater than zero.");
784
- }
785
- if (!defined_default(result)) {
786
- throw new DeveloperError_default("A result object is required.");
787
- }
788
- const inverseNear = 1 / this.near;
789
- let tanTheta = this.top * inverseNear;
790
- const pixelHeight = 2 * pixelRatio * distance * tanTheta / drawingBufferHeight;
791
- tanTheta = this.right * inverseNear;
792
- const pixelWidth = 2 * pixelRatio * distance * tanTheta / drawingBufferWidth;
793
- result.x = pixelWidth;
794
- result.y = pixelHeight;
795
- return result;
796
- };
797
- PerspectiveOffCenterFrustum.prototype.clone = function(result) {
798
- if (!defined_default(result)) {
799
- result = new PerspectiveOffCenterFrustum();
800
- }
801
- result.right = this.right;
802
- result.left = this.left;
803
- result.top = this.top;
804
- result.bottom = this.bottom;
805
- result.near = this.near;
806
- result.far = this.far;
807
- result._left = void 0;
808
- result._right = void 0;
809
- result._top = void 0;
810
- result._bottom = void 0;
811
- result._near = void 0;
812
- result._far = void 0;
813
- return result;
814
- };
815
- PerspectiveOffCenterFrustum.prototype.equals = function(other) {
816
- 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;
817
- };
818
- PerspectiveOffCenterFrustum.prototype.equalsEpsilon = function(other, relativeEpsilon, absoluteEpsilon) {
819
- return other === this || defined_default(other) && other instanceof PerspectiveOffCenterFrustum && Math_default.equalsEpsilon(
820
- this.right,
821
- other.right,
822
- relativeEpsilon,
823
- absoluteEpsilon
824
- ) && Math_default.equalsEpsilon(
825
- this.left,
826
- other.left,
827
- relativeEpsilon,
828
- absoluteEpsilon
829
- ) && Math_default.equalsEpsilon(
830
- this.top,
831
- other.top,
832
- relativeEpsilon,
833
- absoluteEpsilon
834
- ) && Math_default.equalsEpsilon(
835
- this.bottom,
836
- other.bottom,
837
- relativeEpsilon,
838
- absoluteEpsilon
839
- ) && Math_default.equalsEpsilon(
840
- this.near,
841
- other.near,
842
- relativeEpsilon,
843
- absoluteEpsilon
844
- ) && Math_default.equalsEpsilon(
845
- this.far,
846
- other.far,
847
- relativeEpsilon,
848
- absoluteEpsilon
849
- );
850
- };
851
- var PerspectiveOffCenterFrustum_default = PerspectiveOffCenterFrustum;
852
-
853
- // packages/engine/Source/Core/PerspectiveFrustum.js
854
- function PerspectiveFrustum(options) {
855
- options = defaultValue_default(options, defaultValue_default.EMPTY_OBJECT);
856
- this._offCenterFrustum = new PerspectiveOffCenterFrustum_default();
857
- this.fov = options.fov;
858
- this._fov = void 0;
859
- this._fovy = void 0;
860
- this._sseDenominator = void 0;
861
- this.aspectRatio = options.aspectRatio;
862
- this._aspectRatio = void 0;
863
- this.near = defaultValue_default(options.near, 1);
864
- this._near = this.near;
865
- this.far = defaultValue_default(options.far, 5e8);
866
- this._far = this.far;
867
- this.xOffset = defaultValue_default(options.xOffset, 0);
868
- this._xOffset = this.xOffset;
869
- this.yOffset = defaultValue_default(options.yOffset, 0);
870
- this._yOffset = this.yOffset;
871
- }
872
- PerspectiveFrustum.packedLength = 6;
873
- PerspectiveFrustum.pack = function(value, array, startingIndex) {
874
- Check_default.typeOf.object("value", value);
875
- Check_default.defined("array", array);
876
- startingIndex = defaultValue_default(startingIndex, 0);
877
- array[startingIndex++] = value.fov;
878
- array[startingIndex++] = value.aspectRatio;
879
- array[startingIndex++] = value.near;
880
- array[startingIndex++] = value.far;
881
- array[startingIndex++] = value.xOffset;
882
- array[startingIndex] = value.yOffset;
883
- return array;
884
- };
885
- PerspectiveFrustum.unpack = function(array, startingIndex, result) {
886
- Check_default.defined("array", array);
887
- startingIndex = defaultValue_default(startingIndex, 0);
888
- if (!defined_default(result)) {
889
- result = new PerspectiveFrustum();
890
- }
891
- result.fov = array[startingIndex++];
892
- result.aspectRatio = array[startingIndex++];
893
- result.near = array[startingIndex++];
894
- result.far = array[startingIndex++];
895
- result.xOffset = array[startingIndex++];
896
- result.yOffset = array[startingIndex];
897
- return result;
898
- };
899
- function update4(frustum) {
900
- if (!defined_default(frustum.fov) || !defined_default(frustum.aspectRatio) || !defined_default(frustum.near) || !defined_default(frustum.far)) {
901
- throw new DeveloperError_default(
902
- "fov, aspectRatio, near, or far parameters are not set."
903
- );
904
- }
905
- const f = frustum._offCenterFrustum;
906
- if (frustum.fov !== frustum._fov || frustum.aspectRatio !== frustum._aspectRatio || frustum.near !== frustum._near || frustum.far !== frustum._far || frustum.xOffset !== frustum._xOffset || frustum.yOffset !== frustum._yOffset) {
907
- if (frustum.fov < 0 || frustum.fov >= Math.PI) {
908
- throw new DeveloperError_default("fov must be in the range [0, PI).");
909
- }
910
- if (frustum.aspectRatio < 0) {
911
- throw new DeveloperError_default("aspectRatio must be positive.");
912
- }
913
- if (frustum.near < 0 || frustum.near > frustum.far) {
914
- throw new DeveloperError_default(
915
- "near must be greater than zero and less than far."
916
- );
917
- }
918
- frustum._aspectRatio = frustum.aspectRatio;
919
- frustum._fov = frustum.fov;
920
- frustum._fovy = frustum.aspectRatio <= 1 ? frustum.fov : Math.atan(Math.tan(frustum.fov * 0.5) / frustum.aspectRatio) * 2;
921
- frustum._near = frustum.near;
922
- frustum._far = frustum.far;
923
- frustum._sseDenominator = 2 * Math.tan(0.5 * frustum._fovy);
924
- frustum._xOffset = frustum.xOffset;
925
- frustum._yOffset = frustum.yOffset;
926
- f.top = frustum.near * Math.tan(0.5 * frustum._fovy);
927
- f.bottom = -f.top;
928
- f.right = frustum.aspectRatio * f.top;
929
- f.left = -f.right;
930
- f.near = frustum.near;
931
- f.far = frustum.far;
932
- f.right += frustum.xOffset;
933
- f.left += frustum.xOffset;
934
- f.top += frustum.yOffset;
935
- f.bottom += frustum.yOffset;
936
- }
937
- }
938
- Object.defineProperties(PerspectiveFrustum.prototype, {
939
- /**
940
- * Gets the perspective projection matrix computed from the view frustum.
941
- * @memberof PerspectiveFrustum.prototype
942
- * @type {Matrix4}
943
- * @readonly
944
- *
945
- * @see PerspectiveFrustum#infiniteProjectionMatrix
946
- */
947
- projectionMatrix: {
948
- get: function() {
949
- update4(this);
950
- return this._offCenterFrustum.projectionMatrix;
951
- }
952
- },
953
- /**
954
- * The perspective projection matrix computed from the view frustum with an infinite far plane.
955
- * @memberof PerspectiveFrustum.prototype
956
- * @type {Matrix4}
957
- * @readonly
958
- *
959
- * @see PerspectiveFrustum#projectionMatrix
960
- */
961
- infiniteProjectionMatrix: {
962
- get: function() {
963
- update4(this);
964
- return this._offCenterFrustum.infiniteProjectionMatrix;
965
- }
966
- },
967
- /**
968
- * Gets the angle of the vertical field of view, in radians.
969
- * @memberof PerspectiveFrustum.prototype
970
- * @type {number}
971
- * @readonly
972
- * @default undefined
973
- */
974
- fovy: {
975
- get: function() {
976
- update4(this);
977
- return this._fovy;
978
- }
979
- },
980
- /**
981
- * @readonly
982
- * @private
983
- */
984
- sseDenominator: {
985
- get: function() {
986
- update4(this);
987
- return this._sseDenominator;
988
- }
989
- },
990
- /**
991
- * Gets the orthographic projection matrix computed from the view frustum.
992
- * @memberof PerspectiveFrustum.prototype
993
- * @type {PerspectiveOffCenterFrustum}
994
- * @readonly
995
- * @private
996
- */
997
- offCenterFrustum: {
998
- get: function() {
999
- update4(this);
1000
- return this._offCenterFrustum;
1001
- }
1002
- }
1003
- });
1004
- PerspectiveFrustum.prototype.computeCullingVolume = function(position, direction, up) {
1005
- update4(this);
1006
- return this._offCenterFrustum.computeCullingVolume(position, direction, up);
1007
- };
1008
- PerspectiveFrustum.prototype.getPixelDimensions = function(drawingBufferWidth, drawingBufferHeight, distance, pixelRatio, result) {
1009
- update4(this);
1010
- return this._offCenterFrustum.getPixelDimensions(
1011
- drawingBufferWidth,
1012
- drawingBufferHeight,
1013
- distance,
1014
- pixelRatio,
1015
- result
1016
- );
1017
- };
1018
- PerspectiveFrustum.prototype.clone = function(result) {
1019
- if (!defined_default(result)) {
1020
- result = new PerspectiveFrustum();
1021
- }
1022
- result.aspectRatio = this.aspectRatio;
1023
- result.fov = this.fov;
1024
- result.near = this.near;
1025
- result.far = this.far;
1026
- result._aspectRatio = void 0;
1027
- result._fov = void 0;
1028
- result._near = void 0;
1029
- result._far = void 0;
1030
- this._offCenterFrustum.clone(result._offCenterFrustum);
1031
- return result;
1032
- };
1033
- PerspectiveFrustum.prototype.equals = function(other) {
1034
- if (!defined_default(other) || !(other instanceof PerspectiveFrustum)) {
1035
- return false;
1036
- }
1037
- update4(this);
1038
- update4(other);
1039
- return this.fov === other.fov && this.aspectRatio === other.aspectRatio && this._offCenterFrustum.equals(other._offCenterFrustum);
1040
- };
1041
- PerspectiveFrustum.prototype.equalsEpsilon = function(other, relativeEpsilon, absoluteEpsilon) {
1042
- if (!defined_default(other) || !(other instanceof PerspectiveFrustum)) {
1043
- return false;
1044
- }
1045
- update4(this);
1046
- update4(other);
1047
- return Math_default.equalsEpsilon(
1048
- this.fov,
1049
- other.fov,
1050
- relativeEpsilon,
1051
- absoluteEpsilon
1052
- ) && Math_default.equalsEpsilon(
1053
- this.aspectRatio,
1054
- other.aspectRatio,
1055
- relativeEpsilon,
1056
- absoluteEpsilon
1057
- ) && this._offCenterFrustum.equalsEpsilon(
1058
- other._offCenterFrustum,
1059
- relativeEpsilon,
1060
- absoluteEpsilon
1061
- );
1062
- };
1063
- var PerspectiveFrustum_default = PerspectiveFrustum;
1064
-
1065
- // packages/engine/Source/Core/FrustumGeometry.js
1066
- var PERSPECTIVE = 0;
1067
- var ORTHOGRAPHIC = 1;
1068
- function FrustumGeometry(options) {
1069
- Check_default.typeOf.object("options", options);
1070
- Check_default.typeOf.object("options.frustum", options.frustum);
1071
- Check_default.typeOf.object("options.origin", options.origin);
1072
- Check_default.typeOf.object("options.orientation", options.orientation);
1073
- const frustum = options.frustum;
1074
- const orientation = options.orientation;
1075
- const origin = options.origin;
1076
- const vertexFormat = defaultValue_default(options.vertexFormat, VertexFormat_default.DEFAULT);
1077
- const drawNearPlane = defaultValue_default(options._drawNearPlane, true);
1078
- let frustumType;
1079
- let frustumPackedLength;
1080
- if (frustum instanceof PerspectiveFrustum_default) {
1081
- frustumType = PERSPECTIVE;
1082
- frustumPackedLength = PerspectiveFrustum_default.packedLength;
1083
- } else if (frustum instanceof OrthographicFrustum_default) {
1084
- frustumType = ORTHOGRAPHIC;
1085
- frustumPackedLength = OrthographicFrustum_default.packedLength;
1086
- }
1087
- this._frustumType = frustumType;
1088
- this._frustum = frustum.clone();
1089
- this._origin = Cartesian3_default.clone(origin);
1090
- this._orientation = Quaternion_default.clone(orientation);
1091
- this._drawNearPlane = drawNearPlane;
1092
- this._vertexFormat = vertexFormat;
1093
- this._workerName = "createFrustumGeometry";
1094
- this.packedLength = 2 + frustumPackedLength + Cartesian3_default.packedLength + Quaternion_default.packedLength + VertexFormat_default.packedLength;
1095
- }
1096
- FrustumGeometry.pack = function(value, array, startingIndex) {
1097
- Check_default.typeOf.object("value", value);
1098
- Check_default.defined("array", array);
1099
- startingIndex = defaultValue_default(startingIndex, 0);
1100
- const frustumType = value._frustumType;
1101
- const frustum = value._frustum;
1102
- array[startingIndex++] = frustumType;
1103
- if (frustumType === PERSPECTIVE) {
1104
- PerspectiveFrustum_default.pack(frustum, array, startingIndex);
1105
- startingIndex += PerspectiveFrustum_default.packedLength;
1106
- } else {
1107
- OrthographicFrustum_default.pack(frustum, array, startingIndex);
1108
- startingIndex += OrthographicFrustum_default.packedLength;
1109
- }
1110
- Cartesian3_default.pack(value._origin, array, startingIndex);
1111
- startingIndex += Cartesian3_default.packedLength;
1112
- Quaternion_default.pack(value._orientation, array, startingIndex);
1113
- startingIndex += Quaternion_default.packedLength;
1114
- VertexFormat_default.pack(value._vertexFormat, array, startingIndex);
1115
- startingIndex += VertexFormat_default.packedLength;
1116
- array[startingIndex] = value._drawNearPlane ? 1 : 0;
1117
- return array;
1118
- };
1119
- var scratchPackPerspective = new PerspectiveFrustum_default();
1120
- var scratchPackOrthographic = new OrthographicFrustum_default();
1121
- var scratchPackQuaternion = new Quaternion_default();
1122
- var scratchPackorigin = new Cartesian3_default();
1123
- var scratchVertexFormat = new VertexFormat_default();
1124
- FrustumGeometry.unpack = function(array, startingIndex, result) {
1125
- Check_default.defined("array", array);
1126
- startingIndex = defaultValue_default(startingIndex, 0);
1127
- const frustumType = array[startingIndex++];
1128
- let frustum;
1129
- if (frustumType === PERSPECTIVE) {
1130
- frustum = PerspectiveFrustum_default.unpack(
1131
- array,
1132
- startingIndex,
1133
- scratchPackPerspective
1134
- );
1135
- startingIndex += PerspectiveFrustum_default.packedLength;
1136
- } else {
1137
- frustum = OrthographicFrustum_default.unpack(
1138
- array,
1139
- startingIndex,
1140
- scratchPackOrthographic
1141
- );
1142
- startingIndex += OrthographicFrustum_default.packedLength;
1143
- }
1144
- const origin = Cartesian3_default.unpack(array, startingIndex, scratchPackorigin);
1145
- startingIndex += Cartesian3_default.packedLength;
1146
- const orientation = Quaternion_default.unpack(
1147
- array,
1148
- startingIndex,
1149
- scratchPackQuaternion
1150
- );
1151
- startingIndex += Quaternion_default.packedLength;
1152
- const vertexFormat = VertexFormat_default.unpack(
1153
- array,
1154
- startingIndex,
1155
- scratchVertexFormat
1156
- );
1157
- startingIndex += VertexFormat_default.packedLength;
1158
- const drawNearPlane = array[startingIndex] === 1;
1159
- if (!defined_default(result)) {
1160
- return new FrustumGeometry({
1161
- frustum,
1162
- origin,
1163
- orientation,
1164
- vertexFormat,
1165
- _drawNearPlane: drawNearPlane
1166
- });
1167
- }
1168
- const frustumResult = frustumType === result._frustumType ? result._frustum : void 0;
1169
- result._frustum = frustum.clone(frustumResult);
1170
- result._frustumType = frustumType;
1171
- result._origin = Cartesian3_default.clone(origin, result._origin);
1172
- result._orientation = Quaternion_default.clone(orientation, result._orientation);
1173
- result._vertexFormat = VertexFormat_default.clone(vertexFormat, result._vertexFormat);
1174
- result._drawNearPlane = drawNearPlane;
1175
- return result;
1176
- };
1177
- function getAttributes(offset, normals, tangents, bitangents, st, normal, tangent, bitangent) {
1178
- const stOffset = offset / 3 * 2;
1179
- for (let i = 0; i < 4; ++i) {
1180
- if (defined_default(normals)) {
1181
- normals[offset] = normal.x;
1182
- normals[offset + 1] = normal.y;
1183
- normals[offset + 2] = normal.z;
1184
- }
1185
- if (defined_default(tangents)) {
1186
- tangents[offset] = tangent.x;
1187
- tangents[offset + 1] = tangent.y;
1188
- tangents[offset + 2] = tangent.z;
1189
- }
1190
- if (defined_default(bitangents)) {
1191
- bitangents[offset] = bitangent.x;
1192
- bitangents[offset + 1] = bitangent.y;
1193
- bitangents[offset + 2] = bitangent.z;
1194
- }
1195
- offset += 3;
1196
- }
1197
- st[stOffset] = 0;
1198
- st[stOffset + 1] = 0;
1199
- st[stOffset + 2] = 1;
1200
- st[stOffset + 3] = 0;
1201
- st[stOffset + 4] = 1;
1202
- st[stOffset + 5] = 1;
1203
- st[stOffset + 6] = 0;
1204
- st[stOffset + 7] = 1;
1205
- }
1206
- var scratchRotationMatrix = new Matrix3_default();
1207
- var scratchViewMatrix = new Matrix4_default();
1208
- var scratchInverseMatrix = new Matrix4_default();
1209
- var scratchXDirection = new Cartesian3_default();
1210
- var scratchYDirection = new Cartesian3_default();
1211
- var scratchZDirection = new Cartesian3_default();
1212
- var scratchNegativeX = new Cartesian3_default();
1213
- var scratchNegativeY = new Cartesian3_default();
1214
- var scratchNegativeZ = new Cartesian3_default();
1215
- var frustumSplits = new Array(3);
1216
- var frustumCornersNDC = new Array(4);
1217
- frustumCornersNDC[0] = new Cartesian4_default(-1, -1, 1, 1);
1218
- frustumCornersNDC[1] = new Cartesian4_default(1, -1, 1, 1);
1219
- frustumCornersNDC[2] = new Cartesian4_default(1, 1, 1, 1);
1220
- frustumCornersNDC[3] = new Cartesian4_default(-1, 1, 1, 1);
1221
- var scratchFrustumCorners = new Array(4);
1222
- for (let i = 0; i < 4; ++i) {
1223
- scratchFrustumCorners[i] = new Cartesian4_default();
1224
- }
1225
- FrustumGeometry._computeNearFarPlanes = function(origin, orientation, frustumType, frustum, positions, xDirection, yDirection, zDirection) {
1226
- const rotationMatrix = Matrix3_default.fromQuaternion(
1227
- orientation,
1228
- scratchRotationMatrix
1229
- );
1230
- let x = defaultValue_default(xDirection, scratchXDirection);
1231
- let y = defaultValue_default(yDirection, scratchYDirection);
1232
- let z = defaultValue_default(zDirection, scratchZDirection);
1233
- x = Matrix3_default.getColumn(rotationMatrix, 0, x);
1234
- y = Matrix3_default.getColumn(rotationMatrix, 1, y);
1235
- z = Matrix3_default.getColumn(rotationMatrix, 2, z);
1236
- Cartesian3_default.normalize(x, x);
1237
- Cartesian3_default.normalize(y, y);
1238
- Cartesian3_default.normalize(z, z);
1239
- Cartesian3_default.negate(x, x);
1240
- const view = Matrix4_default.computeView(origin, z, y, x, scratchViewMatrix);
1241
- let inverseView;
1242
- let inverseViewProjection;
1243
- const projection = frustum.projectionMatrix;
1244
- if (frustumType === PERSPECTIVE) {
1245
- const viewProjection = Matrix4_default.multiply(
1246
- projection,
1247
- view,
1248
- scratchInverseMatrix
1249
- );
1250
- inverseViewProjection = Matrix4_default.inverse(
1251
- viewProjection,
1252
- scratchInverseMatrix
1253
- );
1254
- } else {
1255
- inverseView = Matrix4_default.inverseTransformation(view, scratchInverseMatrix);
1256
- }
1257
- if (defined_default(inverseViewProjection)) {
1258
- frustumSplits[0] = frustum.near;
1259
- frustumSplits[1] = frustum.far;
1260
- } else {
1261
- frustumSplits[0] = 0;
1262
- frustumSplits[1] = frustum.near;
1263
- frustumSplits[2] = frustum.far;
1264
- }
1265
- for (let i = 0; i < 2; ++i) {
1266
- for (let j = 0; j < 4; ++j) {
1267
- let corner = Cartesian4_default.clone(
1268
- frustumCornersNDC[j],
1269
- scratchFrustumCorners[j]
1270
- );
1271
- if (!defined_default(inverseViewProjection)) {
1272
- const offCenterFrustum = frustum.offCenterFrustum;
1273
- if (defined_default(offCenterFrustum)) {
1274
- frustum = offCenterFrustum;
1275
- }
1276
- const near = frustumSplits[i];
1277
- const far = frustumSplits[i + 1];
1278
- corner.x = (corner.x * (frustum.right - frustum.left) + frustum.left + frustum.right) * 0.5;
1279
- corner.y = (corner.y * (frustum.top - frustum.bottom) + frustum.bottom + frustum.top) * 0.5;
1280
- corner.z = (corner.z * (near - far) - near - far) * 0.5;
1281
- corner.w = 1;
1282
- Matrix4_default.multiplyByVector(inverseView, corner, corner);
1283
- } else {
1284
- corner = Matrix4_default.multiplyByVector(
1285
- inverseViewProjection,
1286
- corner,
1287
- corner
1288
- );
1289
- const w = 1 / corner.w;
1290
- Cartesian3_default.multiplyByScalar(corner, w, corner);
1291
- Cartesian3_default.subtract(corner, origin, corner);
1292
- Cartesian3_default.normalize(corner, corner);
1293
- const fac = Cartesian3_default.dot(z, corner);
1294
- Cartesian3_default.multiplyByScalar(corner, frustumSplits[i] / fac, corner);
1295
- Cartesian3_default.add(corner, origin, corner);
1296
- }
1297
- positions[12 * i + j * 3] = corner.x;
1298
- positions[12 * i + j * 3 + 1] = corner.y;
1299
- positions[12 * i + j * 3 + 2] = corner.z;
1300
- }
1301
- }
1302
- };
1303
- FrustumGeometry.createGeometry = function(frustumGeometry) {
1304
- const frustumType = frustumGeometry._frustumType;
1305
- const frustum = frustumGeometry._frustum;
1306
- const origin = frustumGeometry._origin;
1307
- const orientation = frustumGeometry._orientation;
1308
- const drawNearPlane = frustumGeometry._drawNearPlane;
1309
- const vertexFormat = frustumGeometry._vertexFormat;
1310
- const numberOfPlanes = drawNearPlane ? 6 : 5;
1311
- let positions = new Float64Array(3 * 4 * 6);
1312
- FrustumGeometry._computeNearFarPlanes(
1313
- origin,
1314
- orientation,
1315
- frustumType,
1316
- frustum,
1317
- positions
1318
- );
1319
- let offset = 3 * 4 * 2;
1320
- positions[offset] = positions[3 * 4];
1321
- positions[offset + 1] = positions[3 * 4 + 1];
1322
- positions[offset + 2] = positions[3 * 4 + 2];
1323
- positions[offset + 3] = positions[0];
1324
- positions[offset + 4] = positions[1];
1325
- positions[offset + 5] = positions[2];
1326
- positions[offset + 6] = positions[3 * 3];
1327
- positions[offset + 7] = positions[3 * 3 + 1];
1328
- positions[offset + 8] = positions[3 * 3 + 2];
1329
- positions[offset + 9] = positions[3 * 7];
1330
- positions[offset + 10] = positions[3 * 7 + 1];
1331
- positions[offset + 11] = positions[3 * 7 + 2];
1332
- offset += 3 * 4;
1333
- positions[offset] = positions[3 * 5];
1334
- positions[offset + 1] = positions[3 * 5 + 1];
1335
- positions[offset + 2] = positions[3 * 5 + 2];
1336
- positions[offset + 3] = positions[3];
1337
- positions[offset + 4] = positions[3 + 1];
1338
- positions[offset + 5] = positions[3 + 2];
1339
- positions[offset + 6] = positions[0];
1340
- positions[offset + 7] = positions[1];
1341
- positions[offset + 8] = positions[2];
1342
- positions[offset + 9] = positions[3 * 4];
1343
- positions[offset + 10] = positions[3 * 4 + 1];
1344
- positions[offset + 11] = positions[3 * 4 + 2];
1345
- offset += 3 * 4;
1346
- positions[offset] = positions[3];
1347
- positions[offset + 1] = positions[3 + 1];
1348
- positions[offset + 2] = positions[3 + 2];
1349
- positions[offset + 3] = positions[3 * 5];
1350
- positions[offset + 4] = positions[3 * 5 + 1];
1351
- positions[offset + 5] = positions[3 * 5 + 2];
1352
- positions[offset + 6] = positions[3 * 6];
1353
- positions[offset + 7] = positions[3 * 6 + 1];
1354
- positions[offset + 8] = positions[3 * 6 + 2];
1355
- positions[offset + 9] = positions[3 * 2];
1356
- positions[offset + 10] = positions[3 * 2 + 1];
1357
- positions[offset + 11] = positions[3 * 2 + 2];
1358
- offset += 3 * 4;
1359
- positions[offset] = positions[3 * 2];
1360
- positions[offset + 1] = positions[3 * 2 + 1];
1361
- positions[offset + 2] = positions[3 * 2 + 2];
1362
- positions[offset + 3] = positions[3 * 6];
1363
- positions[offset + 4] = positions[3 * 6 + 1];
1364
- positions[offset + 5] = positions[3 * 6 + 2];
1365
- positions[offset + 6] = positions[3 * 7];
1366
- positions[offset + 7] = positions[3 * 7 + 1];
1367
- positions[offset + 8] = positions[3 * 7 + 2];
1368
- positions[offset + 9] = positions[3 * 3];
1369
- positions[offset + 10] = positions[3 * 3 + 1];
1370
- positions[offset + 11] = positions[3 * 3 + 2];
1371
- if (!drawNearPlane) {
1372
- positions = positions.subarray(3 * 4);
1373
- }
1374
- const attributes = new GeometryAttributes_default({
1375
- position: new GeometryAttribute_default({
1376
- componentDatatype: ComponentDatatype_default.DOUBLE,
1377
- componentsPerAttribute: 3,
1378
- values: positions
1379
- })
1380
- });
1381
- if (defined_default(vertexFormat.normal) || defined_default(vertexFormat.tangent) || defined_default(vertexFormat.bitangent) || defined_default(vertexFormat.st)) {
1382
- const normals = defined_default(vertexFormat.normal) ? new Float32Array(3 * 4 * numberOfPlanes) : void 0;
1383
- const tangents = defined_default(vertexFormat.tangent) ? new Float32Array(3 * 4 * numberOfPlanes) : void 0;
1384
- const bitangents = defined_default(vertexFormat.bitangent) ? new Float32Array(3 * 4 * numberOfPlanes) : void 0;
1385
- const st = defined_default(vertexFormat.st) ? new Float32Array(2 * 4 * numberOfPlanes) : void 0;
1386
- const x = scratchXDirection;
1387
- const y = scratchYDirection;
1388
- const z = scratchZDirection;
1389
- const negativeX = Cartesian3_default.negate(x, scratchNegativeX);
1390
- const negativeY = Cartesian3_default.negate(y, scratchNegativeY);
1391
- const negativeZ = Cartesian3_default.negate(z, scratchNegativeZ);
1392
- offset = 0;
1393
- if (drawNearPlane) {
1394
- getAttributes(offset, normals, tangents, bitangents, st, negativeZ, x, y);
1395
- offset += 3 * 4;
1396
- }
1397
- getAttributes(offset, normals, tangents, bitangents, st, z, negativeX, y);
1398
- offset += 3 * 4;
1399
- getAttributes(
1400
- offset,
1401
- normals,
1402
- tangents,
1403
- bitangents,
1404
- st,
1405
- negativeX,
1406
- negativeZ,
1407
- y
1408
- );
1409
- offset += 3 * 4;
1410
- getAttributes(
1411
- offset,
1412
- normals,
1413
- tangents,
1414
- bitangents,
1415
- st,
1416
- negativeY,
1417
- negativeZ,
1418
- negativeX
1419
- );
1420
- offset += 3 * 4;
1421
- getAttributes(offset, normals, tangents, bitangents, st, x, z, y);
1422
- offset += 3 * 4;
1423
- getAttributes(offset, normals, tangents, bitangents, st, y, z, negativeX);
1424
- if (defined_default(normals)) {
1425
- attributes.normal = new GeometryAttribute_default({
1426
- componentDatatype: ComponentDatatype_default.FLOAT,
1427
- componentsPerAttribute: 3,
1428
- values: normals
1429
- });
1430
- }
1431
- if (defined_default(tangents)) {
1432
- attributes.tangent = new GeometryAttribute_default({
1433
- componentDatatype: ComponentDatatype_default.FLOAT,
1434
- componentsPerAttribute: 3,
1435
- values: tangents
1436
- });
1437
- }
1438
- if (defined_default(bitangents)) {
1439
- attributes.bitangent = new GeometryAttribute_default({
1440
- componentDatatype: ComponentDatatype_default.FLOAT,
1441
- componentsPerAttribute: 3,
1442
- values: bitangents
1443
- });
1444
- }
1445
- if (defined_default(st)) {
1446
- attributes.st = new GeometryAttribute_default({
1447
- componentDatatype: ComponentDatatype_default.FLOAT,
1448
- componentsPerAttribute: 2,
1449
- values: st
1450
- });
1451
- }
1452
- }
1453
- const indices = new Uint16Array(6 * numberOfPlanes);
1454
- for (let i = 0; i < numberOfPlanes; ++i) {
1455
- const indexOffset = i * 6;
1456
- const index = i * 4;
1457
- indices[indexOffset] = index;
1458
- indices[indexOffset + 1] = index + 1;
1459
- indices[indexOffset + 2] = index + 2;
1460
- indices[indexOffset + 3] = index;
1461
- indices[indexOffset + 4] = index + 2;
1462
- indices[indexOffset + 5] = index + 3;
1463
- }
1464
- return new Geometry_default({
1465
- attributes,
1466
- indices,
1467
- primitiveType: PrimitiveType_default.TRIANGLES,
1468
- boundingSphere: BoundingSphere_default.fromVertices(positions)
1469
- });
1470
- };
1471
- var FrustumGeometry_default = FrustumGeometry;
1472
-
1473
- export {
1474
- OrthographicFrustum_default,
1475
- PerspectiveFrustum_default,
1476
- FrustumGeometry_default
1477
- };