@onerjs/core 8.42.7 → 8.42.9

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 (327) hide show
  1. package/Animations/animatable.core.js +1 -1
  2. package/Animations/animatable.core.js.map +1 -1
  3. package/Animations/animatorAvatar.js +2 -2
  4. package/Animations/animatorAvatar.js.map +1 -1
  5. package/Animations/runtimeAnimation.js +1 -1
  6. package/Animations/runtimeAnimation.js.map +1 -1
  7. package/Audio/audioSceneComponent.js +1 -2
  8. package/Audio/audioSceneComponent.js.map +1 -1
  9. package/AudioV2/audioUtils.d.ts +23 -0
  10. package/AudioV2/audioUtils.js +37 -0
  11. package/AudioV2/audioUtils.js.map +1 -1
  12. package/AudioV2/webAudio/subNodes/webAudioBusAndSoundSubGraph.js +3 -3
  13. package/AudioV2/webAudio/subNodes/webAudioBusAndSoundSubGraph.js.map +1 -1
  14. package/AudioV2/webAudio/webAudioEngine.js +1 -1
  15. package/AudioV2/webAudio/webAudioEngine.js.map +1 -1
  16. package/AudioV2/webAudio/webAudioStaticSound.js +3 -2
  17. package/AudioV2/webAudio/webAudioStaticSound.js.map +1 -1
  18. package/AudioV2/webAudio/webAudioStreamingSound.js +10 -3
  19. package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
  20. package/Behaviors/Meshes/followBehavior.js +1 -1
  21. package/Behaviors/Meshes/followBehavior.js.map +1 -1
  22. package/Behaviors/Meshes/pointerDragBehavior.js +1 -1
  23. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  24. package/Bones/boneLookController.js +1 -1
  25. package/Bones/boneLookController.js.map +1 -1
  26. package/Buffers/buffer.js +1 -1
  27. package/Buffers/buffer.js.map +1 -1
  28. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +2 -2
  29. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
  30. package/Cameras/camera.js +2 -2
  31. package/Cameras/camera.js.map +1 -1
  32. package/Engines/AbstractEngine/abstractEngine.renderPass.js +1 -0
  33. package/Engines/AbstractEngine/abstractEngine.renderPass.js.map +1 -1
  34. package/Engines/Extensions/engine.query.js +1 -1
  35. package/Engines/Extensions/engine.query.js.map +1 -1
  36. package/Engines/Processors/shaderProcessor.js +2 -3
  37. package/Engines/Processors/shaderProcessor.js.map +1 -1
  38. package/Engines/WebGL/webGLRenderTargetWrapper.js +1 -1
  39. package/Engines/WebGL/webGLRenderTargetWrapper.js.map +1 -1
  40. package/Engines/WebGPU/Extensions/engine.debugging.d.ts +87 -0
  41. package/Engines/WebGPU/Extensions/engine.debugging.js +123 -31
  42. package/Engines/WebGPU/Extensions/engine.debugging.js.map +1 -1
  43. package/Engines/WebGPU/webgpuBufferManager.js +1 -1
  44. package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
  45. package/Engines/WebGPU/webgpuShaderProcessor.js +1 -1
  46. package/Engines/WebGPU/webgpuShaderProcessor.js.map +1 -1
  47. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +1 -1
  48. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
  49. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +1 -1
  50. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  51. package/Engines/WebGPU/webgpuTextureManager.js +20 -6
  52. package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
  53. package/Engines/abstractEngine.js +2 -2
  54. package/Engines/abstractEngine.js.map +1 -1
  55. package/Engines/engine.common.js +2 -2
  56. package/Engines/engine.common.js.map +1 -1
  57. package/Engines/engine.js +0 -1
  58. package/Engines/engine.js.map +1 -1
  59. package/Engines/thinEngine.functions.js +1 -1
  60. package/Engines/thinEngine.functions.js.map +1 -1
  61. package/Engines/thinEngine.js +4 -5
  62. package/Engines/thinEngine.js.map +1 -1
  63. package/Engines/thinNativeEngine.js +2 -5
  64. package/Engines/thinNativeEngine.js.map +1 -1
  65. package/Engines/thinWebGPUEngine.d.ts +6 -4
  66. package/Engines/thinWebGPUEngine.js +49 -25
  67. package/Engines/thinWebGPUEngine.js.map +1 -1
  68. package/Engines/webgpuEngine.d.ts +2 -1
  69. package/Engines/webgpuEngine.js +18 -16
  70. package/Engines/webgpuEngine.js.map +1 -1
  71. package/FlowGraph/flowGraph.d.ts +1 -0
  72. package/FlowGraph/flowGraph.js.map +1 -1
  73. package/FlowGraph/flowGraphBlock.d.ts +1 -0
  74. package/FlowGraph/flowGraphBlock.js.map +1 -1
  75. package/FlowGraph/flowGraphContext.d.ts +1 -0
  76. package/FlowGraph/flowGraphContext.js.map +1 -1
  77. package/FlowGraph/flowGraphCoordinator.d.ts +1 -0
  78. package/FlowGraph/flowGraphCoordinator.js.map +1 -1
  79. package/FrameGraph/Node/nodeRenderGraph.d.ts +12 -1
  80. package/FrameGraph/Node/nodeRenderGraph.js +36 -2
  81. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
  82. package/FrameGraph/Tasks/Layers/baseLayerTask.js +1 -1
  83. package/FrameGraph/Tasks/Layers/baseLayerTask.js.map +1 -1
  84. package/FrameGraph/Tasks/PostProcesses/ssao2RenderingPipelineTask.js +3 -0
  85. package/FrameGraph/Tasks/PostProcesses/ssao2RenderingPipelineTask.js.map +1 -1
  86. package/FrameGraph/Tasks/PostProcesses/ssrRenderingPipelineTask.js +3 -0
  87. package/FrameGraph/Tasks/PostProcesses/ssrRenderingPipelineTask.js.map +1 -1
  88. package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.d.ts +3 -1
  89. package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.js +14 -0
  90. package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.js.map +1 -1
  91. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.d.ts +2 -2
  92. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js +20 -14
  93. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js.map +1 -1
  94. package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.d.ts +3 -2
  95. package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.js +38 -14
  96. package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.js.map +1 -1
  97. package/Layers/glowLayer.js +1 -1
  98. package/Layers/glowLayer.js.map +1 -1
  99. package/Layers/highlightLayer.js +1 -1
  100. package/Layers/highlightLayer.js.map +1 -1
  101. package/Layers/selectionOutlineLayer.js +8 -0
  102. package/Layers/selectionOutlineLayer.js.map +1 -1
  103. package/Layers/thinSelectionOutlineLayer.js +15 -0
  104. package/Layers/thinSelectionOutlineLayer.js.map +1 -1
  105. package/Lights/Shadows/cascadedShadowGenerator.js +0 -1
  106. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  107. package/Lights/Shadows/shadowGenerator.d.ts +28 -1
  108. package/Lights/Shadows/shadowGenerator.js +77 -11
  109. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  110. package/Lights/lightingVolume.d.ts +1 -0
  111. package/Lights/lightingVolume.js +10 -2
  112. package/Lights/lightingVolume.js.map +1 -1
  113. package/Loading/sceneLoader.js +1 -1
  114. package/Loading/sceneLoader.js.map +1 -1
  115. package/Materials/Node/Blocks/Dual/fogBlock.js +1 -1
  116. package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
  117. package/Materials/Node/Blocks/Dual/imageSourceBlock.js +1 -1
  118. package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
  119. package/Materials/Node/Blocks/PBR/sheenBlock.js +1 -2
  120. package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
  121. package/Materials/Node/Blocks/cloudBlock.js +1 -1
  122. package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
  123. package/Materials/Node/Blocks/curveBlock.js +2 -3
  124. package/Materials/Node/Blocks/curveBlock.js.map +1 -1
  125. package/Materials/Node/nodeMaterial.js +1 -2
  126. package/Materials/Node/nodeMaterial.js.map +1 -1
  127. package/Materials/PBR/openpbrMaterial.js +3 -5
  128. package/Materials/PBR/openpbrMaterial.js.map +1 -1
  129. package/Materials/PBR/pbrBaseMaterial.js +2 -3
  130. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  131. package/Materials/Textures/Procedurals/proceduralTexture.js +0 -1
  132. package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
  133. package/Materials/Textures/cubeTexture.js +1 -1
  134. package/Materials/Textures/cubeTexture.js.map +1 -1
  135. package/Materials/Textures/htmlElementTexture.js +2 -2
  136. package/Materials/Textures/htmlElementTexture.js.map +1 -1
  137. package/Materials/Textures/multiRenderTarget.js +1 -1
  138. package/Materials/Textures/multiRenderTarget.js.map +1 -1
  139. package/Materials/Textures/renderTargetTexture.js +13 -2
  140. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  141. package/Materials/effect.js +2 -1
  142. package/Materials/effect.js.map +1 -1
  143. package/Materials/materialHelper.functions.js +1 -1
  144. package/Materials/materialHelper.functions.js.map +1 -1
  145. package/Materials/multiMaterial.js +1 -1
  146. package/Materials/multiMaterial.js.map +1 -1
  147. package/Materials/standardMaterial.js +1 -2
  148. package/Materials/standardMaterial.js.map +1 -1
  149. package/Maths/math.geospatial.d.ts +17 -2
  150. package/Maths/math.geospatial.functions.d.ts +16 -2
  151. package/Maths/math.geospatial.functions.js +37 -4
  152. package/Maths/math.geospatial.functions.js.map +1 -1
  153. package/Maths/math.geospatial.js.map +1 -1
  154. package/Maths/math.path.js +1 -1
  155. package/Maths/math.path.js.map +1 -1
  156. package/Maths/math.scalar.functions.js +3 -3
  157. package/Maths/math.scalar.functions.js.map +1 -1
  158. package/Maths/math.vector.js +1 -1
  159. package/Maths/math.vector.js.map +1 -1
  160. package/Meshes/Builders/boxBuilder.js +1 -2
  161. package/Meshes/Builders/boxBuilder.js.map +1 -1
  162. package/Meshes/Builders/cylinderBuilder.js +2 -2
  163. package/Meshes/Builders/cylinderBuilder.js.map +1 -1
  164. package/Meshes/Builders/decalBuilder.js +1 -2
  165. package/Meshes/Builders/decalBuilder.js.map +1 -1
  166. package/Meshes/Builders/latheBuilder.js +2 -2
  167. package/Meshes/Builders/latheBuilder.js.map +1 -1
  168. package/Meshes/Builders/linesBuilder.js +11 -15
  169. package/Meshes/Builders/linesBuilder.js.map +1 -1
  170. package/Meshes/Builders/polygonBuilder.js +6 -6
  171. package/Meshes/Builders/polygonBuilder.js.map +1 -1
  172. package/Meshes/Builders/polyhedronBuilder.js +2 -2
  173. package/Meshes/Builders/polyhedronBuilder.js.map +1 -1
  174. package/Meshes/Builders/ribbonBuilder.js +6 -6
  175. package/Meshes/Builders/ribbonBuilder.js.map +1 -1
  176. package/Meshes/Builders/shapeBuilder.js +2 -3
  177. package/Meshes/Builders/shapeBuilder.js.map +1 -1
  178. package/Meshes/Builders/tiledBoxBuilder.js +1 -1
  179. package/Meshes/Builders/tiledBoxBuilder.js.map +1 -1
  180. package/Meshes/Builders/tiledPlaneBuilder.js +1 -1
  181. package/Meshes/Builders/tiledPlaneBuilder.js.map +1 -1
  182. package/Meshes/GreasedLine/greasedLineMesh.js +1 -2
  183. package/Meshes/GreasedLine/greasedLineMesh.js.map +1 -1
  184. package/Meshes/GreasedLine/greasedLineRibbonMesh.js +1 -1
  185. package/Meshes/GreasedLine/greasedLineRibbonMesh.js.map +1 -1
  186. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.js +1 -1
  187. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.js.map +1 -1
  188. package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.js +1 -1
  189. package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.js.map +1 -1
  190. package/Meshes/Node/Blocks/extrudeGeometryBlock.d.ts +61 -0
  191. package/Meshes/Node/Blocks/extrudeGeometryBlock.js +297 -0
  192. package/Meshes/Node/Blocks/extrudeGeometryBlock.js.map +1 -0
  193. package/Meshes/Node/Blocks/mappingBlock.js +1 -1
  194. package/Meshes/Node/Blocks/mappingBlock.js.map +1 -1
  195. package/Meshes/Node/index.d.ts +1 -0
  196. package/Meshes/Node/index.js +1 -0
  197. package/Meshes/Node/index.js.map +1 -1
  198. package/Meshes/abstractMesh.d.ts +4 -0
  199. package/Meshes/abstractMesh.js +14 -10
  200. package/Meshes/abstractMesh.js.map +1 -1
  201. package/Meshes/csg.js +1 -1
  202. package/Meshes/csg.js.map +1 -1
  203. package/Meshes/csg2.js +1 -1
  204. package/Meshes/csg2.js.map +1 -1
  205. package/Meshes/geodesicMesh.js +11 -13
  206. package/Meshes/geodesicMesh.js.map +1 -1
  207. package/Meshes/geometry.js +2 -2
  208. package/Meshes/geometry.js.map +1 -1
  209. package/Meshes/groundMesh.js +7 -7
  210. package/Meshes/groundMesh.js.map +1 -1
  211. package/Meshes/mesh.d.ts +2 -0
  212. package/Meshes/mesh.js +21 -7
  213. package/Meshes/mesh.js.map +1 -1
  214. package/Meshes/mesh.vertexData.js +22 -22
  215. package/Meshes/mesh.vertexData.js.map +1 -1
  216. package/Meshes/meshSimplification.js +1 -1
  217. package/Meshes/meshSimplification.js.map +1 -1
  218. package/Meshes/polygonMesh.js +1 -1
  219. package/Meshes/polygonMesh.js.map +1 -1
  220. package/Meshes/trailMesh.js +1 -1
  221. package/Meshes/trailMesh.js.map +1 -1
  222. package/Misc/HighDynamicRange/hdr.js +4 -6
  223. package/Misc/HighDynamicRange/hdr.js.map +1 -1
  224. package/Misc/HighDynamicRange/panoramaToCubemap.js +1 -1
  225. package/Misc/HighDynamicRange/panoramaToCubemap.js.map +1 -1
  226. package/Misc/basisWorker.js +1 -1
  227. package/Misc/basisWorker.js.map +1 -1
  228. package/Misc/environmentTextureTools.js +1 -1
  229. package/Misc/environmentTextureTools.js.map +1 -1
  230. package/Misc/meshExploder.js +1 -2
  231. package/Misc/meshExploder.js.map +1 -1
  232. package/Misc/tga.js +2 -2
  233. package/Misc/tga.js.map +1 -1
  234. package/Misc/timer.js +4 -2
  235. package/Misc/timer.js.map +1 -1
  236. package/Misc/tools.d.ts +7 -0
  237. package/Misc/tools.js +25 -7
  238. package/Misc/tools.js.map +1 -1
  239. package/Misc/webRequest.d.ts +34 -3
  240. package/Misc/webRequest.js +107 -24
  241. package/Misc/webRequest.js.map +1 -1
  242. package/Morph/morphTargetManager.js +1 -1
  243. package/Morph/morphTargetManager.js.map +1 -1
  244. package/Particles/Node/Blocks/Update/updateNoiseBlock.js +1 -1
  245. package/Particles/Node/Blocks/Update/updateNoiseBlock.js.map +1 -1
  246. package/Particles/Node/Blocks/particleSourceTextureBlock.d.ts +11 -1
  247. package/Particles/Node/Blocks/particleSourceTextureBlock.js +25 -11
  248. package/Particles/Node/Blocks/particleSourceTextureBlock.js.map +1 -1
  249. package/Particles/Node/nodeParticleSystemSet.helper.js +3 -3
  250. package/Particles/Node/nodeParticleSystemSet.helper.js.map +1 -1
  251. package/Particles/Node/nodeParticleSystemSet.js +1 -1
  252. package/Particles/Node/nodeParticleSystemSet.js.map +1 -1
  253. package/Particles/computeShaderParticleSystem.js +2 -0
  254. package/Particles/computeShaderParticleSystem.js.map +1 -1
  255. package/Particles/gpuParticleSystem.d.ts +14 -0
  256. package/Particles/gpuParticleSystem.js +94 -12
  257. package/Particles/gpuParticleSystem.js.map +1 -1
  258. package/Particles/particleSystem.js +4 -1
  259. package/Particles/particleSystem.js.map +1 -1
  260. package/Particles/pointsCloudSystem.js +46 -47
  261. package/Particles/pointsCloudSystem.js.map +1 -1
  262. package/Particles/solidParticleSystem.js +5 -6
  263. package/Particles/solidParticleSystem.js.map +1 -1
  264. package/Particles/thinParticleSystem.js +3 -4
  265. package/Particles/thinParticleSystem.js.map +1 -1
  266. package/Particles/webgl2ParticleSystem.js +2 -1
  267. package/Particles/webgl2ParticleSystem.js.map +1 -1
  268. package/Physics/v1/Plugins/ammoJSPlugin.js +0 -8
  269. package/Physics/v1/Plugins/ammoJSPlugin.js.map +1 -1
  270. package/Physics/v2/characterController.js +4 -8
  271. package/Physics/v2/characterController.js.map +1 -1
  272. package/Physics/v2/ragdoll.js +1 -2
  273. package/Physics/v2/ragdoll.js.map +1 -1
  274. package/PostProcesses/postProcess.js +3 -3
  275. package/PostProcesses/postProcess.js.map +1 -1
  276. package/PostProcesses/thinDepthOfFieldEffect.js +2 -2
  277. package/PostProcesses/thinDepthOfFieldEffect.js.map +1 -1
  278. package/Probes/reflectionProbe.js +0 -1
  279. package/Probes/reflectionProbe.js.map +1 -1
  280. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js +0 -5
  281. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
  282. package/Rendering/depthRenderer.js +0 -11
  283. package/Rendering/depthRenderer.js.map +1 -1
  284. package/Rendering/depthRendererSceneComponent.js +1 -1
  285. package/Rendering/depthRendererSceneComponent.js.map +1 -1
  286. package/Rendering/geometryBufferRenderer.js +0 -1
  287. package/Rendering/geometryBufferRenderer.js.map +1 -1
  288. package/Rendering/objectRenderer.js +7 -5
  289. package/Rendering/objectRenderer.js.map +1 -1
  290. package/Rendering/thinDepthPeelingRenderer.js +1 -1
  291. package/Rendering/thinDepthPeelingRenderer.js.map +1 -1
  292. package/Rendering/utilityLayerRenderer.js +1 -1
  293. package/Rendering/utilityLayerRenderer.js.map +1 -1
  294. package/Shaders/ShadersInclude/screenSpaceRayTrace.js +18 -8
  295. package/Shaders/ShadersInclude/screenSpaceRayTrace.js.map +1 -1
  296. package/Shaders/gpuRenderParticles.vertex.js +4 -0
  297. package/Shaders/gpuRenderParticles.vertex.js.map +1 -1
  298. package/Shaders/gpuUpdateParticles.vertex.js +15 -3
  299. package/Shaders/gpuUpdateParticles.vertex.js.map +1 -1
  300. package/ShadersWGSL/ShadersInclude/screenSpaceRayTrace.js +18 -7
  301. package/ShadersWGSL/ShadersInclude/screenSpaceRayTrace.js.map +1 -1
  302. package/ShadersWGSL/gpuUpdateParticles.compute.js +16 -1
  303. package/ShadersWGSL/gpuUpdateParticles.compute.js.map +1 -1
  304. package/ShadersWGSL/lightingVolume.compute.js +1 -1
  305. package/ShadersWGSL/lightingVolume.compute.js.map +1 -1
  306. package/Sprites/spriteManager.js +4 -4
  307. package/Sprites/spriteManager.js.map +1 -1
  308. package/XR/features/WebXRAnchorSystem.js +2 -2
  309. package/XR/features/WebXRAnchorSystem.js.map +1 -1
  310. package/XR/features/WebXRHandTracking.js +1 -1
  311. package/XR/features/WebXRHandTracking.js.map +1 -1
  312. package/XR/features/WebXRNearInteraction.js +1 -1
  313. package/XR/features/WebXRNearInteraction.js.map +1 -1
  314. package/XR/motionController/webXRMicrosoftMixedRealityController.js +1 -1
  315. package/XR/motionController/webXRMicrosoftMixedRealityController.js.map +1 -1
  316. package/XR/motionController/webXROculusTouchMotionController.js +1 -1
  317. package/XR/motionController/webXROculusTouchMotionController.js.map +1 -1
  318. package/XR/webXRFeaturesManager.js +1 -1
  319. package/XR/webXRFeaturesManager.js.map +1 -1
  320. package/assetContainer.js +1 -1
  321. package/assetContainer.js.map +1 -1
  322. package/package.json +1 -1
  323. package/scene.d.ts +16 -0
  324. package/scene.js +28 -0
  325. package/scene.js.map +1 -1
  326. package/sceneComponent.js +1 -1
  327. package/sceneComponent.js.map +1 -1
