@openglobus/og 0.17.2 → 0.18.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.
- package/README.md +75 -46
- package/dist/@openglobus/og.esm.js +1 -20
- package/dist/@openglobus/og.esm.js.map +1 -1
- package/dist/@openglobus/og.umd.js +1 -20
- package/dist/@openglobus/og.umd.js.map +1 -1
- package/dist/@openglobus/res/fonts/Karla-Bold.json +5252 -0
- package/dist/@openglobus/res/fonts/Karla-Bold.ttf.cfg +920 -0
- package/dist/@openglobus/res/fonts/Karla-Bold.ttf.png +0 -0
- package/dist/@openglobus/res/fonts/Karla-Light.json +5252 -0
- package/dist/@openglobus/res/fonts/Karla-Light.ttf.cfg +830 -0
- package/dist/@openglobus/res/fonts/Karla-Light.ttf.png +0 -0
- package/dist/@openglobus/res/fonts/Karla-Medium.json +5252 -0
- package/dist/@openglobus/res/fonts/Karla-Medium.ttf.cfg +1196 -0
- package/dist/@openglobus/res/fonts/Karla-Medium.ttf.png +0 -0
- package/dist/@openglobus/res/fonts/NotoSansArabic-Regular.json +3332 -0
- package/dist/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.cfg +1370 -0
- package/dist/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.png +0 -0
- package/dist/@openglobus/res/fonts/Roboto-Regular.json +37147 -0
- package/dist/@openglobus/res/fonts/Roboto-Regular.ttf.cfg +1340 -0
- package/dist/@openglobus/res/fonts/Roboto-Regular.ttf.png +0 -0
- package/dist/@openglobus/res/fonts/arial.json +4321 -0
- package/dist/@openglobus/res/fonts/arial.ttf.cfg +1570 -0
- package/dist/@openglobus/res/fonts/arial.ttf.png +0 -0
- package/dist/@openglobus/res/night-4326.png +0 -0
- package/dist/@openglobus/res/night.png +0 -0
- package/dist/@openglobus/res/spec.png +0 -0
- package/package.json +25 -23
- package/src/{og/Clock.js → Clock.ts} +100 -78
- package/src/Deferred.ts +17 -0
- package/src/Events.ts +200 -0
- package/src/{og/Extent.js → Extent.ts} +324 -352
- package/src/Globe.ts +363 -0
- package/src/{og/ImageCanvas.js → ImageCanvas.ts} +244 -236
- package/src/Lock.ts +41 -0
- package/src/{og/LonLat.js → LonLat.ts} +50 -47
- package/src/{og/Object3d.js → Object3d.ts} +89 -55
- package/src/Popup.ts +228 -0
- package/src/{og/QueueArray.js → QueueArray.ts} +76 -75
- package/src/{og/Rectangle.js → Rectangle.ts} +115 -111
- package/src/Stack.ts +58 -0
- package/src/{og/astro/astro.js → astro/astro.ts} +49 -51
- package/src/{og/astro/earth.js → astro/earth.ts} +8 -9
- package/src/{og/astro/jd.js → astro/jd.ts} +92 -111
- package/src/{og/astro/orbit.js → astro/orbit.ts} +35 -37
- package/src/{og/astro/rotation.js → astro/rotation.ts} +4 -6
- package/src/{og/bv/Box.js → bv/Box.ts} +21 -17
- package/src/{og/bv/Sphere.js → bv/Sphere.ts} +21 -19
- package/src/bv/index.ts +4 -0
- package/src/{og/camera/Camera.js → camera/Camera.ts} +254 -197
- package/src/{og/camera/Frustum.js → camera/Frustum.ts} +137 -111
- package/src/{og/camera/PlanetCamera.js → camera/PlanetCamera.ts} +246 -182
- package/src/camera/index.ts +4 -0
- package/src/{og/cons.js → cons.ts} +14 -18
- package/src/{og/control/Atmosphere.js → control/Atmosphere.ts} +50 -50
- package/src/{og/control/CompassButton.js → control/CompassButton.ts} +27 -30
- package/src/{og/control/Control.js → control/Control.ts} +76 -70
- package/src/{og/control/DebugInfo.js → control/DebugInfo.ts} +130 -62
- package/src/{og/control/DrawingSwitcher.js → control/DrawingSwitcher.ts} +16 -22
- package/src/control/EarthCoordinates.ts +222 -0
- package/src/control/EarthNavigation.ts +293 -0
- package/src/{og/control/GeoImageDragControl.js → control/GeoImageDragControl.ts} +37 -29
- package/src/control/KeyboardNavigation.ts +168 -0
- package/src/{og/control/LayerAnimation.js → control/LayerAnimation.ts} +74 -90
- package/src/control/LayerSwitcher.ts +76 -0
- package/src/{og/control/Lighting.js → control/Lighting.ts} +158 -120
- package/src/control/MouseNavigation.ts +468 -0
- package/src/control/MouseWheelZoomControl.ts +269 -0
- package/src/{og/control/RulerSwitcher.js → control/RulerSwitcher.ts} +18 -20
- package/src/control/ScaleControl.ts +131 -0
- package/src/control/SegmentBoundVisualization.ts +50 -0
- package/src/control/ShowFps.ts +28 -0
- package/src/control/SimpleNavigation.ts +118 -0
- package/src/{og/control/SimpleSkyBackground.js → control/SimpleSkyBackground.ts} +36 -38
- package/src/{og/control/Sun.js → control/Sun.ts} +56 -64
- package/src/control/ToggleWireframe.ts +35 -0
- package/src/control/TouchNavigation.ts +368 -0
- package/src/control/ZoomControl.ts +111 -0
- package/src/control/drawing/DrawingControl.ts +45 -0
- package/src/{og/control/drawing/LineStringDrawingScene.js → control/drawing/LineStringDrawingScene.ts} +28 -35
- package/src/{og/control/drawing/PolygonDrawingScene.js → control/drawing/PolygonDrawingScene.ts} +148 -201
- package/src/{og/control/elevationProfile/ElevationProfile.js → control/elevationProfile/ElevationProfile.ts} +70 -36
- package/src/control/heightRuler/HeightRuler.ts +16 -0
- package/src/{og/control/heightRuler/HeightRulerScene.js → control/heightRuler/HeightRulerScene.ts} +92 -87
- package/src/{og/control/heightRuler/HeightRulerSwitcher.js → control/heightRuler/HeightRulerSwitcher.ts} +3 -3
- package/src/control/index.ts +45 -0
- package/src/control/ruler/Ruler.ts +35 -0
- package/src/{og/control/ruler/RulerScene.js → control/ruler/RulerScene.ts} +163 -121
- package/src/{og/control/selection/Selection.js → control/selection/Selection.ts} +23 -21
- package/src/{og/control/selection/SelectionScene.js → control/selection/SelectionScene.ts} +64 -50
- package/src/{og/control/timeline/TimelineControl.js → control/timeline/TimelineControl.ts} +37 -28
- package/src/{og/control/timeline/TimelineModel.js → control/timeline/TimelineModel.ts} +50 -35
- package/src/{og/control/timeline/TimelineView.js → control/timeline/TimelineView.ts} +162 -113
- package/src/{og/control/timeline/timelineUtils.js → control/timeline/timelineUtils.ts} +11 -10
- package/src/{og/control → control}/visibleExtent/Segment.js +5 -5
- package/src/{og/control → control}/visibleExtent/VisibleExtent.js +8 -15
- package/src/{og/control/visibleExtent/drawnode.js → control/visibleExtent/drawnode.ts} +1 -3
- package/src/{og/ellipsoid/Ellipsoid.js → ellipsoid/Ellipsoid.ts} +113 -59
- package/src/ellipsoid/index.ts +4 -0
- package/src/{og/ellipsoid/wgs84.js → ellipsoid/wgs84.ts} +1 -3
- package/src/{og/entity/BaseBillboard.js → entity/BaseBillboard.ts} +128 -102
- package/src/entity/BaseBillboardHandler.ts +772 -0
- package/src/{og/entity/Billboard.js → entity/Billboard.ts} +77 -47
- package/src/entity/BillboardHandler.ts +135 -0
- package/src/{og/entity/Entity.js → entity/Entity.ts} +285 -226
- package/src/{og/entity/EntityCollection.js → entity/EntityCollection.ts} +340 -247
- package/src/{og/entity/GeoObject.js → entity/GeoObject.ts} +122 -67
- package/src/{og/entity/GeoObjectHandler.js → entity/GeoObjectHandler.ts} +273 -198
- package/src/entity/Geometry.ts +486 -0
- package/src/{og/entity/GeometryHandler.js → entity/GeometryHandler.ts} +383 -541
- package/src/{og/entity/Label.js → entity/Label.ts} +131 -83
- package/src/{og/entity/LabelHandler.js → entity/LabelHandler.ts} +289 -255
- package/src/{og/entity/LabelWorker.js → entity/LabelWorker.ts} +26 -36
- package/src/{og/entity/PointCloud.js → entity/PointCloud.ts} +200 -164
- package/src/entity/PointCloudHandler.ts +125 -0
- package/src/{og/entity/Polyline.js → entity/Polyline.ts} +517 -539
- package/src/{og/entity/PolylineHandler.js → entity/PolylineHandler.ts} +29 -31
- package/src/{og/entity/Ray.js → entity/Ray.ts} +89 -60
- package/src/{og/entity/RayHandler.js → entity/RayHandler.ts} +201 -306
- package/src/{og/entity/Strip.js → entity/Strip.ts} +143 -100
- package/src/{og/entity/StripHandler.js → entity/StripHandler.ts} +76 -72
- package/src/entity/index.ts +12 -0
- package/src/index.ts +173 -0
- package/src/input/KeyboardHandler.ts +196 -0
- package/src/{og/input/MouseHandler.js → input/MouseHandler.ts} +46 -35
- package/src/input/TouchHandler.ts +54 -0
- package/src/{og/input/input.js → input/input.ts} +1 -3
- package/src/{og/layer/BaseGeoImage.js → layer/BaseGeoImage.ts} +174 -107
- package/src/{og/layer/CanvasTiles.js → layer/CanvasTiles.ts} +139 -105
- package/src/{og/layer/GeoImage.js → layer/GeoImage.ts} +62 -52
- package/src/layer/GeoTexture2d.ts +56 -0
- package/src/{og/layer/GeoVideo.js → layer/GeoVideo.ts} +53 -53
- package/src/{og/layer/KML.js → layer/KML.ts} +63 -74
- package/src/{og/layer/Layer.js → layer/Layer.ts} +399 -223
- package/src/{og/layer/Material.js → layer/Material.ts} +40 -35
- package/src/{og/layer/Vector.js → layer/Vector.ts} +319 -267
- package/src/{og/layer/WMS.js → layer/WMS.ts} +76 -64
- package/src/{og/layer/XYZ.js → layer/XYZ.ts} +123 -98
- package/src/layer/index.ts +12 -0
- package/src/{og/light/LightSource.js → light/LightSource.ts} +132 -93
- package/src/{og/math/Line2.js → math/Line2.ts} +11 -8
- package/src/{og/math/Line3.js → math/Line3.ts} +49 -27
- package/src/{og/math/Mat3.js → math/Mat3.ts} +43 -27
- package/src/{og/math/Mat4.js → math/Mat4.ts} +110 -77
- package/src/{og/math/Plane.js → math/Plane.ts} +28 -23
- package/src/{og/math/Quat.js → math/Quat.ts} +238 -222
- package/src/{og/math/Ray.js → math/Ray.ts} +59 -63
- package/src/{og/math/Vec2.js → math/Vec2.ts} +85 -76
- package/src/{og/math/Vec3.js → math/Vec3.ts} +141 -140
- package/src/{og/math/Vec4.js → math/Vec4.ts} +64 -53
- package/src/{og/math/coder.js → math/coder.ts} +30 -27
- package/src/math/index.ts +26 -0
- package/src/{og/math.js → math.ts} +46 -49
- package/src/{og/mercator.js → mercator.ts} +143 -149
- package/src/{og/proj/EPSG3857.js → proj/EPSG3857.ts} +1 -3
- package/src/{og/proj/EPSG4326.js → proj/EPSG4326.ts} +11 -13
- package/src/{og/proj/Proj.js → proj/Proj.ts} +27 -23
- package/src/{og/quadTree/EPSG4326QuadTreeStrategy.js → quadTree/EPSG4326QuadTreeStrategy.ts} +10 -13
- package/src/{og/quadTree/EarthQuadTreeStrategy.js → quadTree/EarthQuadTreeStrategy.ts} +11 -13
- package/src/quadTree/EntityCollectionNode.ts +395 -0
- package/src/{og/quadTree/MarsQuadTreeStrategy.js → quadTree/MarsQuadTreeStrategy.ts} +10 -13
- package/src/{og/quadTree/Node.js → quadTree/Node.ts} +283 -191
- package/src/{og/quadTree/QuadTreeStrategy.js → quadTree/QuadTreeStrategy.ts} +35 -29
- package/src/quadTree/Wgs84QuadTreeStrategy.ts +22 -0
- package/src/quadTree/index.ts +14 -0
- package/src/{og/quadTree/quadTree.js → quadTree/quadTree.ts} +75 -77
- package/src/{og/renderer/Renderer.js → renderer/Renderer.ts} +454 -298
- package/src/{og/renderer/RendererEvents.js → renderer/RendererEvents.ts} +347 -256
- package/src/{og/scene/Axes.js → scene/Axes.ts} +26 -22
- package/src/{og/scene/BaseNode.js → scene/BaseNode.ts} +53 -47
- package/src/{og/scene/Planet.js → scene/Planet.ts} +776 -592
- package/src/{og/scene/RenderNode.js → scene/RenderNode.ts} +105 -91
- package/src/{og/scene/SkyBox.js → scene/SkyBox.ts} +29 -25
- package/src/scene/index.ts +6 -0
- package/src/{og/segment/Segment.js → segment/Segment.ts} +497 -371
- package/src/{og/segment/SegmentLonLat.js → segment/SegmentLonLat.ts} +81 -87
- package/src/{og/segment/SegmentLonLatWgs84.js → segment/SegmentLonLatWgs84.ts} +9 -16
- package/src/{og/segment/Slice.js → segment/Slice.ts} +15 -9
- package/src/{og/segment/segmentHelper.js → segment/segmentHelper.ts} +57 -49
- package/src/{og/shaders/atmos.js → shaders/atmos.ts} +4 -6
- package/src/{og/shaders/billboard.js → shaders/billboard.ts} +3 -5
- package/src/{og/shaders/bloom.js → shaders/bloom.ts} +2 -4
- package/src/{og/shaders/blur.js → shaders/blur.ts} +4 -7
- package/src/{og/shaders/depth.js → shaders/depth.ts} +1 -3
- package/src/{og/shaders/drawnode.js → shaders/drawnode.ts} +19 -21
- package/src/{og/shaders/geoObject.js → shaders/geoObject.ts} +17 -19
- package/src/{og/shaders/label.js → shaders/label.ts} +4 -6
- package/src/{og/shaders/lumFilter.js → shaders/lumFilter.ts} +2 -4
- package/src/{og/shaders/pickingMask.js → shaders/pickingMask.ts} +2 -4
- package/src/{og/shaders/pointCloud.js → shaders/pointCloud.ts} +7 -10
- package/src/{og/shaders/polyline.js → shaders/polyline.ts} +3 -200
- package/src/{og/shaders/ray.js → shaders/ray.ts} +2 -4
- package/src/{og/shaders/screenFrame.js → shaders/screenFrame.ts} +2 -4
- package/src/{og/shaders/skybox.js → shaders/skybox.ts} +7 -9
- package/src/{og/shaders/toneMapping.js → shaders/toneMapping.ts} +2 -4
- package/src/{og/shaders/utils.js → shaders/utils.ts} +0 -2
- package/src/{og/terrain/BilTerrain.js → terrain/BilTerrain.ts} +38 -32
- package/src/terrain/EmptyTerrain.ts +230 -0
- package/src/{og/terrain/Geoid.js → terrain/Geoid.ts} +67 -41
- package/src/{og/terrain/GlobusTerrain.js → terrain/GlobusTerrain.ts} +159 -153
- package/src/{og/terrain/MapboxTerrain.js → terrain/MapboxTerrain.ts} +58 -61
- package/src/terrain/index.ts +6 -0
- package/src/ui/Button.ts +121 -0
- package/src/ui/ButtonGroup.ts +63 -0
- package/src/ui/Dialog.ts +244 -0
- package/src/ui/Slider.ts +188 -0
- package/src/ui/ToggleButton.ts +68 -0
- package/src/{og/ui/View.js → ui/View.ts} +66 -59
- package/src/utils/BaseWorker.ts +60 -0
- package/src/utils/FontAtlas.ts +356 -0
- package/src/{og/utils/GeoImageCreator.js → utils/GeoImageCreator.ts} +45 -29
- package/src/{og/utils/ImagesCacheManager.js → utils/ImagesCacheManager.ts} +85 -70
- package/src/utils/Loader.ts +247 -0
- package/src/{og/utils/NormalMapCreator.js → utils/NormalMapCreator.ts} +114 -77
- package/src/{og/utils/PlainSegmentWorker.js → utils/PlainSegmentWorker.ts} +41 -24
- package/src/{og/utils/TerrainWorker.js → utils/TerrainWorker.ts} +51 -36
- package/src/utils/TextureAtlas.ts +322 -0
- package/src/{og/utils/VectorTileCreator.js → utils/VectorTileCreator.ts} +67 -52
- package/src/{og/utils/colorTable.js → utils/colorTable.ts} +142 -144
- package/src/{og/utils/earcut.js → utils/earcut.ts} +664 -661
- package/src/{og/utils/objParser.js → utils/objParser.ts} +66 -37
- package/src/{og/utils/shared.js → utils/shared.ts} +267 -206
- package/src/utils/units.ts +78 -0
- package/src/webgl/BaseFramebuffer.ts +125 -0
- package/src/webgl/Framebuffer.ts +206 -0
- package/src/webgl/Handler.ts +1414 -0
- package/src/webgl/Multisample.ts +153 -0
- package/src/webgl/Program.ts +451 -0
- package/src/{og/webgl/ProgramController.js → webgl/ProgramController.ts} +44 -43
- package/src/webgl/index.ts +13 -0
- package/src/{og/webgl/types.js → webgl/types.ts} +29 -31
- package/src/webgl/variableHandlers.ts +114 -0
- package/src/og/Deferred.js +0 -11
- package/src/og/Events.js +0 -185
- package/src/og/Globe.js +0 -342
- package/src/og/Lock.js +0 -44
- package/src/og/Popup.js +0 -187
- package/src/og/Stack.js +0 -49
- package/src/og/bv/index.js +0 -4
- package/src/og/camera/index.js +0 -4
- package/src/og/control/EarthCoordinates.js +0 -214
- package/src/og/control/EarthNavigation.js +0 -258
- package/src/og/control/KeyboardNavigation.js +0 -172
- package/src/og/control/LayerSwitcher.js +0 -424
- package/src/og/control/MouseNavigation.js +0 -436
- package/src/og/control/MouseWheelZoomControl.js +0 -253
- package/src/og/control/ScaleControl.js +0 -119
- package/src/og/control/SegmentBoundVisualization.js +0 -54
- package/src/og/control/ShowFps.js +0 -40
- package/src/og/control/SimpleNavigation.js +0 -123
- package/src/og/control/ToggleWireframe.js +0 -35
- package/src/og/control/TouchNavigation.js +0 -350
- package/src/og/control/ZoomControl.js +0 -115
- package/src/og/control/drawing/DrawingControl.js +0 -51
- package/src/og/control/heightRuler/HeightRuler.js +0 -12
- package/src/og/control/index.js +0 -56
- package/src/og/control/ruler/Ruler.js +0 -39
- package/src/og/ellipsoid/index.js +0 -4
- package/src/og/entity/BillboardHandler.js +0 -883
- package/src/og/entity/Geometry.js +0 -320
- package/src/og/entity/PointCloudHandler.js +0 -122
- package/src/og/entity/index.js +0 -9
- package/src/og/index.js +0 -112
- package/src/og/input/KeyboardHandler.js +0 -195
- package/src/og/input/TouchHandler.js +0 -59
- package/src/og/layer/GeoTexture2d.js +0 -50
- package/src/og/layer/index.js +0 -11
- package/src/og/math/index.js +0 -23
- package/src/og/quadTree/EntityCollectionNode.js +0 -391
- package/src/og/quadTree/Wgs84QuadTreeStrategy.js +0 -27
- package/src/og/quadTree/index.js +0 -14
- package/src/og/res/images.js +0 -8
- package/src/og/scene/index.js +0 -5
- package/src/og/terrain/EmptyTerrain.js +0 -174
- package/src/og/terrain/index.js +0 -6
- package/src/og/ui/Button.js +0 -107
- package/src/og/ui/ButtonGroup.js +0 -57
- package/src/og/ui/Dialog.js +0 -239
- package/src/og/ui/Slider.js +0 -170
- package/src/og/ui/ToggleButton.js +0 -51
- package/src/og/ui/UIhelpers.js +0 -155
- package/src/og/utils/BaseWorker.js +0 -46
- package/src/og/utils/FontAtlas.js +0 -218
- package/src/og/utils/Loader.js +0 -188
- package/src/og/utils/TextureAtlas.js +0 -291
- package/src/og/utils/functionComposition.js +0 -13
- package/src/og/utils/units.js +0 -78
- package/src/og/webgl/Framebuffer.js +0 -311
- package/src/og/webgl/Handler.js +0 -1170
- package/src/og/webgl/Multisample.js +0 -275
- package/src/og/webgl/Program.js +0 -407
- package/src/og/webgl/callbacks.js +0 -98
- package/src/og/webgl/index.js +0 -13
- package/src/og.jsdoc +0 -3
- package/types/Clock.d.ts +0 -99
- package/types/Deferred.d.ts +0 -6
- package/types/Events.d.ts +0 -78
- package/types/Extent.d.ts +0 -166
- package/types/Globe.d.ts +0 -108
- package/types/ImageCanvas.d.ts +0 -128
- package/types/Lock.d.ts +0 -12
- package/types/LonLat.d.ts +0 -127
- package/types/Object3d.d.ts +0 -35
- package/types/Popup.d.ts +0 -29
- package/types/QueueArray.d.ts +0 -19
- package/types/Rectangle.d.ts +0 -80
- package/types/Stack.d.ts +0 -19
- package/types/arial.d.ts +0 -49
- package/types/astro/astro.d.ts +0 -38
- package/types/astro/earth.d.ts +0 -7
- package/types/astro/jd.d.ts +0 -254
- package/types/bv/Box.d.ts +0 -30
- package/types/bv/Sphere.d.ts +0 -38
- package/types/bv/index.d.ts +0 -3
- package/types/camera/Camera.d.ts +0 -314
- package/types/camera/Frustum.d.ts +0 -133
- package/types/camera/PlanetCamera.d.ts +0 -219
- package/types/camera/index.d.ts +0 -3
- package/types/cons.d.ts +0 -40
- package/types/control/Atmosphere.d.ts +0 -15
- package/types/control/CompassButton.d.ts +0 -16
- package/types/control/Control.d.ts +0 -104
- package/types/control/DebugInfo.d.ts +0 -19
- package/types/control/DrawingSwitcher.d.ts +0 -13
- package/types/control/EarthCoordinates.d.ts +0 -44
- package/types/control/EarthNavigation.d.ts +0 -43
- package/types/control/GeoImageDragControl.d.ts +0 -14
- package/types/control/KeyboardNavigation.d.ts +0 -24
- package/types/control/LayerAnimation.d.ts +0 -73
- package/types/control/LayerSwitcher.d.ts +0 -64
- package/types/control/Lighting.d.ts +0 -41
- package/types/control/MouseNavigation.d.ts +0 -49
- package/types/control/MouseWheelZoomControl.d.ts +0 -46
- package/types/control/ScaleControl.d.ts +0 -23
- package/types/control/ShowFps.d.ts +0 -11
- package/types/control/SimpleNavigation.d.ts +0 -26
- package/types/control/SimpleSkyBackground.d.ts +0 -15
- package/types/control/Sun.d.ts +0 -53
- package/types/control/ToggleWireframe.d.ts +0 -12
- package/types/control/TouchNavigation.d.ts +0 -54
- package/types/control/ZoomControl.d.ts +0 -26
- package/types/control/drawing/DrawingControl.d.ts +0 -14
- package/types/control/drawing/LineStringDrawingScene.d.ts +0 -5
- package/types/control/drawing/PolygonDrawingScene.d.ts +0 -99
- package/types/control/heightRuler/HeightRuler.d.ts +0 -6
- package/types/control/heightRuler/HeightRulerScene.d.ts +0 -23
- package/types/control/index.d.ts +0 -27
- package/types/control/ruler/Ruler.d.ts +0 -13
- package/types/control/ruler/RulerScene.d.ts +0 -51
- package/types/control/selection/Selection.d.ts +0 -49
- package/types/control/selection/SelectionScene.d.ts +0 -32
- package/types/control/timeline/TimelineControl.d.ts +0 -10
- package/types/control/timeline/TimelineModel.d.ts +0 -33
- package/types/control/timeline/TimelineView.d.ts +0 -57
- package/types/control/timeline/timelineUtils.d.ts +0 -9
- package/types/ellipsoid/Ellipsoid.d.ts +0 -170
- package/types/ellipsoid/index.d.ts +0 -3
- package/types/ellipsoid/wgs84.d.ts +0 -6
- package/types/entity/BaseBillboard.d.ts +0 -215
- package/types/entity/Billboard.d.ts +0 -94
- package/types/entity/BillboardHandler.d.ts +0 -75
- package/types/entity/Entity.d.ts +0 -340
- package/types/entity/EntityCollection.d.ts +0 -303
- package/types/entity/GeoObject.d.ts +0 -117
- package/types/entity/GeoObjectHandler.d.ts +0 -41
- package/types/entity/Geometry.d.ts +0 -79
- package/types/entity/GeometryHandler.d.ts +0 -76
- package/types/entity/Label.d.ts +0 -190
- package/types/entity/LabelHandler.d.ts +0 -31
- package/types/entity/LabelWorker.d.ts +0 -9
- package/types/entity/PointCloud.d.ts +0 -174
- package/types/entity/PointCloudHandler.d.ts +0 -38
- package/types/entity/Polyline.d.ts +0 -307
- package/types/entity/PolylineHandler.d.ts +0 -18
- package/types/entity/Ray.d.ts +0 -122
- package/types/entity/RayHandler.d.ts +0 -63
- package/types/entity/Strip.d.ts +0 -119
- package/types/entity/StripHandler.d.ts +0 -38
- package/types/entity/index.d.ts +0 -8
- package/types/index.d.ts +0 -53
- package/types/input/KeyboardHandler.d.ts +0 -17
- package/types/input/MouseHandler.d.ts +0 -5
- package/types/input/TouchHandler.d.ts +0 -5
- package/types/input/input.d.ts +0 -42
- package/types/layer/BaseGeoImage.d.ts +0 -116
- package/types/layer/CanvasTiles.d.ts +0 -73
- package/types/layer/GeoImage.d.ts +0 -51
- package/types/layer/GeoTexture2d.d.ts +0 -7
- package/types/layer/GeoVideo.d.ts +0 -47
- package/types/layer/KML.d.ts +0 -93
- package/types/layer/Layer.d.ts +0 -320
- package/types/layer/Material.d.ts +0 -45
- package/types/layer/Vector.d.ts +0 -211
- package/types/layer/WMS.d.ts +0 -66
- package/types/layer/XYZ.d.ts +0 -122
- package/types/layer/index.d.ts +0 -10
- package/types/light/LightSource.d.ts +0 -178
- package/types/math/Line2.d.ts +0 -11
- package/types/math/Line3.d.ts +0 -10
- package/types/math/Mat3.d.ts +0 -65
- package/types/math/Mat4.d.ts +0 -176
- package/types/math/Plane.d.ts +0 -18
- package/types/math/Quat.d.ts +0 -379
- package/types/math/Ray.d.ts +0 -82
- package/types/math/Vec2.d.ts +0 -309
- package/types/math/Vec3.d.ts +0 -472
- package/types/math/Vec4.d.ts +0 -161
- package/types/math/coder.d.ts +0 -43
- package/types/math/index.d.ts +0 -11
- package/types/math.d.ts +0 -268
- package/types/mercator.d.ts +0 -92
- package/types/proj/EPSG3857.d.ts +0 -6
- package/types/proj/EPSG4326.d.ts +0 -6
- package/types/proj/Proj.d.ts +0 -42
- package/types/quadTree/EPSG4326QuadTreeStrategy.d.ts +0 -3
- package/types/quadTree/EarthQuadTreeStrategy.d.ts +0 -3
- package/types/quadTree/EntityCollectionNode.d.ts +0 -41
- package/types/quadTree/MarsQuadTreeStrategy.d.ts +0 -3
- package/types/quadTree/Node.d.ts +0 -58
- package/types/quadTree/QuadTreeStrategy.d.ts +0 -21
- package/types/quadTree/Wgs84QuadTreeStrategy.d.ts +0 -3
- package/types/quadTree/index.d.ts +0 -12
- package/types/quadTree/quadTree.d.ts +0 -40
- package/types/renderer/Renderer.d.ts +0 -291
- package/types/renderer/RendererEvents.d.ts +0 -241
- package/types/res/images.d.ts +0 -2
- package/types/scene/Axes.d.ts +0 -10
- package/types/scene/BaseNode.d.ts +0 -60
- package/types/scene/Planet.d.ts +0 -594
- package/types/scene/RenderNode.d.ts +0 -152
- package/types/scene/SkyBox.d.ts +0 -9
- package/types/scene/index.d.ts +0 -4
- package/types/segment/Segment.d.ts +0 -273
- package/types/segment/SegmentLonLat.d.ts +0 -22
- package/types/segment/SegmentLonLatWgs84.d.ts +0 -4
- package/types/segment/Slice.d.ts +0 -10
- package/types/segment/segmentHelper.d.ts +0 -13
- package/types/shaders/atmos.d.ts +0 -4
- package/types/shaders/billboard.d.ts +0 -3
- package/types/shaders/depth.d.ts +0 -2
- package/types/shaders/drawnode.d.ts +0 -8
- package/types/shaders/geoObject.d.ts +0 -3
- package/types/shaders/label.d.ts +0 -4
- package/types/shaders/pickingMask.d.ts +0 -2
- package/types/shaders/pointCloud.d.ts +0 -2
- package/types/shaders/polyline.d.ts +0 -3
- package/types/shaders/ray.d.ts +0 -2
- package/types/shaders/screenFrame.d.ts +0 -2
- package/types/shaders/skybox.d.ts +0 -2
- package/types/shaders/toneMapping.d.ts +0 -2
- package/types/shaders/utils.d.ts +0 -1
- package/types/terrain/BilTerrain.d.ts +0 -14
- package/types/terrain/EmptyTerrain.d.ts +0 -87
- package/types/terrain/Geoid.d.ts +0 -17
- package/types/terrain/GlobusTerrain.d.ts +0 -122
- package/types/terrain/MapboxTerrain.d.ts +0 -14
- package/types/terrain/index.d.ts +0 -5
- package/types/ui/Button.d.ts +0 -21
- package/types/ui/ButtonGroup.d.ts +0 -12
- package/types/ui/Dialog.d.ts +0 -41
- package/types/ui/Slider.d.ts +0 -33
- package/types/ui/ToggleButton.d.ts +0 -10
- package/types/ui/UIhelpers.d.ts +0 -13
- package/types/ui/View.d.ts +0 -33
- package/types/ui/icons.d.ts +0 -1
- package/types/utils/BaseWorker.d.ts +0 -14
- package/types/utils/FontAtlas.d.ts +0 -16
- package/types/utils/GeoImageCreator.d.ts +0 -30
- package/types/utils/ImagesCacheManager.d.ts +0 -10
- package/types/utils/Loader.d.ts +0 -31
- package/types/utils/NormalMapCreator.d.ts +0 -39
- package/types/utils/PlainSegmentWorker.d.ts +0 -8
- package/types/utils/TerrainWorker.d.ts +0 -7
- package/types/utils/TextureAtlas.d.ts +0 -113
- package/types/utils/VectorTileCreator.d.ts +0 -14
- package/types/utils/colorTable.d.ts +0 -143
- package/types/utils/earcut.d.ts +0 -6
- package/types/utils/functionComposition.d.ts +0 -5
- package/types/utils/objParser.d.ts +0 -8
- package/types/utils/shared.d.ts +0 -241
- package/types/utils/units.d.ts +0 -20
- package/types/webgl/Framebuffer.d.ts +0 -134
- package/types/webgl/Handler.d.ts +0 -403
- package/types/webgl/Multisample.d.ts +0 -91
- package/types/webgl/Program.d.ts +0 -163
- package/types/webgl/ProgramController.d.ts +0 -89
- package/types/webgl/callbacks.d.ts +0 -1
- package/types/webgl/index.d.ts +0 -6
- package/types/webgl/types.d.ts +0 -2
- /package/{src/og → dist/@openglobus/res/fonts}/arial.js +0 -0
- /package/src/{og/ui/icons.js → ui/icons.ts} +0 -0
|
@@ -1,23 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
1
|
+
import * as mercator from "../mercator";
|
|
2
|
+
import * as math from "../math";
|
|
3
|
+
import {Camera, ICameraParams} from "./Camera";
|
|
4
|
+
import {Key} from "../Lock";
|
|
5
|
+
import {LonLat} from "../LonLat";
|
|
6
|
+
import {Mat4} from "../math/Mat4";
|
|
7
|
+
import {Planet} from "../scene/Planet";
|
|
8
|
+
import {Quat} from "../math/Quat";
|
|
9
|
+
import {Ray} from "../math/Ray";
|
|
10
|
+
import {Vec3} from "../math/Vec3";
|
|
11
|
+
import {Extent} from "../Extent";
|
|
12
|
+
import {Segment} from "../segment/Segment";
|
|
13
|
+
|
|
14
|
+
interface IPlanetCameraParams extends ICameraParams {
|
|
15
|
+
minAltitude?: number;
|
|
16
|
+
maxAltitude?: number;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
type CameraFrame = {
|
|
20
|
+
eye: Vec3;
|
|
21
|
+
n: Vec3;
|
|
22
|
+
u: Vec3;
|
|
23
|
+
v: Vec3;
|
|
24
|
+
}
|
|
13
25
|
|
|
14
26
|
/**
|
|
15
27
|
* Planet camera.
|
|
16
28
|
* @class
|
|
17
29
|
* @extends {Camera}
|
|
18
|
-
* @param {
|
|
19
|
-
* @param {
|
|
20
|
-
* @param {
|
|
30
|
+
* @param {Planet} planet - Planet render node.
|
|
31
|
+
* @param {IPlanetCameraParams} [options] - Planet camera options:
|
|
32
|
+
* @param {string} [options.name] - Camera name.
|
|
21
33
|
* @param {number} [options.viewAngle] - Camera angle of view.
|
|
22
34
|
* @param {number} [options.near] - Camera near plane distance. Default is 1.0
|
|
23
35
|
* @param {number} [options.far] - Camera far plane distance. Default is og.math.MAX
|
|
@@ -29,88 +41,115 @@ import { Ellipsoid } from "../ellipsoid/index.js";
|
|
|
29
41
|
*/
|
|
30
42
|
class PlanetCamera extends Camera {
|
|
31
43
|
/**
|
|
32
|
-
*
|
|
33
|
-
* @
|
|
44
|
+
* Assigned camera's planet.
|
|
45
|
+
* @public
|
|
46
|
+
* @type {Planet}
|
|
47
|
+
*/
|
|
48
|
+
public planet: Planet;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Minimal altitude that camera can reach over the terrain.
|
|
52
|
+
* @public
|
|
53
|
+
* @type {number}
|
|
54
|
+
*/
|
|
55
|
+
public minAltitude: number;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Maximal altitude that camera can reach over the globe.
|
|
59
|
+
* @public
|
|
60
|
+
* @type {number}
|
|
61
|
+
*/
|
|
62
|
+
public maxAltitude: number;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Current geographical degree position.
|
|
66
|
+
* @public
|
|
67
|
+
* @type {LonLat}
|
|
68
|
+
*/
|
|
69
|
+
public _lonLat: LonLat;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Current geographical mercator position.
|
|
73
|
+
* @public
|
|
74
|
+
* @type {LonLat}
|
|
75
|
+
*/
|
|
76
|
+
public _lonLatMerc: LonLat;
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Current altitude.
|
|
80
|
+
* @protected
|
|
81
|
+
* @type {number}
|
|
82
|
+
*/
|
|
83
|
+
protected _terrainAltitude: number;
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Cartesian coordinates on the terrain.
|
|
87
|
+
* @protected
|
|
88
|
+
* @type {Vec3}
|
|
34
89
|
*/
|
|
35
|
-
|
|
90
|
+
protected _terrainPoint: Vec3;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Quad node that camera flies over.
|
|
94
|
+
* @protected
|
|
95
|
+
* @type {Segment}
|
|
96
|
+
*/
|
|
97
|
+
|
|
98
|
+
public _insideSegment: Segment | null;
|
|
99
|
+
|
|
100
|
+
public slope: number;
|
|
101
|
+
|
|
102
|
+
protected _keyLock: Key;
|
|
103
|
+
protected _framesArr: CameraFrame[];
|
|
104
|
+
protected _framesCounter: number;
|
|
105
|
+
protected _numFrames: number;
|
|
106
|
+
protected _completeCallback: Function | null;
|
|
107
|
+
protected _frameCallback: Function | null;
|
|
108
|
+
|
|
109
|
+
protected _flying: boolean;
|
|
110
|
+
protected _checkTerrainCollision: boolean;
|
|
111
|
+
|
|
112
|
+
public eyeNorm: Vec3;
|
|
113
|
+
|
|
114
|
+
constructor(planet: Planet, options: IPlanetCameraParams = {}) {
|
|
36
115
|
super(planet.renderer, {
|
|
37
116
|
...options,
|
|
38
117
|
frustums: options.frustums || [[1, 100 + 0.075], [100, 1000 + 0.075], [1000, 1e6 + 10000], [1e6, 1e9]],
|
|
39
|
-
//[[1, 1e3 + 100], [1e3, 1e6 + 10000], [1e6, 1e9]]*/
|
|
40
118
|
}
|
|
41
119
|
);
|
|
42
|
-
|
|
43
|
-
* Assigned camera's planet.
|
|
44
|
-
* @public
|
|
45
|
-
* @type {Planet}
|
|
46
|
-
*/
|
|
120
|
+
|
|
47
121
|
this.planet = planet;
|
|
48
122
|
|
|
49
|
-
/**
|
|
50
|
-
* Minimal alltitude that camera can reach over the terrain.
|
|
51
|
-
* @public
|
|
52
|
-
* @type {number}
|
|
53
|
-
*/
|
|
54
123
|
this.minAltitude = options.minAltitude || 1;
|
|
55
124
|
|
|
56
|
-
/**
|
|
57
|
-
* Maximal alltitude that camera can reach over the globe.
|
|
58
|
-
* @public
|
|
59
|
-
* @type {number}
|
|
60
|
-
*/
|
|
61
125
|
this.maxAltitude = options.maxAltitude || 20000000;
|
|
62
126
|
|
|
63
|
-
/**
|
|
64
|
-
* Current geographical degree position.
|
|
65
|
-
* @protected
|
|
66
|
-
* @type {LonLat}
|
|
67
|
-
*/
|
|
68
127
|
this._lonLat = this.planet.ellipsoid.cartesianToLonLat(this.eye);
|
|
69
128
|
|
|
70
|
-
/**
|
|
71
|
-
* Current geographical mercator position.
|
|
72
|
-
* @protected
|
|
73
|
-
* @type {LonLat}
|
|
74
|
-
*/
|
|
75
129
|
this._lonLatMerc = this._lonLat.forwardMercator();
|
|
76
130
|
|
|
77
|
-
/**
|
|
78
|
-
* Current altitude.
|
|
79
|
-
* @protected
|
|
80
|
-
* @type {number}
|
|
81
|
-
*/
|
|
82
131
|
this._terrainAltitude = this._lonLat.height;
|
|
83
132
|
|
|
84
|
-
/**
|
|
85
|
-
* Cartesian coordinates on the terrain.
|
|
86
|
-
* @protected
|
|
87
|
-
* @type {Vec3}
|
|
88
|
-
*/
|
|
89
133
|
this._terrainPoint = new Vec3();
|
|
90
134
|
|
|
91
|
-
/**
|
|
92
|
-
* Quad node that camera flies over.
|
|
93
|
-
* @protected
|
|
94
|
-
* @type {quadTree.Node}
|
|
95
|
-
*/
|
|
96
135
|
this._insideSegment = null;
|
|
97
136
|
|
|
98
137
|
this.slope = 0;
|
|
99
138
|
|
|
100
139
|
this._keyLock = new Key();
|
|
101
140
|
|
|
102
|
-
// Camera's flying frames
|
|
103
141
|
this._framesArr = [];
|
|
104
142
|
this._framesCounter = 0;
|
|
105
143
|
this._numFrames = 50;
|
|
106
144
|
this._completeCallback = null;
|
|
145
|
+
this._frameCallback = null;
|
|
107
146
|
this._flying = false;
|
|
108
147
|
this._checkTerrainCollision = true;
|
|
109
148
|
|
|
110
|
-
this.
|
|
149
|
+
this.eyeNorm = this.eye.getNormal();
|
|
111
150
|
}
|
|
112
151
|
|
|
113
|
-
setTerrainCollisionActivity(isActive) {
|
|
152
|
+
public setTerrainCollisionActivity(isActive: boolean) {
|
|
114
153
|
this._checkTerrainCollision = isActive;
|
|
115
154
|
}
|
|
116
155
|
|
|
@@ -119,26 +158,26 @@ class PlanetCamera extends Camera {
|
|
|
119
158
|
* @public
|
|
120
159
|
* @virtual
|
|
121
160
|
*/
|
|
122
|
-
update() {
|
|
161
|
+
public override update() {
|
|
123
162
|
this.events.stopPropagation();
|
|
124
163
|
|
|
125
|
-
let maxAlt = this.maxAltitude + this.planet.ellipsoid.
|
|
164
|
+
let maxAlt = this.maxAltitude + this.planet.ellipsoid.getEquatorialSize();
|
|
126
165
|
|
|
127
166
|
if (this.eye.length() > maxAlt) {
|
|
128
|
-
this.eye.copy(this.eye.
|
|
167
|
+
this.eye.copy(this.eye.getNormal().scale(maxAlt));
|
|
129
168
|
}
|
|
130
169
|
|
|
131
170
|
super.update();
|
|
132
171
|
|
|
133
172
|
this.updateGeodeticPosition();
|
|
134
173
|
|
|
135
|
-
this.eyeNorm = this.eye.
|
|
174
|
+
this.eyeNorm = this.eye.getNormal();
|
|
136
175
|
this.slope = this._b.dot(this.eyeNorm);
|
|
137
176
|
|
|
138
177
|
this.events.dispatch(this.events.viewchange, this);
|
|
139
178
|
}
|
|
140
179
|
|
|
141
|
-
updateGeodeticPosition() {
|
|
180
|
+
public updateGeodeticPosition() {
|
|
142
181
|
this.planet.ellipsoid.cartesianToLonLatRes(this.eye, this._lonLat);
|
|
143
182
|
if (Math.abs(this._lonLat.lat) <= mercator.MAX_LAT) {
|
|
144
183
|
LonLat.forwardMercatorRes(this._lonLat, this._lonLatMerc);
|
|
@@ -150,7 +189,7 @@ class PlanetCamera extends Camera {
|
|
|
150
189
|
* @public
|
|
151
190
|
* @param {number} alt - Altitude over the terrain.
|
|
152
191
|
*/
|
|
153
|
-
setAltitude(alt) {
|
|
192
|
+
public setAltitude(alt: number) {
|
|
154
193
|
|
|
155
194
|
let t = this._terrainPoint;
|
|
156
195
|
let n = this.planet.ellipsoid.getSurfaceNormal3v(this.eye);
|
|
@@ -166,7 +205,7 @@ class PlanetCamera extends Camera {
|
|
|
166
205
|
* Gets altitude over the terrain.
|
|
167
206
|
* @public
|
|
168
207
|
*/
|
|
169
|
-
getAltitude() {
|
|
208
|
+
public getAltitude(): number {
|
|
170
209
|
return this._terrainAltitude;
|
|
171
210
|
}
|
|
172
211
|
|
|
@@ -177,12 +216,12 @@ class PlanetCamera extends Camera {
|
|
|
177
216
|
* @param {LonLat} [lookLonLat] - Look up coordinates.
|
|
178
217
|
* @param {Vec3} [up] - Camera UP vector. Default (0,1,0)
|
|
179
218
|
*/
|
|
180
|
-
setLonLat(lonlat, lookLonLat, up) {
|
|
219
|
+
public setLonLat(lonlat: LonLat, lookLonLat?: LonLat, up?: Vec3) {
|
|
181
220
|
this.stopFlying();
|
|
182
221
|
this._lonLat.set(lonlat.lon, lonlat.lat, lonlat.height || this._lonLat.height);
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
222
|
+
let el = this.planet.ellipsoid;
|
|
223
|
+
let newEye = el.lonLatToCartesian(this._lonLat);
|
|
224
|
+
let newLook = lookLonLat ? el.lonLatToCartesian(lookLonLat) : Vec3.ZERO;
|
|
186
225
|
this.set(newEye, newLook, up || Vec3.NORTH);
|
|
187
226
|
this.update();
|
|
188
227
|
}
|
|
@@ -192,7 +231,7 @@ class PlanetCamera extends Camera {
|
|
|
192
231
|
* @public
|
|
193
232
|
* @returns {LonLat}
|
|
194
233
|
*/
|
|
195
|
-
getLonLat() {
|
|
234
|
+
public getLonLat(): LonLat {
|
|
196
235
|
return this._lonLat;
|
|
197
236
|
}
|
|
198
237
|
|
|
@@ -201,7 +240,7 @@ class PlanetCamera extends Camera {
|
|
|
201
240
|
* @public
|
|
202
241
|
* @returns {number}
|
|
203
242
|
*/
|
|
204
|
-
getHeight() {
|
|
243
|
+
public getHeight(): number {
|
|
205
244
|
return this._lonLat.height;
|
|
206
245
|
}
|
|
207
246
|
|
|
@@ -212,30 +251,30 @@ class PlanetCamera extends Camera {
|
|
|
212
251
|
* @param {Number} height - Camera height
|
|
213
252
|
* @returns {Vec3}
|
|
214
253
|
*/
|
|
215
|
-
getExtentPosition(extent, height) {
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
254
|
+
public getExtentPosition(extent: Extent, height: number = 0): Vec3 {
|
|
255
|
+
let north = extent.getNorth();
|
|
256
|
+
let south = extent.getSouth();
|
|
257
|
+
let east = extent.getEast();
|
|
258
|
+
let west = extent.getWest();
|
|
220
259
|
|
|
221
260
|
if (west > east) {
|
|
222
261
|
east += 360;
|
|
223
262
|
}
|
|
224
263
|
|
|
225
|
-
|
|
264
|
+
let e = this.planet.ellipsoid;
|
|
226
265
|
|
|
227
|
-
|
|
228
|
-
|
|
266
|
+
let cart = new LonLat(east, north);
|
|
267
|
+
let northEast = e.lonLatToCartesian(cart);
|
|
229
268
|
cart.lat = south;
|
|
230
|
-
|
|
269
|
+
let southEast = e.lonLatToCartesian(cart);
|
|
231
270
|
cart.lon = west;
|
|
232
|
-
|
|
271
|
+
let southWest = e.lonLatToCartesian(cart);
|
|
233
272
|
cart.lat = north;
|
|
234
|
-
|
|
273
|
+
let northWest = e.lonLatToCartesian(cart);
|
|
235
274
|
|
|
236
|
-
|
|
275
|
+
let center = Vec3.sub(northEast, southWest).scale(0.5).addA(southWest);
|
|
237
276
|
|
|
238
|
-
|
|
277
|
+
let mag = center.length();
|
|
239
278
|
if (mag < 0.000001) {
|
|
240
279
|
cart.lon = (east + west) * 0.5;
|
|
241
280
|
cart.lat = (north + south) * 0.5;
|
|
@@ -247,30 +286,30 @@ class PlanetCamera extends Camera {
|
|
|
247
286
|
northEast.subA(center);
|
|
248
287
|
southWest.subA(center);
|
|
249
288
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
289
|
+
let direction = center.getNormal(); // ellipsoid.getSurfaceNormal(center).negate().normalize();
|
|
290
|
+
let right = direction.cross(Vec3.NORTH).normalize();
|
|
291
|
+
let up = right.cross(direction).normalize();
|
|
253
292
|
|
|
254
|
-
|
|
293
|
+
let _h = Math.max(
|
|
255
294
|
Math.abs(up.dot(northWest)),
|
|
256
295
|
Math.abs(up.dot(southEast)),
|
|
257
296
|
Math.abs(up.dot(northEast)),
|
|
258
297
|
Math.abs(up.dot(southWest))
|
|
259
298
|
);
|
|
260
299
|
|
|
261
|
-
|
|
300
|
+
let _w = Math.max(
|
|
262
301
|
Math.abs(right.dot(northWest)),
|
|
263
302
|
Math.abs(right.dot(southEast)),
|
|
264
303
|
Math.abs(right.dot(northEast)),
|
|
265
304
|
Math.abs(right.dot(southWest))
|
|
266
305
|
);
|
|
267
306
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
307
|
+
let tanPhi = Math.tan(this._viewAngle * math.RADIANS * 0.5);
|
|
308
|
+
let tanTheta = this._aspect * tanPhi;
|
|
309
|
+
let d = Math.max(_w / tanTheta, _h / tanPhi);
|
|
271
310
|
|
|
272
311
|
center.normalize();
|
|
273
|
-
center.scale(mag + d +
|
|
312
|
+
center.scale(mag + d + height);
|
|
274
313
|
|
|
275
314
|
return center;
|
|
276
315
|
}
|
|
@@ -279,8 +318,9 @@ class PlanetCamera extends Camera {
|
|
|
279
318
|
* View current extent.
|
|
280
319
|
* @public
|
|
281
320
|
* @param {Extent} extent - Current extent.
|
|
321
|
+
* @param {number} [height]
|
|
282
322
|
*/
|
|
283
|
-
viewExtent(extent, height) {
|
|
323
|
+
public viewExtent(extent: Extent, height?: number) {
|
|
284
324
|
this.stopFlying();
|
|
285
325
|
this.set(this.getExtentPosition(extent, height), Vec3.ZERO, Vec3.NORTH);
|
|
286
326
|
this.update();
|
|
@@ -290,13 +330,21 @@ class PlanetCamera extends Camera {
|
|
|
290
330
|
* Flies to the current extent.
|
|
291
331
|
* @public
|
|
292
332
|
* @param {Extent} extent - Current extent.
|
|
333
|
+
* @param {number} [height] - Destination height.
|
|
293
334
|
* @param {Vec3} [up] - Camera UP in the end of flying. Default - (0,1,0)
|
|
294
335
|
* @param {Number} [ampl] - Altitude amplitude factor.
|
|
295
|
-
* @param {
|
|
296
|
-
* @param {
|
|
297
|
-
* @param [frameCallback]
|
|
336
|
+
* @param {Function} [completeCallback] - Callback that calls after flying when flying is finished.
|
|
337
|
+
* @param {Function} [startCallback] - Callback that calls before the flying begins.
|
|
338
|
+
* @param {Function} [frameCallback] - Each frame callback
|
|
298
339
|
*/
|
|
299
|
-
flyExtent(
|
|
340
|
+
public flyExtent(
|
|
341
|
+
extent: Extent,
|
|
342
|
+
height?: number,
|
|
343
|
+
up?: Vec3,
|
|
344
|
+
ampl?: number,
|
|
345
|
+
completeCallback?: Function,
|
|
346
|
+
startCallback?: Function,
|
|
347
|
+
frameCallback?: Function) {
|
|
300
348
|
this.flyCartesian(
|
|
301
349
|
this.getExtentPosition(extent, height),
|
|
302
350
|
Vec3.ZERO,
|
|
@@ -308,9 +356,9 @@ class PlanetCamera extends Camera {
|
|
|
308
356
|
);
|
|
309
357
|
}
|
|
310
358
|
|
|
311
|
-
viewDistance(cartesian, distance = 10000.0) {
|
|
359
|
+
public viewDistance(cartesian: Vec3, distance: number = 10000.0) {
|
|
312
360
|
let p0 = this.eye.add(this.getForward().scaleTo(distance));
|
|
313
|
-
let _rot = Quat.getRotationBetweenVectors(p0.
|
|
361
|
+
let _rot = Quat.getRotationBetweenVectors(p0.getNormal(), cartesian.getNormal());
|
|
314
362
|
if (_rot.isZero()) {
|
|
315
363
|
let newPos = cartesian.add(this.getBackward().scaleTo(distance));
|
|
316
364
|
this.set(newPos, cartesian);
|
|
@@ -322,16 +370,16 @@ class PlanetCamera extends Camera {
|
|
|
322
370
|
this.update();
|
|
323
371
|
}
|
|
324
372
|
|
|
325
|
-
flyDistance(
|
|
326
|
-
cartesian,
|
|
327
|
-
distance = 10000.0,
|
|
328
|
-
ampl = 0.0,
|
|
329
|
-
completeCallback,
|
|
330
|
-
startCallback,
|
|
331
|
-
frameCallback
|
|
373
|
+
public flyDistance(
|
|
374
|
+
cartesian: Vec3,
|
|
375
|
+
distance: number = 10000.0,
|
|
376
|
+
ampl: number = 0.0,
|
|
377
|
+
completeCallback?: Function,
|
|
378
|
+
startCallback?: Function,
|
|
379
|
+
frameCallback?: Function
|
|
332
380
|
) {
|
|
333
381
|
let p0 = this.eye.add(this.getForward().scaleTo(distance));
|
|
334
|
-
let _rot = Quat.getRotationBetweenVectors(p0.
|
|
382
|
+
let _rot = Quat.getRotationBetweenVectors(p0.getNormal(), cartesian.getNormal());
|
|
335
383
|
if (_rot.isZero()) {
|
|
336
384
|
let newPos = cartesian.add(this.getBackward().scaleTo(distance));
|
|
337
385
|
this.set(newPos, cartesian);
|
|
@@ -357,14 +405,21 @@ class PlanetCamera extends Camera {
|
|
|
357
405
|
* @param {Vec3} [look] - Camera LOOK in the end of flying. Default - (0,0,0)
|
|
358
406
|
* @param {Vec3} [up] - Camera UP vector in the end of flying. Default - (0,1,0)
|
|
359
407
|
* @param {Number} [ampl=1.0] - Altitude amplitude factor.
|
|
360
|
-
* @param {
|
|
361
|
-
* @param {
|
|
362
|
-
* @param [frameCallback]
|
|
408
|
+
* @param {Function} [completeCallback] - Callback that calls after flying when flying is finished.
|
|
409
|
+
* @param {Function} [startCallback] - Callback that calls before the flying begins.
|
|
410
|
+
* @param {Function} [frameCallback] - Each frame callback
|
|
363
411
|
*/
|
|
364
|
-
flyCartesian(
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
412
|
+
flyCartesian(
|
|
413
|
+
cartesian: Vec3,
|
|
414
|
+
look: Vec3 | LonLat | null = Vec3.ZERO,
|
|
415
|
+
up: Vec3 | null = Vec3.NORTH,
|
|
416
|
+
ampl: number = 1.0,
|
|
417
|
+
completeCallback: Function | null = () => {
|
|
418
|
+
},
|
|
419
|
+
startCallback: Function | null = () => {
|
|
420
|
+
},
|
|
421
|
+
frameCallback: Function | null = () => {
|
|
422
|
+
}) {
|
|
368
423
|
|
|
369
424
|
this.stopFlying();
|
|
370
425
|
|
|
@@ -383,63 +438,62 @@ class PlanetCamera extends Camera {
|
|
|
383
438
|
look = this.planet.ellipsoid.lonLatToCartesian(look);
|
|
384
439
|
}
|
|
385
440
|
|
|
386
|
-
|
|
441
|
+
let ground_a = this.planet.ellipsoid.lonLatToCartesian(
|
|
387
442
|
new LonLat(this._lonLat.lon, this._lonLat.lat)
|
|
388
443
|
);
|
|
389
|
-
|
|
444
|
+
|
|
445
|
+
let v_a = this._u,
|
|
390
446
|
n_a = this._b;
|
|
391
447
|
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
448
|
+
let lonlat_b = this.planet.ellipsoid.cartesianToLonLat(cartesian);
|
|
449
|
+
let up_b = up;
|
|
450
|
+
let ground_b = this.planet.ellipsoid.lonLatToCartesian(
|
|
395
451
|
new LonLat(lonlat_b.lon, lonlat_b.lat, 0)
|
|
396
452
|
);
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
var u_b = up_b.cross(n_b);
|
|
453
|
+
let n_b = Vec3.sub(cartesian, look as Vec3);
|
|
454
|
+
let u_b = up_b.cross(n_b);
|
|
400
455
|
n_b.normalize();
|
|
401
456
|
u_b.normalize();
|
|
402
|
-
|
|
457
|
+
let v_b = n_b.cross(u_b);
|
|
403
458
|
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
459
|
+
let an = ground_a.getNormal();
|
|
460
|
+
let bn = ground_b.getNormal();
|
|
461
|
+
let anbn = 1.0 - an.dot(bn);
|
|
462
|
+
let hM_a = ampl * math.SQRT_HALF * Math.sqrt(anbn > 0.0 ? anbn : 0.0);
|
|
408
463
|
|
|
409
|
-
|
|
410
|
-
|
|
464
|
+
let maxHeight = 6639613;
|
|
465
|
+
let currMaxHeight = Math.max(this._lonLat.height, lonlat_b.height);
|
|
411
466
|
if (currMaxHeight > maxHeight) {
|
|
412
467
|
maxHeight = currMaxHeight;
|
|
413
468
|
}
|
|
414
|
-
|
|
415
|
-
|
|
469
|
+
let max_h = currMaxHeight + 2.5 * hM_a * (maxHeight - currMaxHeight);
|
|
470
|
+
let zero = Vec3.ZERO;
|
|
416
471
|
|
|
417
472
|
// camera path and orientations calculation
|
|
418
473
|
for (let i = 0; i <= this._numFrames; i++) {
|
|
419
|
-
|
|
474
|
+
let d = 1 - i / this._numFrames;
|
|
420
475
|
d = d * d * (3 - 2 * d);
|
|
421
476
|
d *= d;
|
|
422
477
|
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
var height_i =
|
|
478
|
+
let g_i = ground_a.smerp(ground_b, d).normalize();
|
|
479
|
+
let ground_i = this.planet.getRayIntersectionEllipsoid(new Ray(zero, g_i));
|
|
480
|
+
let t = 1 - d;
|
|
481
|
+
let height_i =
|
|
428
482
|
this._lonLat.height * d * d * d +
|
|
429
483
|
max_h * 3 * d * d * t +
|
|
430
484
|
max_h * 3 * d * t * t +
|
|
431
485
|
lonlat_b.height * t * t * t;
|
|
432
486
|
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
487
|
+
let eye_i = ground_i!.addA(g_i.scale(height_i));
|
|
488
|
+
let up_i = v_a.smerp(v_b, d);
|
|
489
|
+
let look_i = Vec3.add(eye_i, n_a.smerp(n_b, d).negateTo());
|
|
436
490
|
|
|
437
|
-
|
|
438
|
-
|
|
491
|
+
let n = new Vec3(eye_i.x - look_i.x, eye_i.y - look_i.y, eye_i.z - look_i.z);
|
|
492
|
+
let u = up_i.cross(n);
|
|
439
493
|
n.normalize();
|
|
440
494
|
u.normalize();
|
|
441
495
|
|
|
442
|
-
|
|
496
|
+
let v = n.cross(u);
|
|
443
497
|
this._framesArr[i] = {
|
|
444
498
|
eye: eye_i,
|
|
445
499
|
n: n,
|
|
@@ -456,21 +510,31 @@ class PlanetCamera extends Camera {
|
|
|
456
510
|
* Flies to the geo coordinates.
|
|
457
511
|
* @public
|
|
458
512
|
* @param {LonLat} lonlat - Finish coordinates.
|
|
459
|
-
* @param {Vec3} [look] - Camera LOOK in the end of flying. Default - (0,0,0)
|
|
513
|
+
* @param {Vec3 | LonLat} [look] - Camera LOOK in the end of flying. Default - (0,0,0)
|
|
460
514
|
* @param {Vec3} [up] - Camera UP vector in the end of flying. Default - (0,1,0)
|
|
461
|
-
* @param {
|
|
462
|
-
* @param {
|
|
463
|
-
* @param {
|
|
515
|
+
* @param {number} [ampl] - Altitude amplitude factor.
|
|
516
|
+
* @param {Function} [completeCallback] - Callback that calls after flying when flying is finished.
|
|
517
|
+
* @param {Function} [startCallback] - Callback that calls befor the flying begins.
|
|
518
|
+
* @param {Function} [frameCallback] - each frame callback
|
|
464
519
|
*/
|
|
465
|
-
flyLonLat(
|
|
466
|
-
|
|
520
|
+
flyLonLat(
|
|
521
|
+
lonlat: LonLat,
|
|
522
|
+
look?: Vec3 | LonLat,
|
|
523
|
+
up?: Vec3,
|
|
524
|
+
ampl?: number,
|
|
525
|
+
completeCallback?: Function,
|
|
526
|
+
startCallback?: Function,
|
|
527
|
+
frameCallbak?: Function
|
|
528
|
+
) {
|
|
529
|
+
let _lonLat = new LonLat(lonlat.lon, lonlat.lat, lonlat.height || this._lonLat.height);
|
|
467
530
|
this.flyCartesian(
|
|
468
531
|
this.planet.ellipsoid.lonLatToCartesian(_lonLat),
|
|
469
532
|
look,
|
|
470
533
|
up,
|
|
471
534
|
ampl,
|
|
472
535
|
completeCallback,
|
|
473
|
-
startCallback
|
|
536
|
+
startCallback,
|
|
537
|
+
frameCallbak
|
|
474
538
|
);
|
|
475
539
|
}
|
|
476
540
|
|
|
@@ -481,7 +545,7 @@ class PlanetCamera extends Camera {
|
|
|
481
545
|
stopFlying() {
|
|
482
546
|
this.planet.layerLock.free(this._keyLock);
|
|
483
547
|
this.planet.terrainLock.free(this._keyLock);
|
|
484
|
-
this.planet.
|
|
548
|
+
this.planet.normalMapCreator.free(this._keyLock);
|
|
485
549
|
|
|
486
550
|
this._flying = false;
|
|
487
551
|
this._framesArr.length = 0;
|
|
@@ -505,8 +569,8 @@ class PlanetCamera extends Camera {
|
|
|
505
569
|
* @param {number} angle - Rotation angle.
|
|
506
570
|
* @param {boolean} [spin] - If its true rotates around globe spin.
|
|
507
571
|
*/
|
|
508
|
-
rotateLeft(angle, spin) {
|
|
509
|
-
this.rotateHorizontal(angle * math.RADIANS, spin
|
|
572
|
+
public rotateLeft(angle: number, spin: boolean) {
|
|
573
|
+
this.rotateHorizontal(angle * math.RADIANS, spin !== true, Vec3.ZERO);
|
|
510
574
|
this.update();
|
|
511
575
|
}
|
|
512
576
|
|
|
@@ -516,43 +580,43 @@ class PlanetCamera extends Camera {
|
|
|
516
580
|
* @param {number} angle - Rotation angle.
|
|
517
581
|
* @param {boolean} [spin] - If its true rotates around globe spin.
|
|
518
582
|
*/
|
|
519
|
-
rotateRight(angle, spin) {
|
|
520
|
-
this.rotateHorizontal(-angle * math.RADIANS, spin
|
|
583
|
+
public rotateRight(angle: number, spin: boolean) {
|
|
584
|
+
this.rotateHorizontal(-angle * math.RADIANS, spin !== true, Vec3.ZERO);
|
|
521
585
|
this.update();
|
|
522
586
|
}
|
|
523
587
|
|
|
524
588
|
/**
|
|
525
|
-
* Rotates around planet to the
|
|
589
|
+
* Rotates around planet to the North Pole.
|
|
526
590
|
* @public
|
|
527
591
|
* @param {number} angle - Rotation angle.
|
|
528
592
|
*/
|
|
529
|
-
rotateUp(angle) {
|
|
593
|
+
public rotateUp(angle: number) {
|
|
530
594
|
this.rotateVertical(angle * math.RADIANS, Vec3.ZERO);
|
|
531
595
|
this.update();
|
|
532
596
|
}
|
|
533
597
|
|
|
534
598
|
/**
|
|
535
|
-
* Rotates around planet to the
|
|
599
|
+
* Rotates around planet to the South Pole.
|
|
536
600
|
* @public
|
|
537
601
|
* @param {number} angle - Rotation angle.
|
|
538
602
|
*/
|
|
539
|
-
rotateDown(angle) {
|
|
603
|
+
public rotateDown(angle: number) {
|
|
540
604
|
this.rotateVertical(-angle * math.RADIANS, Vec3.ZERO);
|
|
541
605
|
this.update();
|
|
542
606
|
}
|
|
543
607
|
|
|
544
|
-
rotateVertical(angle, center, minSlope = 0) {
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
608
|
+
public override rotateVertical(angle: number, center: Vec3, minSlope: number = 0) {
|
|
609
|
+
let rot = new Mat4().setRotation(this._r, angle);
|
|
610
|
+
let tr = new Mat4().setIdentity().translate(center);
|
|
611
|
+
let ntr = new Mat4().setIdentity().translate(center.negateTo());
|
|
612
|
+
let trm = tr.mul(rot).mul(ntr);
|
|
549
613
|
|
|
550
614
|
let eye = trm.mulVec3(this.eye);
|
|
551
615
|
let u = rot.mulVec3(this._u).normalize();
|
|
552
616
|
let r = rot.mulVec3(this._r).normalize();
|
|
553
617
|
let b = rot.mulVec3(this._b).normalize();
|
|
554
618
|
|
|
555
|
-
let eyeNorm = eye.
|
|
619
|
+
let eyeNorm = eye.getNormal();
|
|
556
620
|
let slope = b.dot(eyeNorm);
|
|
557
621
|
|
|
558
622
|
if (minSlope) {
|
|
@@ -563,7 +627,7 @@ class PlanetCamera extends Camera {
|
|
|
563
627
|
if (
|
|
564
628
|
(slope > 0.1 && u.dot(eyeNorm) > 0) ||
|
|
565
629
|
this.slope <= 0.1 ||
|
|
566
|
-
this._u.dot(this.eye.
|
|
630
|
+
this._u.dot(this.eye.getNormal()) <= 0.0
|
|
567
631
|
) {
|
|
568
632
|
this.eye = eye;
|
|
569
633
|
this._u = u;
|
|
@@ -582,13 +646,13 @@ class PlanetCamera extends Camera {
|
|
|
582
646
|
* Prepare camera to the frame. Used in render node frame function.
|
|
583
647
|
* @public
|
|
584
648
|
*/
|
|
585
|
-
checkFly() {
|
|
649
|
+
public checkFly() {
|
|
586
650
|
if (this._flying) {
|
|
587
|
-
|
|
651
|
+
let c = this._numFrames - this._framesCounter;
|
|
588
652
|
|
|
589
653
|
this.planet.layerLock.lock(this._keyLock);
|
|
590
654
|
this.planet.terrainLock.lock(this._keyLock);
|
|
591
|
-
this.planet.
|
|
655
|
+
this.planet.normalMapCreator.lock(this._keyLock);
|
|
592
656
|
|
|
593
657
|
this.eye = this._framesArr[c].eye;
|
|
594
658
|
this._r = this._framesArr[c].u;
|
|
@@ -613,7 +677,7 @@ class PlanetCamera extends Camera {
|
|
|
613
677
|
}
|
|
614
678
|
}
|
|
615
679
|
|
|
616
|
-
checkTerrainCollision() {
|
|
680
|
+
public checkTerrainCollision() {
|
|
617
681
|
this._terrainAltitude = this._lonLat.height;
|
|
618
682
|
if (this._insideSegment && this._insideSegment.planet) {
|
|
619
683
|
this._terrainAltitude = this._insideSegment.getTerrainPoint(
|
|
@@ -628,13 +692,13 @@ class PlanetCamera extends Camera {
|
|
|
628
692
|
}
|
|
629
693
|
}
|
|
630
694
|
|
|
631
|
-
getSurfaceVisibleDistance(d) {
|
|
632
|
-
let R = this.planet.ellipsoid.
|
|
695
|
+
public getSurfaceVisibleDistance(d: number): number {
|
|
696
|
+
let R = this.planet.ellipsoid.equatorialSize;
|
|
633
697
|
return R * Math.acos(R / (R + this._lonLat.height + d));
|
|
634
698
|
}
|
|
635
699
|
|
|
636
|
-
getHeading() {
|
|
637
|
-
let u = this.eye.
|
|
700
|
+
public getHeading(): number {
|
|
701
|
+
let u = this.eye.getNormal();
|
|
638
702
|
let f = Vec3.proj_b_to_plane(
|
|
639
703
|
this.slope >= 0.97 ? this.getUp() : this.getForward(),
|
|
640
704
|
u
|
|
@@ -647,9 +711,9 @@ class PlanetCamera extends Camera {
|
|
|
647
711
|
return res;
|
|
648
712
|
}
|
|
649
713
|
|
|
650
|
-
isVisible(poi) {
|
|
714
|
+
public isVisible(poi: Vec3): boolean {
|
|
651
715
|
let e = this.eye.length();
|
|
652
|
-
return this.eye.distance(poi) < Math.sqrt(e * e - this.planet.ellipsoid.
|
|
716
|
+
return this.eye.distance(poi) < Math.sqrt(e * e - this.planet.ellipsoid.equatorialSizeSqr);
|
|
653
717
|
}
|
|
654
718
|
|
|
655
719
|
// _calcOrientation() {
|
|
@@ -671,4 +735,4 @@ class PlanetCamera extends Camera {
|
|
|
671
735
|
// }
|
|
672
736
|
}
|
|
673
737
|
|
|
674
|
-
export {
|
|
738
|
+
export {PlanetCamera};
|