@cesium/engine 26.1.0 → 26.2.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 (384) hide show
  1. package/Build/ThirdParty/Workers/zip-web-worker.js +586 -480
  2. package/Build/Workers/chunk-27FWRTJI.js +454 -0
  3. package/Build/Workers/chunk-2H5264K7.js +1284 -0
  4. package/Build/Workers/chunk-2H73KDBM.js +511 -0
  5. package/Build/Workers/chunk-2RGJPWQX.js +1284 -0
  6. package/Build/Workers/chunk-2Z4ZLVOD.js +352 -0
  7. package/Build/Workers/chunk-2ZKH2QZB.js +387 -0
  8. package/Build/Workers/chunk-36NI5E6W.js +3820 -0
  9. package/Build/Workers/chunk-37SW7SYS.js +778 -0
  10. package/Build/Workers/chunk-3GHVJ3SO.js +455 -0
  11. package/Build/Workers/chunk-3LB4UVPU.js +387 -0
  12. package/Build/Workers/chunk-3PONLKEL.js +778 -0
  13. package/Build/Workers/chunk-3PSS3T43.js +102 -0
  14. package/Build/Workers/chunk-3QR662HH.js +3820 -0
  15. package/Build/Workers/chunk-3SX2WYSO.js +973 -0
  16. package/Build/Workers/chunk-3UDN6LYX.js +476 -0
  17. package/Build/Workers/chunk-47MCBSXI.js +9237 -0
  18. package/Build/Workers/chunk-4E626OCE.js +1067 -0
  19. package/Build/Workers/chunk-4NW2MJKH.js +455 -0
  20. package/Build/Workers/chunk-52YK5BSN.js +198 -0
  21. package/Build/Workers/chunk-5RNAQZK6.js +9234 -0
  22. package/Build/Workers/chunk-5YPQBFRD.js +519 -0
  23. package/Build/Workers/chunk-6FHT43QR.js +140 -0
  24. package/Build/Workers/chunk-6FZDPMTO.js +455 -0
  25. package/Build/Workers/chunk-6R5X2GUA.js +1284 -0
  26. package/Build/Workers/chunk-7A2OGDHT.js +305 -0
  27. package/Build/Workers/chunk-7CGEQUM2.js +305 -0
  28. package/Build/Workers/chunk-7I325HV6.js +1344 -0
  29. package/Build/Workers/chunk-7MM3N2VE.js +1067 -0
  30. package/Build/Workers/chunk-7TKLTCZW.js +219 -0
  31. package/Build/Workers/chunk-7UUKBDH6.js +1054 -0
  32. package/Build/Workers/chunk-7W6DUHAB.js +693 -0
  33. package/Build/Workers/chunk-7XM5JK5F.js +162 -0
  34. package/Build/Workers/chunk-7YG3ND3P.js +454 -0
  35. package/Build/Workers/chunk-A62YI6S6.js +305 -0
  36. package/Build/Workers/chunk-A7TTWVTF.js +2719 -0
  37. package/Build/Workers/chunk-ACTVJHSP.js +519 -0
  38. package/Build/Workers/chunk-ADX3CBKD.js +9234 -0
  39. package/Build/Workers/chunk-AF7DTMJ7.js +398 -0
  40. package/Build/Workers/chunk-AJSFRY4U.js +1344 -0
  41. package/Build/Workers/chunk-ARZICEEP.js +301 -0
  42. package/Build/Workers/chunk-B3QHNA4A.js +147 -0
  43. package/Build/Workers/chunk-BKPQFCXH.js +511 -0
  44. package/Build/Workers/chunk-BSPCI2LO.js +959 -0
  45. package/Build/Workers/chunk-BUJWSX5S.js +301 -0
  46. package/Build/Workers/chunk-C7QDUNI3.js +138 -0
  47. package/Build/Workers/chunk-CIV5DJOQ.js +778 -0
  48. package/Build/Workers/chunk-CQNFIAZU.js +56 -0
  49. package/Build/Workers/chunk-CRCGE4J4.js +9237 -0
  50. package/Build/Workers/chunk-CUTRKXUQ.js +288 -0
  51. package/Build/Workers/chunk-D6AY775A.js +3201 -0
  52. package/Build/Workers/chunk-DSGLDRTI.js +278 -0
  53. package/Build/Workers/chunk-DZBQUULR.js +138 -0
  54. package/Build/Workers/chunk-DZUFEE4L.js +140 -0
  55. package/Build/Workers/chunk-E2NKV5YT.js +3820 -0
  56. package/Build/Workers/chunk-EB3Y5P3A.js +368 -0
  57. package/Build/Workers/chunk-ELE6SC2C.js +837 -0
  58. package/Build/Workers/chunk-EOWDZN5S.js +288 -0
  59. package/Build/Workers/chunk-ERKUET22.js +3201 -0
  60. package/Build/Workers/chunk-EZGQPOIG.js +162 -0
  61. package/Build/Workers/chunk-F2IMBMZY.js +241 -0
  62. package/Build/Workers/chunk-F4CSNRZO.js +219 -0
  63. package/Build/Workers/chunk-FBP4DUQJ.js +693 -0
  64. package/Build/Workers/chunk-FJWZMGOQ.js +1992 -0
  65. package/Build/Workers/chunk-FQ42MT7M.js +58 -0
  66. package/Build/Workers/chunk-FU4BGABC.js +398 -0
  67. package/Build/Workers/chunk-FX3VEAIU.js +2719 -0
  68. package/Build/Workers/chunk-GGNWQWSB.js +301 -0
  69. package/Build/Workers/chunk-GHXVQVUM.js +1344 -0
  70. package/Build/Workers/chunk-GNKXEN4C.js +682 -0
  71. package/Build/Workers/chunk-GVA7XQI2.js +368 -0
  72. package/Build/Workers/chunk-GXDHRC4J.js +1344 -0
  73. package/Build/Workers/chunk-GYSYP6PC.js +1067 -0
  74. package/Build/Workers/chunk-H2WCFXLP.js +241 -0
  75. package/Build/Workers/chunk-HDL4HOXZ.js +778 -0
  76. package/Build/Workers/chunk-HLW2ZRVK.js +368 -0
  77. package/Build/Workers/chunk-HT6FASOT.js +973 -0
  78. package/Build/Workers/chunk-I74ZH5LK.js +959 -0
  79. package/Build/Workers/chunk-IDVHUDZT.js +352 -0
  80. package/Build/Workers/chunk-IJZJMIUY.js +789 -0
  81. package/Build/Workers/chunk-IMBVP57H.js +44 -0
  82. package/Build/Workers/chunk-IOO7Z2AV.js +57 -0
  83. package/Build/Workers/chunk-IUIFLOYO.js +44 -0
  84. package/Build/Workers/chunk-J73T2VOY.js +171 -0
  85. package/Build/Workers/chunk-JALGQYDY.js +288 -0
  86. package/Build/Workers/chunk-JXYLJCTC.js +124 -0
  87. package/Build/Workers/chunk-K27QOAW6.js +97 -0
  88. package/Build/Workers/chunk-KMV25A63.js +789 -0
  89. package/Build/Workers/chunk-KP5QD7WU.js +693 -0
  90. package/Build/Workers/chunk-KZWFWJML.js +2719 -0
  91. package/Build/Workers/chunk-LCXRRALY.js +387 -0
  92. package/Build/Workers/chunk-LDRQSYBN.js +1800 -0
  93. package/Build/Workers/chunk-M4JZ6TSZ.js +959 -0
  94. package/Build/Workers/chunk-M6QKXVAU.js +1054 -0
  95. package/Build/Workers/chunk-MAAHFYPC.js +198 -0
  96. package/Build/Workers/chunk-MCJDRDJQ.js +102 -0
  97. package/Build/Workers/chunk-MEENMEAH.js +198 -0
  98. package/Build/Workers/chunk-NAWU5RF4.js +162 -0
  99. package/Build/Workers/chunk-NCL22ZUX.js +56 -0
  100. package/Build/Workers/chunk-NEFDMMLY.js +241 -0
  101. package/Build/Workers/chunk-NJVBJG63.js +124 -0
  102. package/Build/Workers/chunk-NLLCQBX3.js +73 -0
  103. package/Build/Workers/chunk-NSKZ6SBK.js +1483 -0
  104. package/Build/Workers/chunk-NXGQBQWE.js +837 -0
  105. package/Build/Workers/chunk-O3DKEX7Q.js +352 -0
  106. package/Build/Workers/chunk-O3XFXGPZ.js +476 -0
  107. package/Build/Workers/chunk-OA6MYL2C.js +837 -0
  108. package/Build/Workers/chunk-OHP4ELS7.js +198 -0
  109. package/Build/Workers/chunk-OZGPS7FB.js +138 -0
  110. package/Build/Workers/chunk-PCL3Y7H5.js +82 -0
  111. package/Build/Workers/chunk-PD4GK4EM.js +57 -0
  112. package/Build/Workers/chunk-PEDU33QG.js +2342 -0
  113. package/Build/Workers/chunk-PRWUMCXF.js +682 -0
  114. package/Build/Workers/chunk-PVTSNNVI.js +288 -0
  115. package/Build/Workers/chunk-QFSSCLLZ.js +973 -0
  116. package/Build/Workers/chunk-QHPZH22L.js +241 -0
  117. package/Build/Workers/chunk-QIZDWZK6.js +301 -0
  118. package/Build/Workers/chunk-QV6DG2YX.js +1483 -0
  119. package/Build/Workers/chunk-R4K7EHOU.js +171 -0
  120. package/Build/Workers/chunk-R7JGHDD6.js +789 -0
  121. package/Build/Workers/chunk-RASQEYD4.js +1483 -0
  122. package/Build/Workers/chunk-RW6ITX7Q.js +3820 -0
  123. package/Build/Workers/chunk-RYSQVJR6.js +398 -0
  124. package/Build/Workers/chunk-S6RJU5NM.js +1054 -0
  125. package/Build/Workers/chunk-SA2A2AN5.js +2342 -0
  126. package/Build/Workers/chunk-SDFHDNS4.js +147 -0
  127. package/Build/Workers/chunk-SJYSIOEM.js +414 -0
  128. package/Build/Workers/chunk-SMTGMFBL.js +97 -0
  129. package/Build/Workers/chunk-SXSP3JHS.js +38 -0
  130. package/Build/Workers/chunk-TN35HP5B.js +1067 -0
  131. package/Build/Workers/chunk-TNWKJNUZ.js +454 -0
  132. package/Build/Workers/chunk-TOAF47AQ.js +102 -0
  133. package/Build/Workers/chunk-TQ4QCOXT.js +2719 -0
  134. package/Build/Workers/chunk-TSDSILQB.js +124 -0
  135. package/Build/Workers/chunk-U5LV3F3Z.js +1054 -0
  136. package/Build/Workers/chunk-UAZUP4I5.js +1992 -0
  137. package/Build/Workers/chunk-UF46SZEZ.js +789 -0
  138. package/Build/Workers/chunk-UNRTMCET.js +398 -0
  139. package/Build/Workers/chunk-UTB7U3O6.js +1992 -0
  140. package/Build/Workers/chunk-V46YGZE6.js +352 -0
  141. package/Build/Workers/chunk-VDGOCROW.js +57 -0
  142. package/Build/Workers/chunk-VFWSSBPT.js +511 -0
  143. package/Build/Workers/chunk-VVYMXI3I.js +1284 -0
  144. package/Build/Workers/chunk-VXWHPYQM.js +837 -0
  145. package/Build/Workers/chunk-VXYUBRSB.js +219 -0
  146. package/Build/Workers/chunk-VZLDLEWI.js +387 -0
  147. package/Build/Workers/chunk-W5OCKMPJ.js +101 -0
  148. package/Build/Workers/chunk-WN3F4CVG.js +3201 -0
  149. package/Build/Workers/chunk-WPRUWXGV.js +693 -0
  150. package/Build/Workers/chunk-WTO2ERBP.js +414 -0
  151. package/Build/Workers/chunk-WVHMDVG4.js +959 -0
  152. package/Build/Workers/chunk-XCBZVTIV.js +280 -0
  153. package/Build/Workers/chunk-XGA23TAX.js +73 -0
  154. package/Build/Workers/chunk-XLQZNQ4Z.js +163 -0
  155. package/Build/Workers/chunk-XQH66YJC.js +147 -0
  156. package/Build/Workers/chunk-XTA7BXJG.js +682 -0
  157. package/Build/Workers/chunk-XTIDAFRS.js +476 -0
  158. package/Build/Workers/chunk-XUEDWBUD.js +682 -0
  159. package/Build/Workers/chunk-XYFLRH3H.js +124 -0
  160. package/Build/Workers/chunk-Y7JRTRTO.js +305 -0
  161. package/Build/Workers/chunk-Y7QSMDCJ.js +352 -0
  162. package/Build/Workers/chunk-YCB5TYTR.js +1483 -0
  163. package/Build/Workers/chunk-YEYOSTJX.js +219 -0
  164. package/Build/Workers/chunk-YGFVAGYF.js +630 -0
  165. package/Build/Workers/chunk-YIIACKQO.js +368 -0
  166. package/Build/Workers/chunk-YJGSP6PE.js +511 -0
  167. package/Build/Workers/chunk-Z4LR5EHE.js +454 -0
  168. package/Build/Workers/chunk-Z66EVE2A.js +44 -0
  169. package/Build/Workers/chunk-ZHIHHHTB.js +414 -0
  170. package/Build/Workers/chunk-ZNWHFSLE.js +171 -0
  171. package/Build/Workers/chunk-ZQLZG4IN.js +2342 -0
  172. package/Build/Workers/chunk-ZRTSMUZ2.js +414 -0
  173. package/Build/Workers/chunk-ZZUVT5BM.js +476 -0
  174. package/Build/Workers/combineGeometry.js +16 -16
  175. package/Build/Workers/createBoxGeometry.js +10 -10
  176. package/Build/Workers/createBoxOutlineGeometry.js +8 -8
  177. package/Build/Workers/createCircleGeometry.js +18 -18
  178. package/Build/Workers/createCircleOutlineGeometry.js +11 -11
  179. package/Build/Workers/createCoplanarPolygonGeometry.js +27 -27
  180. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +23 -23
  181. package/Build/Workers/createCorridorGeometry.js +23 -25
  182. package/Build/Workers/createCorridorOutlineGeometry.js +21 -23
  183. package/Build/Workers/createCylinderGeometry.js +12 -12
  184. package/Build/Workers/createCylinderOutlineGeometry.js +10 -10
  185. package/Build/Workers/createEllipseGeometry.js +18 -18
  186. package/Build/Workers/createEllipseOutlineGeometry.js +11 -11
  187. package/Build/Workers/createEllipsoidGeometry.js +11 -11
  188. package/Build/Workers/createEllipsoidOutlineGeometry.js +10 -10
  189. package/Build/Workers/createFrustumGeometry.js +11 -11
  190. package/Build/Workers/createFrustumOutlineGeometry.js +11 -11
  191. package/Build/Workers/createGeometry.js +16 -16
  192. package/Build/Workers/createGroundPolylineGeometry.js +16 -16
  193. package/Build/Workers/createPlaneGeometry.js +9 -9
  194. package/Build/Workers/createPlaneOutlineGeometry.js +8 -8
  195. package/Build/Workers/createPolygonGeometry.js +25 -25
  196. package/Build/Workers/createPolygonOutlineGeometry.js +22 -22
  197. package/Build/Workers/createPolylineGeometry.js +18 -18
  198. package/Build/Workers/createPolylineVolumeGeometry.js +24 -24
  199. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +20 -20
  200. package/Build/Workers/createRectangleGeometry.js +19 -19
  201. package/Build/Workers/createRectangleOutlineGeometry.js +13 -13
  202. package/Build/Workers/createSimplePolylineGeometry.js +16 -16
  203. package/Build/Workers/createSphereGeometry.js +11 -11
  204. package/Build/Workers/createSphereOutlineGeometry.js +10 -10
  205. package/Build/Workers/createVectorTileClampedPolylines.js +7 -7
  206. package/Build/Workers/createVectorTileGeometries.js +15 -15
  207. package/Build/Workers/createVectorTilePoints.js +6 -6
  208. package/Build/Workers/createVectorTilePolygons.js +14 -14
  209. package/Build/Workers/createVectorTilePolylines.js +7 -7
  210. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +17 -17
  211. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +14 -14
  212. package/Build/Workers/createVerticesFromHeightmap.js +14 -14
  213. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +12 -12
  214. package/Build/Workers/createWallGeometry.js +17 -17
  215. package/Build/Workers/createWallOutlineGeometry.js +17 -17
  216. package/Build/Workers/decodeDraco.js +2 -2
  217. package/Build/Workers/decodeI3S.js +5 -5
  218. package/Build/Workers/incrementallyBuildTerrainPicker.js +4 -4
  219. package/Build/Workers/upsampleQuantizedTerrainMesh.js +14 -14
  220. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +17 -17
  221. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +1 -5
  222. package/Source/Core/BoundingSphere.js +0 -3
  223. package/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js +3 -4
  224. package/Source/Core/CoplanarPolygonGeometry.js +2 -2
  225. package/Source/Core/CorridorGeometry.js +2 -4
  226. package/Source/Core/CorridorOutlineGeometry.js +1 -3
  227. package/Source/Core/EarthOrientationParameters.js +2 -2
  228. package/Source/Core/EllipseGeometryLibrary.js +2 -2
  229. package/Source/Core/EllipsoidGeodesic.js +3 -3
  230. package/Source/Core/EllipsoidRhumbLine.js +1 -1
  231. package/Source/Core/GroundPolylineGeometry.js +2 -2
  232. package/Source/Core/Heap.js +1 -1
  233. package/Source/Core/HermitePolynomialApproximation.js +215 -179
  234. package/Source/Core/InterpolationAlgorithm.js +1 -0
  235. package/Source/Core/Ion.js +1 -1
  236. package/Source/Core/JulianDate.js +1 -1
  237. package/Source/Core/LagrangePolynomialApproximation.js +55 -52
  238. package/Source/Core/LinearApproximation.js +69 -66
  239. package/Source/Core/Math.js +59 -0
  240. package/Source/Core/Matrix2.js +2 -2
  241. package/Source/Core/Matrix3.js +2 -2
  242. package/Source/Core/OrthographicFrustum.js +1 -1
  243. package/Source/Core/PerspectiveFrustum.js +1 -1
  244. package/Source/Core/PolygonGeometry.js +2 -2
  245. package/Source/Core/PolygonGeometryLibrary.js +1 -1
  246. package/Source/Core/PolygonOutlineGeometry.js +1 -1
  247. package/Source/Core/PolylineGeometry.js +1 -1
  248. package/Source/Core/PolylineVolumeGeometryLibrary.js +1 -1
  249. package/Source/Core/Rectangle.js +7 -1
  250. package/Source/Core/RectangleOutlineGeometry.js +1 -1
  251. package/Source/Core/SimplePolylineGeometry.js +1 -1
  252. package/Source/Core/TerrainEncoding.js +2 -2
  253. package/Source/Core/TerrainPicker.js +179 -168
  254. package/Source/Core/TimeIntervalCollection.js +1 -3
  255. package/Source/Core/Tipsify.js +1 -1
  256. package/Source/Core/Transforms.js +5 -1
  257. package/Source/Core/VectorPipeline.js +1117 -0
  258. package/Source/Core/VectorProvider.js +429 -0
  259. package/Source/Core/WallOutlineGeometry.js +1 -1
  260. package/Source/Core/getTimestamp.js +4 -2
  261. package/Source/DataSources/CompositeEntityCollection.js +0 -1
  262. package/Source/DataSources/CzmlDataSource.js +2 -0
  263. package/Source/DataSources/DataSourceDisplay.js +1 -1
  264. package/Source/DataSources/GeoJsonDataSource.js +0 -1
  265. package/Source/DataSources/GeometryVisualizer.js +1 -1
  266. package/Source/DataSources/KmlDataSource.js +1 -2
  267. package/Source/DataSources/PolylineVisualizer.js +1 -1
  268. package/Source/DataSources/StaticOutlineGeometryBatch.js +1 -1
  269. package/Source/Renderer/AutomaticUniforms.js +23 -0
  270. package/Source/Renderer/Context.js +9 -3
  271. package/Source/Renderer/DrawCommand.js +22 -0
  272. package/Source/Renderer/Framebuffer.js +4 -0
  273. package/Source/Renderer/Pass.js +11 -10
  274. package/Source/Renderer/Texture.js +11 -0
  275. package/Source/Renderer/UniformState.js +7 -0
  276. package/Source/Renderer/VertexArray.js +0 -1
  277. package/Source/Scene/ArcGisMapServerImageryProvider.js +0 -5
  278. package/Source/Scene/ArcGisMapService.js +1 -1
  279. package/Source/Scene/Billboard.js +2 -1
  280. package/Source/Scene/BillboardCollection.js +7 -3
  281. package/Source/Scene/BufferPrimitiveCollection.js +27 -5
  282. package/Source/Scene/Camera.js +71 -5
  283. package/Source/Scene/Cesium3DTileset.js +1 -1
  284. package/Source/Scene/ClippingPlaneCollection.js +2 -2
  285. package/Source/Scene/Controllers/Controller.js +63 -0
  286. package/Source/Scene/Controllers/ControllerHost.js +78 -0
  287. package/Source/Scene/Controllers/HybridScreenSpacePanCameraController.js +106 -0
  288. package/Source/Scene/Controllers/MouseButton.js +32 -0
  289. package/Source/Scene/Controllers/ScreenSpaceElevatorCameraController.js +295 -0
  290. package/Source/Scene/Controllers/ScreenSpaceInputBindings.js +154 -0
  291. package/Source/Scene/Controllers/ScreenSpaceMapCameraController.js +310 -0
  292. package/Source/Scene/Controllers/ScreenSpaceTiltOrbitCameraController.js +642 -0
  293. package/Source/Scene/Controllers/ScreenSpaceZoomCameraController.js +431 -0
  294. package/Source/Scene/Controllers/defaultPickWorldPosition.js +84 -0
  295. package/Source/Scene/DerivedCommand.js +94 -0
  296. package/Source/Scene/EdgeFramebuffer.js +1 -5
  297. package/Source/Scene/FrameState.js +17 -0
  298. package/Source/Scene/Globe.js +20 -0
  299. package/Source/Scene/GlobeDepth.js +27 -1
  300. package/Source/Scene/GlobeSurfaceShaderSet.js +12 -2
  301. package/Source/Scene/GlobeSurfaceTile.js +48 -10
  302. package/Source/Scene/GlobeSurfaceTileProvider.js +121 -3
  303. package/Source/Scene/GltfLoader.js +32 -3
  304. package/Source/Scene/GltfSpzLoader.js +1 -1
  305. package/Source/Scene/GltfVertexBufferLoader.js +6 -3
  306. package/Source/Scene/I3SDataProvider.js +1 -1
  307. package/Source/Scene/I3SLayer.js +1 -1
  308. package/Source/Scene/I3SNode.js +2 -2
  309. package/Source/Scene/ImageryLayerCollection.js +188 -4
  310. package/Source/Scene/IonImageryProvider.js +1 -5
  311. package/Source/Scene/Label.js +4 -4
  312. package/Source/Scene/LabelCollection.js +1 -1
  313. package/Source/Scene/MVTDataProvider.js +2 -0
  314. package/Source/Scene/Model/B3dmLoader.js +1 -2
  315. package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +10 -8
  316. package/Source/Scene/Model/I3dmLoader.js +1 -1
  317. package/Source/Scene/Model/InstancingPipelineStage.js +4 -7
  318. package/Source/Scene/Model/MaterialPipelineStage.js +124 -1
  319. package/Source/Scene/Model/Model.js +8 -10
  320. package/Source/Scene/Model/ModelClippingPlanesPipelineStage.js +28 -1
  321. package/Source/Scene/Model/ModelDrawCommand.js +160 -16
  322. package/Source/Scene/Model/ModelDrawCommands.js +4 -0
  323. package/Source/Scene/Model/ModelSceneGraph.js +21 -0
  324. package/Source/Scene/Model/PickingPipelineStage.js +29 -0
  325. package/Source/Scene/Model/PrimitiveRenderResources.js +24 -0
  326. package/Source/Scene/ModelComponents.js +71 -0
  327. package/Source/Scene/Picking.js +16 -5
  328. package/Source/Scene/PlanarFillIdFramebuffer.js +172 -0
  329. package/Source/Scene/PntsParser.js +0 -1
  330. package/Source/Scene/PolylineCollection.js +1 -1
  331. package/Source/Scene/PostProcessStage.js +4 -2
  332. package/Source/Scene/ResourceCache.js +7 -4
  333. package/Source/Scene/ResourceCacheKey.js +16 -13
  334. package/Source/Scene/Scene.js +202 -5
  335. package/Source/Scene/ScreenSpaceCameraController.js +1 -2
  336. package/Source/Scene/ShadowMap.js +9 -3
  337. package/Source/Scene/ShadowMapShader.js +50 -2
  338. package/Source/Scene/SnapFramebuffer.js +121 -0
  339. package/Source/Scene/Snapping.js +184 -0
  340. package/Source/Scene/TerrainFillMesh.js +3 -2
  341. package/Source/Scene/UrlTemplate3DTilesDataProvider.js +1 -1
  342. package/Source/Scene/Vector3DTileContent.js +2 -3
  343. package/Source/Scene/VectorGltf3DTileContent.js +23 -3
  344. package/Source/Scene/View.js +10 -8
  345. package/Source/Scene/VoxelTraversal.js +1 -1
  346. package/Source/Scene/createElevationBandMaterial.js +1 -1
  347. package/Source/Scene/renderBufferPointCollection.js +1 -2
  348. package/Source/Scene/renderBufferPolygonCollection.js +1 -2
  349. package/Source/Scene/renderBufferPolylineCollection.js +1 -2
  350. package/Source/Shaders/Builtin/Constants/passCesium3DTile.glsl +1 -1
  351. package/Source/Shaders/Builtin/Constants/passCesium3DTile.js +1 -1
  352. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.glsl +1 -1
  353. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.js +1 -1
  354. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.glsl +1 -1
  355. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.js +1 -1
  356. package/Source/Shaders/Builtin/Constants/passCesium3DTilePlanarFillId.glsl +9 -0
  357. package/Source/Shaders/Builtin/Constants/passCesium3DTilePlanarFillId.js +11 -0
  358. package/Source/Shaders/Builtin/Constants/passClassification.glsl +1 -1
  359. package/Source/Shaders/Builtin/Constants/passClassification.js +1 -1
  360. package/Source/Shaders/Builtin/Constants/passGaussianSplats.glsl +1 -1
  361. package/Source/Shaders/Builtin/Constants/passGaussianSplats.js +1 -1
  362. package/Source/Shaders/Builtin/Constants/passOpaque.glsl +1 -1
  363. package/Source/Shaders/Builtin/Constants/passOpaque.js +1 -1
  364. package/Source/Shaders/Builtin/Constants/passTranslucent.glsl +1 -1
  365. package/Source/Shaders/Builtin/Constants/passTranslucent.js +1 -1
  366. package/Source/Shaders/Builtin/Constants/passVoxels.glsl +1 -1
  367. package/Source/Shaders/Builtin/Constants/passVoxels.js +1 -1
  368. package/Source/Shaders/Builtin/CzmBuiltins.js +2 -0
  369. package/Source/Shaders/GlobeFS.glsl +10 -5
  370. package/Source/Shaders/GlobeFS.js +9 -5
  371. package/Source/Shaders/Materials/PolylineGlowMaterial.glsl +1 -1
  372. package/Source/Shaders/Materials/PolylineGlowMaterial.js +1 -1
  373. package/Source/Shaders/Model/MaterialStageFS.glsl +8 -2
  374. package/Source/Shaders/Model/MaterialStageFS.js +8 -2
  375. package/Source/Shaders/Model/ModelFS.glsl +105 -0
  376. package/Source/Shaders/Model/ModelFS.js +105 -0
  377. package/Source/Shaders/VectorCommon.glsl +178 -0
  378. package/Source/Shaders/VectorCommon.js +75 -0
  379. package/Source/ThirdParty/Workers/zip-web-worker.js +1 -1
  380. package/Source/ThirdParty/zip-module.wasm +0 -0
  381. package/Source/Widget/CesiumWidget.js +30 -0
  382. package/index.d.ts +770 -10
  383. package/index.js +177 -160
  384. package/package.json +1 -1