@@ -5,8 +5,23 @@ export interface ILatLonLike {
5
5
  /** Longitude in radians. */
6
6
  lon: number;
7
7
  }
8
- /** Latitude and longitude in radians, and altitude in meters. */
8
+ /** Latitude and longitude in radians, and altitude, typically meters. */
9
9
  export interface ILatLonAltLike extends ILatLonLike {
10
- /** The height above the surface in meters. */
10
+ /** The height above the surface, typically meters. */
11
11
  alt: number;
12
12
  }
13
+ /**
14
+ * A reference ellipsoid used for geospatial functions.
15
+ */
16
+ export interface IEllipsoidLike {
17
+ /** The larger radius for the ellipsoid. */
18
+ semiMajorAxis: number;
19
+ /** The smaller radius for the ellipsoid. */
20
+ semiMinorAxis: number;
21
+ /** The flattening for the ellipsoid. Zero for a sphere. */
22
+ flattening: number;
23
+ /** The first eccentricity, squared. */
24
+ firstEccentricitySquared: number;
25
+ /** The second eccentricity, squared. */
26
+ secondEccentricitySquared: number;
27
+ }
@@ -1,6 +1,11 @@
1
1
  import type { DeepImmutable } from "../types.js";
2
- import type { ILatLonLike } from "./math.geospatial.js";
2
+ import type { IEllipsoidLike, ILatLonAltLike, ILatLonLike } from "./math.geospatial.js";
3
3
  import type { IVector3Like } from "./math.like.js";
