@openglobus/og 0.28.7 → 1.0.0-rc2

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 (220) hide show
  1. package/LICENSE.md +218 -4
  2. package/README.md +31 -18
  3. package/lib/Deferred.d.ts +2 -2
  4. package/lib/Events.d.ts +1 -1
  5. package/lib/Globe.d.ts +8 -5
  6. package/lib/Object3d.d.ts +17 -14
  7. package/lib/Popup.d.ts +2 -2
  8. package/lib/assets/LabelWorker.worker-DYd7xn3M.js.map +1 -0
  9. package/lib/assets/PlainSegmentWorker.worker-JsKldq-e.js.map +1 -0
  10. package/lib/assets/TerrainWorker.worker-CqUJvMOv.js.map +1 -0
  11. package/lib/bv/index.d.ts +2 -2
  12. package/lib/camera/Camera.d.ts +280 -27
  13. package/lib/camera/Frustum.d.ts +100 -15
  14. package/lib/camera/PlanetCamera.d.ts +93 -8
  15. package/lib/camera/index.d.ts +2 -2
  16. package/lib/control/CameraFrameComposer.d.ts +2 -2
  17. package/lib/control/CameraFrameHandler.d.ts +1 -1
  18. package/lib/control/CompassButton.d.ts +2 -2
  19. package/lib/control/EarthCoordinates.d.ts +5 -2
  20. package/lib/control/FramebufferPreview.d.ts +3 -3
  21. package/lib/control/GeoImageDragControl.d.ts +1 -1
  22. package/lib/control/LayerAnimation.d.ts +2 -2
  23. package/lib/control/LayerSwitcher.d.ts +3 -0
  24. package/lib/control/Lighting.d.ts +4 -2
  25. package/lib/control/Navigation.d.ts +15 -11
  26. package/lib/control/OrthoSwitcher.d.ts +18 -0
  27. package/lib/control/SimpleTouchNavigation.d.ts +44 -0
  28. package/lib/control/Sun.d.ts +4 -2
  29. package/lib/control/TouchNavigation.d.ts +4 -8
  30. package/lib/control/atmosphere/Atmosphere.d.ts +2 -0
  31. package/lib/control/atmosphere/AtmosphereConfig.d.ts +2 -6
  32. package/lib/control/cameraDepthHandler/CameraDepthHandler.d.ts +17 -3
  33. package/lib/control/cameraDepthHandler/camera_depth.d.ts +2 -2
  34. package/lib/control/drawing/LineStringDrawingScene.d.ts +1 -0
  35. package/lib/control/drawing/PolygonDrawingScene.d.ts +14 -14
  36. package/lib/control/elevationProfile/ElevationProfile.d.ts +1 -1
  37. package/lib/control/elevationProfile/ElevationProfileLegend.d.ts +1 -1
  38. package/lib/control/elevationProfile/ElevationProfileScene.d.ts +9 -12
  39. package/lib/control/elevationProfile/ElevationProfileView.d.ts +16 -5
  40. package/lib/control/entityEditor/EntityEditor.d.ts +19 -0
  41. package/lib/control/{geoObjectEditor/GeoObjectEditorDialog.d.ts → entityEditor/EntityEditorDialog.d.ts} +9 -8
  42. package/lib/control/{geoObjectEditor/GeoObjectEditorScene.d.ts → entityEditor/EntityEditorScene.d.ts} +12 -12
  43. package/lib/control/{geoObjectEditor → entityEditor}/colors.d.ts +2 -2
  44. package/lib/control/entityTree/EntityTree.d.ts +46 -0
  45. package/lib/control/entityTree/EntityTreeView.d.ts +24 -0
  46. package/lib/control/heightRuler/HeightRulerScene.d.ts +3 -2
  47. package/lib/control/index.d.ts +5 -3
  48. package/lib/control/ruler/RulerScene.d.ts +8 -8
  49. package/lib/control/selection/SelectionScene.d.ts +6 -6
  50. package/lib/control/timeline/TimelineControl.d.ts +2 -2
  51. package/lib/control/timeline/TimelineModel.d.ts +1 -1
  52. package/lib/control/timeline/TimelineView.d.ts +52 -13
  53. package/lib/control/visibleExtent/segment.d.ts +7 -0
  54. package/lib/ellipsoid/index.d.ts +4 -4
  55. package/lib/entity/Entity.d.ts +114 -100
  56. package/lib/entity/EntityCollection.d.ts +95 -70
  57. package/lib/entity/{BaseBillboard.d.ts → billboard/BaseBillboard.d.ts} +16 -17
  58. package/lib/entity/{BaseBillboardHandler.d.ts → billboard/BaseBillboardHandler.d.ts} +24 -9
  59. package/lib/entity/{Billboard.d.ts → billboard/Billboard.d.ts} +11 -7
  60. package/lib/entity/{BillboardHandler.d.ts → billboard/BillboardHandler.d.ts} +1 -1
  61. package/lib/entity/{GeoObject.d.ts → geoObject/GeoObject.d.ts} +7 -6
  62. package/lib/entity/{GeoObjectHandler.d.ts → geoObject/GeoObjectHandler.d.ts} +29 -11
  63. package/lib/entity/{InstanceData.d.ts → geoObject/InstanceData.d.ts} +18 -13
  64. package/lib/entity/{Geometry.d.ts → geometry/Geometry.d.ts} +10 -10
  65. package/lib/entity/{GeometryHandler.d.ts → geometry/GeometryHandler.d.ts} +7 -7
  66. package/lib/entity/index.d.ts +8 -8
  67. package/lib/entity/{Label.d.ts → label/Label.d.ts} +12 -13
  68. package/lib/entity/{LabelHandler.d.ts → label/LabelHandler.d.ts} +31 -7
  69. package/lib/entity/{LabelWorker.d.ts → label/LabelWorker.d.ts} +3 -3
  70. package/lib/entity/{PointCloud.d.ts → pointCloud/PointCloud.d.ts} +18 -12
  71. package/lib/entity/{PointCloudHandler.d.ts → pointCloud/PointCloudHandler.d.ts} +4 -4
  72. package/lib/entity/polyline/Polyline.d.ts +242 -0
  73. package/lib/entity/polyline/PolylineBatchRenderer.d.ts +443 -0
  74. package/lib/entity/{PolylineHandler.d.ts → polyline/PolylineHandler.d.ts} +19 -7
  75. package/lib/entity/{Ray.d.ts → ray/Ray.d.ts} +27 -9
  76. package/lib/entity/{RayHandler.d.ts → ray/RayHandler.d.ts} +18 -8
  77. package/lib/entity/{Strip.d.ts → strip/Strip.d.ts} +21 -17
  78. package/lib/entity/{StripHandler.d.ts → strip/StripHandler.d.ts} +11 -6
  79. package/lib/index.d.ts +47 -42
  80. package/lib/layer/BaseGeoImage.d.ts +20 -17
  81. package/lib/layer/CanvasTiles.d.ts +14 -12
  82. package/lib/layer/GeoImage.d.ts +1 -1
  83. package/lib/layer/GeoTexture2d.d.ts +2 -2
  84. package/lib/layer/KML.d.ts +19 -18
  85. package/lib/layer/Layer.d.ts +72 -53
  86. package/lib/layer/Vector.d.ts +47 -30
  87. package/lib/layer/WMS.d.ts +1 -1
  88. package/lib/layer/XYZ.d.ts +11 -12
  89. package/lib/layer/index.d.ts +12 -12
  90. package/lib/math/Line2.d.ts +1 -1
  91. package/lib/math/Line3.d.ts +1 -1
  92. package/lib/math/Mat3.d.ts +3 -13
  93. package/lib/math/Mat4.d.ts +16 -10
  94. package/lib/math/Plane.d.ts +1 -1
  95. package/lib/math/Quat.d.ts +14 -12
  96. package/lib/math/Ray.d.ts +4 -3
  97. package/lib/math/Vec2.d.ts +25 -17
  98. package/lib/math/Vec3.d.ts +33 -31
  99. package/lib/math/Vec4.d.ts +1 -1
  100. package/lib/math/coder.d.ts +1 -1
  101. package/lib/math/index.d.ts +13 -14
  102. package/lib/mercator.d.ts +4 -4
  103. package/lib/og.css +1 -1
  104. package/lib/og.es.js +1 -1
  105. package/lib/og.es.js.map +1 -1
  106. package/lib/quadTree/EntityCollectionNode.d.ts +10 -10
  107. package/lib/quadTree/EntityCollectionsTreeStrategy.d.ts +5 -5
  108. package/lib/quadTree/QuadTreeStrategy.d.ts +3 -4
  109. package/lib/quadTree/earth/EarthEntityCollectionNodeLonLat.d.ts +4 -4
  110. package/lib/quadTree/earth/EarthEntityCollectionsTreeStrategy.d.ts +4 -4
  111. package/lib/renderer/AtmosphereDeferredShading.d.ts +12 -0
  112. package/lib/renderer/IDeferredShadingPass.d.ts +8 -0
  113. package/lib/renderer/ITransparencyPass.d.ts +8 -0
  114. package/lib/renderer/PhongDeferredShading.d.ts +16 -0
  115. package/lib/renderer/Renderer.d.ts +166 -99
  116. package/lib/renderer/RendererEvents.d.ts +15 -5
  117. package/lib/renderer/WOITPass.d.ts +14 -0
  118. package/lib/res/fonts/Ephesis-Regular.json +1 -0
  119. package/lib/res/fonts/Ephesis-Regular.png +0 -0
  120. package/lib/res/fonts/Karla-Bold.json +1 -0
  121. package/lib/res/fonts/Karla-Bold.png +0 -0
  122. package/lib/res/fonts/Karla-Italic.json +1 -0
  123. package/lib/res/fonts/Karla-Italic.png +0 -0
  124. package/lib/res/fonts/Karla-Light.json +1 -0
  125. package/lib/res/fonts/Karla-Light.png +0 -0
  126. package/lib/res/fonts/Karla-Medium.json +1 -0
  127. package/lib/res/fonts/Karla-Medium.png +0 -0
  128. package/lib/res/fonts/Roboto-Regular.json +1 -37147
  129. package/lib/res/fonts/Roboto-Regular.png +0 -0
  130. package/lib/res/fonts/arial.json +1 -4321
  131. package/lib/res/fonts/arial.png +0 -0
  132. package/lib/res/night-4326.png +0 -0
  133. package/lib/res/night.png +0 -0
  134. package/lib/scene/AltitudeNearPlaneStrategy.d.ts +17 -0
  135. package/lib/scene/Axes.d.ts +4 -3
  136. package/lib/scene/Planet.d.ts +244 -69
  137. package/lib/scene/{RenderNode.d.ts → Scene.d.ts} +49 -46
  138. package/lib/scene/SkyBox.d.ts +5 -3
  139. package/lib/scene/index.d.ts +2 -2
  140. package/lib/segment/Segment.d.ts +29 -15
  141. package/lib/segment/SegmentLonLat.d.ts +0 -1
  142. package/lib/shadeModeConstants.d.ts +7 -0
  143. package/lib/shaders/applyDeferredDepth.d.ts +2 -0
  144. package/lib/shaders/atmos/atmos.d.ts +3 -3
  145. package/lib/shaders/billboard/billboard.d.ts +4 -3
  146. package/lib/shaders/deferredShading/deferredShading.d.ts +2 -0
  147. package/lib/shaders/deferredShading/deferredShadingAtmos.d.ts +3 -0
  148. package/lib/shaders/depth.d.ts +2 -2
  149. package/lib/shaders/geo_object/geo_object.d.ts +8 -4
  150. package/lib/shaders/label/label.d.ts +4 -4
  151. package/lib/shaders/pointCloud.d.ts +2 -2
  152. package/lib/shaders/polyline/polyline.d.ts +7 -3
  153. package/lib/shaders/ray/ray.d.ts +3 -2
  154. package/lib/shaders/screenFrame.d.ts +2 -2
  155. package/lib/shaders/segment/segment.d.ts +7 -0
  156. package/lib/shaders/skybox.d.ts +2 -2
  157. package/lib/shaders/strip/strip.d.ts +3 -0
  158. package/lib/shaders/tone_mapping/toneMapping.d.ts +2 -2
  159. package/lib/shaders/weightedOITResolve.d.ts +2 -0
  160. package/lib/terrain/BilTerrain.d.ts +1 -1
  161. package/lib/terrain/EmptyTerrain.d.ts +5 -6
  162. package/lib/terrain/GlobusTerrain.d.ts +18 -23
  163. package/lib/terrain/RgbTerrain.d.ts +8 -8
  164. package/lib/terrain/index.d.ts +5 -5
  165. package/lib/tsconfig.tsbuildinfo +1 -1
  166. package/lib/ui/Button.d.ts +7 -5
  167. package/lib/ui/ButtonGroup.d.ts +1 -1
  168. package/lib/ui/Checkbox.d.ts +2 -2
  169. package/lib/ui/Color.d.ts +2 -2
  170. package/lib/ui/Dialog.d.ts +30 -3
  171. package/lib/ui/Input.d.ts +7 -2
  172. package/lib/ui/Slider.d.ts +5 -2
  173. package/lib/ui/ToggleButton.d.ts +2 -2
  174. package/lib/ui/View.d.ts +1 -1
  175. package/lib/ui/icons.d.ts +1 -1
  176. package/lib/ui/index.d.ts +9 -9
  177. package/lib/utils/FontAtlas.d.ts +57 -8
  178. package/lib/utils/GeoImageCreator.d.ts +2 -2
  179. package/lib/utils/ImagesCacheManager.d.ts +3 -3
  180. package/lib/utils/Loader.d.ts +2 -2
  181. package/lib/utils/PlainSegmentWorker.d.ts +2 -2
  182. package/lib/utils/TerrainWorker.d.ts +2 -2
  183. package/lib/utils/TextureAtlas.d.ts +7 -2
  184. package/lib/utils/TextureResourceManager.d.ts +162 -0
  185. package/lib/utils/VectorTileCreator.d.ts +1 -1
  186. package/lib/utils/colorSpace.d.ts +9 -0
  187. package/lib/utils/gltf/gltfParser.d.ts +9 -2
  188. package/lib/utils/gltf/types.d.ts +20 -2
  189. package/lib/utils/shared.d.ts +11 -5
  190. package/lib/utils/textureResourceMeta.d.ts +9 -0
  191. package/lib/webgl/BaseFramebuffer.d.ts +7 -0
  192. package/lib/webgl/Framebuffer.d.ts +9 -6
  193. package/lib/webgl/Handler.d.ts +81 -99
  194. package/lib/webgl/ShaderProgram.d.ts +190 -0
  195. package/lib/webgl/index.d.ts +2 -2
  196. package/lib/webgl/variableHandlers.d.ts +2 -1
  197. package/package.json +77 -76
  198. package/lib/assets/LabelWorker.worker-BT1uJgYn.js.map +0 -1
  199. package/lib/assets/PlainSegmentWorker.worker-CT1cj8jj.js.map +0 -1
  200. package/lib/assets/TerrainWorker.worker-DmikdfB2.js.map +0 -1
  201. package/lib/control/OldMouseNavigation.d.ts +0 -65
  202. package/lib/control/ZoomControl.d.ts +0 -28
  203. package/lib/control/geoObjectEditor/GeoObjectEditor.d.ts +0 -13
  204. package/lib/control/visibleExtent/drawnode.d.ts +0 -7
  205. package/lib/entity/Polyline.d.ts +0 -417
  206. package/lib/light/LightSource.d.ts +0 -36
  207. package/lib/res/fonts/Roboto-Regular.ttf.cfg +0 -1340
  208. package/lib/res/fonts/Roboto-Regular.ttf.png +0 -0
  209. package/lib/res/fonts/arial.ttf.cfg +0 -1570
  210. package/lib/res/fonts/arial.ttf.png +0 -0
  211. package/lib/scene/BaseNode.d.ts +0 -61
  212. package/lib/shaders/drawnode/drawnode.d.ts +0 -8
  213. package/lib/webgl/Program.d.ts +0 -161
  214. package/lib/webgl/ProgramController.d.ts +0 -87
  215. /package/lib/control/{geoObjectEditor → entityEditor}/ArrowEntity.d.ts +0 -0
  216. /package/lib/control/{geoObjectEditor → entityEditor}/AxisTrackEntity.d.ts +0 -0
  217. /package/lib/control/{geoObjectEditor → entityEditor}/MoveAxisEntity.d.ts +0 -0
  218. /package/lib/control/{geoObjectEditor → entityEditor}/MovePlaneEntity.d.ts +0 -0
  219. /package/lib/control/{geoObjectEditor → entityEditor}/RotateEntity.d.ts +0 -0
  220. /package/lib/entity/{LabelWorker.worker.d.ts → label/LabelWorker.worker.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TerrainWorker.worker-CqUJvMOv.js","sources":["../src/utils/TerrainWorker.worker.js"],"sourcesContent":["/* eslint-env worker */\n\"use strict\";\n//\n//Terrain worker\n//\n\nfunction binarySearchFast(arr, x) {\n let start = 0,\n end = arr.length - 1;\n while (start <= end) {\n let k = Math.floor((start + end) * 0.5);\n if (Math.abs(arr[k] - x) < 1e-3) return k;\n else if (arr[k] < x) start = k + 1;\n else end = k - 1;\n }\n return -1;\n}\n\nfunction checkNoDataValue(noDataValues, value) {\n return binarySearchFast(noDataValues, value) !== -1;\n}\n\nvar Vec3 = function (x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n};\n\nvar doubleToTwoFloats = function (v, high, low) {\n let x = v.x,\n y = v.y,\n z = v.z;\n\n var doubleHigh;\n\n if (x >= 0.0) {\n doubleHigh = Math.floor(x / 65536.0) * 65536.0;\n high.x = Math.fround(doubleHigh);\n low.x = Math.fround(x - doubleHigh);\n } else {\n doubleHigh = Math.floor(-x / 65536.0) * 65536.0;\n high.x = Math.fround(-doubleHigh);\n low.x = Math.fround(x + doubleHigh);\n }\n\n if (y >= 0.0) {\n doubleHigh = Math.floor(y / 65536.0) * 65536.0;\n high.y = Math.fround(doubleHigh);\n low.y = Math.fround(y - doubleHigh);\n } else {\n doubleHigh = Math.floor(-y / 65536.0) * 65536.0;\n high.y = Math.fround(-doubleHigh);\n low.y = Math.fround(y + doubleHigh);\n }\n\n if (z >= 0.0) {\n doubleHigh = Math.floor(z / 65536.0) * 65536.0;\n high.z = Math.fround(doubleHigh);\n low.z = Math.fround(z - doubleHigh);\n } else {\n doubleHigh = Math.floor(-z / 65536.0) * 65536.0;\n high.z = Math.fround(-doubleHigh);\n low.z = Math.fround(z + doubleHigh);\n }\n};\n\nVec3.prototype.sub = function (v) {\n return new Vec3(this.x - v.x, this.y - v.y, this.z - v.z);\n};\n\nVec3.prototype.add = function (v) {\n return new Vec3(this.x + v.x, this.y + v.y, this.z + v.z);\n};\n\nVec3.prototype.cross = function (v) {\n return new Vec3(this.y * v.z - this.z * v.y, this.z * v.x - this.x * v.z, this.x * v.y - this.y * v.x);\n};\n\nVec3.prototype.normalize = function () {\n var x = this.x,\n y = this.y,\n z = this.z;\n var length = 1.0 / Math.sqrt(x * x + y * y + z * z);\n this.x = x * length;\n this.y = y * length;\n this.z = z * length;\n return this;\n};\n\nVec3.prototype.distance = function (v) {\n return this.sub(v).length();\n};\n\nVec3.prototype.length = function () {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n};\n\nvar blerp = function (x, y, fQ11, fQ21, fQ12, fQ22) {\n return fQ11 * (1.0 - x) * (1.0 - y) + fQ21 * x * (1.0 - y) + fQ12 * (1.0 - x) * y + fQ22 * x * y;\n};\n\nvar _tempVec = new Vec3(0.0, 0.0, 0.0);\nvar _rtcTempVec = new Vec3(0.0, 0.0, 0.0);\n\nvar _tempHigh = new Vec3(0.0, 0.0, 0.0),\n _tempLow = new Vec3(0.0, 0.0, 0.0);\n\nself.onmessage = function (e) {\n var elevations = e.data.elevations,\n this_plainVertices = e.data.this_plainVertices,\n this_plainNormals = e.data.this_plainNormals,\n this_normalMapVertices = e.data.this_normalMapVertices,\n this_normalMapNormals = e.data.this_normalMapNormals,\n heightFactor = e.data.heightFactor,\n gridSize = e.data.gridSize,\n noDataValues = e.data.noDataValues,\n id = e.data.id;\n\n let rtc_x = e.data.relativeCenter[0],\n rtc_y = e.data.relativeCenter[1],\n rtc_z = e.data.relativeCenter[2];\n\n var xmin = 549755748352.0,\n xmax = -549755748352.0,\n ymin = 549755748352.0,\n ymax = -549755748352.0,\n zmin = 549755748352.0,\n zmax = -549755748352.0;\n\n const fileGridSize = Math.sqrt(elevations.length) - 1;\n\n const fileGridSize_one = fileGridSize + 1;\n const fileGridSize_one_x2 = fileGridSize_one * fileGridSize_one;\n const tgs = gridSize;\n const dg = fileGridSize / tgs;\n const gs = tgs + 1;\n const hf = heightFactor;\n\n var vInd = 0,\n noDataInd = 0;\n\n var gsgs3 = gs * gs * 3;\n\n var terrainVertices = new Float64Array(gsgs3),\n terrainVerticesHigh = new Float32Array(gsgs3),\n terrainVerticesLow = new Float32Array(gsgs3),\n noDataVertices = new Uint8Array(gs * gs);\n\n var normalMapNormals, normalMapVertices;\n\n var nv = this_normalMapVertices,\n nn = this_normalMapNormals;\n\n if (fileGridSize >= tgs) {\n normalMapNormals = new Float32Array(fileGridSize_one_x2 * 3);\n normalMapVertices = new Float64Array(fileGridSize_one_x2 * 3);\n\n for (let k = 0; k < fileGridSize_one_x2; k++) {\n var j = k % fileGridSize_one,\n i = ~~(k / fileGridSize_one);\n\n //\n // V0\n //\n var hInd0 = k;\n var vInd0 = hInd0 * 3;\n var currElv = elevations[hInd0];\n if (checkNoDataValue(noDataValues, currElv)) {\n currElv = 0.0;\n }\n var h0 = hf * currElv;\n var v0 = new Vec3(\n rtc_x + nv[vInd0] + h0 * nn[vInd0],\n rtc_y + nv[vInd0 + 1] + h0 * nn[vInd0 + 1],\n rtc_z + nv[vInd0 + 2] + h0 * nn[vInd0 + 2]\n );\n\n normalMapVertices[vInd0] = v0.x - rtc_x;\n normalMapVertices[vInd0 + 1] = v0.y - rtc_y;\n normalMapVertices[vInd0 + 2] = v0.z - rtc_z;\n\n //\n // The vertex goes into screen buffer\n if (i % dg === 0 && j % dg === 0) {\n let currVert = new Vec3(rtc_x + nv[vInd0], rtc_y + nv[vInd0 + 1], rtc_z + nv[vInd0 + 2]);\n let nextVert = new Vec3(rtc_x + nv[vInd0 + 3], rtc_y + nv[vInd0 + 4], rtc_z + nv[vInd0 + 5]);\n\n let nextElv = elevations[hInd0 + 1];\n if (checkNoDataValue(noDataValues, nextElv)) {\n nextElv = 0.0;\n }\n\n let eps = false;\n if (noDataValues.length === 0) {\n let step = currVert.distance(nextVert);\n let deltaElv = Math.abs(currElv - nextElv);\n eps = deltaElv / step > 10.0 || currElv < -5000;\n }\n\n if (eps) {\n noDataVertices[noDataInd] = 1;\n } else {\n noDataVertices[noDataInd] = 0;\n if (v0.x < xmin) xmin = v0.x;\n if (v0.x > xmax) xmax = v0.x;\n if (v0.y < ymin) ymin = v0.y;\n if (v0.y > ymax) ymax = v0.y;\n if (v0.z < zmin) zmin = v0.z;\n if (v0.z > zmax) zmax = v0.z;\n }\n\n let rtc_v0 = new Vec3(v0.x - rtc_x, v0.y - rtc_y, v0.z - rtc_z);\n doubleToTwoFloats(rtc_v0, _tempHigh, _tempLow);\n\n terrainVerticesHigh[vInd] = _tempHigh.x;\n terrainVerticesLow[vInd] = _tempLow.x;\n terrainVertices[vInd++] = rtc_v0.x;\n\n terrainVerticesHigh[vInd] = _tempHigh.y;\n terrainVerticesLow[vInd] = _tempLow.y;\n terrainVertices[vInd++] = rtc_v0.y;\n\n terrainVerticesHigh[vInd] = _tempHigh.z;\n terrainVerticesLow[vInd] = _tempLow.z;\n terrainVertices[vInd++] = rtc_v0.z;\n\n noDataInd++;\n }\n\n if (i !== fileGridSize && j !== fileGridSize) {\n //\n // V1\n //\n var hInd1 = k + 1;\n var vInd1 = hInd1 * 3;\n var elv = elevations[hInd1];\n if (checkNoDataValue(noDataValues, elv)) {\n elv = 0.0;\n }\n var h1 = hf * elv;\n var v1 = new Vec3(\n rtc_x + nv[vInd1] + h1 * nn[vInd1],\n rtc_y + nv[vInd1 + 1] + h1 * nn[vInd1 + 1],\n rtc_z + nv[vInd1 + 2] + h1 * nn[vInd1 + 2]\n );\n\n normalMapVertices[vInd1] = v1.x - rtc_x;\n normalMapVertices[vInd1 + 1] = v1.y - rtc_y;\n normalMapVertices[vInd1 + 2] = v1.z - rtc_z;\n\n //\n // V2\n //\n var hInd2 = k + fileGridSize_one;\n var vInd2 = hInd2 * 3;\n elv = elevations[hInd2];\n if (checkNoDataValue(noDataValues, elv)) {\n elv = 0.0;\n }\n var h2 = hf * elv;\n var v2 = new Vec3(\n rtc_x + nv[vInd2] + h2 * nn[vInd2],\n rtc_y + nv[vInd2 + 1] + h2 * nn[vInd2 + 1],\n rtc_z + nv[vInd2 + 2] + h2 * nn[vInd2 + 2]\n );\n\n normalMapVertices[vInd2] = v2.x - rtc_x;\n normalMapVertices[vInd2 + 1] = v2.y - rtc_y;\n normalMapVertices[vInd2 + 2] = v2.z - rtc_z;\n\n //\n // V3\n //\n var hInd3 = k + fileGridSize_one + 1;\n var vInd3 = hInd3 * 3;\n elv = elevations[hInd3];\n if (checkNoDataValue(noDataValues, elv)) {\n elv = 0.0;\n }\n var h3 = hf * elv;\n var v3 = new Vec3(\n rtc_x + nv[vInd3] + h3 * nn[vInd3],\n rtc_y + nv[vInd3 + 1] + h3 * nn[vInd3 + 1],\n rtc_z + nv[vInd3 + 2] + h3 * nn[vInd3 + 2]\n );\n\n normalMapVertices[vInd3] = v3.x - rtc_x;\n normalMapVertices[vInd3 + 1] = v3.y - rtc_y;\n normalMapVertices[vInd3 + 2] = v3.z - rtc_z;\n\n //\n // Normal\n //\n var e10 = v1.sub(v0),\n e20 = v2.sub(v0),\n e30 = v3.sub(v0);\n\n var sw = e20.cross(e30).normalize();\n var ne = e30.cross(e10).normalize();\n var n0 = ne.add(sw).normalize();\n\n normalMapNormals[vInd0] += n0.x;\n normalMapNormals[vInd0 + 1] += n0.y;\n normalMapNormals[vInd0 + 2] += n0.z;\n\n normalMapNormals[vInd1] += ne.x;\n normalMapNormals[vInd1 + 1] += ne.y;\n normalMapNormals[vInd1 + 2] += ne.z;\n\n normalMapNormals[vInd2] += sw.x;\n normalMapNormals[vInd2 + 1] += sw.y;\n normalMapNormals[vInd2 + 2] += sw.z;\n\n normalMapNormals[vInd3] += n0.x;\n normalMapNormals[vInd3 + 1] += n0.y;\n normalMapNormals[vInd3 + 2] += n0.z;\n }\n }\n } else {\n normalMapNormals = new Float32Array(gsgs3);\n normalMapVertices = new Float64Array(gsgs3);\n\n var oneSize = tgs / fileGridSize;\n var gsgs = gsgs3 / 3;\n var fgsOne = fileGridSize + 1;\n\n for (let i = 0; i < gsgs; i++) {\n let ii = Math.floor(i / gs),\n ij = i % gs;\n\n let qii = ii % oneSize,\n qij = ij % oneSize;\n\n let hlt_ind = Math.floor(ii / oneSize) * fgsOne + Math.floor(ij / oneSize);\n\n if (ij === tgs) {\n hlt_ind -= 1;\n qij = oneSize;\n }\n\n if (ii === tgs) {\n hlt_ind -= fgsOne;\n qii = oneSize;\n }\n\n let hrt_ind = hlt_ind + 1,\n hlb_ind = hlt_ind + fgsOne,\n hrb_ind = hlb_ind + 1;\n\n let h_lt = elevations[hlt_ind],\n h_rt = elevations[hrt_ind],\n h_lb = elevations[hlb_ind],\n h_rb = elevations[hrb_ind];\n\n if (checkNoDataValue(noDataValues, h_lt)) {\n h_lt = 0.0;\n }\n\n if (checkNoDataValue(noDataValues, h_rt)) {\n h_rt = 0.0;\n }\n\n if (checkNoDataValue(noDataValues, h_lb)) {\n h_lb = 0.0;\n }\n\n if (checkNoDataValue(noDataValues, h_rb)) {\n h_rb = 0.0;\n }\n\n let hi = blerp(qij / oneSize, qii / oneSize, h_lt, h_rt, h_lb, h_rb);\n\n let i3 = i * 3;\n\n _rtcTempVec.x = this_plainVertices[i3] + hi * this_plainNormals[i3];\n _rtcTempVec.y = this_plainVertices[i3 + 1] + hi * this_plainNormals[i3 + 1];\n _rtcTempVec.z = this_plainVertices[i3 + 2] + hi * this_plainNormals[i3 + 2];\n\n doubleToTwoFloats(_rtcTempVec, _tempHigh, _tempLow);\n\n terrainVertices[i3] = _rtcTempVec.x;\n terrainVertices[i3 + 1] = _rtcTempVec.y;\n terrainVertices[i3 + 2] = _rtcTempVec.z;\n\n terrainVerticesHigh[i3] = _tempHigh.x;\n terrainVerticesHigh[i3 + 1] = _tempHigh.y;\n terrainVerticesHigh[i3 + 2] = _tempHigh.z;\n\n terrainVerticesLow[i3] = _tempLow.x;\n terrainVerticesLow[i3 + 1] = _tempLow.y;\n terrainVerticesLow[i3 + 2] = _tempLow.z;\n\n _tempVec.x = _rtcTempVec.x + rtc_x;\n _tempVec.y = _rtcTempVec.y + rtc_y;\n _tempVec.z = _rtcTempVec.z + rtc_z;\n\n if (_tempVec.x < xmin) xmin = _tempVec.x;\n if (_tempVec.x > xmax) xmax = _tempVec.x;\n if (_tempVec.y < ymin) ymin = _tempVec.y;\n if (_tempVec.y > ymax) ymax = _tempVec.y;\n if (_tempVec.z < zmin) zmin = _tempVec.z;\n if (_tempVec.z > zmax) zmax = _tempVec.z;\n }\n\n normalMapVertices.set(terrainVertices);\n\n for (let k = 0; k < gsgs; k++) {\n let j = k % gs,\n i = ~~(k / gs);\n\n if (i !== tgs && j !== tgs) {\n let v0ind = k * 3,\n v1ind = v0ind + 3,\n v2ind = v0ind + gs * 3,\n v3ind = v2ind + 3;\n\n let v0 = new Vec3(\n terrainVertices[v0ind] + rtc_x,\n terrainVertices[v0ind + 1] + rtc_y,\n terrainVertices[v0ind + 2] + rtc_z\n ),\n v1 = new Vec3(\n terrainVertices[v1ind] + rtc_x,\n terrainVertices[v1ind + 1] + rtc_y,\n terrainVertices[v1ind + 2] + rtc_z\n ),\n v2 = new Vec3(\n terrainVertices[v2ind] + rtc_x,\n terrainVertices[v2ind + 1] + rtc_y,\n terrainVertices[v2ind + 2] + rtc_z\n ),\n v3 = new Vec3(\n terrainVertices[v3ind] + rtc_x,\n terrainVertices[v3ind + 1] + rtc_y,\n terrainVertices[v3ind + 2] + rtc_z\n );\n\n let e10 = v1.sub(v0).normalize(),\n e20 = v2.sub(v0).normalize(),\n e30 = v3.sub(v0).normalize();\n\n let sw = e20.cross(e30).normalize();\n let ne = e30.cross(e10).normalize();\n let n0 = ne.add(sw).normalize();\n\n normalMapNormals[v0ind] += n0.x;\n normalMapNormals[v0ind + 1] += n0.y;\n normalMapNormals[v0ind + 2] += n0.z;\n\n normalMapNormals[v1ind] += ne.x;\n normalMapNormals[v1ind + 1] += ne.y;\n normalMapNormals[v1ind + 2] += ne.z;\n\n normalMapNormals[v2ind] += sw.x;\n normalMapNormals[v2ind + 1] += sw.y;\n normalMapNormals[v2ind + 2] += sw.z;\n\n normalMapNormals[v3ind] += n0.x;\n normalMapNormals[v3ind + 1] += n0.y;\n normalMapNormals[v3ind + 2] += n0.z;\n }\n }\n }\n\n self.postMessage(\n {\n id: id,\n normalMapNormals: normalMapNormals,\n normalMapVertices: normalMapVertices,\n terrainVertices: terrainVertices,\n terrainVerticesHigh: terrainVerticesHigh,\n terrainVerticesLow: terrainVerticesLow,\n noDataVertices: noDataVertices,\n bounds: [xmin, ymin, zmin, xmax, ymax, zmax],\n relativeCenter: e.data.relativeCenter\n },\n [\n normalMapNormals.buffer,\n normalMapVertices.buffer,\n terrainVertices.buffer,\n terrainVerticesHigh.buffer,\n terrainVerticesLow.buffer,\n noDataVertices.buffer\n ]\n );\n};\n"],"names":["checkNoDataValue","noDataValues","value","arr","x","start","end","length","k","Math","floor","abs","Vec3","y","z","this","doubleToTwoFloats","v","high","low","doubleHigh","fround","prototype","sub","add","cross","normalize","sqrt","distance","_tempVec","_rtcTempVec","_tempHigh","_tempLow","self","onmessage","e","elevations","data","this_plainVertices","this_plainNormals","this_normalMapVertices","this_normalMapNormals","heightFactor","gridSize","id","rtc_x","relativeCenter","rtc_y","rtc_z","xmin","xmax","ymin","ymax","zmin","zmax","fileGridSize","fileGridSize_one","fileGridSize_one_x2","tgs","dg","gs","hf","normalMapNormals","normalMapVertices","vInd","noDataInd","gsgs3","terrainVertices","Float64Array","terrainVerticesHigh","Float32Array","terrainVerticesLow","noDataVertices","Uint8Array","nv","nn","j","i","hInd0","vInd0","currElv","h0","v0","currVert","nextVert","nextElv","eps","step","rtc_v0","hInd1","vInd1","elv","h1","v1","hInd2","vInd2","h2","v2","hInd3","vInd3","h3","v3","e10","e20","e30","sw","ne","n0","oneSize","gsgs","fgsOne","ii","ij","qii","qij","hlt_ind","hrt_ind","hlb_ind","hrb_ind","h_lt","h_rt","h_lb","h_rb","hi","i3","set","v0ind","v1ind","v2ind","v3ind","postMessage","bounds","buffer"],"mappings":"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"}
