@openglobus/og 0.17.1 → 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} +248 -185
- 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 -270
- 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} +777 -595
- 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 -149
- 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 -128
- 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 -1168
- 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 -10
- 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 -255
- 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 -595
- 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,89 +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
|
-
|
|
38
|
-
|
|
39
|
-
], //[[1, 1e3 + 100], [1e3, 1e6 + 10000], [1e6, 1e9]]*/
|
|
40
|
-
...options
|
|
116
|
+
...options,
|
|
117
|
+
frustums: options.frustums || [[1, 100 + 0.075], [100, 1000 + 0.075], [1000, 1e6 + 10000], [1e6, 1e9]],
|
|
41
118
|
}
|
|
42
119
|
);
|
|
43
|
-
|
|
44
|
-
* Assigned camera's planet.
|
|
45
|
-
* @public
|
|
46
|
-
* @type {Planet}
|
|
47
|
-
*/
|
|
120
|
+
|
|
48
121
|
this.planet = planet;
|
|
49
122
|
|
|
50
|
-
/**
|
|
51
|
-
* Minimal alltitude that camera can reach over the terrain.
|
|
52
|
-
* @public
|
|
53
|
-
* @type {number}
|
|
54
|
-
*/
|
|
55
123
|
this.minAltitude = options.minAltitude || 1;
|
|
56
124
|
|
|
57
|
-
/**
|
|
58
|
-
* Maximal alltitude that camera can reach over the globe.
|
|
59
|
-
* @public
|
|
60
|
-
* @type {number}
|
|
61
|
-
*/
|
|
62
125
|
this.maxAltitude = options.maxAltitude || 20000000;
|
|
63
126
|
|
|
64
|
-
/**
|
|
65
|
-
* Current geographical degree position.
|
|
66
|
-
* @protected
|
|
67
|
-
* @type {LonLat}
|
|
68
|
-
*/
|
|
69
127
|
this._lonLat = this.planet.ellipsoid.cartesianToLonLat(this.eye);
|
|
70
128
|
|
|
71
|
-
/**
|
|
72
|
-
* Current geographical mercator position.
|
|
73
|
-
* @protected
|
|
74
|
-
* @type {LonLat}
|
|
75
|
-
*/
|
|
76
129
|
this._lonLatMerc = this._lonLat.forwardMercator();
|
|
77
130
|
|
|
78
|
-
/**
|
|
79
|
-
* Current altitude.
|
|
80
|
-
* @protected
|
|
81
|
-
* @type {number}
|
|
82
|
-
*/
|
|
83
131
|
this._terrainAltitude = this._lonLat.height;
|
|
84
132
|
|
|
85
|
-
/**
|
|
86
|
-
* Cartesian coordinates on the terrain.
|
|
87
|
-
* @protected
|
|
88
|
-
* @type {Vec3}
|
|
89
|
-
*/
|
|
90
133
|
this._terrainPoint = new Vec3();
|
|
91
134
|
|
|
92
|
-
/**
|
|
93
|
-
* Quad node that camera flies over.
|
|
94
|
-
* @protected
|
|
95
|
-
* @type {quadTree.Node}
|
|
96
|
-
*/
|
|
97
135
|
this._insideSegment = null;
|
|
98
136
|
|
|
99
137
|
this.slope = 0;
|
|
100
138
|
|
|
101
139
|
this._keyLock = new Key();
|
|
102
140
|
|
|
103
|
-
// Camera's flying frames
|
|
104
141
|
this._framesArr = [];
|
|
105
142
|
this._framesCounter = 0;
|
|
106
143
|
this._numFrames = 50;
|
|
107
144
|
this._completeCallback = null;
|
|
145
|
+
this._frameCallback = null;
|
|
108
146
|
this._flying = false;
|
|
109
147
|
this._checkTerrainCollision = true;
|
|
110
148
|
|
|
111
|
-
this.
|
|
149
|
+
this.eyeNorm = this.eye.getNormal();
|
|
112
150
|
}
|
|
113
151
|
|
|
114
|
-
setTerrainCollisionActivity(isActive) {
|
|
152
|
+
public setTerrainCollisionActivity(isActive: boolean) {
|
|
115
153
|
this._checkTerrainCollision = isActive;
|
|
116
154
|
}
|
|
117
155
|
|
|
@@ -120,26 +158,26 @@ class PlanetCamera extends Camera {
|
|
|
120
158
|
* @public
|
|
121
159
|
* @virtual
|
|
122
160
|
*/
|
|
123
|
-
update() {
|
|
161
|
+
public override update() {
|
|
124
162
|
this.events.stopPropagation();
|
|
125
163
|
|
|
126
|
-
let maxAlt = this.maxAltitude + this.planet.ellipsoid.
|
|
164
|
+
let maxAlt = this.maxAltitude + this.planet.ellipsoid.getEquatorialSize();
|
|
127
165
|
|
|
128
166
|
if (this.eye.length() > maxAlt) {
|
|
129
|
-
this.eye.copy(this.eye.
|
|
167
|
+
this.eye.copy(this.eye.getNormal().scale(maxAlt));
|
|
130
168
|
}
|
|
131
169
|
|
|
132
170
|
super.update();
|
|
133
171
|
|
|
134
172
|
this.updateGeodeticPosition();
|
|
135
173
|
|
|
136
|
-
this.eyeNorm = this.eye.
|
|
174
|
+
this.eyeNorm = this.eye.getNormal();
|
|
137
175
|
this.slope = this._b.dot(this.eyeNorm);
|
|
138
176
|
|
|
139
177
|
this.events.dispatch(this.events.viewchange, this);
|
|
140
178
|
}
|
|
141
179
|
|
|
142
|
-
updateGeodeticPosition() {
|
|
180
|
+
public updateGeodeticPosition() {
|
|
143
181
|
this.planet.ellipsoid.cartesianToLonLatRes(this.eye, this._lonLat);
|
|
144
182
|
if (Math.abs(this._lonLat.lat) <= mercator.MAX_LAT) {
|
|
145
183
|
LonLat.forwardMercatorRes(this._lonLat, this._lonLatMerc);
|
|
@@ -151,7 +189,7 @@ class PlanetCamera extends Camera {
|
|
|
151
189
|
* @public
|
|
152
190
|
* @param {number} alt - Altitude over the terrain.
|
|
153
191
|
*/
|
|
154
|
-
setAltitude(alt) {
|
|
192
|
+
public setAltitude(alt: number) {
|
|
155
193
|
|
|
156
194
|
let t = this._terrainPoint;
|
|
157
195
|
let n = this.planet.ellipsoid.getSurfaceNormal3v(this.eye);
|
|
@@ -167,7 +205,7 @@ class PlanetCamera extends Camera {
|
|
|
167
205
|
* Gets altitude over the terrain.
|
|
168
206
|
* @public
|
|
169
207
|
*/
|
|
170
|
-
getAltitude() {
|
|
208
|
+
public getAltitude(): number {
|
|
171
209
|
return this._terrainAltitude;
|
|
172
210
|
}
|
|
173
211
|
|
|
@@ -178,12 +216,12 @@ class PlanetCamera extends Camera {
|
|
|
178
216
|
* @param {LonLat} [lookLonLat] - Look up coordinates.
|
|
179
217
|
* @param {Vec3} [up] - Camera UP vector. Default (0,1,0)
|
|
180
218
|
*/
|
|
181
|
-
setLonLat(lonlat, lookLonLat, up) {
|
|
219
|
+
public setLonLat(lonlat: LonLat, lookLonLat?: LonLat, up?: Vec3) {
|
|
182
220
|
this.stopFlying();
|
|
183
221
|
this._lonLat.set(lonlat.lon, lonlat.lat, lonlat.height || this._lonLat.height);
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
222
|
+
let el = this.planet.ellipsoid;
|
|
223
|
+
let newEye = el.lonLatToCartesian(this._lonLat);
|
|
224
|
+
let newLook = lookLonLat ? el.lonLatToCartesian(lookLonLat) : Vec3.ZERO;
|
|
187
225
|
this.set(newEye, newLook, up || Vec3.NORTH);
|
|
188
226
|
this.update();
|
|
189
227
|
}
|
|
@@ -193,7 +231,7 @@ class PlanetCamera extends Camera {
|
|
|
193
231
|
* @public
|
|
194
232
|
* @returns {LonLat}
|
|
195
233
|
*/
|
|
196
|
-
getLonLat() {
|
|
234
|
+
public getLonLat(): LonLat {
|
|
197
235
|
return this._lonLat;
|
|
198
236
|
}
|
|
199
237
|
|
|
@@ -202,7 +240,7 @@ class PlanetCamera extends Camera {
|
|
|
202
240
|
* @public
|
|
203
241
|
* @returns {number}
|
|
204
242
|
*/
|
|
205
|
-
getHeight() {
|
|
243
|
+
public getHeight(): number {
|
|
206
244
|
return this._lonLat.height;
|
|
207
245
|
}
|
|
208
246
|
|
|
@@ -213,30 +251,30 @@ class PlanetCamera extends Camera {
|
|
|
213
251
|
* @param {Number} height - Camera height
|
|
214
252
|
* @returns {Vec3}
|
|
215
253
|
*/
|
|
216
|
-
getExtentPosition(extent, height) {
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
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();
|
|
221
259
|
|
|
222
260
|
if (west > east) {
|
|
223
261
|
east += 360;
|
|
224
262
|
}
|
|
225
263
|
|
|
226
|
-
|
|
264
|
+
let e = this.planet.ellipsoid;
|
|
227
265
|
|
|
228
|
-
|
|
229
|
-
|
|
266
|
+
let cart = new LonLat(east, north);
|
|
267
|
+
let northEast = e.lonLatToCartesian(cart);
|
|
230
268
|
cart.lat = south;
|
|
231
|
-
|
|
269
|
+
let southEast = e.lonLatToCartesian(cart);
|
|
232
270
|
cart.lon = west;
|
|
233
|
-
|
|
271
|
+
let southWest = e.lonLatToCartesian(cart);
|
|
234
272
|
cart.lat = north;
|
|
235
|
-
|
|
273
|
+
let northWest = e.lonLatToCartesian(cart);
|
|
236
274
|
|
|
237
|
-
|
|
275
|
+
let center = Vec3.sub(northEast, southWest).scale(0.5).addA(southWest);
|
|
238
276
|
|
|
239
|
-
|
|
277
|
+
let mag = center.length();
|
|
240
278
|
if (mag < 0.000001) {
|
|
241
279
|
cart.lon = (east + west) * 0.5;
|
|
242
280
|
cart.lat = (north + south) * 0.5;
|
|
@@ -248,30 +286,30 @@ class PlanetCamera extends Camera {
|
|
|
248
286
|
northEast.subA(center);
|
|
249
287
|
southWest.subA(center);
|
|
250
288
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
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();
|
|
254
292
|
|
|
255
|
-
|
|
293
|
+
let _h = Math.max(
|
|
256
294
|
Math.abs(up.dot(northWest)),
|
|
257
295
|
Math.abs(up.dot(southEast)),
|
|
258
296
|
Math.abs(up.dot(northEast)),
|
|
259
297
|
Math.abs(up.dot(southWest))
|
|
260
298
|
);
|
|
261
299
|
|
|
262
|
-
|
|
300
|
+
let _w = Math.max(
|
|
263
301
|
Math.abs(right.dot(northWest)),
|
|
264
302
|
Math.abs(right.dot(southEast)),
|
|
265
303
|
Math.abs(right.dot(northEast)),
|
|
266
304
|
Math.abs(right.dot(southWest))
|
|
267
305
|
);
|
|
268
306
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
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);
|
|
272
310
|
|
|
273
311
|
center.normalize();
|
|
274
|
-
center.scale(mag + d +
|
|
312
|
+
center.scale(mag + d + height);
|
|
275
313
|
|
|
276
314
|
return center;
|
|
277
315
|
}
|
|
@@ -280,8 +318,9 @@ class PlanetCamera extends Camera {
|
|
|
280
318
|
* View current extent.
|
|
281
319
|
* @public
|
|
282
320
|
* @param {Extent} extent - Current extent.
|
|
321
|
+
* @param {number} [height]
|
|
283
322
|
*/
|
|
284
|
-
viewExtent(extent, height) {
|
|
323
|
+
public viewExtent(extent: Extent, height?: number) {
|
|
285
324
|
this.stopFlying();
|
|
286
325
|
this.set(this.getExtentPosition(extent, height), Vec3.ZERO, Vec3.NORTH);
|
|
287
326
|
this.update();
|
|
@@ -291,13 +330,21 @@ class PlanetCamera extends Camera {
|
|
|
291
330
|
* Flies to the current extent.
|
|
292
331
|
* @public
|
|
293
332
|
* @param {Extent} extent - Current extent.
|
|
333
|
+
* @param {number} [height] - Destination height.
|
|
294
334
|
* @param {Vec3} [up] - Camera UP in the end of flying. Default - (0,1,0)
|
|
295
335
|
* @param {Number} [ampl] - Altitude amplitude factor.
|
|
296
|
-
* @param {
|
|
297
|
-
* @param {
|
|
298
|
-
* @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
|
|
299
339
|
*/
|
|
300
|
-
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) {
|
|
301
348
|
this.flyCartesian(
|
|
302
349
|
this.getExtentPosition(extent, height),
|
|
303
350
|
Vec3.ZERO,
|
|
@@ -309,9 +356,9 @@ class PlanetCamera extends Camera {
|
|
|
309
356
|
);
|
|
310
357
|
}
|
|
311
358
|
|
|
312
|
-
viewDistance(cartesian, distance = 10000.0) {
|
|
359
|
+
public viewDistance(cartesian: Vec3, distance: number = 10000.0) {
|
|
313
360
|
let p0 = this.eye.add(this.getForward().scaleTo(distance));
|
|
314
|
-
let _rot = Quat.getRotationBetweenVectors(p0.
|
|
361
|
+
let _rot = Quat.getRotationBetweenVectors(p0.getNormal(), cartesian.getNormal());
|
|
315
362
|
if (_rot.isZero()) {
|
|
316
363
|
let newPos = cartesian.add(this.getBackward().scaleTo(distance));
|
|
317
364
|
this.set(newPos, cartesian);
|
|
@@ -323,16 +370,16 @@ class PlanetCamera extends Camera {
|
|
|
323
370
|
this.update();
|
|
324
371
|
}
|
|
325
372
|
|
|
326
|
-
flyDistance(
|
|
327
|
-
cartesian,
|
|
328
|
-
distance = 10000.0,
|
|
329
|
-
ampl = 0.0,
|
|
330
|
-
completeCallback,
|
|
331
|
-
startCallback,
|
|
332
|
-
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
|
|
333
380
|
) {
|
|
334
381
|
let p0 = this.eye.add(this.getForward().scaleTo(distance));
|
|
335
|
-
let _rot = Quat.getRotationBetweenVectors(p0.
|
|
382
|
+
let _rot = Quat.getRotationBetweenVectors(p0.getNormal(), cartesian.getNormal());
|
|
336
383
|
if (_rot.isZero()) {
|
|
337
384
|
let newPos = cartesian.add(this.getBackward().scaleTo(distance));
|
|
338
385
|
this.set(newPos, cartesian);
|
|
@@ -358,14 +405,21 @@ class PlanetCamera extends Camera {
|
|
|
358
405
|
* @param {Vec3} [look] - Camera LOOK in the end of flying. Default - (0,0,0)
|
|
359
406
|
* @param {Vec3} [up] - Camera UP vector in the end of flying. Default - (0,1,0)
|
|
360
407
|
* @param {Number} [ampl=1.0] - Altitude amplitude factor.
|
|
361
|
-
* @param {
|
|
362
|
-
* @param {
|
|
363
|
-
* @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
|
|
364
411
|
*/
|
|
365
|
-
flyCartesian(
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
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
|
+
}) {
|
|
369
423
|
|
|
370
424
|
this.stopFlying();
|
|
371
425
|
|
|
@@ -384,63 +438,62 @@ class PlanetCamera extends Camera {
|
|
|
384
438
|
look = this.planet.ellipsoid.lonLatToCartesian(look);
|
|
385
439
|
}
|
|
386
440
|
|
|
387
|
-
|
|
441
|
+
let ground_a = this.planet.ellipsoid.lonLatToCartesian(
|
|
388
442
|
new LonLat(this._lonLat.lon, this._lonLat.lat)
|
|
389
443
|
);
|
|
390
|
-
|
|
444
|
+
|
|
445
|
+
let v_a = this._u,
|
|
391
446
|
n_a = this._b;
|
|
392
447
|
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
448
|
+
let lonlat_b = this.planet.ellipsoid.cartesianToLonLat(cartesian);
|
|
449
|
+
let up_b = up;
|
|
450
|
+
let ground_b = this.planet.ellipsoid.lonLatToCartesian(
|
|
396
451
|
new LonLat(lonlat_b.lon, lonlat_b.lat, 0)
|
|
397
452
|
);
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
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);
|
|
401
455
|
n_b.normalize();
|
|
402
456
|
u_b.normalize();
|
|
403
|
-
|
|
457
|
+
let v_b = n_b.cross(u_b);
|
|
404
458
|
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
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);
|
|
409
463
|
|
|
410
|
-
|
|
411
|
-
|
|
464
|
+
let maxHeight = 6639613;
|
|
465
|
+
let currMaxHeight = Math.max(this._lonLat.height, lonlat_b.height);
|
|
412
466
|
if (currMaxHeight > maxHeight) {
|
|
413
467
|
maxHeight = currMaxHeight;
|
|
414
468
|
}
|
|
415
|
-
|
|
416
|
-
|
|
469
|
+
let max_h = currMaxHeight + 2.5 * hM_a * (maxHeight - currMaxHeight);
|
|
470
|
+
let zero = Vec3.ZERO;
|
|
417
471
|
|
|
418
472
|
// camera path and orientations calculation
|
|
419
473
|
for (let i = 0; i <= this._numFrames; i++) {
|
|
420
|
-
|
|
474
|
+
let d = 1 - i / this._numFrames;
|
|
421
475
|
d = d * d * (3 - 2 * d);
|
|
422
476
|
d *= d;
|
|
423
477
|
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
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 =
|
|
429
482
|
this._lonLat.height * d * d * d +
|
|
430
483
|
max_h * 3 * d * d * t +
|
|
431
484
|
max_h * 3 * d * t * t +
|
|
432
485
|
lonlat_b.height * t * t * t;
|
|
433
486
|
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
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());
|
|
437
490
|
|
|
438
|
-
|
|
439
|
-
|
|
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);
|
|
440
493
|
n.normalize();
|
|
441
494
|
u.normalize();
|
|
442
495
|
|
|
443
|
-
|
|
496
|
+
let v = n.cross(u);
|
|
444
497
|
this._framesArr[i] = {
|
|
445
498
|
eye: eye_i,
|
|
446
499
|
n: n,
|
|
@@ -457,21 +510,31 @@ class PlanetCamera extends Camera {
|
|
|
457
510
|
* Flies to the geo coordinates.
|
|
458
511
|
* @public
|
|
459
512
|
* @param {LonLat} lonlat - Finish coordinates.
|
|
460
|
-
* @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)
|
|
461
514
|
* @param {Vec3} [up] - Camera UP vector in the end of flying. Default - (0,1,0)
|
|
462
|
-
* @param {
|
|
463
|
-
* @param {
|
|
464
|
-
* @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
|
|
465
519
|
*/
|
|
466
|
-
flyLonLat(
|
|
467
|
-
|
|
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);
|
|
468
530
|
this.flyCartesian(
|
|
469
531
|
this.planet.ellipsoid.lonLatToCartesian(_lonLat),
|
|
470
532
|
look,
|
|
471
533
|
up,
|
|
472
534
|
ampl,
|
|
473
535
|
completeCallback,
|
|
474
|
-
startCallback
|
|
536
|
+
startCallback,
|
|
537
|
+
frameCallbak
|
|
475
538
|
);
|
|
476
539
|
}
|
|
477
540
|
|
|
@@ -482,7 +545,7 @@ class PlanetCamera extends Camera {
|
|
|
482
545
|
stopFlying() {
|
|
483
546
|
this.planet.layerLock.free(this._keyLock);
|
|
484
547
|
this.planet.terrainLock.free(this._keyLock);
|
|
485
|
-
this.planet.
|
|
548
|
+
this.planet.normalMapCreator.free(this._keyLock);
|
|
486
549
|
|
|
487
550
|
this._flying = false;
|
|
488
551
|
this._framesArr.length = 0;
|
|
@@ -506,8 +569,8 @@ class PlanetCamera extends Camera {
|
|
|
506
569
|
* @param {number} angle - Rotation angle.
|
|
507
570
|
* @param {boolean} [spin] - If its true rotates around globe spin.
|
|
508
571
|
*/
|
|
509
|
-
rotateLeft(angle, spin) {
|
|
510
|
-
this.rotateHorizontal(angle * math.RADIANS, spin
|
|
572
|
+
public rotateLeft(angle: number, spin: boolean) {
|
|
573
|
+
this.rotateHorizontal(angle * math.RADIANS, spin !== true, Vec3.ZERO);
|
|
511
574
|
this.update();
|
|
512
575
|
}
|
|
513
576
|
|
|
@@ -517,43 +580,43 @@ class PlanetCamera extends Camera {
|
|
|
517
580
|
* @param {number} angle - Rotation angle.
|
|
518
581
|
* @param {boolean} [spin] - If its true rotates around globe spin.
|
|
519
582
|
*/
|
|
520
|
-
rotateRight(angle, spin) {
|
|
521
|
-
this.rotateHorizontal(-angle * math.RADIANS, spin
|
|
583
|
+
public rotateRight(angle: number, spin: boolean) {
|
|
584
|
+
this.rotateHorizontal(-angle * math.RADIANS, spin !== true, Vec3.ZERO);
|
|
522
585
|
this.update();
|
|
523
586
|
}
|
|
524
587
|
|
|
525
588
|
/**
|
|
526
|
-
* Rotates around planet to the
|
|
589
|
+
* Rotates around planet to the North Pole.
|
|
527
590
|
* @public
|
|
528
591
|
* @param {number} angle - Rotation angle.
|
|
529
592
|
*/
|
|
530
|
-
rotateUp(angle) {
|
|
593
|
+
public rotateUp(angle: number) {
|
|
531
594
|
this.rotateVertical(angle * math.RADIANS, Vec3.ZERO);
|
|
532
595
|
this.update();
|
|
533
596
|
}
|
|
534
597
|
|
|
535
598
|
/**
|
|
536
|
-
* Rotates around planet to the
|
|
599
|
+
* Rotates around planet to the South Pole.
|
|
537
600
|
* @public
|
|
538
601
|
* @param {number} angle - Rotation angle.
|
|
539
602
|
*/
|
|
540
|
-
rotateDown(angle) {
|
|
603
|
+
public rotateDown(angle: number) {
|
|
541
604
|
this.rotateVertical(-angle * math.RADIANS, Vec3.ZERO);
|
|
542
605
|
this.update();
|
|
543
606
|
}
|
|
544
607
|
|
|
545
|
-
rotateVertical(angle, center, minSlope = 0) {
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
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);
|
|
550
613
|
|
|
551
614
|
let eye = trm.mulVec3(this.eye);
|
|
552
615
|
let u = rot.mulVec3(this._u).normalize();
|
|
553
616
|
let r = rot.mulVec3(this._r).normalize();
|
|
554
617
|
let b = rot.mulVec3(this._b).normalize();
|
|
555
618
|
|
|
556
|
-
let eyeNorm = eye.
|
|
619
|
+
let eyeNorm = eye.getNormal();
|
|
557
620
|
let slope = b.dot(eyeNorm);
|
|
558
621
|
|
|
559
622
|
if (minSlope) {
|
|
@@ -564,7 +627,7 @@ class PlanetCamera extends Camera {
|
|
|
564
627
|
if (
|
|
565
628
|
(slope > 0.1 && u.dot(eyeNorm) > 0) ||
|
|
566
629
|
this.slope <= 0.1 ||
|
|
567
|
-
this._u.dot(this.eye.
|
|
630
|
+
this._u.dot(this.eye.getNormal()) <= 0.0
|
|
568
631
|
) {
|
|
569
632
|
this.eye = eye;
|
|
570
633
|
this._u = u;
|
|
@@ -583,13 +646,13 @@ class PlanetCamera extends Camera {
|
|
|
583
646
|
* Prepare camera to the frame. Used in render node frame function.
|
|
584
647
|
* @public
|
|
585
648
|
*/
|
|
586
|
-
checkFly() {
|
|
649
|
+
public checkFly() {
|
|
587
650
|
if (this._flying) {
|
|
588
|
-
|
|
651
|
+
let c = this._numFrames - this._framesCounter;
|
|
589
652
|
|
|
590
653
|
this.planet.layerLock.lock(this._keyLock);
|
|
591
654
|
this.planet.terrainLock.lock(this._keyLock);
|
|
592
|
-
this.planet.
|
|
655
|
+
this.planet.normalMapCreator.lock(this._keyLock);
|
|
593
656
|
|
|
594
657
|
this.eye = this._framesArr[c].eye;
|
|
595
658
|
this._r = this._framesArr[c].u;
|
|
@@ -614,7 +677,7 @@ class PlanetCamera extends Camera {
|
|
|
614
677
|
}
|
|
615
678
|
}
|
|
616
679
|
|
|
617
|
-
checkTerrainCollision() {
|
|
680
|
+
public checkTerrainCollision() {
|
|
618
681
|
this._terrainAltitude = this._lonLat.height;
|
|
619
682
|
if (this._insideSegment && this._insideSegment.planet) {
|
|
620
683
|
this._terrainAltitude = this._insideSegment.getTerrainPoint(
|
|
@@ -629,13 +692,13 @@ class PlanetCamera extends Camera {
|
|
|
629
692
|
}
|
|
630
693
|
}
|
|
631
694
|
|
|
632
|
-
getSurfaceVisibleDistance(d) {
|
|
633
|
-
let R = this.planet.ellipsoid.
|
|
695
|
+
public getSurfaceVisibleDistance(d: number): number {
|
|
696
|
+
let R = this.planet.ellipsoid.equatorialSize;
|
|
634
697
|
return R * Math.acos(R / (R + this._lonLat.height + d));
|
|
635
698
|
}
|
|
636
699
|
|
|
637
|
-
getHeading() {
|
|
638
|
-
let u = this.eye.
|
|
700
|
+
public getHeading(): number {
|
|
701
|
+
let u = this.eye.getNormal();
|
|
639
702
|
let f = Vec3.proj_b_to_plane(
|
|
640
703
|
this.slope >= 0.97 ? this.getUp() : this.getForward(),
|
|
641
704
|
u
|
|
@@ -648,9 +711,9 @@ class PlanetCamera extends Camera {
|
|
|
648
711
|
return res;
|
|
649
712
|
}
|
|
650
713
|
|
|
651
|
-
isVisible(poi) {
|
|
714
|
+
public isVisible(poi: Vec3): boolean {
|
|
652
715
|
let e = this.eye.length();
|
|
653
|
-
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);
|
|
654
717
|
}
|
|
655
718
|
|
|
656
719
|
// _calcOrientation() {
|
|
@@ -672,4 +735,4 @@ class PlanetCamera extends Camera {
|
|
|
672
735
|
// }
|
|
673
736
|
}
|
|
674
737
|
|
|
675
|
-
export {
|
|
738
|
+
export {PlanetCamera};
|