4
+ /**
5
+ * The WGS84 reference ellipsoid used for Earth-related geospatial functions.
6
+ * Derived from the semi-major axis (meters) and the inverse flattening.
7
+ */
8
+ export declare const Wgs84Ellipsoid: DeepImmutable<IEllipsoidLike>;
4
9
  /**
5
10
  * Converts the latitude and longitude specified in degrees to an {@link ILatLonLike} in radians.
6
11
  * @param lat - The latitude in degrees
@@ -11,9 +16,18 @@ import type { IVector3Like } from "./math.like.js";
11
16
  export declare function LatLonFromDegreesToRef<T extends ILatLonLike>(lat: number, lon: number, result: T): T;
12
17
  /**
13
18
  * Computes the normal (up direction) in ECEF (Earth-Centered, Earth-Fixed) coordinates from the specified latitude and longitude in radians.
14
- * Will clamp the latitude to -PI/2 to PI/2.
19
+ * For the calculation, latitude is clamped to -PI/2 to PI/2.
15
20
  * @param latLon - The latitude and longitude in radians
16
21
  * @param result - The resulting normal
17
22
  * @returns The resulting normal
18
23
  */
19
24
  export declare function LatLonToNormalToRef<T extends IVector3Like>(latLon: DeepImmutable<ILatLonLike>, result: T): T;
