@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,9 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import { Mat4 } from "./Mat4.js";
|
|
6
|
-
import { Vec3 } from "./Vec3.js";
|
|
1
|
+
import * as math from "../math";
|
|
2
|
+
import {Vec3} from "./Vec3";
|
|
3
|
+
import {Mat4} from "./Mat4";
|
|
4
|
+
import {Mat3} from "./Mat3";
|
|
7
5
|
|
|
8
6
|
/**
|
|
9
7
|
* A set of 4-dimensional coordinates used to represent rotation in 3-dimensional space.
|
|
@@ -15,43 +13,42 @@ import { Vec3 } from "./Vec3.js";
|
|
|
15
13
|
*/
|
|
16
14
|
export class Quat {
|
|
17
15
|
/**
|
|
18
|
-
*
|
|
19
|
-
* @
|
|
20
|
-
* @
|
|
21
|
-
* @
|
|
16
|
+
* The X component.
|
|
17
|
+
* @public
|
|
18
|
+
* @type {Number}
|
|
19
|
+
* @default 0.0
|
|
20
|
+
*/
|
|
21
|
+
public x: number;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* The Y component.
|
|
25
|
+
* @public
|
|
26
|
+
* @type {Number}
|
|
27
|
+
* @default 0.0
|
|
28
|
+
*/
|
|
29
|
+
public y: number;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* The Z component.
|
|
33
|
+
* @public
|
|
34
|
+
* @type {Number}
|
|
35
|
+
* @default 0.0
|
|
22
36
|
*/
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
this.y = y || 0.0;
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* The Z component.
|
|
42
|
-
* @public
|
|
43
|
-
* @type {Number}
|
|
44
|
-
* @default 0.0
|
|
45
|
-
*/
|
|
46
|
-
this.z = z || 0.0;
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* The W component.
|
|
50
|
-
* @public
|
|
51
|
-
* @type {Number}
|
|
52
|
-
* @default 0.0
|
|
53
|
-
*/
|
|
54
|
-
this.w = w || 0.0;
|
|
37
|
+
public z: number;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* The W component.
|
|
41
|
+
* @public
|
|
42
|
+
* @type {Number}
|
|
43
|
+
* @default 0.0
|
|
44
|
+
*/
|
|
45
|
+
public w: number;
|
|
46
|
+
|
|
47
|
+
constructor(x: number = 0.0, y: number = 0.0, z: number = 0.0, w: number = 0.0) {
|
|
48
|
+
this.x = x;
|
|
49
|
+
this.y = y;
|
|
50
|
+
this.z = z;
|
|
51
|
+
this.w = w;
|
|
55
52
|
}
|
|
56
53
|
|
|
57
54
|
/**
|
|
@@ -59,7 +56,7 @@ export class Quat {
|
|
|
59
56
|
* @const
|
|
60
57
|
* @type {Quat}
|
|
61
58
|
*/
|
|
62
|
-
static get IDENTITY() {
|
|
59
|
+
static get IDENTITY(): Quat {
|
|
63
60
|
return new Quat(0.0, 0.0, 0.0, 1.0);
|
|
64
61
|
}
|
|
65
62
|
|
|
@@ -69,7 +66,7 @@ export class Quat {
|
|
|
69
66
|
* @param {number} a - The angle in radians to rotate around the axis.
|
|
70
67
|
* @returns {Quat} -
|
|
71
68
|
*/
|
|
72
|
-
static xRotation(a) {
|
|
69
|
+
static xRotation(a: number): Quat {
|
|
73
70
|
a *= 0.5;
|
|
74
71
|
return new Quat(Math.sin(a), 0.0, 0.0, Math.cos(a));
|
|
75
72
|
}
|
|
@@ -80,7 +77,7 @@ export class Quat {
|
|
|
80
77
|
* @param {number} a - The angle in radians to rotate around the axis.
|
|
81
78
|
* @returns {Quat} -
|
|
82
79
|
*/
|
|
83
|
-
static yRotation(a) {
|
|
80
|
+
static yRotation(a: number): Quat {
|
|
84
81
|
a *= 0.5;
|
|
85
82
|
return new Quat(0.0, Math.sin(a), 0.0, Math.cos(a));
|
|
86
83
|
}
|
|
@@ -91,7 +88,7 @@ export class Quat {
|
|
|
91
88
|
* @param {number} a - The angle in radians to rotate around the axis.
|
|
92
89
|
* @returns {Quat} -
|
|
93
90
|
*/
|
|
94
|
-
static zRotation(a) {
|
|
91
|
+
static zRotation(a: number): Quat {
|
|
95
92
|
a *= 0.5;
|
|
96
93
|
return new Quat(0.0, 0.0, Math.sin(a), Math.cos(a));
|
|
97
94
|
}
|
|
@@ -103,11 +100,10 @@ export class Quat {
|
|
|
103
100
|
* @param {number} [angle=0.0] The angle in radians to rotate around the axis.
|
|
104
101
|
* @returns {Quat} -
|
|
105
102
|
*/
|
|
106
|
-
static axisAngleToQuat(axis, angle) {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
var sin_a = Math.sin(half_angle);
|
|
103
|
+
static axisAngleToQuat(axis: Vec3, angle: number = 0): Quat {
|
|
104
|
+
let v = axis.getNormal();
|
|
105
|
+
let half_angle = angle * 0.5;
|
|
106
|
+
let sin_a = Math.sin(half_angle);
|
|
111
107
|
return new Quat(v.x * sin_a, v.y * sin_a, v.z * sin_a, Math.cos(half_angle));
|
|
112
108
|
}
|
|
113
109
|
|
|
@@ -118,12 +114,11 @@ export class Quat {
|
|
|
118
114
|
* @param {Vec3} up - Up vector.
|
|
119
115
|
* @returns {Quat} -
|
|
120
116
|
*/
|
|
121
|
-
static getLookRotation(forward, up) {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
var z = 1.0 + s.x + u.y + f.z;
|
|
117
|
+
static getLookRotation(forward: Vec3, up: Vec3): Quat {
|
|
118
|
+
let f = forward.getNormal().negate();
|
|
119
|
+
let s = up.cross(f).normalize();
|
|
120
|
+
let u = f.cross(s);
|
|
121
|
+
let z = 1.0 + s.x + u.y + f.z;
|
|
127
122
|
|
|
128
123
|
if (z > 0.000001) {
|
|
129
124
|
let fd = 1.0 / (2.0 * Math.sqrt(z));
|
|
@@ -145,23 +140,23 @@ export class Quat {
|
|
|
145
140
|
}
|
|
146
141
|
|
|
147
142
|
/**
|
|
148
|
-
* Computes a Quat from
|
|
143
|
+
* Computes a Quat from source point heading to the destination point.
|
|
149
144
|
* @static
|
|
150
145
|
* @param {Vec3} sourcePoint - Source coordinate.
|
|
151
146
|
* @param {Vec3} destPoint - Destination coordinate.
|
|
152
147
|
* @returns {Quat} -
|
|
153
148
|
*/
|
|
154
|
-
static getLookAtSourceDest(sourcePoint, destPoint) {
|
|
155
|
-
|
|
156
|
-
|
|
149
|
+
static getLookAtSourceDest(sourcePoint: Vec3, destPoint: Vec3): Quat {
|
|
150
|
+
let forwardVector = destPoint.subA(sourcePoint).normalize();
|
|
151
|
+
let dot = Vec3.FORWARD.dot(forwardVector);
|
|
157
152
|
if (Math.abs(dot - -1.0) < 0.000001) {
|
|
158
153
|
return Quat.axisAngleToQuat(Vec3.UP, Math.PI);
|
|
159
154
|
}
|
|
160
155
|
if (Math.abs(dot - 1.0) < 0.000001) {
|
|
161
156
|
return new Quat(0.0, 0.0, 0.0, 1.0);
|
|
162
157
|
}
|
|
163
|
-
|
|
164
|
-
|
|
158
|
+
let rotAngle = Math.acos(dot);
|
|
159
|
+
let rotAxis = Vec3.FORWARD.cross(forwardVector).normalize();
|
|
165
160
|
return Quat.axisAngleToQuat(rotAxis, rotAngle);
|
|
166
161
|
}
|
|
167
162
|
|
|
@@ -172,9 +167,9 @@ export class Quat {
|
|
|
172
167
|
* @param {Vec3} v - Second vector.
|
|
173
168
|
* @returns {Quat} -
|
|
174
169
|
*/
|
|
175
|
-
static getRotationBetweenVectors(u, v) {
|
|
176
|
-
|
|
177
|
-
|
|
170
|
+
static getRotationBetweenVectors(u: Vec3, v: Vec3): Quat {
|
|
171
|
+
let w = u.cross(v);
|
|
172
|
+
let q = new Quat(w.x, w.y, w.z, 1.0 + u.dot(v));
|
|
178
173
|
return q.normalize();
|
|
179
174
|
}
|
|
180
175
|
|
|
@@ -186,46 +181,45 @@ export class Quat {
|
|
|
186
181
|
* @param {Quat} res
|
|
187
182
|
* @returns {Quat} -
|
|
188
183
|
*/
|
|
189
|
-
static getRotationBetweenVectorsRes(u, v, res) {
|
|
190
|
-
|
|
184
|
+
static getRotationBetweenVectorsRes(u: Vec3, v: Vec3, res: Quat): Quat {
|
|
185
|
+
let w = u.cross(v);
|
|
191
186
|
res.set(w.x, w.y, w.z, 1.0 + u.dot(v));
|
|
192
187
|
return res.normalize();
|
|
193
188
|
}
|
|
194
189
|
|
|
195
190
|
/**
|
|
196
191
|
* Compute rotation between two vectors with around vector up
|
|
197
|
-
* for exactly opposite vectors. If vectors
|
|
198
|
-
* direction
|
|
192
|
+
* for exactly opposite vectors. If vectors exactly in the same
|
|
193
|
+
* direction as returns identity Quat.
|
|
199
194
|
* @static
|
|
200
195
|
* @param {Vec3} source - First vector.
|
|
201
196
|
* @param {Vec3} dest - Second vector.
|
|
202
197
|
* @param {Vec3} up - Up vector.
|
|
203
198
|
* @returns {Quat} -
|
|
204
199
|
*/
|
|
205
|
-
static getRotationBetweenVectorsUp(source, dest, up) {
|
|
206
|
-
|
|
200
|
+
static getRotationBetweenVectorsUp(source: Vec3, dest: Vec3, up: Vec3): Quat {
|
|
201
|
+
let dot = source.dot(dest);
|
|
207
202
|
if (Math.abs(dot + 1.0) < 0.000001) {
|
|
208
203
|
// vector source and dest point exactly in the opposite direction,
|
|
209
204
|
// so it is a 180 degrees turn around the up-axis
|
|
210
205
|
return Quat.axisAngleToQuat(up, Math.PI);
|
|
211
206
|
}
|
|
212
207
|
if (Math.abs(dot - 1.0) < 0.000001) {
|
|
213
|
-
// vector source and dest point exactly in the same direction
|
|
208
|
+
// vector source and dest point exactly in the same direction,
|
|
214
209
|
// so we return the identity Quat
|
|
215
210
|
return new Quat(0, 0, 0, 1);
|
|
216
211
|
}
|
|
217
|
-
|
|
218
|
-
|
|
212
|
+
let rotAngle = Math.acos(dot);
|
|
213
|
+
let rotAxis = source.cross(dest).normalize();
|
|
219
214
|
return Quat.axisAngleToQuat(rotAxis, rotAngle);
|
|
220
215
|
}
|
|
221
216
|
|
|
222
217
|
/**
|
|
223
218
|
* Returns true if the components are zero.
|
|
224
219
|
* @public
|
|
225
|
-
* @
|
|
226
|
-
* @returns {Quat} -
|
|
220
|
+
* @returns {boolean} -
|
|
227
221
|
*/
|
|
228
|
-
isZero() {
|
|
222
|
+
public isZero(): boolean {
|
|
229
223
|
return this.x === 0.0 && this.y === 0.0 && this.z === 0.0 && this.w === 0.0;
|
|
230
224
|
}
|
|
231
225
|
|
|
@@ -234,7 +228,7 @@ export class Quat {
|
|
|
234
228
|
* @public
|
|
235
229
|
* @returns {Quat} -
|
|
236
230
|
*/
|
|
237
|
-
clear() {
|
|
231
|
+
public clear(): Quat {
|
|
238
232
|
this.x = this.y = this.z = this.w = 0;
|
|
239
233
|
return this;
|
|
240
234
|
}
|
|
@@ -248,7 +242,7 @@ export class Quat {
|
|
|
248
242
|
* @param {Number} [w=0.0] The W component.
|
|
249
243
|
* @returns {Quat} -
|
|
250
244
|
*/
|
|
251
|
-
set(x, y, z, w) {
|
|
245
|
+
public set(x: number, y: number, z: number, w: number): Quat {
|
|
252
246
|
this.x = x;
|
|
253
247
|
this.y = y;
|
|
254
248
|
this.z = z;
|
|
@@ -262,7 +256,7 @@ export class Quat {
|
|
|
262
256
|
* @param {Quat} q - Copy Quat.
|
|
263
257
|
* @returns {Quat} -
|
|
264
258
|
*/
|
|
265
|
-
copy(q) {
|
|
259
|
+
public copy(q: Quat): Quat {
|
|
266
260
|
this.x = q.x;
|
|
267
261
|
this.y = q.y;
|
|
268
262
|
this.z = q.z;
|
|
@@ -275,7 +269,7 @@ export class Quat {
|
|
|
275
269
|
* @public
|
|
276
270
|
* @returns {Quat} -
|
|
277
271
|
*/
|
|
278
|
-
setIdentity() {
|
|
272
|
+
public setIdentity(): Quat {
|
|
279
273
|
this.x = 0.0;
|
|
280
274
|
this.y = 0.0;
|
|
281
275
|
this.z = 0.0;
|
|
@@ -288,7 +282,7 @@ export class Quat {
|
|
|
288
282
|
* @public
|
|
289
283
|
* @returns {Quat} -
|
|
290
284
|
*/
|
|
291
|
-
clone() {
|
|
285
|
+
public clone(): Quat {
|
|
292
286
|
return new Quat(this.x, this.y, this.z, this.w);
|
|
293
287
|
}
|
|
294
288
|
|
|
@@ -298,7 +292,7 @@ export class Quat {
|
|
|
298
292
|
* @param {Quat} q - Quat to add.
|
|
299
293
|
* @returns {Quat} -
|
|
300
294
|
*/
|
|
301
|
-
add(q) {
|
|
295
|
+
public add(q: Quat): Quat {
|
|
302
296
|
return new Quat(this.x + q.x, this.y + q.y, this.z + q.z, this.w + q.w);
|
|
303
297
|
}
|
|
304
298
|
|
|
@@ -308,7 +302,7 @@ export class Quat {
|
|
|
308
302
|
* @param {Quat} q - Quat to subtract.
|
|
309
303
|
* @returns {Quat} -
|
|
310
304
|
*/
|
|
311
|
-
sub(q) {
|
|
305
|
+
public sub(q: Quat): Quat {
|
|
312
306
|
return new Quat(this.x - q.x, this.y - q.y, this.z - q.z, this.w - q.w);
|
|
313
307
|
}
|
|
314
308
|
|
|
@@ -318,7 +312,7 @@ export class Quat {
|
|
|
318
312
|
* @param {Number} scale - The scalar to multiply with.
|
|
319
313
|
* @returns {Quat} -
|
|
320
314
|
*/
|
|
321
|
-
scaleTo(scale) {
|
|
315
|
+
public scaleTo(scale: number): Quat {
|
|
322
316
|
return new Quat(this.x * scale, this.y * scale, this.z * scale, this.w * scale);
|
|
323
317
|
}
|
|
324
318
|
|
|
@@ -328,7 +322,7 @@ export class Quat {
|
|
|
328
322
|
* @param {Number} scale - The scalar to multiply with.
|
|
329
323
|
* @returns {Quat} -
|
|
330
324
|
*/
|
|
331
|
-
scale(scale) {
|
|
325
|
+
public scale(scale: number): Quat {
|
|
332
326
|
this.x *= scale;
|
|
333
327
|
this.y *= scale;
|
|
334
328
|
this.z *= scale;
|
|
@@ -341,7 +335,7 @@ export class Quat {
|
|
|
341
335
|
* @public
|
|
342
336
|
* @returns {Array.<number>} - (exactly 4 entries)
|
|
343
337
|
*/
|
|
344
|
-
toVec() {
|
|
338
|
+
public toVec(): [number, number, number, number] {
|
|
345
339
|
return [this.x, this.y, this.z, this.w];
|
|
346
340
|
}
|
|
347
341
|
|
|
@@ -353,17 +347,19 @@ export class Quat {
|
|
|
353
347
|
* @param {number} angle - Angle in radians.
|
|
354
348
|
* @returns {Quat} -
|
|
355
349
|
*/
|
|
356
|
-
setFromSphericalCoords(lat, lon, angle) {
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
350
|
+
public setFromSphericalCoords(lat: number, lon: number, angle: number): Quat {
|
|
351
|
+
let sin_a = Math.sin(angle / 2);
|
|
352
|
+
let cos_a = Math.cos(angle / 2);
|
|
353
|
+
let sin_lat = Math.sin(lat);
|
|
354
|
+
let cos_lat = Math.cos(lat);
|
|
355
|
+
let sin_long = Math.sin(lon);
|
|
356
|
+
let cos_long = Math.cos(lon);
|
|
357
|
+
|
|
363
358
|
this.x = sin_a * cos_lat * sin_long;
|
|
364
359
|
this.y = sin_a * sin_lat;
|
|
365
360
|
this.z = sin_a * sin_lat * cos_long;
|
|
366
361
|
this.w = cos_a;
|
|
362
|
+
|
|
367
363
|
return this;
|
|
368
364
|
}
|
|
369
365
|
|
|
@@ -374,12 +370,11 @@ export class Quat {
|
|
|
374
370
|
* @param {Vec3} up - Up vector.
|
|
375
371
|
* @returns {Quat} -
|
|
376
372
|
*/
|
|
377
|
-
setLookRotation(forward, up) {
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
var z = 1.0 + s.x + u.y + f.z;
|
|
373
|
+
public setLookRotation(forward: Vec3, up: Vec3): Quat {
|
|
374
|
+
let f = forward.getNormal().negate();
|
|
375
|
+
let s = up.cross(f).normalize();
|
|
376
|
+
let u = f.cross(s);
|
|
377
|
+
let z = 1.0 + s.x + u.y + f.z;
|
|
383
378
|
|
|
384
379
|
if (z > 0.000001) {
|
|
385
380
|
let fd = 1.0 / (2.0 * Math.sqrt(z));
|
|
@@ -415,29 +410,37 @@ export class Quat {
|
|
|
415
410
|
* @public
|
|
416
411
|
* @returns {Object} Returns object with latitude, longitude and alpha.
|
|
417
412
|
*/
|
|
418
|
-
toSphericalCoords() {
|
|
419
|
-
|
|
420
|
-
|
|
413
|
+
public toSphericalCoords(): any {
|
|
414
|
+
|
|
415
|
+
let cos_a = this.w;
|
|
416
|
+
let sin_a = Math.sqrt(1.0 - cos_a * cos_a);
|
|
417
|
+
|
|
421
418
|
// var angle = Math.acos(cos_a) * 2;
|
|
422
419
|
if (Math.abs(sin_a) < 0.0005) {
|
|
423
420
|
sin_a = 1;
|
|
424
421
|
}
|
|
425
|
-
var tx = this.x / sin_a;
|
|
426
|
-
var ty = this.y / sin_a;
|
|
427
|
-
var tz = this.z / sin_a;
|
|
428
422
|
|
|
429
|
-
|
|
430
|
-
|
|
423
|
+
let tx = this.x / sin_a;
|
|
424
|
+
let ty = this.y / sin_a;
|
|
425
|
+
let tz = this.z / sin_a;
|
|
426
|
+
|
|
427
|
+
let lon, lat = -Math.asin(ty);
|
|
428
|
+
|
|
431
429
|
if (tx * tx + tz * tz < 0.0005) {
|
|
432
430
|
lon = 0;
|
|
433
431
|
} else {
|
|
434
432
|
lon = Math.atan2(tx, tz);
|
|
435
433
|
}
|
|
434
|
+
|
|
436
435
|
if (lon < 0) {
|
|
437
436
|
lon += 360.0;
|
|
438
437
|
}
|
|
439
438
|
|
|
440
|
-
return {
|
|
439
|
+
return {
|
|
440
|
+
lat: lat,
|
|
441
|
+
lon: lon,
|
|
442
|
+
alpha: Math.acos(cos_a)
|
|
443
|
+
};
|
|
441
444
|
}
|
|
442
445
|
|
|
443
446
|
/**
|
|
@@ -447,10 +450,10 @@ export class Quat {
|
|
|
447
450
|
* @param {number} angle The angle in radians to rotate around the axis.
|
|
448
451
|
* @returns {Quat} -
|
|
449
452
|
*/
|
|
450
|
-
setFromAxisAngle(axis, angle) {
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
453
|
+
public setFromAxisAngle(axis: Vec3, angle: number): Quat {
|
|
454
|
+
let v = axis.getNormal();
|
|
455
|
+
let half_angle = angle * 0.5;
|
|
456
|
+
let sin_a = Math.sin(half_angle);
|
|
454
457
|
this.set(v.x * sin_a, v.y * sin_a, v.z * sin_a, Math.cos(half_angle));
|
|
455
458
|
return this;
|
|
456
459
|
}
|
|
@@ -460,15 +463,15 @@ export class Quat {
|
|
|
460
463
|
* @public
|
|
461
464
|
* @returns {Object} -
|
|
462
465
|
*/
|
|
463
|
-
getAxisAngle() {
|
|
466
|
+
public getAxisAngle(): any {
|
|
464
467
|
let x = this.x,
|
|
465
468
|
y = this.y,
|
|
466
469
|
z = this.z,
|
|
467
470
|
w = this.w;
|
|
468
|
-
|
|
469
|
-
|
|
471
|
+
let vl = Math.sqrt(x * x + y * y + z * z);
|
|
472
|
+
let axis, angle;
|
|
470
473
|
if (vl > 0.0000001) {
|
|
471
|
-
|
|
474
|
+
let ivl = 1.0 / vl;
|
|
472
475
|
axis = new Vec3(x * ivl, y * ivl, z * ivl);
|
|
473
476
|
if (w < 0) {
|
|
474
477
|
angle = 2.0 * Math.atan2(-vl, -w); // -PI,0
|
|
@@ -479,7 +482,11 @@ export class Quat {
|
|
|
479
482
|
axis = new Vec3(0, 0, 0);
|
|
480
483
|
angle = 0;
|
|
481
484
|
}
|
|
482
|
-
|
|
485
|
+
|
|
486
|
+
return {
|
|
487
|
+
axis: axis,
|
|
488
|
+
angle: angle
|
|
489
|
+
};
|
|
483
490
|
}
|
|
484
491
|
|
|
485
492
|
/**
|
|
@@ -490,20 +497,20 @@ export class Quat {
|
|
|
490
497
|
* @param {number} roll - Roll angle in degrees.
|
|
491
498
|
* @returns {Quat} -
|
|
492
499
|
*/
|
|
493
|
-
setFromEulerAngles(pitch, yaw, roll) {
|
|
494
|
-
|
|
500
|
+
public setFromEulerAngles(pitch: number, yaw: number, roll: number): Quat {
|
|
501
|
+
let ex = pitch * math.RADIANS_HALF,
|
|
495
502
|
ey = yaw * math.RADIANS_HALF,
|
|
496
503
|
ez = roll * math.RADIANS_HALF;
|
|
497
504
|
|
|
498
|
-
|
|
505
|
+
let cr = Math.cos(ex),
|
|
499
506
|
cp = Math.cos(ey),
|
|
500
507
|
cy = Math.cos(ez);
|
|
501
508
|
|
|
502
|
-
|
|
509
|
+
let sr = Math.sin(ex),
|
|
503
510
|
sp = Math.sin(ey),
|
|
504
511
|
sy = Math.sin(ez);
|
|
505
512
|
|
|
506
|
-
|
|
513
|
+
let cpcy = cp * cy,
|
|
507
514
|
spsy = sp * sy;
|
|
508
515
|
|
|
509
516
|
this.w = cr * cpcy + sr * spsy;
|
|
@@ -519,7 +526,7 @@ export class Quat {
|
|
|
519
526
|
* @public
|
|
520
527
|
* @returns {Object} -
|
|
521
528
|
*/
|
|
522
|
-
getEulerAngles() {
|
|
529
|
+
public getEulerAngles(): any {
|
|
523
530
|
let x = this.x,
|
|
524
531
|
y = this.y,
|
|
525
532
|
z = this.z,
|
|
@@ -540,23 +547,27 @@ export class Quat {
|
|
|
540
547
|
|
|
541
548
|
let yaw = Math.atan2(2.0 * (w * z + x * y), 1.0 - 2.0 * (sqy + z * z));
|
|
542
549
|
|
|
543
|
-
return {
|
|
550
|
+
return {
|
|
551
|
+
roll,
|
|
552
|
+
pitch,
|
|
553
|
+
yaw
|
|
554
|
+
};
|
|
544
555
|
}
|
|
545
556
|
|
|
546
557
|
/**
|
|
547
558
|
* Computes a Quat from the provided 4x4 matrix instance.
|
|
548
559
|
* @public
|
|
549
|
-
* @param {Mat4}
|
|
560
|
+
* @param {Mat4} mx - The rotation matrix.
|
|
550
561
|
* @returns {Quat} -
|
|
551
562
|
*/
|
|
552
|
-
setFromMatrix4(
|
|
553
|
-
|
|
563
|
+
public setFromMatrix4(mx: Mat4): Quat {
|
|
564
|
+
let tr,
|
|
554
565
|
s,
|
|
555
566
|
q = [];
|
|
556
|
-
|
|
557
|
-
m =
|
|
567
|
+
let i, j, k;
|
|
568
|
+
let m = mx._m;
|
|
558
569
|
|
|
559
|
-
|
|
570
|
+
let nxt = [1, 2, 0];
|
|
560
571
|
|
|
561
572
|
tr = m[0] + m[5] + m[10];
|
|
562
573
|
|
|
@@ -595,39 +606,28 @@ export class Quat {
|
|
|
595
606
|
/**
|
|
596
607
|
* Converts current Quat to the rotation 4x4 matrix.
|
|
597
608
|
* @public
|
|
609
|
+
* @params {Mat4} [out] - Output matrix
|
|
598
610
|
* @returns {Mat4} -
|
|
599
611
|
*/
|
|
600
|
-
getMat4(out) {
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
return
|
|
615
|
-
1 - (yy + zz),
|
|
616
|
-
xy
|
|
617
|
-
xz
|
|
618
|
-
0,
|
|
619
|
-
xy + wz,
|
|
620
|
-
1 - (xx + zz),
|
|
621
|
-
yz - wx,
|
|
622
|
-
0,
|
|
623
|
-
xz - wy,
|
|
624
|
-
yz + wx,
|
|
625
|
-
1 - (xx + yy),
|
|
626
|
-
0,
|
|
627
|
-
0,
|
|
628
|
-
0,
|
|
629
|
-
0,
|
|
630
|
-
1
|
|
612
|
+
public getMat4(out: Mat4 = new Mat4()): Mat4 {
|
|
613
|
+
let xs = this.x + this.x;
|
|
614
|
+
let ys = this.y + this.y;
|
|
615
|
+
let zs = this.z + this.z;
|
|
616
|
+
let wx = this.w * xs;
|
|
617
|
+
let wy = this.w * ys;
|
|
618
|
+
let wz = this.w * zs;
|
|
619
|
+
let xx = this.x * xs;
|
|
620
|
+
let xy = this.x * ys;
|
|
621
|
+
let xz = this.x * zs;
|
|
622
|
+
let yy = this.y * ys;
|
|
623
|
+
let yz = this.y * zs;
|
|
624
|
+
let zz = this.z * zs;
|
|
625
|
+
|
|
626
|
+
return out.set([
|
|
627
|
+
1 - (yy + zz), xy - wz, xz + wy, 0,
|
|
628
|
+
xy + wz, 1 - (xx + zz), yz - wx, 0,
|
|
629
|
+
xz - wy, yz + wx, 1 - (xx + yy), 0,
|
|
630
|
+
0, 0, 0, 1
|
|
631
631
|
]);
|
|
632
632
|
}
|
|
633
633
|
|
|
@@ -637,10 +637,10 @@ export class Quat {
|
|
|
637
637
|
* @returns {Mat3} -
|
|
638
638
|
* @todo NOT TESTED
|
|
639
639
|
*/
|
|
640
|
-
getMat3() {
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
640
|
+
public getMat3(): Mat3 {
|
|
641
|
+
let m = new Mat3();
|
|
642
|
+
let mx = m._m;
|
|
643
|
+
let c = this.x,
|
|
644
644
|
d = this.y,
|
|
645
645
|
e = this.z,
|
|
646
646
|
g = this.w,
|
|
@@ -652,7 +652,7 @@ export class Quat {
|
|
|
652
652
|
|
|
653
653
|
c = c * i;
|
|
654
654
|
|
|
655
|
-
|
|
655
|
+
let l = d * h;
|
|
656
656
|
|
|
657
657
|
d = d * i;
|
|
658
658
|
e = e * i;
|
|
@@ -674,25 +674,25 @@ export class Quat {
|
|
|
674
674
|
}
|
|
675
675
|
|
|
676
676
|
/**
|
|
677
|
-
* Returns
|
|
677
|
+
* Returns quaternion and vector production.
|
|
678
678
|
* @public
|
|
679
679
|
* @param {Vec3} v - 3d Vector.
|
|
680
680
|
* @returns {Vec3} -
|
|
681
681
|
*/
|
|
682
|
-
mulVec3(v) {
|
|
682
|
+
public mulVec3(v: Vec3): Vec3 {
|
|
683
683
|
// t = 2 * cross(q.xyz, v)
|
|
684
684
|
// v' = v + q.w * t + cross(q.xyz, t)
|
|
685
685
|
|
|
686
|
-
|
|
686
|
+
let d = v.x,
|
|
687
687
|
e = v.y,
|
|
688
688
|
g = v.z;
|
|
689
689
|
|
|
690
|
-
|
|
690
|
+
let b = this.x,
|
|
691
691
|
f = this.y,
|
|
692
692
|
h = this.z,
|
|
693
693
|
a = this.w;
|
|
694
694
|
|
|
695
|
-
|
|
695
|
+
let i = a * d + f * g - h * e,
|
|
696
696
|
j = a * e + h * d - b * g,
|
|
697
697
|
k = a * g + b * e - f * d;
|
|
698
698
|
|
|
@@ -711,15 +711,17 @@ export class Quat {
|
|
|
711
711
|
* @param {Quat} q - Quat to multiply.
|
|
712
712
|
* @returns {Quat} -
|
|
713
713
|
*/
|
|
714
|
-
mul(q) {
|
|
715
|
-
|
|
714
|
+
public mul(q: Quat): Quat {
|
|
715
|
+
let d = this.x,
|
|
716
716
|
e = this.y,
|
|
717
717
|
g = this.z,
|
|
718
718
|
a = this.w;
|
|
719
|
-
|
|
719
|
+
|
|
720
|
+
let f = q.x,
|
|
720
721
|
h = q.y,
|
|
721
722
|
i = q.z,
|
|
722
723
|
b = q.w;
|
|
724
|
+
|
|
723
725
|
return new Quat(
|
|
724
726
|
d * b + a * f + e * i - g * h,
|
|
725
727
|
e * b + a * h + g * f - d * i,
|
|
@@ -734,19 +736,22 @@ export class Quat {
|
|
|
734
736
|
* @param {Quat} q - Quat to multiply.
|
|
735
737
|
* @returns {Quat} -
|
|
736
738
|
*/
|
|
737
|
-
mulA(q) {
|
|
738
|
-
|
|
739
|
+
public mulA(q: Quat): Quat {
|
|
740
|
+
let d = this.x,
|
|
739
741
|
e = this.y,
|
|
740
742
|
g = this.z,
|
|
741
743
|
a = this.w;
|
|
742
|
-
|
|
744
|
+
|
|
745
|
+
let f = q.x,
|
|
743
746
|
h = q.y,
|
|
744
747
|
i = q.z,
|
|
745
748
|
b = q.w;
|
|
749
|
+
|
|
746
750
|
this.x = d * b + a * f + e * i - g * h;
|
|
747
751
|
this.y = e * b + a * h + g * f - d * i;
|
|
748
752
|
this.z = g * b + a * i + d * h - e * f;
|
|
749
753
|
this.w = a * b - d * f - e * h - g * i;
|
|
754
|
+
|
|
750
755
|
return this;
|
|
751
756
|
}
|
|
752
757
|
|
|
@@ -755,7 +760,7 @@ export class Quat {
|
|
|
755
760
|
* @public
|
|
756
761
|
* @returns {Quat} -
|
|
757
762
|
*/
|
|
758
|
-
conjugate() {
|
|
763
|
+
public conjugate(): Quat {
|
|
759
764
|
return new Quat(-this.x, -this.y, -this.z, this.w);
|
|
760
765
|
}
|
|
761
766
|
|
|
@@ -764,8 +769,8 @@ export class Quat {
|
|
|
764
769
|
* @public
|
|
765
770
|
* @returns {Quat} -
|
|
766
771
|
*/
|
|
767
|
-
inverse() {
|
|
768
|
-
|
|
772
|
+
public inverse(): Quat {
|
|
773
|
+
let n = 1.0 / this.magnitude2();
|
|
769
774
|
return new Quat(-this.x * n, -this.y * n, -this.z * n, this.w * n);
|
|
770
775
|
}
|
|
771
776
|
|
|
@@ -774,8 +779,8 @@ export class Quat {
|
|
|
774
779
|
* @public
|
|
775
780
|
* @returns {number} -
|
|
776
781
|
*/
|
|
777
|
-
magnitude() {
|
|
778
|
-
|
|
782
|
+
public magnitude(): number {
|
|
783
|
+
let b = this.x,
|
|
779
784
|
c = this.y,
|
|
780
785
|
d = this.z,
|
|
781
786
|
a = this.w;
|
|
@@ -787,8 +792,8 @@ export class Quat {
|
|
|
787
792
|
* @public
|
|
788
793
|
* @returns {number} -
|
|
789
794
|
*/
|
|
790
|
-
magnitude2() {
|
|
791
|
-
|
|
795
|
+
public magnitude2(): number {
|
|
796
|
+
let b = this.x,
|
|
792
797
|
c = this.y,
|
|
793
798
|
d = this.z,
|
|
794
799
|
a = this.w;
|
|
@@ -798,10 +803,10 @@ export class Quat {
|
|
|
798
803
|
/**
|
|
799
804
|
* Computes the dot (scalar) product of two Quats.
|
|
800
805
|
* @public
|
|
801
|
-
* @param {Quat} q - Second
|
|
806
|
+
* @param {Quat} q - Second quaternion.
|
|
802
807
|
* @returns {number} -
|
|
803
808
|
*/
|
|
804
|
-
dot(q) {
|
|
809
|
+
public dot(q: Quat): number {
|
|
805
810
|
return this.x * q.x + this.y * q.y + this.z * q.z;
|
|
806
811
|
}
|
|
807
812
|
|
|
@@ -810,12 +815,14 @@ export class Quat {
|
|
|
810
815
|
* @public
|
|
811
816
|
* @returns {Quat} -
|
|
812
817
|
*/
|
|
813
|
-
normalize() {
|
|
814
|
-
|
|
818
|
+
public normalize(): Quat {
|
|
819
|
+
|
|
820
|
+
let c = this.x,
|
|
815
821
|
d = this.y,
|
|
816
822
|
e = this.z,
|
|
817
823
|
g = this.w,
|
|
818
824
|
f = Math.sqrt(c * c + d * d + e * e + g * g);
|
|
825
|
+
|
|
819
826
|
if (f === 0.0) {
|
|
820
827
|
this.x = 0;
|
|
821
828
|
this.y = 0;
|
|
@@ -823,22 +830,24 @@ export class Quat {
|
|
|
823
830
|
this.w = 0;
|
|
824
831
|
return this;
|
|
825
832
|
}
|
|
833
|
+
|
|
826
834
|
f = 1 / f;
|
|
827
835
|
this.x = c * f;
|
|
828
836
|
this.y = d * f;
|
|
829
837
|
this.z = e * f;
|
|
830
838
|
this.w = g * f;
|
|
839
|
+
|
|
831
840
|
return this;
|
|
832
841
|
}
|
|
833
842
|
|
|
834
843
|
/**
|
|
835
844
|
* Compares two Quats.
|
|
836
845
|
* @public
|
|
837
|
-
* @param {Quat} q - Second
|
|
846
|
+
* @param {Quat} q - Second quaternion.
|
|
838
847
|
* @returns {Boolean} -
|
|
839
848
|
*/
|
|
840
|
-
isEqual(q) {
|
|
841
|
-
|
|
849
|
+
public isEqual(q: Quat): boolean {
|
|
850
|
+
let matching = this.dot(q);
|
|
842
851
|
if (Math.abs(matching - 1.0) < 0.001) {
|
|
843
852
|
return true;
|
|
844
853
|
}
|
|
@@ -852,8 +861,9 @@ export class Quat {
|
|
|
852
861
|
* @param {number} t - interpolation amount between the two Quats.
|
|
853
862
|
* @returns {Quat} -
|
|
854
863
|
*/
|
|
855
|
-
slerp(b, t) {
|
|
856
|
-
|
|
864
|
+
public slerp(b: Quat, t: number): Quat {
|
|
865
|
+
|
|
866
|
+
let ax = this.x,
|
|
857
867
|
ay = this.y,
|
|
858
868
|
az = this.z,
|
|
859
869
|
aw = this.w,
|
|
@@ -862,7 +872,7 @@ export class Quat {
|
|
|
862
872
|
bz = b.z,
|
|
863
873
|
bw = b.w;
|
|
864
874
|
|
|
865
|
-
|
|
875
|
+
let omega, cosom, sinom, scale0, scale1;
|
|
866
876
|
|
|
867
877
|
cosom = ax * bx + ay * by + az * bz + aw * bw;
|
|
868
878
|
|
|
@@ -898,18 +908,20 @@ export class Quat {
|
|
|
898
908
|
* @param {Boolean} [reprojectAxis] -
|
|
899
909
|
* @returns {Number} -
|
|
900
910
|
*/
|
|
901
|
-
getRoll(reprojectAxis) {
|
|
902
|
-
|
|
911
|
+
public getRoll(reprojectAxis: boolean = false): number {
|
|
912
|
+
|
|
913
|
+
let x = this.x,
|
|
903
914
|
y = this.y,
|
|
904
915
|
z = this.z,
|
|
905
916
|
w = this.w;
|
|
917
|
+
|
|
906
918
|
if (reprojectAxis) {
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
919
|
+
let fTy = 2.0 * y;
|
|
920
|
+
let fTz = 2.0 * z;
|
|
921
|
+
let fTwz = fTz * w;
|
|
922
|
+
let fTxy = fTy * x;
|
|
923
|
+
let fTyy = fTy * y;
|
|
924
|
+
let fTzz = fTz * z;
|
|
913
925
|
return Math.atan2(fTxy + fTwz, 1.0 - (fTyy + fTzz));
|
|
914
926
|
} else {
|
|
915
927
|
return Math.atan2(2 * (x * y + w * z), w * w + x * x - y * y - z * z);
|
|
@@ -922,18 +934,20 @@ export class Quat {
|
|
|
922
934
|
* @param {Boolean} [reprojectAxis] -
|
|
923
935
|
* @returns {number} -
|
|
924
936
|
*/
|
|
925
|
-
getPitch(reprojectAxis) {
|
|
926
|
-
|
|
937
|
+
public getPitch(reprojectAxis: boolean = false): number {
|
|
938
|
+
|
|
939
|
+
let x = this.x,
|
|
927
940
|
y = this.y,
|
|
928
941
|
z = this.z,
|
|
929
942
|
w = this.w;
|
|
943
|
+
|
|
930
944
|
if (reprojectAxis) {
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
945
|
+
let fTx = 2.0 * x;
|
|
946
|
+
let fTz = 2.0 * z;
|
|
947
|
+
let fTwx = fTx * w;
|
|
948
|
+
let fTxx = fTx * x;
|
|
949
|
+
let fTyz = fTz * y;
|
|
950
|
+
let fTzz = fTz * z;
|
|
937
951
|
return Math.atan2(fTyz + fTwx, 1.0 - (fTxx + fTzz));
|
|
938
952
|
} else {
|
|
939
953
|
return Math.atan2(2 * (y * z + w * x), w * w - x * x - y * y + z * z);
|
|
@@ -946,19 +960,21 @@ export class Quat {
|
|
|
946
960
|
* @param {Boolean} [reprojectAxis] -
|
|
947
961
|
* @returns {number} -
|
|
948
962
|
*/
|
|
949
|
-
getYaw(reprojectAxis = false) {
|
|
950
|
-
|
|
963
|
+
public getYaw(reprojectAxis: boolean = false): number {
|
|
964
|
+
|
|
965
|
+
let x = this.x,
|
|
951
966
|
y = this.y,
|
|
952
967
|
z = this.z,
|
|
953
968
|
w = this.w;
|
|
969
|
+
|
|
954
970
|
if (reprojectAxis) {
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
971
|
+
let fTx = 2.0 * x;
|
|
972
|
+
let fTy = 2.0 * y;
|
|
973
|
+
let fTz = 2.0 * z;
|
|
974
|
+
let fTwy = fTy * w;
|
|
975
|
+
let fTxx = fTx * x;
|
|
976
|
+
let fTxz = fTz * x;
|
|
977
|
+
let fTyy = fTy * y;
|
|
962
978
|
return Math.atan2(fTxz + fTwy, 1.0 - (fTxx + fTyy));
|
|
963
979
|
} else {
|
|
964
980
|
return Math.asin(-2 * (x * z - w * y));
|
|
@@ -975,6 +991,6 @@ export class Quat {
|
|
|
975
991
|
* @param {Number} [w=0.0] The W component.
|
|
976
992
|
* @returns {Quat} -
|
|
977
993
|
*/
|
|
978
|
-
export function quat(x, y, z, w) {
|
|
994
|
+
export function quat(x: number = 0, y: number = 0, z: number = 0, w: number = 0): Quat {
|
|
979
995
|
return new Quat(x, y, z, w);
|
|
980
996
|
}
|