@@ -368,7 +368,7 @@ CoplanarPolygonGeometry.pack = function (value, array, startingIndex) {
368
368
  } else {
369
369
  array[startingIndex++] = -1.0;
370
370
  }
371
- array[startingIndex++] = value.packedLength;
371
+ array[startingIndex] = value.packedLength;
372
372
 
373
373
  return array;
374
374
  };
@@ -426,7 +426,7 @@ CoplanarPolygonGeometry.unpack = function (array, startingIndex, result) {
426
426
  } else {
427
427
  startingIndex++;
428
428
  }
429
- const packedLength = array[startingIndex++];
429
+ const packedLength = array[startingIndex];
430
430
 
431
431
  if (!defined(result)) {
432
432
  result = new CoplanarPolygonGeometry(scratchOptions);
@@ -63,7 +63,6 @@ function combine(computedPositions, vertexFormat, ellipsoid) {
63
63
  const computedLefts = computedPositions.lefts;
64
64
  const computedNormals = computedPositions.normals;
65
65
  const attributes = new GeometryAttributes();
66
- let corner;
67
66
  let leftCount = 0;
68
67
  let rightCount = 0;
69
68
  let i;
@@ -78,7 +77,6 @@ function combine(computedPositions, vertexFormat, ellipsoid) {
78
77
  leftCount += 3; //add back count for end positions
79
78
  rightCount += 3;
80
79
  for (i = 0; i < corners.length; i++) {
81
- corner = corners[i];
82
80
  const leftSide = corners[i].leftPositions;
83
81
  if (defined(leftSide)) {
84
82
  length = leftSide.length;
@@ -221,7 +219,7 @@ function combine(computedPositions, vertexFormat, ellipsoid) {
221
219
  compIndex += 3;
222
220
  for (i = 0; i < corners.length; i++) {
223
221
  let j;
224
- corner = corners[i];
222
+ const corner = corners[i];
225
223
  const l = corner.leftPositions;
226
224
  const r = corner.rightPositions;
227
225
  let pivot;
@@ -727,7 +725,7 @@ function addWallPositions(positions, index, wallPositions) {
727
725
  }
728
726
  wallPositions[index++] = positions[0];
729
727
  wallPositions[index++] = positions[1];
730
- wallPositions[index++] = positions[2];
728
+ wallPositions[index] = positions[2];
731
729
 
732
730
  return wallPositions;
733
731
  }
@@ -49,7 +49,6 @@ function combine(computedPositions, cornerType) {
49
49
  leftCount += 3; //add back count for end positions
50
50
  rightCount += 3;
51
51
  for (i = 0; i < corners.length; i++) {
52
- corner = corners[i];
53
52
  const leftSide = corners[i].leftPositions;
54
53
  if (defined(leftSide)) {
55
54
  length = leftSide.length;
@@ -200,7 +199,6 @@ function combine(computedPositions, cornerType) {
200
199
  leftEdge.splice(leftEdge.length - 3, 3);
201
200
  finalPositions.set(rightEdge, front);
202
201
  finalPositions.set(leftEdge, back - leftEdge.length + 1);
203
- length = leftEdge.length - 3;
204
202
 
205
203
  for (j = 0; j < leftEdge.length; j += 3) {
206
204
  LR = front / 3;
@@ -259,7 +257,7 @@ function combine(computedPositions, cornerType) {
259
257
  wallIndices.push(front / 3, (back - 2) / 3);
260
258
  }
261
259
  indices[index++] = front / 3;
262
- indices[index++] = (back - 2) / 3;
260
+ indices[index] = (back - 2) / 3;
263
261
 
264
262
  attributes.position = new GeometryAttribute({
265
263
  componentDatatype: ComponentDatatype.DOUBLE,
@@ -182,8 +182,8 @@ EarthOrientationParameters.prototype.compute = function (date, result) {
182
182
  const dates = this._dates;
183
183
  const lastIndex = this._lastIndex;
184
184
 
185
- let before = 0;
186
- let after = 0;
185
+ let before;
186
+ let after;
187
187
  if (defined(lastIndex)) {
188
188
  const previousIndexDate = dates[lastIndex];
189
189
  const nextIndexDate = dates[lastIndex + 1];
@@ -349,14 +349,14 @@ EllipseGeometryLibrary.computeEllipsePositions = function (
349
349
  if (addFillPositions) {
350
350
  positions[positionIndex++] = position.x;
351
351
  positions[positionIndex++] = position.y;
352
- positions[positionIndex++] = position.z;
352
+ positions[positionIndex] = position.z;
353
353
  r.positions = positions;
354
354
  r.numPts = numPts;
355
355
  }
356
356
  if (addEdgePositions) {
357
357
  outerPositions[outerRightIndex--] = position.z;
358
358
  outerPositions[outerRightIndex--] = position.y;
359
- outerPositions[outerRightIndex--] = position.x;
359
+ outerPositions[outerRightIndex] = position.x;
360
360
  r.outerPositions = outerPositions;
361
361
  }
362
362
 
@@ -133,10 +133,10 @@ function vincentyInverseFormula(
133
133
  const sc = sineU1 * cosineU2;
134
134
 
135
135
  let lambda = l;
136
- let lambdaDot = CesiumMath.TWO_PI;
136
+ let lambdaDot;
137
137
 
138
- let cosineLambda = Math.cos(lambda);
139
- let sineLambda = Math.sin(lambda);
138
+ let cosineLambda;
139
+ let sineLambda;
140
140
 
141
141
  let sigma;
142
142
  let cosineSigma;
@@ -200,7 +200,7 @@ function calculateArcLength(
200
200
  const heading = ellipsoidRhumbLine._heading;
201
201
  const deltaLongitude = secondLongitude - firstLongitude;
202
202
 
203
- let distance = 0.0;
203
+ let distance;
204
204
 
205
205
  //Check to see if the rhumb line has constant latitude
206
206
  //This equation will diverge if heading gets close to 90 degrees
@@ -318,7 +318,7 @@ GroundPolylineGeometry.pack = function (value, array, startingIndex) {
318
318
  index += Ellipsoid.packedLength;
319
319
 
320
320
  array[index++] = value._projectionIndex;
321
- array[index++] = value._scene3DOnly ? 1.0 : 0.0;
321
+ array[index] = value._scene3DOnly ? 1.0 : 0.0;
322
322
 
323
323
  return array;
324
324
  };
@@ -352,7 +352,7 @@ GroundPolylineGeometry.unpack = function (array, startingIndex, result) {
352
352
  index += Ellipsoid.packedLength;
353
353
 
354
354
  const projectionIndex = array[index++];
355
- const scene3DOnly = array[index++] === 1.0;
355
+ const scene3DOnly = array[index] === 1.0;
356
356
 
357
357
  if (!defined(result)) {
358
358
  result = new GroundPolylineGeometry({
@@ -121,7 +121,7 @@ Heap.prototype.heapify = function (index) {
121
121
  const length = this._length;
122
122
  const comparator = this._comparator;
123
123
  const array = this._array;
124
- let candidate = -1;
124
+ let candidate;
125
125
  let inserting = true;
126
126
 
127
127
  while (inserting) {
@@ -1,9 +1,22 @@
1
+ // @ts-check
2
+
1
3
  import defined from "./defined.js";
2
4
  import DeveloperError from "./DeveloperError.js";
3
5
  import CesiumMath from "./Math.js";
4
6
 
5
7
  const factorial = CesiumMath.factorial;
6
8
 
9
+ /**
10
+ * @param {number} x
11
+ * @param {number[]} zIndices
12
+ * @param {number[]} xTable
13
+ * @param {number} derivOrder
14
+ * @param {number} termOrder
15
+ * @param {number[]} reservedIndices
16
+ * @returns {number}
17
+ *
18
+ * @private
19
+ */
7
20
  function calculateCoefficientTerm(
8
21
  x,
9
22
  zIndices,
@@ -61,223 +74,245 @@ function calculateCoefficientTerm(
61
74
  }
62
75
 
63
76
  /**
64
- * An {@link InterpolationAlgorithm} for performing Hermite interpolation.
77
+ * @type {number[]}
65
78
  *
66
- * @namespace HermitePolynomialApproximation
79
+ * @private
67
80
  */
68
- const HermitePolynomialApproximation = {
69
- type: "Hermite",
70
- };
81
+ const arrayScratch = [];
71
82
 
72
83
  /**
73
- * Given the desired degree, returns the number of data points required for interpolation.
84
+ * An {@link InterpolationAlgorithm} for performing Hermite interpolation.
74
85
  *
75
- * @param {number} degree The desired degree of interpolation.
76
- * @param {number} [inputOrder=0] The order of the inputs (0 means just the data, 1 means the data and its derivative, etc).
77
- * @returns {number} The number of required data points needed for the desired degree of interpolation.
78
- * @exception {DeveloperError} degree must be 0 or greater.
79
- * @exception {DeveloperError} inputOrder must be 0 or greater.
86
+ * @namespace HermitePolynomialApproximation
80
87
  */
81
- HermitePolynomialApproximation.getRequiredDataPoints = function (
82
- degree,
83
- inputOrder,
84
- ) {
85
- inputOrder = inputOrder ?? 0;
86
-
87
- //>>includeStart('debug', pragmas.debug);
88
- if (!defined(degree)) {
89
- throw new DeveloperError("degree is required.");
88
+ class HermitePolynomialApproximation {
89
+ /**
90
+ * Gets the name of this interpolation algorithm.
91
+ * @type {string}
92
+ */
93
+ static get type() {
94
+ return "Hermite";
90
95
  }
91
- if (degree < 0) {
92
- throw new DeveloperError("degree must be 0 or greater.");
93
- }
94
- if (inputOrder < 0) {
95
- throw new DeveloperError("inputOrder must be 0 or greater.");
96
- }
97
- //>>includeEnd('debug');
98
96
 
99
- return Math.max(Math.floor((degree + 1) / (inputOrder + 1)), 2);
100
- };
97
+ /**
98
+ * Given the desired degree, returns the number of data points required for interpolation.
99
+ *
100
+ * @param {number} degree The desired degree of interpolation.
101
+ * @param {number} [inputOrder=0] The order of the inputs (0 means just the data, 1 means the data and its derivative, etc).
102
+ * @returns {number} The number of required data points needed for the desired degree of interpolation.
103
+ * @exception {DeveloperError} degree must be 0 or greater.
104
+ * @exception {DeveloperError} inputOrder must be 0 or greater.
105
+ */
106
+ static getRequiredDataPoints(degree, inputOrder) {
107
+ inputOrder = inputOrder ?? 0;
108
+
109
+ //>>includeStart('debug', pragmas.debug);
110
+ if (!defined(degree)) {
111
+ throw new DeveloperError("degree is required.");
112
+ }
113
+ if (degree < 0) {
114
+ throw new DeveloperError("degree must be 0 or greater.");
115
+ }
116
+ if (inputOrder < 0) {
117
+ throw new DeveloperError("inputOrder must be 0 or greater.");
118
+ }
119
+ //>>includeEnd('debug');
101
120
 
102
- /**
103
- * Interpolates values using Hermite Polynomial Approximation.
104
- *
105
- * @param {number} x The independent variable for which the dependent variables will be interpolated.
106
- * @param {number[]} xTable The array of independent variables to use to interpolate. The values
107
- * in this array must be in increasing order and the same value must not occur twice in the array.
108
- * @param {number[]} yTable The array of dependent variables to use to interpolate. For a set of three
109
- * dependent values (p,q,w) at time 1 and time 2 this should be as follows: {p1, q1, w1, p2, q2, w2}.
110
- * @param {number} yStride The number of dependent variable values in yTable corresponding to
111
- * each independent variable value in xTable.
112
- * @param {number[]} [result] An existing array into which to store the result.
113
- * @returns {number[]} The array of interpolated values, or the result parameter if one was provided.
114
- */
115
- HermitePolynomialApproximation.interpolateOrderZero = function (
116
- x,
117
- xTable,
118
- yTable,
119
- yStride,
120
- result,
121
- ) {
122
- if (!defined(result)) {
123
- result = new Array(yStride);
121
+ return Math.max(Math.floor((degree + 1) / (inputOrder + 1)), 2);
124
122
  }
125
123
 
126
- let i;
127
- let j;
128
- let d;
129
- let s;
130
- let len;
131
- let index;
132
- const length = xTable.length;
133
- const coefficients = new Array(yStride);
134
-
135
- for (i = 0; i < yStride; i++) {
136
- result[i] = 0;
137
-
138
- const l = new Array(length);
139
- coefficients[i] = l;
140
- for (j = 0; j < length; j++) {
141
- l[j] = [];
124
+ /**
125
+ * Interpolates values using Hermite Polynomial Approximation.
126
+ *
127
+ * @param {number} x The independent variable for which the dependent variables will be interpolated.
128
+ * @param {number[]} xTable The array of independent variables to use to interpolate. The values
129
+ * in this array must be in increasing order and the same value must not occur twice in the array.
130
+ * @param {number[]} yTable The array of dependent variables to use to interpolate. For a set of three
131
+ * dependent values (p,q,w) at time 1 and time 2 this should be as follows: {p1, q1, w1, p2, q2, w2}.
132
+ * @param {number} yStride The number of dependent variable values in yTable corresponding to
133
+ * each independent variable value in xTable.
134
+ * @param {number[]} [result] An existing array into which to store the result.
135
+ * @returns {number[]} The array of interpolated values, or the result parameter if one was provided.
136
+ */
137
+ static interpolateOrderZero(x, xTable, yTable, yStride, result) {
138
+ if (!defined(result)) {
139
+ result = new Array(yStride);
142
140
  }
143
- }
144
141
 
145
- const zIndicesLength = length,
146
- zIndices = new Array(zIndicesLength);
142
+ let i;
143
+ let j;
144
+ let d;
145
+ let s;
146
+ let len;
147
+ let index;
148
+ const length = xTable.length;
149
+ const coefficients = new Array(yStride);
150
+
151
+ for (i = 0; i < yStride; i++) {
152
+ result[i] = 0;
153
+
154
+ const l = new Array(length);
155
+ coefficients[i] = l;
156
+ for (j = 0; j < length; j++) {
157
+ l[j] = [];
158
+ }
159
+ }
147
160
 
148
- for (i = 0; i < zIndicesLength; i++) {
149
- zIndices[i] = i;
150
- }
161
+ const zIndicesLength = length,
162
+ zIndices = new Array(zIndicesLength);
151
163
 
152
- let highestNonZeroCoef = length - 1;
153
- for (s = 0; s < yStride; s++) {
154
- for (j = 0; j < zIndicesLength; j++) {
155
- index = zIndices[j] * yStride + s;
156
- coefficients[s][0].push(yTable[index]);
164
+ for (i = 0; i < zIndicesLength; i++) {
165
+ zIndices[i] = i;
157
166
  }
158
167
 
159
- for (i = 1; i < zIndicesLength; i++) {
160
- let nonZeroCoefficients = false;
161
- for (j = 0; j < zIndicesLength - i; j++) {
162
- const zj = xTable[zIndices[j]];
163
- const zn = xTable[zIndices[j + i]];
168
+ let highestNonZeroCoef = length - 1;
169
+ for (s = 0; s < yStride; s++) {
170
+ for (j = 0; j < zIndicesLength; j++) {
171
+ index = zIndices[j] * yStride + s;
172
+ coefficients[s][0].push(yTable[index]);
173
+ }
164
174
 
165
- let numerator;
166
- if (zn - zj <= 0) {
167
- index = zIndices[j] * yStride + yStride * i + s;
168
- numerator = yTable[index];
169
- coefficients[s][i].push(numerator / factorial(i));
170
- } else {
171
- numerator = coefficients[s][i - 1][j + 1] - coefficients[s][i - 1][j];
172
- coefficients[s][i].push(numerator / (zn - zj));
175
+ for (i = 1; i < zIndicesLength; i++) {
176
+ let nonZeroCoefficients = false;
177
+ for (j = 0; j < zIndicesLength - i; j++) {
178
+ const zj = xTable[zIndices[j]];
179
+ const zn = xTable[zIndices[j + i]];
180
+
181
+ let numerator;
182
+ if (zn - zj <= 0) {
183
+ index = zIndices[j] * yStride + yStride * i + s;
184
+ numerator = yTable[index];
185
+ coefficients[s][i].push(numerator / factorial(i));
186
+ } else {
187
+ numerator =
188
+ coefficients[s][i - 1][j + 1] - coefficients[s][i - 1][j];
189
+ coefficients[s][i].push(numerator / (zn - zj));
190
+ }
191
+ nonZeroCoefficients = nonZeroCoefficients || numerator !== 0;
173
192
  }
174
- nonZeroCoefficients = nonZeroCoefficients || numerator !== 0;
175
- }
176
193
 
177
- if (!nonZeroCoefficients) {
178
- highestNonZeroCoef = i - 1;
194
+ if (!nonZeroCoefficients) {
195
+ highestNonZeroCoef = i - 1;
196
+ }
179
197
  }
180
198
  }
181
- }
182
199
 
183
- for (d = 0, len = 0; d <= len; d++) {
184
- for (i = d; i <= highestNonZeroCoef; i++) {
185
- const tempTerm = calculateCoefficientTerm(x, zIndices, xTable, d, i, []);
186
- for (s = 0; s < yStride; s++) {
187
- const coeff = coefficients[s][i][0];
188
- result[s + d * yStride] += coeff * tempTerm;
200
+ for (d = 0, len = 0; d <= len; d++) {
201
+ for (i = d; i <= highestNonZeroCoef; i++) {
202
+ const tempTerm = calculateCoefficientTerm(
203
+ x,
204
+ zIndices,
205
+ xTable,
206
+ d,
207
+ i,
208
+ [],
209
+ );
210
+ for (s = 0; s < yStride; s++) {
211
+ const coeff = coefficients[s][i][0];
212
+ result[s + d * yStride] += coeff * tempTerm;
213
+ }
189
214
  }
190
215
  }
191
- }
192
-
193
- return result;
194
- };
195
-
196
- const arrayScratch = [];
197
-
198
- /**
199
- * Interpolates values using Hermite Polynomial Approximation.
200
- *
201
- * @param {number} x The independent variable for which the dependent variables will be interpolated.
202
- * @param {number[]} xTable The array of independent variables to use to interpolate. The values
203
- * in this array must be in increasing order and the same value must not occur twice in the array.
204
- * @param {number[]} yTable The array of dependent variables to use to interpolate. For a set of three
205
- * dependent values (p,q,w) at time 1 and time 2 this should be as follows: {p1, q1, w1, p2, q2, w2}.
206
- * @param {number} yStride The number of dependent variable values in yTable corresponding to
207
- * each independent variable value in xTable.
208
- * @param {number} inputOrder The number of derivatives supplied for input.
209
- * @param {number} outputOrder The number of derivatives desired for output.
210
- * @param {number[]} [result] An existing array into which to store the result.
211
- *
212
- * @returns {number[]} The array of interpolated values, or the result parameter if one was provided.
213
- */
214
- HermitePolynomialApproximation.interpolate = function (
215
- x,
216
- xTable,
217
- yTable,
218
- yStride,
219
- inputOrder,
220
- outputOrder,
221
- result,
222
- ) {
223
- const resultLength = yStride * (outputOrder + 1);
224
- if (!defined(result)) {
225
- result = new Array(resultLength);
226
- }
227
- for (let r = 0; r < resultLength; r++) {
228
- result[r] = 0;
229
- }
230
216
 
231
- const length = xTable.length;
232
- // The zIndices array holds copies of the addresses of the xTable values
233
- // in the range we're looking at. Even though this just holds information already
234
- // available in xTable this is a much more convenient format.
235
- const zIndices = new Array(length * (inputOrder + 1));
236
- let i;
237
- for (i = 0; i < length; i++) {
238
- for (let j = 0; j < inputOrder + 1; j++) {
239
- zIndices[i * (inputOrder + 1) + j] = i;
240
- }
217
+ return result;
241
218
  }
242
219
 
243
- const zIndiceslength = zIndices.length;
244
- const coefficients = arrayScratch;
245
- const highestNonZeroCoef = fillCoefficientList(
246
- coefficients,
247
- zIndices,
220
+ /**
221
+ * Interpolates values using Hermite Polynomial Approximation.
222
+ *
223
+ * @param {number} x The independent variable for which the dependent variables will be interpolated.
224
+ * @param {number[]} xTable The array of independent variables to use to interpolate. The values
225
+ * in this array must be in increasing order and the same value must not occur twice in the array.
226
+ * @param {number[]} yTable The array of dependent variables to use to interpolate. For a set of three
227
+ * dependent values (p,q,w) at time 1 and time 2 this should be as follows: {p1, q1, w1, p2, q2, w2}.
228
+ * @param {number} yStride The number of dependent variable values in yTable corresponding to
229
+ * each independent variable value in xTable.
230
+ * @param {number} inputOrder The number of derivatives supplied for input.
231
+ * @param {number} outputOrder The number of derivatives desired for output.
232
+ * @param {number[]} [result] An existing array into which to store the result.
233
+ *
234
+ * @returns {number[]} The array of interpolated values, or the result parameter if one was provided.
235
+ */
236
+ static interpolate(
237
+ x,
248
238
  xTable,
249
239
  yTable,
250
240
  yStride,
251
241
  inputOrder,
252
- );
253
- const reservedIndices = [];
242
+ outputOrder,
243
+ result,
244
+ ) {
245
+ const resultLength = yStride * (outputOrder + 1);
246
+ if (!defined(result)) {
247
+ result = new Array(resultLength);
248
+ }
249
+ for (let r = 0; r < resultLength; r++) {
250
+ result[r] = 0;
251
+ }
254
252
 
255
- const tmp = (zIndiceslength * (zIndiceslength + 1)) / 2;
256
- const loopStop = Math.min(highestNonZeroCoef, outputOrder);
257
- for (let d = 0; d <= loopStop; d++) {
258
- for (i = d; i <= highestNonZeroCoef; i++) {
259
- reservedIndices.length = 0;
260
- const tempTerm = calculateCoefficientTerm(
261
- x,
262
- zIndices,
263
- xTable,
264
- d,
265
- i,
266
- reservedIndices,
267
- );
268
- const dimTwo = Math.floor((i * (1 - i)) / 2) + zIndiceslength * i;
253
+ const length = xTable.length;
254
+ // The zIndices array holds copies of the addresses of the xTable values
255
+ // in the range we're looking at. Even though this just holds information already
256
+ // available in xTable this is a much more convenient format.
257
+ const zIndices = new Array(length * (inputOrder + 1));
258
+ let i;
259
+ for (i = 0; i < length; i++) {
260
+ for (let j = 0; j < inputOrder + 1; j++) {
261
+ zIndices[i * (inputOrder + 1) + j] = i;
262
+ }
263
+ }
269
264
 
270
- for (let s = 0; s < yStride; s++) {
271
- const dimOne = Math.floor(s * tmp);
272
- const coef = coefficients[dimOne + dimTwo];
273
- result[s + d * yStride] += coef * tempTerm;
265
+ const zIndiceslength = zIndices.length;
266
+ const coefficients = arrayScratch;
267
+ const highestNonZeroCoef = fillCoefficientList(
268
+ coefficients,
269
+ zIndices,
270
+ xTable,
271
+ yTable,
272
+ yStride,
273
+ inputOrder,
274
+ );
275
+ /** @type {number[]} */
276
+ const reservedIndices = [];
277
+
278
+ const tmp = (zIndiceslength * (zIndiceslength + 1)) / 2;
279
+ const loopStop = Math.min(highestNonZeroCoef, outputOrder);
280
+ for (let d = 0; d <= loopStop; d++) {
281
+ for (i = d; i <= highestNonZeroCoef; i++) {
282
+ reservedIndices.length = 0;
283
+ const tempTerm = calculateCoefficientTerm(
284
+ x,
285
+ zIndices,
286
+ xTable,
287
+ d,
288
+ i,
289
+ reservedIndices,
290
+ );
291
+ const dimTwo = Math.floor((i * (1 - i)) / 2) + zIndiceslength * i;
292
+
293
+ for (let s = 0; s < yStride; s++) {
294
+ const dimOne = Math.floor(s * tmp);
295
+ const coef = coefficients[dimOne + dimTwo];
296
+ result[s + d * yStride] += coef * tempTerm;
297
+ }
274
298
  }
275
299
  }
276
- }
277
300
 
278
- return result;
279
- };
301
+ return result;
302
+ }
303
+ }
280
304
 
305
+ /**
306
+ * @param {number[]} coefficients
307
+ * @param {number[]} zIndices
308
+ * @param {number[]} xTable
309
+ * @param {number[]} yTable
310
+ * @param {number} yStride
311
+ * @param {number} inputOrder
312
+ * @returns {number}
313
+ *
314
+ * @private
315
+ */
281
316
  function fillCoefficientList(
282
317
  coefficients,
283
318
  zIndices,
@@ -338,4 +373,5 @@ function fillCoefficientList(
338
373
 
339
374
  return highestNonZero;
340
375
  }
376
+
341
377
  export default HermitePolynomialApproximation;
@@ -52,6 +52,7 @@ class InterpolationAlgorithm {
52
52
  * if this function remains undefined on implementing objects, interpolateOrderZero will be used instead.
53
53
  *
54
54
  * @function
55
+ * @optional
55
56
  * @param {number} x The independent variable for which the dependent variables will be interpolated.
56
57
  * @param {number[]} xTable The array of independent variables to use to interpolate. The values
57
58
  * in this array must be in increasing order and the same value must not occur twice in the array.
@@ -4,7 +4,7 @@ import Resource from "./Resource.js";
4
4
 
5
5
  let defaultTokenCredit;
6
6
  const defaultAccessToken =
7
- "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIzNzRjZTkzNC05M2UwLTRlNDItOWU0My1hYjk5YjFiNTNhYTMiLCJpZCI6MjU5LCJzdWIiOiJDZXNpdW1KUyIsImlzcyI6Imh0dHBzOi8vYXBpLmNlc2l1bS5jb20iLCJhdWQiOiIxLjE0MyBSZWxlYXNlIC0gRGVsZXRlIG9uIFNlcHRlbWJlciAxLCAyMDI2IiwiaWF0IjoxNzgyMzY4NzY4fQ.kDcFqK7jTTloOcBbwb-epSQGd1Lu12_hRuqk1XRE_H8";
7
+ "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJkYjZkM2MyOS1mODRiLTRlMGQtYTYzMy0xNWYyYmNiZjE1NGUiLCJpZCI6MjU5LCJzdWIiOiJDZXNpdW1KUyIsImlzcyI6Imh0dHBzOi8vYXBpLmNlc2l1bS5jb20iLCJhdWQiOiIxLjE0NCBSZWxlYXNlIC0gRGVsZXRlIG9uIE9jdG9iZXIgMSwgMjAyNiIsImlhdCI6MTc4NDk1ODg5MH0.x3Ra1-m0GEx7jwv8wnz-bAt4SSG3_ZCC9zU_MwzfjA4";
8
8
  /**
9
9
  * Default settings for accessing the Cesium ion API.
10
10
  *
@@ -106,7 +106,7 @@ function convertTaiToUtc(julianDate, result) {
106
106
  //we're converting, so we subtract one to get the correct LeapSecond instance.
107
107
  return JulianDate.addSeconds(
108
108
  julianDate,
109
- -leapSeconds[--index].offset,
109
+ -leapSeconds[index - 1].offset,
110
110
  result,
111
111
  );
112
112
  }