25
+ /**
26
+ * Converts latitude, longitude, and altitude to an ECEF (Earth-Centered, Earth-Fixed) position using the specified ellipsoid.
27
+ * For the calculation, latitude is clamped to -PI/2 to PI/2.
28
+ * @param latLonAlt - The latitude and longitude in radians, and the altitude relative to the reference ellipsoid's surface.
29
+ * @param ellipsoid - Parameters for a reference ellipsoid (e.g., the {@link Wgs84Ellipsoid}).
30
+ * @param result - The resulting ECEF position
31
+ * @returns The resulting ECEF position
32
+ */
33
+ export declare function EcefFromLatLonAltToRef<T extends IVector3Like>(latLonAlt: DeepImmutable<ILatLonAltLike>, ellipsoid: DeepImmutable<Pick<IEllipsoidLike, "semiMajorAxis" | "firstEccentricitySquared">>, result: T): T;
@@ -1,5 +1,19 @@
1
1
  import { Clamp } from "./math.scalar.functions.js";
2
2
  import { Vector3FromFloatsToRef } from "./math.vector.functions.js";
3
+ const HalfPi = Math.PI / 2;
4
+ const DegreesToRadians = Math.PI / 180;
5
+ const EllipsoidFromSemiMajorAxisAndInverseFlattening = (semiMajorAxis, inverseFlattening) => {
6
+ const flattening = 1 / inverseFlattening;
7
+ const semiMinorAxis = semiMajorAxis * (1 - flattening);
8
+ const firstEccentricitySquared = 2 * flattening - flattening * flattening;
9
+ const secondEccentricitySquared = firstEccentricitySquared / (1 - firstEccentricitySquared);
10
+ return { semiMajorAxis, semiMinorAxis, flattening, firstEccentricitySquared, secondEccentricitySquared };
11
+ };
12
+ /**
13
+ * The WGS84 reference ellipsoid used for Earth-related geospatial functions.
14
+ * Derived from the semi-major axis (meters) and the inverse flattening.
15
+ */
16
+ export const Wgs84Ellipsoid = Object.freeze(EllipsoidFromSemiMajorAxisAndInverseFlattening(6378137.0, 298.257223563));
3
17
  /**
4
18
  * Converts the latitude and longitude specified in degrees to an {@link ILatLonLike} in radians.
5
19
  * @param lat - The latitude in degrees
@@ -8,20 +22,39 @@ import { Vector3FromFloatsToRef } from "./math.vector.functions.js";
8
22
  * @returns The resulting {@link ILatLonLike} in radians
9
23
  */