package/lib/bv/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { Box } from './Box';
2
- import { Sphere } from './Sphere';
1
+ import { Box } from "./Box";
2
+ import { Sphere } from "./Sphere";
3
3
  export { Box, Sphere };
@@ -9,10 +9,11 @@ import { Vec2 } from "../math/Vec2";
9
9
  import type { NumberArray2 } from "../math/Vec2";
10
10
  import { Vec3 } from "../math/Vec3";
11
11
  import { Sphere } from "../bv/Sphere";
12
+ import { Ray } from "../math/Ray";
12
13
  import { Quat } from "../math/Quat";
13
14
  import { EasingFunction } from "../utils/easing";
14
15
  import { LonLat } from "../LonLat";
15
- export type CameraEvents = ["viewchange", "moveend", "flystart", "flyend", "flystop"];
16
+ export type CameraEvents = ["viewchange", "moveend", "flystart", "flyend", "flystop", "frustumschanged"];
16
17
  export interface ICameraParams {
17
18
  eye?: Vec3;
18
19
  viewAngle?: number;
@@ -23,6 +24,7 @@ export interface ICameraParams {
23
24
  height?: number;
24
25
  isOrthographic?: boolean;
25
26
  focusDistance?: number;
27
+ reverseDepth?: boolean;
26
28
  }
27
29
  export interface IFlyCartesianParams extends IFlyBaseParams {
28
30
  look?: Vec3 | LonLat;
@@ -61,8 +63,8 @@ type CameraFlight = {
61
63
  * @param {Vec3} [options.look=[0,0,0]] - Camera look position. Default (0,0,0)
62
64
  * @param {Vec3} [options.up=[0,1,0]] - Camera eye position. Default (0,1,0)
63
65
  *
64
- * @fires EventsHandler<CameraEvents>#viewchange
65
- * @fires EventsHandler<CameraEvents>#moveend
66
+ * @fires viewchange
67
+ * @fires moveend
66
68
  */
67
69
  declare class Camera {
68
70
  static __counter__: number;
@@ -150,18 +152,74 @@ declare class Camera {
150
152
  FARTHEST_FRUSTUM_INDEX: number;
151
153
  currentFrustumIndex: number;
152
154
  frustumColorIndex: number;
153
- isFirstPass: boolean;
155
+ isFarthestFrustumActive: boolean;
156
+ /**
157
+ * Reverse-Z depth: GREATER test, clear 0, infinite projection; single frustum with large `far` for culling.
158
+ * @protected
159
+ */
160
+ protected _reverseDepth: boolean;
161
+ protected _depthZeroToOne: boolean;
154
162
  _width: number;
155
163
  _height: number;
156
164
  protected _flight: CameraFlight | null;
157
165
  protected _completeCallback: Function | null;
158
166
  protected _frameCallback: Function | null;
159
167
  protected _flying: boolean;
168
+ slope: number;
160
169
  constructor(options?: ICameraParams);
170
+ /**
171
+ * Returns current projection mode.
172
+ * @public
173
+ * @returns {boolean} `true` when orthographic projection is enabled.
174
+ */
161
175
  get isOrthographic(): boolean;
176
+ /**
177
+ * Returns reverse depth flag.
178
+ * @public
179
+ * @returns {boolean} `true` when reverse depth mode is enabled.
180
+ */
181
+ get reverseDepth(): boolean;
182
+ /**
183
+ * Returns active reverse depth state.
184
+ * @public
185
+ * @returns {boolean} `true` for perspective reverse-Z mode.
186
+ */
187
+ get reverseDepthActive(): boolean;
188
+ /**
189
+ * Returns active depth range mode.
190
+ * @public
191
+ * @returns {boolean} `true` when ZERO_TO_ONE depth range is active.
192
+ */
193
+ get depthZeroToOne(): boolean;
194
+ /**
195
+ * Enables or disables ZERO_TO_ONE depth range mode.
196
+ * @public
197
+ * @param {boolean} enabled - Depth range mode flag.
198
+ */
199
+ setDepthZeroToOne(enabled: boolean): void;
200
+ /**
201
+ * Enables or disables orthographic projection mode.
202
+ * @public
203
+ * @param {boolean} isOrthographic - Orthographic mode flag.
204
+ */
162
205
  set isOrthographic(isOrthographic: boolean);
206
+ /**
207
+ * Returns focus distance used for orthographic projection size.
208
+ * @public
209
+ * @returns {number} Focus distance.
210
+ */
163
211
  get focusDistance(): number;
212
+ /**
213
+ * Sets focus distance used for orthographic projection size.
214
+ * @public
215
+ * @param {number} dist - Focus distance.
216
+ */
164
217
  set focusDistance(dist: number);
218
+ /**
219
+ * Returns camera identifier.
220
+ * @public
221
+ * @returns {number} Camera id.
222
+ */
165
223
  get id(): number;
166
224
  /**
167
225
  * Flies to the cartesian coordinates.
@@ -186,7 +244,16 @@ declare class Camera {
186
244
  * @returns {boolean}
187
245
  */
188
246
  isFlying(): boolean;
247
+ /**
248
+ * Checks whether the camera stopped moving and dispatches `moveend`.
249
+ * @public
250
+ */
189
251
  checkMoveEnd(): void;
252
+ /**
253
+ * Binds picking colors for all frustums.
254
+ * @public
255
+ * @param {Renderer} renderer - Renderer instance.
256
+ */
190
257
  bindFrustumsPickingColors(renderer: Renderer): void;
191
258
  /**
192
259
  * Camera initialization.
@@ -200,11 +267,41 @@ declare class Camera {
200
267
  * @param {Vec3} [options.up] - Camera eye position. Default (0,1,0)
201
268
  */
202
269
  protected _init(options: ICameraParams): void;
270
+ /**
271
+ * Returns up direction vector.
272
+ * @public
273
+ * @returns {Vec3} Up direction.
274
+ */
203
275
  getUp(): Vec3;
276
+ /**
277
+ * Returns down direction vector.
278
+ * @public
279
+ * @returns {Vec3} Down direction.
280
+ */
204
281
  getDown(): Vec3;
282
+ /**
283
+ * Returns right direction vector.
284
+ * @public
285
+ * @returns {Vec3} Right direction.
286
+ */
205
287
  getRight(): Vec3;
288
+ /**
289
+ * Returns left direction vector.
290
+ * @public
291
+ * @returns {Vec3} Left direction.
292
+ */
206
293
  getLeft(): Vec3;
294
+ /**
295
+ * Returns forward direction vector.
296
+ * @public
297
+ * @returns {Vec3} Forward direction.
298
+ */
207
299
  getForward(): Vec3;
300
+ /**
301
+ * Returns backward direction vector.
302
+ * @public
303
+ * @returns {Vec3} Backward direction.
304
+ */
208
305
  getBackward(): Vec3;
209
306
  /**
210
307
  * Updates camera view space
@@ -217,22 +314,52 @@ declare class Camera {
217
314
  * @public
218
315
  */
219
316
  refresh(): void;
317
+ /**
318
+ * Returns viewport width.
319
+ * @public
320
+ * @returns {number} Viewport width in pixels.
321
+ */
220
322
  get width(): number;
323
+ /**
324
+ * Returns viewport height.
325
+ * @public
326
+ * @returns {number} Viewport height in pixels.
327
+ */
221
328
  get height(): number;
329
+ /**
330
+ * Sets viewport size and updates projection.
331
+ * @public
332
+ * @param {number} width - Viewport width in pixels.
333
+ * @param {number} height - Viewport height in pixels.
334
+ */
222
335
  setViewportSize(width: number, height: number): void;
223
336
  /**
224
- * Returns aspect ratio
337
+ * Returns aspect ratio.
225
338
  * @public
226
- * @returns {number} - Aspect ratio
339
+ * @returns {number} Aspect ratio.
227
340
  */
228
341
  getAspectRatio(): number;
229
342
  /**
230
- * Sets up camera projection
343
+ * Sets camera projection.
231
344
  * @public
232
- * @param {number} viewAngle - Camera view angle
233
- * @param {number} aspect - Screen aspect ratio
345
+ * @param {number} viewAngle - Camera view angle.
346
+ * @param {number} aspect - Screen aspect ratio.
234
347
  */
235
348
  protected _setProj(viewAngle: number, aspect: number): void;
349
+ /**
350
+ * Updates near/far planes for one frustum.
351
+ * @public
352
+ * @param {number} near - Near clipping plane distance.
353
+ * @param {number} [far] - Far clipping plane distance.
354
+ * @param {number} [frustumIndex=0] - Frustum index.
355
+ */
356
+ setNearFar(near: number, far?: number, frustumIndex?: number): void;
357
+ /**
358
+ * Replaces camera frustum ranges.
359
+ * @public
360
+ * @param {Array.<NumberArray2>} frustums - Array of `[near, far]` ranges.
361
+ */
362
+ setFrustums(frustums: [number, number][]): void;
236
363
  protected _updateViewportParameters(): void;
237
364
  /**
238
365
  * Sets camera view angle in degrees
@@ -241,13 +368,28 @@ declare class Camera {
241
368
  */
242
369
  setViewAngle(angle: number): void;
243
370
  /**
244
- * Gets camera view angle in degrees
371
+ * Returns camera vertical view angle in degrees.
245
372
  * @public
246
- * @returns {number} angle -
373
+ * @returns {number} View angle in degrees.
247
374
  */
248
375
  getViewAngle(): number;
376
+ /**
377
+ * Returns camera vertical view angle in degrees.
378
+ * @public
379
+ * @returns {number} Vertical view angle.
380
+ */
249
381
  get viewAngle(): number;
382
+ /**
383
+ * Returns camera vertical view angle in degrees.
384
+ * @public
385
+ * @returns {number} Vertical view angle.
386
+ */
250
387
  get verticalViewAngle(): number;
388
+ /**
389
+ * Returns camera horizontal view angle in degrees.
390
+ * @public
391
+ * @returns {number} Horizontal view angle.
392
+ */
251
393
  get horizontalViewAngle(): number;
252
394
  /**
253
395
  * Sets camera to eye position
@@ -291,34 +433,108 @@ declare class Camera {
291
433
  * @param {number} angle - Delta yaw angle in radians
292
434
  */
293
435
  setYaw(angle: number): void;
436
+ /**
437
+ * Sets camera orientation from Euler angles.
438
+ * @public
439
+ * @param {number} pitch - Pitch angle in radians.
440
+ * @param {number} yaw - Yaw angle in radians.
441
+ * @param {number} roll - Roll angle in radians.
442
+ */
294
443
  setPitchYawRoll(pitch: number, yaw: number, roll: number): void;
444
+ /**
445
+ * Returns pitch angle.
446
+ * @public
447
+ * @returns {number} Pitch angle in radians.
448
+ */
295
449
  getPitch(): number;
450
+ /**
451
+ * Returns yaw angle.
452
+ * @public
453
+ * @returns {number} Yaw angle in radians.
454
+ */
296
455
  getYaw(): number;
456
+ /**
457
+ * Returns roll angle.
458
+ * @public
459
+ * @returns {number} Roll angle in radians.
460
+ */
297
461
  getRoll(): number;
462
+ /**
463
+ * Returns absolute pitch angle.
464
+ * @public
465
+ * @returns {number} Absolute pitch angle in radians.
466
+ */
298
467
  getAbsolutePitch(): number;
468
+ /**
469
+ * Returns absolute yaw angle.
470
+ * @public
471
+ * @returns {number} Absolute yaw angle in radians.
472
+ */
299
473
  getAbsoluteYaw(): number;
474
+ /**
475
+ * Returns absolute roll angle.
476
+ * @public
477
+ * @returns {number} Absolute roll angle in radians.
478
+ */
300
479
  getAbsoluteRoll(): number;
301
480
  /**
302
- * Returns camera quaternion
481
+ * Returns camera rotation quaternion.
482
+ * @public
483
+ * @returns {Quat} Camera rotation quaternion.
303
484
  */
304
485
  getRotation(): Quat;
486
+ /**
487
+ * Sets camera orientation from a quaternion.
488
+ * @public
489
+ * @param {Quat} rot - Rotation quaternion.
490
+ * @param {Vec3} [up] - Base up vector.
491
+ * @param {Vec3} [right] - Base right vector.
492
+ * @param {Vec3} [back] - Base backward vector.
493
+ */
305
494
  setRotation(rot: Quat, up?: Vec3, right?: Vec3, back?: Vec3): void;
495
+ /**
496
+ * Rotates current camera basis by quaternion.
497
+ * @public
498
+ * @param {Quat} rot - Rotation quaternion.
499
+ */
306
500
  rotate(rot: Quat): void;
307
501
  /**
308
502
  * Returns normal vector direction to the unprojected screen point from camera eye
309
503
  * @public
310
- * @param {Vec2} pos - Screen X coordinate
311
- * @returns {Vec3} - Direction vector
504
+ * @param {Vec2} pos - Screen coordinates in pixels.
505
+ * @param {number} [dist] - Optional projection distance for orthographic mode.
506
+ * @param {Vec3} [outPos] - Optional output world position for orthographic mode.
507
+ * @returns {Vec3} - Direction vector.
312
508
  */
313
509
  unproject2v(pos: Vec2, dist?: number, outPos?: Vec3): Vec3;
314
510
  /**
315
511
  * Returns normal vector direction to the unprojected screen point from camera eye
316
512
  * @public
317
- * @param {number} x - Screen X coordinate
318
- * @param {number} y - Screen Y coordinate
319
- * @returns {Vec3} - Direction vector
513
+ * @param {number} x - Screen X coordinate in pixels.
514
+ * @param {number} y - Screen Y coordinate in pixels.
515
+ * @param {number} [dist] - Optional projection distance for orthographic mode.
516
+ * @param {Vec3} [outPos] - Optional output world position for orthographic mode.
517
+ * @returns {Vec3} - Direction vector.
320
518
  */
321
519
  unproject(x: number, y: number, dist?: number, outPos?: Vec3): Vec3;
520
+ /**
521
+ * Returns a world-space ray corresponding to the given screen point.
522
+ * For perspective camera the ray shares camera eye as origin.
523
+ * For orthographic camera the origin is offset across the view plane,
524
+ * and the direction equals the camera forward vector.
525
+ * @public
526
+ * @param {number} x - Screen X coordinate in pixels.
527
+ * @param {number} y - Screen Y coordinate in pixels.
528
+ * @returns {Ray}
529
+ */
530
+ getRay(x: number, y: number, res?: Ray): Ray;
531
+ /**
532
+ * Returns a world-space ray corresponding to the given screen point.
533
+ * @public
534
+ * @param {Vec2} pos - Screen coordinates in pixels.
535
+ * @returns {Ray}
536
+ */
537
+ getRay2v(pos: Vec2): Ray;
322
538
  /**
323
539
  * Gets projected 3d point to the 2d screen coordinates
324
540
  * @public
@@ -377,47 +593,84 @@ declare class Camera {
377
593
  */
378
594
  getViewMatrix(): NumberArray16;
379
595
  /**
380
- * Returns normal matrix.
596
+ * Returns camera normal matrix.
381
597
  * @public
382
- * @returns {NumberArray9} - Normal matrix.
598
+ * @returns {NumberArray9}
383
599
  */
384
600
  getNormalMatrix(): NumberArray9;
601
+ /**
602
+ * Sets current active frustum index.
603
+ * @public
604
+ * @param {number} k - Frustum index.
605
+ */
385
606
  setCurrentFrustum(k: number): void;
607
+ /**
608
+ * Returns current active frustum index.
609
+ * @public
610
+ * @returns {number} Current frustum index.
611
+ */
386
612
  getCurrentFrustum(): number;
613
+ /**
614
+ * Checks whether sphere intersects any camera frustum.
615
+ * @public
616
+ * @param {Sphere} sphere - Bounding sphere.
617
+ * @returns {boolean} `true` when visible in at least one frustum.
618
+ */
387
619
  containsSphere(sphere: Sphere): boolean;
620
+ /**
621
+ * Returns current active frustum.
622
+ * @public
623
+ * @returns {Frustum} Active frustum instance.
624
+ */
388
625
  get frustum(): Frustum;
389
626
  /**
390
627
  * Returns projection matrix.
391
628
  * @public
392
- * @returns {Mat4} - Projection matrix.
629
+ * @returns {NumberArray16} Projection matrix.
393
630
  */
394
631
  getProjectionMatrix(): NumberArray16;
395
632
  /**
396
- * Returns projection and model matrix product.
633
+ * Returns projection-view matrix.
397
634
  * @public
398
- * @return {Mat4} - Projection-view matrix.
635
+ * @returns {NumberArray16} Projection-view matrix.
399
636
  */
400
637
  getProjectionViewMatrix(): NumberArray16;
401
638
  /**
402
- * Returns projection and model RTE matrix product.
639
+ * Returns projection-view RTE matrix.
403
640
  * @public
404
- * @return {Mat4} - Projection-view matrix.
641
+ * @returns {NumberArray16} Projection-view RTE matrix.
405
642
  */
406
643
  getProjectionViewRTEMatrix(): NumberArray16;
407
644
  /**
408
- * Returns inverse projection and model matrix product.
645
+ * Returns inverse projection-view matrix.
409
646
  * @public
410
- * @returns {Mat4} - Inverse projection-view matrix.
647
+ * @returns {NumberArray16} Inverse projection-view matrix.
411
648
  */
412
649
  getInverseProjectionViewMatrix(): NumberArray16;
413
650
  /**
414
651
  * Returns inverse projection matrix.
415
652
  * @public
416
- * @returns {Mat4} - Inverse projection-view matrix.
653
+ * @returns {NumberArray16} Inverse projection matrix.
417
654
  */
418
655
  getInverseProjectionMatrix(): NumberArray16;
656
+ /**
657
+ * Places camera at a fixed distance from a point and looks at it.
658
+ * @public
659
+ * @param {Vec3} cartesian - Target cartesian point.
660
+ * @param {number} [distance=10000.0] - Distance from the target.
661
+ */
419
662
  viewDistance(cartesian: Vec3, distance?: number): void;
663
+ /**
664
+ * Copies camera pose and projection settings from another camera.
665
+ * @public
666
+ * @param {Camera} cam - Source camera.
667
+ */
420
668
  copy(cam: Camera): void;
669
+ /**
670
+ * Returns camera altitude value for base camera.
671
+ * @public
672
+ * @returns {number} Camera `y` coordinate.
673
+ */
421
674
  getAltitude(): number;
422
675
  }
423
676
  export { Camera };