10
24
  export function LatLonFromDegreesToRef(lat, lon, result) {
11
- result.lat = (lat * Math.PI) / 180;
12
- result.lon = (lon * Math.PI) / 180;
25
+ result.lat = lat * DegreesToRadians;
26
+ result.lon = lon * DegreesToRadians;
13
27
  return result;
14
28
  }
15
29
  /**
16
30
  * Computes the normal (up direction) in ECEF (Earth-Centered, Earth-Fixed) coordinates from the specified latitude and longitude in radians.
17
- * Will clamp the latitude to -PI/2 to PI/2.
31
+ * For the calculation, latitude is clamped to -PI/2 to PI/2.
18
32
  * @param latLon - The latitude and longitude in radians
19
33
  * @param result - The resulting normal
20
34
  * @returns The resulting normal
21
35
  */
22
36
  export function LatLonToNormalToRef(latLon, result) {
23
- const lat = Clamp(latLon.lat, -Math.PI / 2, Math.PI / 2);
37
+ const lat = Clamp(latLon.lat, -HalfPi, HalfPi);
24
38
  const cosLat = Math.cos(lat);
25
39
  return Vector3FromFloatsToRef(cosLat * Math.cos(latLon.lon), cosLat * Math.sin(latLon.lon), Math.sin(lat), result);
26
40
  }
41
+ /**
42
+ * Converts latitude, longitude, and altitude to an ECEF (Earth-Centered, Earth-Fixed) position using the specified ellipsoid.
43
+ * For the calculation, latitude is clamped to -PI/2 to PI/2.
44
+ * @param latLonAlt - The latitude and longitude in radians, and the altitude relative to the reference ellipsoid's surface.
45
+ * @param ellipsoid - Parameters for a reference ellipsoid (e.g., the {@link Wgs84Ellipsoid}).
46
+ * @param result - The resulting ECEF position
47
+ * @returns The resulting ECEF position
48
+ */
49
+ export function EcefFromLatLonAltToRef(latLonAlt, ellipsoid, result) {
50
+ const lat = Clamp(latLonAlt.lat, -HalfPi, HalfPi);
51
+ const { lon, alt } = latLonAlt;
52
+ const { semiMajorAxis, firstEccentricitySquared } = ellipsoid;
53
+ const sinLat = Math.sin(lat);
54
+ // eslint-disable-next-line @typescript-eslint/naming-convention
55
+ const N = semiMajorAxis / Math.sqrt(1 - firstEccentricitySquared * sinLat * sinLat);
56
+ // eslint-disable-next-line @typescript-eslint/naming-convention
57
+ const NPlusAltTimesCosLat = (N + alt) * Math.cos(lat);
58
+ return Vector3FromFloatsToRef(NPlusAltTimesCosLat * Math.cos(lon), NPlusAltTimesCosLat * Math.sin(lon), (N * (1 - firstEccentricitySquared) + alt) * sinLat, result);
59
+ }
27
60
  //# sourceMappingURL=math.geospatial.functions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"math.geospatial.functions.js","sourceRoot":"","sources":["../../../../dev/core/src/Maths/math.geospatial.functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAIhD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAwB,GAAW,EAAE,GAAW,EAAE,MAAS;IAC7F,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IACnC,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IACnC,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAyB,MAAkC,EAAE,MAAS;IACrG,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO,sBAAsB,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;AACvH,CAAC","sourcesContent":["import { Clamp } from \"./math.scalar.functions\";\r\nimport type { DeepImmutable } from \"../types\";\r\nimport type { ILatLonLike } from \"./math.geospatial\";\r\nimport type { IVector3Like } from \"./math.like\";\r\nimport { Vector3FromFloatsToRef } from \"./math.vector.functions\";\r\n\r\n/**\r\n * Converts the latitude and longitude specified in degrees to an {@link ILatLonLike} in radians.\r\n * @param lat - The latitude in degrees\r\n * @param lon - The longitude in degrees\r\n * @param result - The resulting {@link ILatLonLike} in radians\r\n * @returns The resulting {@link ILatLonLike} in radians\r\n */\r\nexport function LatLonFromDegreesToRef<T extends ILatLonLike>(lat: number, lon: number, result: T): T {\r\n result.lat = (lat * Math.PI) / 180;\r\n result.lon = (lon * Math.PI) / 180;\r\n return result;\r\n}\r\n\r\n/**\r\n * Computes the normal (up direction) in ECEF (Earth-Centered, Earth-Fixed) coordinates from the specified latitude and longitude in radians.\r\n * Will clamp the latitude to -PI/2 to PI/2.\r\n * @param latLon - The latitude and longitude in radians\r\n * @param result - The resulting normal\r\n * @returns The resulting normal\r\n */\r\nexport function LatLonToNormalToRef<T extends IVector3Like>(latLon: DeepImmutable<ILatLonLike>, result: T): T {\r\n const lat = Clamp(latLon.lat, -Math.PI / 2, Math.PI / 2);\r\n const cosLat = Math.cos(lat);\r\n return Vector3FromFloatsToRef(cosLat * Math.cos(latLon.lon), cosLat * Math.sin(latLon.lon), Math.sin(lat), result);\r\n}\r\n"]}
1
+ {"version":3,"file":"math.geospatial.functions.js","sourceRoot":"","sources":["../../../../dev/core/src/Maths/math.geospatial.functions.ts"],"names":[],"mappings":"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","sourcesContent":["import { Clamp } from \"./math.scalar.functions\";\r\nimport type { DeepImmutable } from \"../types\";\r\nimport type { IEllipsoidLike, ILatLonAltLike, ILatLonLike } from \"./math.geospatial\";\r\nimport type { IVector3Like } from \"./math.like\";\r\nimport { Vector3FromFloatsToRef } from \"./math.vector.functions\";\r\n\r\nconst HalfPi = Math.PI / 2;\r\nconst DegreesToRadians = Math.PI / 180;\r\n\r\nconst EllipsoidFromSemiMajorAxisAndInverseFlattening = (semiMajorAxis: number, inverseFlattening: number): IEllipsoidLike => {\r\n const flattening = 1 / inverseFlattening;\r\n const semiMinorAxis = semiMajorAxis * (1 - flattening);\r\n const firstEccentricitySquared = 2 * flattening - flattening * flattening;\r\n const secondEccentricitySquared = firstEccentricitySquared / (1 - firstEccentricitySquared);\r\n return { semiMajorAxis, semiMinorAxis, flattening, firstEccentricitySquared, secondEccentricitySquared };\r\n};\r\n\r\n/**\r\n * The WGS84 reference ellipsoid used for Earth-related geospatial functions.\r\n * Derived from the semi-major axis (meters) and the inverse flattening.\r\n */\r\nexport const Wgs84Ellipsoid: DeepImmutable<IEllipsoidLike> = Object.freeze(EllipsoidFromSemiMajorAxisAndInverseFlattening(6378137.0, 298.257223563));\r\n\r\n/**\r\n * Converts the latitude and longitude specified in degrees to an {@link ILatLonLike} in radians.\r\n * @param lat - The latitude in degrees\r\n * @param lon - The longitude in degrees\r\n * @param result - The resulting {@link ILatLonLike} in radians\r\n * @returns The resulting {@link ILatLonLike} in radians\r\n */\r\nexport function LatLonFromDegreesToRef<T extends ILatLonLike>(lat: number, lon: number, result: T): T {\r\n result.lat = lat * DegreesToRadians;\r\n result.lon = lon * DegreesToRadians;\r\n return result;\r\n}\r\n\r\n/**\r\n * Computes the normal (up direction) in ECEF (Earth-Centered, Earth-Fixed) coordinates from the specified latitude and longitude in radians.\r\n * For the calculation, latitude is clamped to -PI/2 to PI/2.\r\n * @param latLon - The latitude and longitude in radians\r\n * @param result - The resulting normal\r\n * @returns The resulting normal\r\n */\r\nexport function LatLonToNormalToRef<T extends IVector3Like>(latLon: DeepImmutable<ILatLonLike>, result: T): T {\r\n const lat = Clamp(latLon.lat, -HalfPi, HalfPi);\r\n const cosLat = Math.cos(lat);\r\n return Vector3FromFloatsToRef(cosLat * Math.cos(latLon.lon), cosLat * Math.sin(latLon.lon), Math.sin(lat), result);\r\n}\r\n\r\n/**\r\n * Converts latitude, longitude, and altitude to an ECEF (Earth-Centered, Earth-Fixed) position using the specified ellipsoid.\r\n * For the calculation, latitude is clamped to -PI/2 to PI/2.\r\n * @param latLonAlt - The latitude and longitude in radians, and the altitude relative to the reference ellipsoid's surface.\r\n * @param ellipsoid - Parameters for a reference ellipsoid (e.g., the {@link Wgs84Ellipsoid}).\r\n * @param result - The resulting ECEF position\r\n * @returns The resulting ECEF position\r\n */\r\nexport function EcefFromLatLonAltToRef<T extends IVector3Like>(\r\n latLonAlt: DeepImmutable<ILatLonAltLike>,\r\n ellipsoid: DeepImmutable<Pick<IEllipsoidLike, \"semiMajorAxis\" | \"firstEccentricitySquared\">>,\r\n result: T\r\n): T {\r\n const lat = Clamp(latLonAlt.lat, -HalfPi, HalfPi);\r\n const { lon, alt } = latLonAlt;\r\n const { semiMajorAxis, firstEccentricitySquared } = ellipsoid;\r\n const sinLat = Math.sin(lat);\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n const N = semiMajorAxis / Math.sqrt(1 - firstEccentricitySquared * sinLat * sinLat);\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n const NPlusAltTimesCosLat = (N + alt) * Math.cos(lat);\r\n return Vector3FromFloatsToRef(NPlusAltTimesCosLat * Math.cos(lon), NPlusAltTimesCosLat * Math.sin(lon), (N * (1 - firstEccentricitySquared) + alt) * sinLat, result);\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"math.geospatial.js","sourceRoot":"","sources":["../../../../dev/core/src/Maths/math.geospatial.ts"],"names":[],"mappings":"","sourcesContent":["/** Latitude and longitude in radians. */\r\nexport interface ILatLonLike {\r\n /** Latitude in radians. */\r\n lat: number;\r\n /** Longitude in radians. */\r\n lon: number;\r\n}\r\n\r\n/** Latitude and longitude in radians, and altitude in meters. */\r\nexport interface ILatLonAltLike extends ILatLonLike {\r\n /** The height above the surface in meters. */\r\n alt: number;\r\n}\r\n"]}
1
+ {"version":3,"file":"math.geospatial.js","sourceRoot":"","sources":["../../../../dev/core/src/Maths/math.geospatial.ts"],"names":[],"mappings":"","sourcesContent":["/** Latitude and longitude in radians. */\r\nexport interface ILatLonLike {\r\n /** Latitude in radians. */\r\n lat: number;\r\n /** Longitude in radians. */\r\n lon: number;\r\n}\r\n\r\n/** Latitude and longitude in radians, and altitude, typically meters. */\r\nexport interface ILatLonAltLike extends ILatLonLike {\r\n /** The height above the surface, typically meters. */\r\n alt: number;\r\n}\r\n\r\n/**\r\n * A reference ellipsoid used for geospatial functions.\r\n */\r\nexport interface IEllipsoidLike {\r\n /** The larger radius for the ellipsoid. */\r\n semiMajorAxis: number;\r\n /** The smaller radius for the ellipsoid. */\r\n semiMinorAxis: number;\r\n /** The flattening for the ellipsoid. Zero for a sphere. */\r\n flattening: number;\r\n /** The first eccentricity, squared. */\r\n firstEccentricitySquared: number;\r\n /** The second eccentricity, squared. */\r\n secondEccentricitySquared: number;\r\n}\r\n"]}
@@ -1067,7 +1067,7 @@ export class Curve3 {
1067
1067
  else {
1068
1068
  const dStep = 1 / steps;
1069
1069
  let theta = 0;
1070
- let point = Vector3.Zero();
1070
+ let point;
1071
1071
  do {
1072
1072
  point = center.add(xAxis.scale(radius * Math.cos(theta)).add(yAxis.scale(radius * Math.sin(theta))));
1073
1073
  copyOrPush(point);