@openglobus/og 0.18.0 → 0.18.2
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 +8 -8
- package/lib/@openglobus/og.esm.js +2 -0
- package/lib/@openglobus/og.esm.js.map +1 -0
- package/lib/@openglobus/og.umd.js +2 -0
- package/lib/@openglobus/og.umd.js.map +1 -0
- package/lib/js/Clock.d.ts +106 -0
- package/{src/Clock.ts → lib/js/Clock.js} +31 -126
- package/lib/js/Deferred.d.ts +6 -0
- package/lib/js/Deferred.js +13 -0
- package/lib/js/Events.d.ts +90 -0
- package/{src/Events.ts → lib/js/Events.js} +29 -84
- package/lib/js/Extent.d.ts +145 -0
- package/{src/Extent.ts → lib/js/Extent.js} +74 -120
- package/lib/js/Globe.d.ts +132 -0
- package/{src/Globe.ts → lib/js/Globe.js} +61 -159
- package/lib/js/ImageCanvas.d.ts +128 -0
- package/{src/ImageCanvas.ts → lib/js/ImageCanvas.js} +24 -65
- package/lib/js/Lock.d.ts +15 -0
- package/{src/Lock.ts → lib/js/Lock.js} +7 -21
- package/lib/js/LonLat.d.ts +128 -0
- package/{src/LonLat.ts → lib/js/LonLat.js} +44 -75
- package/lib/js/Object3d.d.ts +49 -0
- package/{src/Object3d.ts → lib/js/Object3d.js} +64 -184
- package/lib/js/Popup.d.ts +46 -0
- package/{src/Popup.ts → lib/js/Popup.js} +42 -110
- package/lib/js/QueueArray.d.ts +16 -0
- package/{src/QueueArray.ts → lib/js/QueueArray.js} +12 -25
- package/lib/js/Rectangle.d.ts +76 -0
- package/{src/Rectangle.ts → lib/js/Rectangle.js} +12 -50
- package/lib/js/Stack.d.ts +20 -0
- package/{src/Stack.ts → lib/js/Stack.js} +13 -29
- package/lib/js/astro/astro.d.ts +39 -0
- package/{src/astro/astro.ts → lib/js/astro/astro.js} +2 -8
- package/lib/js/astro/earth.d.ts +8 -0
- package/{src/astro/earth.ts → lib/js/astro/earth.js} +3 -39
- package/lib/js/astro/jd.d.ts +234 -0
- package/{src/astro/jd.ts → lib/js/astro/jd.js} +55 -134
- package/lib/js/astro/orbit.d.ts +5 -0
- package/{src/astro/orbit.ts → lib/js/astro/orbit.js} +26 -39
- package/lib/js/astro/rotation.d.ts +2 -0
- package/{src/astro/rotation.ts → lib/js/astro/rotation.js} +2 -11
- package/lib/js/bv/Box.d.ts +32 -0
- package/{src/bv/Box.ts → lib/js/bv/Box.js} +7 -35
- package/lib/js/bv/Sphere.d.ts +37 -0
- package/{src/bv/Sphere.ts → lib/js/bv/Sphere.js} +6 -34
- package/{src/bv/index.ts → lib/js/bv/index.d.ts} +0 -1
- package/lib/js/bv/index.js +3 -0
- package/lib/js/camera/Camera.d.ts +314 -0
- package/{src/camera/Camera.ts → lib/js/camera/Camera.js} +77 -326
- package/lib/js/camera/Frustum.d.ts +139 -0
- package/{src/camera/Frustum.ts → lib/js/camera/Frustum.js} +66 -185
- package/lib/js/camera/PlanetCamera.d.ts +234 -0
- package/{src/camera/PlanetCamera.ts → lib/js/camera/PlanetCamera.js} +65 -338
- package/{src/camera/index.ts → lib/js/camera/index.d.ts} +0 -1
- package/lib/js/camera/index.js +3 -0
- package/lib/js/cons.d.ts +40 -0
- package/{src/cons.ts → lib/js/cons.js} +10 -22
- package/lib/js/control/Atmosphere.d.ts +16 -0
- package/{src/control/Atmosphere.ts → lib/js/control/Atmosphere.js} +33 -86
- package/lib/js/control/CompassButton.d.ts +16 -0
- package/{src/control/CompassButton.ts → lib/js/control/CompassButton.js} +18 -43
- package/lib/js/control/Control.d.ts +100 -0
- package/{src/control/Control.ts → lib/js/control/Control.js} +22 -89
- package/lib/js/control/DebugInfo.d.ts +25 -0
- package/{src/control/DebugInfo.ts → lib/js/control/DebugInfo.js} +38 -84
- package/lib/js/control/DrawingSwitcher.d.ts +13 -0
- package/{src/control/DrawingSwitcher.ts → lib/js/control/DrawingSwitcher.js} +13 -30
- package/lib/js/control/EarthCoordinates.d.ts +41 -0
- package/{src/control/EarthCoordinates.ts → lib/js/control/EarthCoordinates.js} +58 -119
- package/lib/js/control/EarthNavigation.d.ts +50 -0
- package/{src/control/EarthNavigation.ts → lib/js/control/EarthNavigation.js} +70 -161
- package/lib/js/control/GeoImageDragControl.d.ts +22 -0
- package/{src/control/GeoImageDragControl.ts → lib/js/control/GeoImageDragControl.js} +26 -49
- package/lib/js/control/KeyboardNavigation.d.ts +28 -0
- package/{src/control/KeyboardNavigation.ts → lib/js/control/KeyboardNavigation.js} +67 -92
- package/lib/js/control/LayerAnimation.d.ts +71 -0
- package/{src/control/LayerAnimation.ts → lib/js/control/LayerAnimation.js} +82 -162
- package/lib/js/control/LayerSwitcher.d.ts +21 -0
- package/{src/control/LayerSwitcher.ts → lib/js/control/LayerSwitcher.js} +16 -41
- package/lib/js/control/Lighting.d.ts +49 -0
- package/{src/control/Lighting.ts → lib/js/control/Lighting.js} +106 -219
- package/lib/js/control/MouseNavigation.d.ts +62 -0
- package/{src/control/MouseNavigation.ts → lib/js/control/MouseNavigation.js} +105 -211
- package/lib/js/control/MouseWheelZoomControl.d.ts +44 -0
- package/lib/js/control/MouseWheelZoomControl.js +181 -0
- package/lib/js/control/RulerSwitcher.d.ts +17 -0
- package/{src/control/RulerSwitcher.ts → lib/js/control/RulerSwitcher.js} +13 -28
- package/lib/js/control/ScaleControl.d.ts +24 -0
- package/lib/js/control/ScaleControl.js +91 -0
- package/lib/js/control/SegmentBoundVisualization.d.ts +12 -0
- package/lib/js/control/SegmentBoundVisualization.js +37 -0
- package/lib/js/control/ShowFps.d.ts +9 -0
- package/lib/js/control/ShowFps.js +20 -0
- package/lib/js/control/SimpleNavigation.d.ts +25 -0
- package/{src/control/SimpleNavigation.ts → lib/js/control/SimpleNavigation.js} +29 -51
- package/lib/js/control/SimpleSkyBackground.d.ts +15 -0
- package/{src/control/SimpleSkyBackground.ts → lib/js/control/SimpleSkyBackground.js} +21 -48
- package/lib/js/control/Sun.d.ts +33 -0
- package/{src/control/Sun.ts → lib/js/control/Sun.js} +34 -85
- package/lib/js/control/ToggleWireframe.d.ts +14 -0
- package/lib/js/control/ToggleWireframe.js +28 -0
- package/lib/js/control/TouchNavigation.d.ts +52 -0
- package/{src/control/TouchNavigation.ts → lib/js/control/TouchNavigation.js} +88 -193
- package/lib/js/control/ZoomControl.d.ts +27 -0
- package/{src/control/ZoomControl.ts → lib/js/control/ZoomControl.js} +25 -50
- package/lib/js/control/drawing/DrawingControl.d.ts +12 -0
- package/{src/control/drawing/DrawingControl.ts → lib/js/control/drawing/DrawingControl.js} +10 -20
- package/lib/js/control/drawing/LineStringDrawingScene.d.ts +15 -0
- package/{src/control/drawing/LineStringDrawingScene.ts → lib/js/control/drawing/LineStringDrawingScene.js} +28 -85
- package/lib/js/control/drawing/PolygonDrawingScene.d.ts +98 -0
- package/{src/control/drawing/PolygonDrawingScene.ts → lib/js/control/drawing/PolygonDrawingScene.js} +190 -388
- package/lib/js/control/elevationProfile/ElevationProfile.d.ts +61 -0
- package/{src/control/elevationProfile/ElevationProfile.ts → lib/js/control/elevationProfile/ElevationProfile.js} +56 -148
- package/lib/js/control/heightRuler/HeightRuler.d.ts +7 -0
- package/{src/control/heightRuler/HeightRuler.ts → lib/js/control/heightRuler/HeightRuler.js} +4 -9
- package/lib/js/control/heightRuler/HeightRulerScene.d.ts +35 -0
- package/{src/control/heightRuler/HeightRulerScene.ts → lib/js/control/heightRuler/HeightRulerScene.js} +47 -99
- package/lib/js/control/heightRuler/HeightRulerSwitcher.d.ts +6 -0
- package/{src/control/heightRuler/HeightRulerSwitcher.ts → lib/js/control/heightRuler/HeightRulerSwitcher.js} +2 -4
- package/{src/control/index.ts → lib/js/control/index.d.ts} +1 -18
- package/lib/js/control/index.js +28 -0
- package/lib/js/control/ruler/Ruler.d.ts +13 -0
- package/lib/js/control/ruler/Ruler.js +23 -0
- package/lib/js/control/ruler/RulerScene.d.ts +88 -0
- package/lib/js/control/ruler/RulerScene.js +324 -0
- package/lib/js/control/selection/Selection.d.ts +55 -0
- package/{src/control/selection/Selection.ts → lib/js/control/selection/Selection.js} +15 -34
- package/lib/js/control/selection/SelectionScene.d.ts +44 -0
- package/{src/control/selection/SelectionScene.ts → lib/js/control/selection/SelectionScene.js} +26 -113
- package/lib/js/control/timeline/TimelineControl.d.ts +18 -0
- package/{src/control/timeline/TimelineControl.ts → lib/js/control/timeline/TimelineControl.js} +13 -43
- package/lib/js/control/timeline/TimelineModel.d.ts +41 -0
- package/{src/control/timeline/TimelineModel.ts → lib/js/control/timeline/TimelineModel.js} +26 -74
- package/lib/js/control/timeline/TimelineView.d.ts +85 -0
- package/{src/control/timeline/TimelineView.ts → lib/js/control/timeline/TimelineView.js} +133 -281
- package/lib/js/control/timeline/timelineUtils.d.ts +12 -0
- package/lib/js/control/timeline/timelineUtils.js +112 -0
- package/lib/js/control/visibleExtent/Segment.d.ts +277 -0
- package/{src → lib/js}/control/visibleExtent/Segment.js +145 -698
- package/lib/js/control/visibleExtent/VisibleExtent.d.ts +5 -0
- package/{src → lib/js}/control/visibleExtent/VisibleExtent.js +1 -18
- package/lib/js/control/visibleExtent/drawnode.d.ts +7 -0
- package/{src/control/visibleExtent/drawnode.ts → lib/js/control/visibleExtent/drawnode.js} +1 -28
- package/lib/js/ellipsoid/Ellipsoid.d.ts +187 -0
- package/{src/ellipsoid/Ellipsoid.ts → lib/js/ellipsoid/Ellipsoid.js} +85 -267
- package/lib/js/ellipsoid/index.d.ts +3 -0
- package/lib/js/ellipsoid/index.js +3 -0
- package/lib/js/ellipsoid/wgs84.d.ts +6 -0
- package/{src/ellipsoid/wgs84.ts → lib/js/ellipsoid/wgs84.js} +1 -2
- package/lib/js/entity/BaseBillboard.d.ts +222 -0
- package/{src/entity/BaseBillboard.ts → lib/js/entity/BaseBillboard.js} +48 -165
- package/lib/js/entity/BaseBillboardHandler.d.ts +81 -0
- package/{src/entity/BaseBillboardHandler.ts → lib/js/entity/BaseBillboardHandler.js} +139 -365
- package/lib/js/entity/Billboard.d.ts +113 -0
- package/{src/entity/Billboard.ts → lib/js/entity/Billboard.js} +19 -83
- package/lib/js/entity/BillboardHandler.d.ts +15 -0
- package/{src/entity/BillboardHandler.ts → lib/js/entity/BillboardHandler.js} +27 -59
- package/lib/js/entity/Entity.d.ts +354 -0
- package/{src/entity/Entity.ts → lib/js/entity/Entity.js} +102 -374
- package/lib/js/entity/EntityCollection.d.ts +363 -0
- package/{src/entity/EntityCollection.ts → lib/js/entity/EntityCollection.js} +57 -359
- package/lib/js/entity/GeoObject.d.ts +138 -0
- package/{src/entity/GeoObject.ts → lib/js/entity/GeoObject.js} +41 -146
- package/lib/js/entity/GeoObjectHandler.d.ts +99 -0
- package/{src/entity/GeoObjectHandler.ts → lib/js/entity/GeoObjectHandler.js} +162 -423
- package/lib/js/entity/Geometry.d.ts +111 -0
- package/lib/js/entity/Geometry.js +283 -0
- package/lib/js/entity/GeometryHandler.d.ts +84 -0
- package/{src/entity/GeometryHandler.ts → lib/js/entity/GeometryHandler.js} +162 -657
- package/lib/js/entity/Label.d.ts +207 -0
- package/{src/entity/Label.ts → lib/js/entity/Label.js} +63 -165
- package/lib/js/entity/LabelHandler.d.ts +65 -0
- package/{src/entity/LabelHandler.ts → lib/js/entity/LabelHandler.js} +175 -408
- package/lib/js/entity/LabelWorker.d.ts +15 -0
- package/{src/entity/LabelWorker.ts → lib/js/entity/LabelWorker.js} +24 -45
- package/lib/js/entity/PointCloud.d.ts +179 -0
- package/{src/entity/PointCloud.ts → lib/js/entity/PointCloud.js} +65 -265
- package/lib/js/entity/PointCloudHandler.d.ts +42 -0
- package/{src/entity/PointCloudHandler.ts → lib/js/entity/PointCloudHandler.js} +19 -62
- package/lib/js/entity/Polyline.d.ts +337 -0
- package/{src/entity/Polyline.ts → lib/js/entity/Polyline.js} +289 -924
- package/lib/js/entity/PolylineHandler.d.ts +22 -0
- package/{src/entity/PolylineHandler.ts → lib/js/entity/PolylineHandler.js} +12 -37
- package/lib/js/entity/Ray.d.ts +133 -0
- package/{src/entity/Ray.ts → lib/js/entity/Ray.js} +26 -146
- package/lib/js/entity/RayHandler.d.ts +70 -0
- package/{src/entity/RayHandler.ts → lib/js/entity/RayHandler.js} +102 -342
- package/lib/js/entity/Strip.d.ts +127 -0
- package/{src/entity/Strip.ts → lib/js/entity/Strip.js} +102 -372
- package/lib/js/entity/StripHandler.d.ts +42 -0
- package/{src/entity/StripHandler.ts → lib/js/entity/StripHandler.js} +22 -74
- package/{src/entity/index.ts → lib/js/entity/index.d.ts} +1 -2
- package/lib/js/entity/index.js +11 -0
- package/lib/js/index.d.ts +33 -0
- package/lib/js/index.js +33 -0
- package/lib/js/input/KeyboardHandler.d.ts +33 -0
- package/{src/input/KeyboardHandler.ts → lib/js/input/KeyboardHandler.js} +45 -84
- package/lib/js/input/MouseHandler.d.ts +16 -0
- package/{src/input/MouseHandler.ts → lib/js/input/MouseHandler.js} +12 -36
- package/lib/js/input/TouchHandler.d.ts +11 -0
- package/{src/input/TouchHandler.ts → lib/js/input/TouchHandler.js} +11 -23
- package/lib/js/input/input.d.ts +3 -0
- package/{src/input/input.ts → lib/js/input/input.js} +1 -1
- package/lib/js/layer/BaseGeoImage.d.ts +145 -0
- package/{src/layer/BaseGeoImage.ts → lib/js/layer/BaseGeoImage.js} +70 -235
- package/lib/js/layer/CanvasTiles.d.ts +103 -0
- package/{src/layer/CanvasTiles.ts → lib/js/layer/CanvasTiles.js} +54 -146
- package/lib/js/layer/GeoImage.d.ts +61 -0
- package/{src/layer/GeoImage.ts → lib/js/layer/GeoImage.js} +24 -54
- package/lib/js/layer/GeoTexture2d.d.ts +17 -0
- package/lib/js/layer/GeoTexture2d.js +37 -0
- package/lib/js/layer/GeoVideo.d.ts +68 -0
- package/{src/layer/GeoVideo.ts → lib/js/layer/GeoVideo.js} +31 -61
- package/lib/js/layer/KML.d.ts +72 -0
- package/{src/layer/KML.ts → lib/js/layer/KML.js} +94 -138
- package/lib/js/layer/Layer.d.ts +401 -0
- package/{src/layer/Layer.ts → lib/js/layer/Layer.js} +92 -443
- package/lib/js/layer/Material.d.ts +34 -0
- package/{src/layer/Material.ts → lib/js/layer/Material.js} +9 -43
- package/lib/js/layer/Vector.d.ts +243 -0
- package/{src/layer/Vector.ts → lib/js/layer/Vector.js} +155 -426
- package/lib/js/layer/WMS.d.ts +75 -0
- package/{src/layer/WMS.ts → lib/js/layer/WMS.js} +18 -100
- package/lib/js/layer/XYZ.d.ts +149 -0
- package/{src/layer/XYZ.ts → lib/js/layer/XYZ.js} +71 -171
- package/lib/js/layer/index.d.ts +11 -0
- package/lib/js/layer/index.js +11 -0
- package/lib/js/light/LightSource.d.ts +174 -0
- package/{src/light/LightSource.ts → lib/js/light/LightSource.js} +22 -131
- package/lib/js/math/Line2.d.ts +11 -0
- package/{src/math/Line2.ts → lib/js/math/Line2.js} +5 -15
- package/lib/js/math/Line3.d.ts +28 -0
- package/lib/js/math/Line3.js +85 -0
- package/lib/js/math/Mat3.d.ts +77 -0
- package/{src/math/Mat3.ts → lib/js/math/Mat3.js} +22 -51
- package/lib/js/math/Mat4.d.ts +195 -0
- package/{src/math/Mat4.ts → lib/js/math/Mat4.js} +53 -219
- package/lib/js/math/Plane.d.ts +20 -0
- package/{src/math/Plane.ts → lib/js/math/Plane.js} +26 -40
- package/lib/js/math/Quat.d.ts +373 -0
- package/{src/math/Quat.ts → lib/js/math/Quat.js} +106 -319
- package/lib/js/math/Ray.d.ts +76 -0
- package/{src/math/Ray.ts → lib/js/math/Ray.js} +21 -66
- package/lib/js/math/Vec2.d.ts +310 -0
- package/{src/math/Vec2.ts → lib/js/math/Vec2.js} +55 -121
- package/lib/js/math/Vec3.d.ts +472 -0
- package/{src/math/Vec3.ts → lib/js/math/Vec3.js} +103 -236
- package/lib/js/math/Vec4.d.ts +163 -0
- package/{src/math/Vec4.ts → lib/js/math/Vec4.js} +23 -79
- package/lib/js/math/coder.d.ts +51 -0
- package/{src/math/coder.ts → lib/js/math/coder.js} +14 -20
- package/lib/js/math/index.d.ts +11 -0
- package/lib/js/math/index.js +11 -0
- package/lib/js/math.d.ts +266 -0
- package/{src/math.ts → lib/js/math.js} +37 -85
- package/lib/js/mercator.d.ts +92 -0
- package/{src/mercator.ts → lib/js/mercator.js} +13 -37
- package/lib/js/proj/EPSG3857.d.ts +9 -0
- package/{src/proj/EPSG3857.ts → lib/js/proj/EPSG3857.js} +0 -2
- package/lib/js/proj/EPSG4326.d.ts +9 -0
- package/{src/proj/EPSG4326.ts → lib/js/proj/EPSG4326.js} +0 -2
- package/lib/js/proj/Proj.d.ts +43 -0
- package/{src/proj/Proj.ts → lib/js/proj/Proj.js} +4 -29
- package/lib/js/quadTree/EPSG4326QuadTreeStrategy.d.ts +6 -0
- package/lib/js/quadTree/EPSG4326QuadTreeStrategy.js +17 -0
- package/lib/js/quadTree/EarthQuadTreeStrategy.d.ts +6 -0
- package/lib/js/quadTree/EarthQuadTreeStrategy.js +19 -0
- package/lib/js/quadTree/EntityCollectionNode.d.ts +54 -0
- package/{src/quadTree/EntityCollectionNode.ts → lib/js/quadTree/EntityCollectionNode.js} +83 -150
- package/lib/js/quadTree/MarsQuadTreeStrategy.d.ts +6 -0
- package/lib/js/quadTree/MarsQuadTreeStrategy.js +17 -0
- package/lib/js/quadTree/Node.d.ts +61 -0
- package/{src/quadTree/Node.ts → lib/js/quadTree/Node.js} +140 -357
- package/lib/js/quadTree/QuadTreeStrategy.d.ts +25 -0
- package/{src/quadTree/QuadTreeStrategy.ts → lib/js/quadTree/QuadTreeStrategy.js} +13 -44
- package/lib/js/quadTree/Wgs84QuadTreeStrategy.d.ts +6 -0
- package/lib/js/quadTree/Wgs84QuadTreeStrategy.js +15 -0
- package/lib/js/quadTree/index.d.ts +12 -0
- package/lib/js/quadTree/index.js +12 -0
- package/lib/js/quadTree/quadTree.d.ts +40 -0
- package/{src/quadTree/quadTree.ts → lib/js/quadTree/quadTree.js} +0 -9
- package/lib/js/renderer/Renderer.d.ts +320 -0
- package/{src/renderer/Renderer.ts → lib/js/renderer/Renderer.js} +265 -622
- package/lib/js/renderer/RendererEvents.d.ts +239 -0
- package/{src/renderer/RendererEvents.ts → lib/js/renderer/RendererEvents.js} +158 -472
- package/lib/js/scene/Axes.d.ts +12 -0
- package/lib/js/scene/Axes.js +59 -0
- package/lib/js/scene/BaseNode.d.ts +61 -0
- package/{src/scene/BaseNode.ts → lib/js/scene/BaseNode.js} +11 -57
- package/lib/js/scene/Planet.d.ts +623 -0
- package/{src/scene/Planet.ts → lib/js/scene/Planet.js} +257 -937
- package/lib/js/scene/RenderNode.d.ts +150 -0
- package/{src/scene/RenderNode.ts → lib/js/scene/RenderNode.js} +33 -138
- package/lib/js/scene/SkyBox.d.ts +13 -0
- package/{src/scene/SkyBox.ts → lib/js/scene/SkyBox.js} +16 -37
- package/{src/scene/index.ts → lib/js/scene/index.d.ts} +0 -1
- package/lib/js/scene/index.js +5 -0
- package/lib/js/segment/Segment.d.ts +278 -0
- package/{src/segment/Segment.ts → lib/js/segment/Segment.js} +242 -913
- package/lib/js/segment/SegmentLonLat.d.ts +48 -0
- package/{src/segment/SegmentLonLat.ts → lib/js/segment/SegmentLonLat.js} +58 -132
- package/lib/js/segment/SegmentLonLatWgs84.d.ts +10 -0
- package/lib/js/segment/SegmentLonLatWgs84.js +23 -0
- package/lib/js/segment/Slice.d.ts +13 -0
- package/{src/segment/Slice.ts → lib/js/segment/Slice.js} +4 -22
- package/lib/js/segment/segmentHelper.d.ts +18 -0
- package/{src/segment/segmentHelper.ts → lib/js/segment/segmentHelper.js} +30 -88
- package/lib/js/shaders/atmos.d.ts +4 -0
- package/{src/shaders/atmos.ts → lib/js/shaders/atmos.js} +8 -26
- package/lib/js/shaders/billboard.d.ts +3 -0
- package/{src/shaders/billboard.ts → lib/js/shaders/billboard.js} +9 -18
- package/lib/js/shaders/bloom.d.ts +2 -0
- package/{src/shaders/bloom.ts → lib/js/shaders/bloom.js} +5 -8
- package/lib/js/shaders/blur.d.ts +3 -0
- package/{src/shaders/blur.ts → lib/js/shaders/blur.js} +11 -19
- package/lib/js/shaders/depth.d.ts +2 -0
- package/{src/shaders/depth.ts → lib/js/shaders/depth.js} +3 -6
- package/lib/js/shaders/drawnode.d.ts +8 -0
- package/{src/shaders/drawnode.ts → lib/js/shaders/drawnode.js} +23 -75
- package/lib/js/shaders/geoObject.d.ts +3 -0
- package/{src/shaders/geoObject.ts → lib/js/shaders/geoObject.js} +51 -63
- package/lib/js/shaders/label.d.ts +4 -0
- package/{src/shaders/label.ts → lib/js/shaders/label.js} +12 -25
- package/lib/js/shaders/lumFilter.d.ts +2 -0
- package/{src/shaders/lumFilter.ts → lib/js/shaders/lumFilter.js} +4 -7
- package/lib/js/shaders/pickingMask.d.ts +2 -0
- package/{src/shaders/pickingMask.ts → lib/js/shaders/pickingMask.js} +5 -8
- package/lib/js/shaders/pointCloud.d.ts +2 -0
- package/{src/shaders/pointCloud.ts → lib/js/shaders/pointCloud.js} +4 -7
- package/lib/js/shaders/polyline.d.ts +3 -0
- package/{src/shaders/polyline.ts → lib/js/shaders/polyline.js} +7 -22
- package/lib/js/shaders/ray.d.ts +2 -0
- package/{src/shaders/ray.ts → lib/js/shaders/ray.js} +4 -7
- package/lib/js/shaders/screenFrame.d.ts +2 -0
- package/{src/shaders/screenFrame.ts → lib/js/shaders/screenFrame.js} +5 -8
- package/lib/js/shaders/skybox.d.ts +2 -0
- package/{src/shaders/skybox.ts → lib/js/shaders/skybox.js} +10 -13
- package/lib/js/shaders/toneMapping.d.ts +2 -0
- package/{src/shaders/toneMapping.ts → lib/js/shaders/toneMapping.js} +5 -8
- package/lib/js/shaders/utils.d.ts +1 -0
- package/{src/shaders/utils.ts → lib/js/shaders/utils.js} +1 -1
- package/lib/js/terrain/BilTerrain.d.ts +18 -0
- package/{src/terrain/BilTerrain.ts → lib/js/terrain/BilTerrain.js} +21 -118
- package/lib/js/terrain/EmptyTerrain.d.ts +106 -0
- package/{src/terrain/EmptyTerrain.ts → lib/js/terrain/EmptyTerrain.js} +20 -144
- package/lib/js/terrain/Geoid.d.ts +33 -0
- package/lib/js/terrain/Geoid.js +191 -0
- package/lib/js/terrain/GlobusTerrain.d.ts +134 -0
- package/{src/terrain/GlobusTerrain.ts → lib/js/terrain/GlobusTerrain.js} +84 -241
- package/lib/js/terrain/MapboxTerrain.d.ts +21 -0
- package/{src/terrain/MapboxTerrain.ts → lib/js/terrain/MapboxTerrain.js} +46 -215
- package/{src/terrain/index.ts → lib/js/terrain/index.d.ts} +0 -1
- package/lib/js/terrain/index.js +5 -0
- package/lib/js/ui/Button.d.ts +32 -0
- package/lib/js/ui/Button.js +78 -0
- package/lib/js/ui/ButtonGroup.d.ts +16 -0
- package/lib/js/ui/ButtonGroup.js +41 -0
- package/lib/js/ui/Dialog.d.ts +55 -0
- package/lib/js/ui/Dialog.js +173 -0
- package/lib/js/ui/Slider.d.ts +38 -0
- package/lib/js/ui/Slider.js +129 -0
- package/lib/js/ui/ToggleButton.d.ts +20 -0
- package/lib/js/ui/ToggleButton.js +42 -0
- package/lib/js/ui/View.d.ts +37 -0
- package/{src/ui/View.ts → lib/js/ui/View.js} +31 -77
- package/lib/js/ui/icons.d.ts +1 -0
- package/{src/ui/icons.ts → lib/js/ui/icons.js} +1 -1
- package/lib/js/utils/BaseWorker.d.ts +14 -0
- package/{src/utils/BaseWorker.ts → lib/js/utils/BaseWorker.js} +15 -28
- package/lib/js/utils/FontAtlas.d.ts +82 -0
- package/{src/utils/FontAtlas.ts → lib/js/utils/FontAtlas.js} +46 -182
- package/lib/js/utils/GeoImageCreator.d.ts +34 -0
- package/{src/utils/GeoImageCreator.ts → lib/js/utils/GeoImageCreator.js} +34 -91
- package/lib/js/utils/ImagesCacheManager.d.ts +22 -0
- package/{src/utils/ImagesCacheManager.ts → lib/js/utils/ImagesCacheManager.js} +16 -38
- package/lib/js/utils/Loader.d.ts +63 -0
- package/lib/js/utils/Loader.js +156 -0
- package/lib/js/utils/NormalMapCreator.d.ts +52 -0
- package/{src/utils/NormalMapCreator.ts → lib/js/utils/NormalMapCreator.js} +64 -195
- package/lib/js/utils/PlainSegmentWorker.d.ts +24 -0
- package/{src/utils/PlainSegmentWorker.ts → lib/js/utils/PlainSegmentWorker.js} +24 -56
- package/lib/js/utils/TerrainWorker.d.ts +28 -0
- package/{src/utils/TerrainWorker.ts → lib/js/utils/TerrainWorker.js} +19 -56
- package/lib/js/utils/TextureAtlas.d.ts +113 -0
- package/{src/utils/TextureAtlas.ts → lib/js/utils/TextureAtlas.js} +40 -131
- package/lib/js/utils/VectorTileCreator.d.ts +18 -0
- package/{src/utils/VectorTileCreator.ts → lib/js/utils/VectorTileCreator.js} +61 -147
- package/lib/js/utils/colorTable.d.ts +3 -0
- package/{src/utils/colorTable.ts → lib/js/utils/colorTable.js} +2 -2
- package/lib/js/utils/earcut.d.ts +7 -0
- package/{src/utils/earcut.ts → lib/js/utils/earcut.js} +95 -223
- package/lib/js/utils/objParser.d.ts +24 -0
- package/{src/utils/objParser.ts → lib/js/utils/objParser.js} +38 -93
- package/lib/js/utils/shared.d.ts +267 -0
- package/{src/utils/shared.ts → lib/js/utils/shared.js} +185 -342
- package/lib/js/utils/units.d.ts +16 -0
- package/lib/js/utils/units.js +61 -0
- package/lib/js/webgl/BaseFramebuffer.d.ts +53 -0
- package/{src/webgl/BaseFramebuffer.ts → lib/js/webgl/BaseFramebuffer.js} +22 -59
- package/lib/js/webgl/Framebuffer.d.ts +69 -0
- package/{src/webgl/Framebuffer.ts → lib/js/webgl/Framebuffer.js} +30 -87
- package/lib/js/webgl/Handler.d.ts +473 -0
- package/{src/webgl/Handler.ts → lib/js/webgl/Handler.js} +175 -586
- package/lib/js/webgl/Multisample.d.ts +27 -0
- package/lib/js/webgl/Multisample.js +77 -0
- package/lib/js/webgl/Program.d.ts +159 -0
- package/{src/webgl/Program.ts → lib/js/webgl/Program.js} +73 -210
- package/lib/js/webgl/ProgramController.d.ts +86 -0
- package/{src/webgl/ProgramController.ts → lib/js/webgl/ProgramController.js} +11 -45
- package/{src/webgl/index.ts → lib/js/webgl/index.d.ts} +1 -8
- package/lib/js/webgl/index.js +6 -0
- package/lib/js/webgl/types.d.ts +9 -0
- package/{src/webgl/types.ts → lib/js/webgl/types.js} +5 -8
- package/lib/js/webgl/variableHandlers.d.ts +22 -0
- package/lib/js/webgl/variableHandlers.js +78 -0
- package/package.json +23 -34
- package/dist/@openglobus/og.esm.js +0 -2
- package/dist/@openglobus/og.esm.js.map +0 -1
- package/dist/@openglobus/og.umd.js +0 -2
- package/dist/@openglobus/og.umd.js.map +0 -1
- package/src/Deferred.ts +0 -17
- package/src/control/MouseWheelZoomControl.ts +0 -269
- package/src/control/ScaleControl.ts +0 -131
- package/src/control/SegmentBoundVisualization.ts +0 -50
- package/src/control/ShowFps.ts +0 -28
- package/src/control/ToggleWireframe.ts +0 -35
- package/src/control/ruler/Ruler.ts +0 -35
- package/src/control/ruler/RulerScene.ts +0 -437
- package/src/control/timeline/timelineUtils.ts +0 -133
- package/src/ellipsoid/index.ts +0 -4
- package/src/entity/Geometry.ts +0 -486
- package/src/index.ts +0 -173
- package/src/layer/GeoTexture2d.ts +0 -56
- package/src/layer/index.ts +0 -12
- package/src/math/Line3.ts +0 -162
- package/src/math/index.ts +0 -26
- package/src/quadTree/EPSG4326QuadTreeStrategy.ts +0 -24
- package/src/quadTree/EarthQuadTreeStrategy.ts +0 -28
- package/src/quadTree/MarsQuadTreeStrategy.ts +0 -25
- package/src/quadTree/Wgs84QuadTreeStrategy.ts +0 -22
- package/src/quadTree/index.ts +0 -14
- package/src/scene/Axes.ts +0 -78
- package/src/segment/SegmentLonLatWgs84.ts +0 -33
- package/src/terrain/Geoid.ts +0 -273
- package/src/ui/Button.ts +0 -121
- package/src/ui/ButtonGroup.ts +0 -63
- package/src/ui/Dialog.ts +0 -244
- package/src/ui/Slider.ts +0 -188
- package/src/ui/ToggleButton.ts +0 -68
- package/src/utils/Loader.ts +0 -247
- package/src/utils/units.ts +0 -78
- package/src/webgl/Multisample.ts +0 -153
- package/src/webgl/variableHandlers.ts +0 -114
- /package/{dist → lib}/@openglobus/og.css +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Karla-Bold.json +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Karla-Bold.ttf.cfg +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Karla-Bold.ttf.png +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Karla-Light.json +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Karla-Light.ttf.cfg +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Karla-Light.ttf.png +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Karla-Medium.json +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Karla-Medium.ttf.cfg +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Karla-Medium.ttf.png +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/NotoSansArabic-Regular.json +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.cfg +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.png +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Roboto-Regular.json +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Roboto-Regular.ttf.cfg +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Roboto-Regular.ttf.png +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/arial.js +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/arial.json +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/arial.ttf.cfg +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/arial.ttf.png +0 -0
- /package/{dist → lib}/@openglobus/res/night-4326.png +0 -0
- /package/{dist → lib}/@openglobus/res/night.png +0 -0
- /package/{dist → lib}/@openglobus/res/spec.png +0 -0
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
|
-
|
|
3
2
|
/* eslint-disable no-unused-vars */
|
|
4
3
|
/* eslint-disable curly */
|
|
5
4
|
/* eslint-disable operator-linebreak */
|
|
6
5
|
/* eslint-disable no-mixed-operators */
|
|
7
|
-
|
|
8
6
|
/**
|
|
9
7
|
* @module og/utils/earcut
|
|
10
8
|
*/
|
|
11
|
-
|
|
12
9
|
'use strict';
|
|
13
|
-
|
|
14
10
|
// ISC License
|
|
15
11
|
//
|
|
16
12
|
// Copyright (c) 2016, Mapbox
|
|
@@ -29,223 +25,178 @@
|
|
|
29
25
|
//
|
|
30
26
|
//https://github.com/mapbox/earcut
|
|
31
27
|
function earcut(data, holeIndices, dim) {
|
|
32
|
-
|
|
33
28
|
dim = dim || 2;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
outerNode = linkedList(data, 0, outerLen, dim, true),
|
|
38
|
-
triangles = [];
|
|
39
|
-
|
|
40
|
-
if (!outerNode) return triangles;
|
|
41
|
-
|
|
29
|
+
var hasHoles = holeIndices && holeIndices.length, outerLen = hasHoles ? holeIndices[0] * dim : data.length, outerNode = linkedList(data, 0, outerLen, dim, true), triangles = [];
|
|
30
|
+
if (!outerNode)
|
|
31
|
+
return triangles;
|
|
42
32
|
var minX, minY, maxX, maxY, x, y, size;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
33
|
+
if (hasHoles)
|
|
34
|
+
outerNode = eliminateHoles(data, holeIndices, outerNode, dim);
|
|
46
35
|
// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox
|
|
47
36
|
if (data.length > 80 * dim) {
|
|
48
37
|
minX = maxX = data[0];
|
|
49
38
|
minY = maxY = data[1];
|
|
50
|
-
|
|
51
39
|
for (let i = dim; i < outerLen; i += dim) {
|
|
52
40
|
x = data[i];
|
|
53
41
|
y = data[i + 1];
|
|
54
|
-
if (x < minX)
|
|
55
|
-
|
|
56
|
-
if (
|
|
57
|
-
|
|
42
|
+
if (x < minX)
|
|
43
|
+
minX = x;
|
|
44
|
+
if (y < minY)
|
|
45
|
+
minY = y;
|
|
46
|
+
if (x > maxX)
|
|
47
|
+
maxX = x;
|
|
48
|
+
if (y > maxY)
|
|
49
|
+
maxY = y;
|
|
58
50
|
}
|
|
59
|
-
|
|
60
51
|
// minX, minY and size are later used to transform coords into integers for z-order calculation
|
|
61
52
|
size = Math.max(maxX - minX, maxY - minY);
|
|
62
53
|
}
|
|
63
|
-
|
|
64
54
|
earcutLinked(outerNode, triangles, dim, minX, minY, size);
|
|
65
|
-
|
|
66
55
|
return triangles;
|
|
67
56
|
}
|
|
68
|
-
|
|
69
57
|
// create a circular doubly linked list from polygon points in the specified winding order
|
|
70
58
|
function linkedList(data, start, end, dim, clockwise) {
|
|
71
59
|
var i, last;
|
|
72
|
-
|
|
73
60
|
if (clockwise === (signedArea(data, start, end, dim) > 0)) {
|
|
74
|
-
for (i = start; i < end; i += dim)
|
|
75
|
-
|
|
76
|
-
|
|
61
|
+
for (i = start; i < end; i += dim)
|
|
62
|
+
last = insertNode(i, data[i], data[i + 1], last);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
for (i = end - dim; i >= start; i -= dim)
|
|
66
|
+
last = insertNode(i, data[i], data[i + 1], last);
|
|
77
67
|
}
|
|
78
|
-
|
|
79
68
|
if (last && equals(last, last.next)) {
|
|
80
69
|
removeNode(last);
|
|
81
70
|
last = last.next;
|
|
82
71
|
}
|
|
83
|
-
|
|
84
72
|
return last;
|
|
85
73
|
}
|
|
86
|
-
|
|
87
74
|
// eliminate colinear or duplicate points
|
|
88
75
|
function filterPoints(start, end) {
|
|
89
|
-
if (!start)
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
76
|
+
if (!start)
|
|
77
|
+
return start;
|
|
78
|
+
if (!end)
|
|
79
|
+
end = start;
|
|
80
|
+
var p = start, again;
|
|
94
81
|
do {
|
|
95
82
|
again = false;
|
|
96
|
-
|
|
97
83
|
if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {
|
|
98
84
|
removeNode(p);
|
|
99
85
|
p = end = p.prev;
|
|
100
|
-
if (p === p.next)
|
|
86
|
+
if (p === p.next)
|
|
87
|
+
return null;
|
|
101
88
|
again = true;
|
|
102
|
-
|
|
103
|
-
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
104
91
|
p = p.next;
|
|
105
92
|
}
|
|
106
93
|
} while (again || p !== end);
|
|
107
|
-
|
|
108
94
|
return end;
|
|
109
95
|
}
|
|
110
|
-
|
|
111
96
|
// main ear slicing loop which triangulates a polygon (given as a linked list)
|
|
112
97
|
function earcutLinked(ear, triangles, dim, minX, minY, size, pass) {
|
|
113
|
-
if (!ear)
|
|
114
|
-
|
|
98
|
+
if (!ear)
|
|
99
|
+
return;
|
|
115
100
|
// interlink polygon nodes in z-order
|
|
116
|
-
if (!pass && size)
|
|
117
|
-
|
|
118
|
-
var stop = ear,
|
|
119
|
-
prev, next;
|
|
120
|
-
|
|
101
|
+
if (!pass && size)
|
|
102
|
+
indexCurve(ear, minX, minY, size);
|
|
103
|
+
var stop = ear, prev, next;
|
|
121
104
|
// iterate through ears, slicing them one by one
|
|
122
105
|
while (ear.prev !== ear.next) {
|
|
123
106
|
prev = ear.prev;
|
|
124
107
|
next = ear.next;
|
|
125
|
-
|
|
126
108
|
if (size ? isEarHashed(ear, minX, minY, size) : isEar(ear)) {
|
|
127
109
|
// cut off the triangle
|
|
128
110
|
triangles.push(prev.i / dim);
|
|
129
111
|
triangles.push(ear.i / dim);
|
|
130
112
|
triangles.push(next.i / dim);
|
|
131
|
-
|
|
132
113
|
removeNode(ear);
|
|
133
|
-
|
|
134
114
|
// skipping the next vertice leads to less sliver triangles
|
|
135
115
|
ear = next.next;
|
|
136
116
|
stop = next.next;
|
|
137
|
-
|
|
138
117
|
continue;
|
|
139
118
|
}
|
|
140
|
-
|
|
141
119
|
ear = next;
|
|
142
|
-
|
|
143
120
|
// if we looped through the whole remaining polygon and can't find any more ears
|
|
144
121
|
if (ear === stop) {
|
|
145
122
|
// try filtering points and slicing again
|
|
146
123
|
if (!pass) {
|
|
147
124
|
earcutLinked(filterPoints(ear), triangles, dim, minX, minY, size, 1);
|
|
148
|
-
|
|
149
125
|
// if this didn't work, try curing all small self-intersections locally
|
|
150
|
-
}
|
|
126
|
+
}
|
|
127
|
+
else if (pass === 1) {
|
|
151
128
|
ear = cureLocalIntersections(ear, triangles, dim);
|
|
152
129
|
earcutLinked(ear, triangles, dim, minX, minY, size, 2);
|
|
153
|
-
|
|
154
130
|
// as a last resort, try splitting the remaining polygon into two
|
|
155
|
-
}
|
|
131
|
+
}
|
|
132
|
+
else if (pass === 2) {
|
|
156
133
|
splitEarcut(ear, triangles, dim, minX, minY, size);
|
|
157
134
|
}
|
|
158
|
-
|
|
159
135
|
break;
|
|
160
136
|
}
|
|
161
137
|
}
|
|
162
138
|
}
|
|
163
|
-
|
|
164
139
|
// check whether a polygon node forms a valid ear with adjacent nodes
|
|
165
140
|
function isEar(ear) {
|
|
166
|
-
var a = ear.prev,
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
if (area(a, b, c) >= 0) return false; // reflex, can't be an ear
|
|
171
|
-
|
|
141
|
+
var a = ear.prev, b = ear, c = ear.next;
|
|
142
|
+
if (area(a, b, c) >= 0)
|
|
143
|
+
return false; // reflex, can't be an ear
|
|
172
144
|
// now make sure we don't have other points inside the potential ear
|
|
173
145
|
var p = ear.next.next;
|
|
174
|
-
|
|
175
146
|
while (p !== ear.prev) {
|
|
176
147
|
if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&
|
|
177
|
-
area(p.prev, p, p.next) >= 0)
|
|
148
|
+
area(p.prev, p, p.next) >= 0)
|
|
149
|
+
return false;
|
|
178
150
|
p = p.next;
|
|
179
151
|
}
|
|
180
|
-
|
|
181
152
|
return true;
|
|
182
153
|
}
|
|
183
|
-
|
|
184
154
|
function isEarHashed(ear, minX, minY, size) {
|
|
185
|
-
var a = ear.prev,
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
if (area(a, b, c) >= 0) return false; // reflex, can't be an ear
|
|
190
|
-
|
|
155
|
+
var a = ear.prev, b = ear, c = ear.next;
|
|
156
|
+
if (area(a, b, c) >= 0)
|
|
157
|
+
return false; // reflex, can't be an ear
|
|
191
158
|
// triangle bbox; min & max are calculated like this for speed
|
|
192
|
-
var minTX = a.x < b.x ? (a.x < c.x ? a.x : c.x) : (b.x < c.x ? b.x : c.x),
|
|
193
|
-
minTY = a.y < b.y ? (a.y < c.y ? a.y : c.y) : (b.y < c.y ? b.y : c.y),
|
|
194
|
-
maxTX = a.x > b.x ? (a.x > c.x ? a.x : c.x) : (b.x > c.x ? b.x : c.x),
|
|
195
|
-
maxTY = a.y > b.y ? (a.y > c.y ? a.y : c.y) : (b.y > c.y ? b.y : c.y);
|
|
196
|
-
|
|
159
|
+
var minTX = a.x < b.x ? (a.x < c.x ? a.x : c.x) : (b.x < c.x ? b.x : c.x), minTY = a.y < b.y ? (a.y < c.y ? a.y : c.y) : (b.y < c.y ? b.y : c.y), maxTX = a.x > b.x ? (a.x > c.x ? a.x : c.x) : (b.x > c.x ? b.x : c.x), maxTY = a.y > b.y ? (a.y > c.y ? a.y : c.y) : (b.y > c.y ? b.y : c.y);
|
|
197
160
|
// z-order range for the current triangle bbox;
|
|
198
|
-
var minZ = zOrder(minTX, minTY, minX, minY, size),
|
|
199
|
-
maxZ = zOrder(maxTX, maxTY, minX, minY, size);
|
|
200
|
-
|
|
161
|
+
var minZ = zOrder(minTX, minTY, minX, minY, size), maxZ = zOrder(maxTX, maxTY, minX, minY, size);
|
|
201
162
|
// first look for points inside the triangle in increasing z-order
|
|
202
163
|
var p = ear.nextZ;
|
|
203
|
-
|
|
204
164
|
while (p && p.z <= maxZ) {
|
|
205
165
|
if (p !== ear.prev && p !== ear.next &&
|
|
206
166
|
pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&
|
|
207
|
-
area(p.prev, p, p.next) >= 0)
|
|
167
|
+
area(p.prev, p, p.next) >= 0)
|
|
168
|
+
return false;
|
|
208
169
|
p = p.nextZ;
|
|
209
170
|
}
|
|
210
|
-
|
|
211
171
|
// then look for points in decreasing z-order
|
|
212
172
|
p = ear.prevZ;
|
|
213
|
-
|
|
214
173
|
while (p && p.z >= minZ) {
|
|
215
174
|
if (p !== ear.prev && p !== ear.next &&
|
|
216
175
|
pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&
|
|
217
|
-
area(p.prev, p, p.next) >= 0)
|
|
176
|
+
area(p.prev, p, p.next) >= 0)
|
|
177
|
+
return false;
|
|
218
178
|
p = p.prevZ;
|
|
219
179
|
}
|
|
220
|
-
|
|
221
180
|
return true;
|
|
222
181
|
}
|
|
223
|
-
|
|
224
182
|
// go through all polygon nodes and cure small local self-intersections
|
|
225
183
|
function cureLocalIntersections(start, triangles, dim) {
|
|
226
184
|
var p = start;
|
|
227
185
|
do {
|
|
228
|
-
var a = p.prev,
|
|
229
|
-
b = p.next.next;
|
|
230
|
-
|
|
186
|
+
var a = p.prev, b = p.next.next;
|
|
231
187
|
if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {
|
|
232
|
-
|
|
233
188
|
triangles.push(a.i / dim);
|
|
234
189
|
triangles.push(p.i / dim);
|
|
235
190
|
triangles.push(b.i / dim);
|
|
236
|
-
|
|
237
191
|
// remove two nodes involved
|
|
238
192
|
removeNode(p);
|
|
239
193
|
removeNode(p.next);
|
|
240
|
-
|
|
241
194
|
p = start = b;
|
|
242
195
|
}
|
|
243
196
|
p = p.next;
|
|
244
197
|
} while (p !== start);
|
|
245
|
-
|
|
246
198
|
return p;
|
|
247
199
|
}
|
|
248
|
-
|
|
249
200
|
// try splitting polygon into two and triangulate them independently
|
|
250
201
|
function splitEarcut(start, triangles, dim, minX, minY, size) {
|
|
251
202
|
// look for a valid diagonal that divides the polygon into two
|
|
@@ -256,11 +207,9 @@ function splitEarcut(start, triangles, dim, minX, minY, size) {
|
|
|
256
207
|
if (a.i !== b.i && isValidDiagonal(a, b)) {
|
|
257
208
|
// split the polygon in two by the diagonal
|
|
258
209
|
var c = splitPolygon(a, b);
|
|
259
|
-
|
|
260
210
|
// filter colinear points around the cuts
|
|
261
211
|
a = filterPoints(a, a.next);
|
|
262
212
|
c = filterPoints(c, c.next);
|
|
263
|
-
|
|
264
213
|
// run earcut on each half
|
|
265
214
|
earcutLinked(a, triangles, dim, minX, minY, size);
|
|
266
215
|
earcutLinked(c, triangles, dim, minX, minY, size);
|
|
@@ -271,35 +220,28 @@ function splitEarcut(start, triangles, dim, minX, minY, size) {
|
|
|
271
220
|
a = a.next;
|
|
272
221
|
} while (a !== start);
|
|
273
222
|
}
|
|
274
|
-
|
|
275
223
|
// link every hole into the outer loop, producing a single-ring polygon without holes
|
|
276
224
|
function eliminateHoles(data, holeIndices, outerNode, dim) {
|
|
277
|
-
var queue = [],
|
|
278
|
-
i, len, start, end, list;
|
|
279
|
-
|
|
225
|
+
var queue = [], i, len, start, end, list;
|
|
280
226
|
for (i = 0, len = holeIndices.length; i < len; i++) {
|
|
281
227
|
start = holeIndices[i] * dim;
|
|
282
228
|
end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;
|
|
283
229
|
list = linkedList(data, start, end, dim, false);
|
|
284
|
-
if (list === list.next)
|
|
230
|
+
if (list === list.next)
|
|
231
|
+
list.steiner = true;
|
|
285
232
|
queue.push(getLeftmost(list));
|
|
286
233
|
}
|
|
287
|
-
|
|
288
234
|
queue.sort(compareX);
|
|
289
|
-
|
|
290
235
|
// process holes from left to right
|
|
291
236
|
for (i = 0; i < queue.length; i++) {
|
|
292
237
|
eliminateHole(queue[i], outerNode);
|
|
293
238
|
outerNode = filterPoints(outerNode, outerNode.next);
|
|
294
239
|
}
|
|
295
|
-
|
|
296
240
|
return outerNode;
|
|
297
241
|
}
|
|
298
|
-
|
|
299
242
|
function compareX(a, b) {
|
|
300
243
|
return a.x - b.x;
|
|
301
244
|
}
|
|
302
|
-
|
|
303
245
|
// find a bridge between vertices that connects hole with an outer ring and and link it
|
|
304
246
|
function eliminateHole(hole, outerNode) {
|
|
305
247
|
outerNode = findHoleBridge(hole, outerNode);
|
|
@@ -308,15 +250,9 @@ function eliminateHole(hole, outerNode) {
|
|
|
308
250
|
filterPoints(b, b.next);
|
|
309
251
|
}
|
|
310
252
|
}
|
|
311
|
-
|
|
312
253
|
// David Eberly's algorithm for finding a bridge between hole and outer polygon
|
|
313
254
|
function findHoleBridge(hole, outerNode) {
|
|
314
|
-
var p = outerNode,
|
|
315
|
-
hx = hole.x,
|
|
316
|
-
hy = hole.y,
|
|
317
|
-
qx = -Infinity,
|
|
318
|
-
m;
|
|
319
|
-
|
|
255
|
+
var p = outerNode, hx = hole.x, hy = hole.y, qx = -Infinity, m;
|
|
320
256
|
// find a segment intersected by a ray from the hole's leftmost point to the left;
|
|
321
257
|
// segment's endpoint with lesser x will be potential connection point
|
|
322
258
|
do {
|
|
@@ -325,77 +261,61 @@ function findHoleBridge(hole, outerNode) {
|
|
|
325
261
|
if (x <= hx && x > qx) {
|
|
326
262
|
qx = x;
|
|
327
263
|
if (x === hx) {
|
|
328
|
-
if (hy === p.y)
|
|
329
|
-
|
|
264
|
+
if (hy === p.y)
|
|
265
|
+
return p;
|
|
266
|
+
if (hy === p.next.y)
|
|
267
|
+
return p.next;
|
|
330
268
|
}
|
|
331
269
|
m = p.x < p.next.x ? p : p.next;
|
|
332
270
|
}
|
|
333
271
|
}
|
|
334
272
|
p = p.next;
|
|
335
273
|
} while (p !== outerNode);
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
274
|
+
if (!m)
|
|
275
|
+
return null;
|
|
276
|
+
if (hx === qx)
|
|
277
|
+
return m.prev; // hole touches outer segment; pick lower endpoint
|
|
341
278
|
// look for points inside the triangle of hole point, segment intersection and endpoint;
|
|
342
279
|
// if there are no points found, we have a valid connection;
|
|
343
280
|
// otherwise choose the point of the minimum angle with the ray as connection point
|
|
344
|
-
|
|
345
|
-
var stop = m,
|
|
346
|
-
mx = m.x,
|
|
347
|
-
my = m.y,
|
|
348
|
-
tanMin = Infinity,
|
|
349
|
-
tan;
|
|
350
|
-
|
|
281
|
+
var stop = m, mx = m.x, my = m.y, tanMin = Infinity, tan;
|
|
351
282
|
p = m.next;
|
|
352
|
-
|
|
353
283
|
while (p !== stop) {
|
|
354
284
|
if (hx >= p.x && p.x >= mx && hx !== p.x &&
|
|
355
285
|
pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {
|
|
356
|
-
|
|
357
286
|
tan = Math.abs(hy - p.y) / (hx - p.x); // tangential
|
|
358
|
-
|
|
359
287
|
if ((tan < tanMin || (tan === tanMin && p.x > m.x)) && locallyInside(p, hole)) {
|
|
360
288
|
m = p;
|
|
361
289
|
tanMin = tan;
|
|
362
290
|
}
|
|
363
291
|
}
|
|
364
|
-
|
|
365
292
|
p = p.next;
|
|
366
293
|
}
|
|
367
|
-
|
|
368
294
|
return m;
|
|
369
295
|
}
|
|
370
|
-
|
|
371
296
|
// interlink polygon nodes in z-order
|
|
372
297
|
function indexCurve(start, minX, minY, size) {
|
|
373
298
|
var p = start;
|
|
374
299
|
do {
|
|
375
|
-
if (p.z === null)
|
|
300
|
+
if (p.z === null)
|
|
301
|
+
p.z = zOrder(p.x, p.y, minX, minY, size);
|
|
376
302
|
p.prevZ = p.prev;
|
|
377
303
|
p.nextZ = p.next;
|
|
378
304
|
p = p.next;
|
|
379
305
|
} while (p !== start);
|
|
380
|
-
|
|
381
306
|
p.prevZ.nextZ = null;
|
|
382
307
|
p.prevZ = null;
|
|
383
|
-
|
|
384
308
|
sortLinked(p);
|
|
385
309
|
}
|
|
386
|
-
|
|
387
310
|
// Simon Tatham's linked list merge sort algorithm
|
|
388
311
|
// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html
|
|
389
312
|
function sortLinked(list) {
|
|
390
|
-
var i, p, q, e, tail, numMerges, pSize, qSize,
|
|
391
|
-
inSize = 1;
|
|
392
|
-
|
|
313
|
+
var i, p, q, e, tail, numMerges, pSize, qSize, inSize = 1;
|
|
393
314
|
do {
|
|
394
315
|
p = list;
|
|
395
316
|
list = null;
|
|
396
317
|
tail = null;
|
|
397
318
|
numMerges = 0;
|
|
398
|
-
|
|
399
319
|
while (p) {
|
|
400
320
|
numMerges++;
|
|
401
321
|
q = p;
|
|
@@ -403,169 +323,137 @@ function sortLinked(list) {
|
|
|
403
323
|
for (i = 0; i < inSize; i++) {
|
|
404
324
|
pSize++;
|
|
405
325
|
q = q.nextZ;
|
|
406
|
-
if (!q)
|
|
326
|
+
if (!q)
|
|
327
|
+
break;
|
|
407
328
|
}
|
|
408
329
|
qSize = inSize;
|
|
409
|
-
|
|
410
330
|
while (pSize > 0 || (qSize > 0 && q)) {
|
|
411
|
-
|
|
412
331
|
if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {
|
|
413
332
|
e = p;
|
|
414
333
|
p = p.nextZ;
|
|
415
334
|
pSize--;
|
|
416
|
-
}
|
|
335
|
+
}
|
|
336
|
+
else {
|
|
417
337
|
e = q;
|
|
418
338
|
q = q.nextZ;
|
|
419
339
|
qSize--;
|
|
420
340
|
}
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
else
|
|
424
|
-
|
|
341
|
+
if (tail)
|
|
342
|
+
tail.nextZ = e;
|
|
343
|
+
else
|
|
344
|
+
list = e;
|
|
425
345
|
e.prevZ = tail;
|
|
426
346
|
tail = e;
|
|
427
347
|
}
|
|
428
|
-
|
|
429
348
|
p = q;
|
|
430
349
|
}
|
|
431
|
-
|
|
432
350
|
tail.nextZ = null;
|
|
433
351
|
inSize *= 2;
|
|
434
|
-
|
|
435
352
|
} while (numMerges > 1);
|
|
436
|
-
|
|
437
353
|
return list;
|
|
438
354
|
}
|
|
439
|
-
|
|
440
355
|
// z-order of a point given coords and size of the data bounding box
|
|
441
356
|
function zOrder(x, y, minX, minY, size) {
|
|
442
357
|
// coords are transformed into non-negative 15-bit integer range
|
|
443
358
|
x = 32767 * (x - minX) / size;
|
|
444
359
|
y = 32767 * (y - minY) / size;
|
|
445
|
-
|
|
446
360
|
x = (x | (x << 8)) & 0x00FF00FF;
|
|
447
361
|
x = (x | (x << 4)) & 0x0F0F0F0F;
|
|
448
362
|
x = (x | (x << 2)) & 0x33333333;
|
|
449
363
|
x = (x | (x << 1)) & 0x55555555;
|
|
450
|
-
|
|
451
364
|
y = (y | (y << 8)) & 0x00FF00FF;
|
|
452
365
|
y = (y | (y << 4)) & 0x0F0F0F0F;
|
|
453
366
|
y = (y | (y << 2)) & 0x33333333;
|
|
454
367
|
y = (y | (y << 1)) & 0x55555555;
|
|
455
|
-
|
|
456
368
|
return x | (y << 1);
|
|
457
369
|
}
|
|
458
|
-
|
|
459
370
|
// find the leftmost node of a polygon ring
|
|
460
371
|
function getLeftmost(start) {
|
|
461
|
-
var p = start,
|
|
462
|
-
leftmost = start;
|
|
372
|
+
var p = start, leftmost = start;
|
|
463
373
|
do {
|
|
464
|
-
if (p.x < leftmost.x)
|
|
374
|
+
if (p.x < leftmost.x)
|
|
375
|
+
leftmost = p;
|
|
465
376
|
p = p.next;
|
|
466
377
|
} while (p !== start);
|
|
467
|
-
|
|
468
378
|
return leftmost;
|
|
469
379
|
}
|
|
470
|
-
|
|
471
380
|
// check if a point lies within a convex triangle
|
|
472
381
|
function pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {
|
|
473
382
|
return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 &&
|
|
474
383
|
(ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 &&
|
|
475
384
|
(bx - px) * (cy - py) - (cx - px) * (by - py) >= 0;
|
|
476
385
|
}
|
|
477
|
-
|
|
478
386
|
// check if a diagonal between two polygon nodes is valid (lies in polygon interior)
|
|
479
387
|
function isValidDiagonal(a, b) {
|
|
480
388
|
return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) &&
|
|
481
389
|
locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b);
|
|
482
390
|
}
|
|
483
|
-
|
|
484
391
|
// signed area of a triangle
|
|
485
392
|
function area(p, q, r) {
|
|
486
393
|
return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);
|
|
487
394
|
}
|
|
488
|
-
|
|
489
395
|
// check if two points are equal
|
|
490
396
|
function equals(p1, p2) {
|
|
491
397
|
return p1.x === p2.x && p1.y === p2.y;
|
|
492
398
|
}
|
|
493
|
-
|
|
494
399
|
// check if two segments intersect
|
|
495
400
|
function intersects(p1, q1, p2, q2) {
|
|
496
401
|
if ((equals(p1, q1) && equals(p2, q2)) ||
|
|
497
|
-
(equals(p1, q2) && equals(p2, q1)))
|
|
402
|
+
(equals(p1, q2) && equals(p2, q1)))
|
|
403
|
+
return true;
|
|
498
404
|
return area(p1, q1, p2) > 0 !== area(p1, q1, q2) > 0 &&
|
|
499
405
|
area(p2, q2, p1) > 0 !== area(p2, q2, q1) > 0;
|
|
500
406
|
}
|
|
501
|
-
|
|
502
407
|
// check if a polygon diagonal intersects any polygon segments
|
|
503
408
|
function intersectsPolygon(a, b) {
|
|
504
409
|
var p = a;
|
|
505
410
|
do {
|
|
506
411
|
if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&
|
|
507
|
-
intersects(p, p.next, a, b))
|
|
412
|
+
intersects(p, p.next, a, b))
|
|
413
|
+
return true;
|
|
508
414
|
p = p.next;
|
|
509
415
|
} while (p !== a);
|
|
510
|
-
|
|
511
416
|
return false;
|
|
512
417
|
}
|
|
513
|
-
|
|
514
418
|
// check if a polygon diagonal is locally inside the polygon
|
|
515
419
|
function locallyInside(a, b) {
|
|
516
420
|
return area(a.prev, a, a.next) < 0 ?
|
|
517
421
|
area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :
|
|
518
422
|
area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;
|
|
519
423
|
}
|
|
520
|
-
|
|
521
424
|
// check if the middle point of a polygon diagonal is inside the polygon
|
|
522
425
|
function middleInside(a, b) {
|
|
523
|
-
var p = a,
|
|
524
|
-
inside = false,
|
|
525
|
-
px = (a.x + b.x) / 2,
|
|
526
|
-
py = (a.y + b.y) / 2;
|
|
426
|
+
var p = a, inside = false, px = (a.x + b.x) / 2, py = (a.y + b.y) / 2;
|
|
527
427
|
do {
|
|
528
428
|
if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&
|
|
529
429
|
(px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))
|
|
530
430
|
inside = !inside;
|
|
531
431
|
p = p.next;
|
|
532
432
|
} while (p !== a);
|
|
533
|
-
|
|
534
433
|
return inside;
|
|
535
434
|
}
|
|
536
|
-
|
|
537
435
|
// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;
|
|
538
436
|
// if one belongs to the outer ring and another to a hole, it merges it into a single ring
|
|
539
437
|
function splitPolygon(a, b) {
|
|
540
|
-
var a2 = new Node(a.i, a.x, a.y),
|
|
541
|
-
b2 = new Node(b.i, b.x, b.y),
|
|
542
|
-
an = a.next,
|
|
543
|
-
bp = b.prev;
|
|
544
|
-
|
|
438
|
+
var a2 = new Node(a.i, a.x, a.y), b2 = new Node(b.i, b.x, b.y), an = a.next, bp = b.prev;
|
|
545
439
|
a.next = b;
|
|
546
440
|
b.prev = a;
|
|
547
|
-
|
|
548
441
|
a2.next = an;
|
|
549
442
|
an.prev = a2;
|
|
550
|
-
|
|
551
443
|
b2.next = a2;
|
|
552
444
|
a2.prev = b2;
|
|
553
|
-
|
|
554
445
|
bp.next = b2;
|
|
555
446
|
b2.prev = bp;
|
|
556
|
-
|
|
557
447
|
return b2;
|
|
558
448
|
}
|
|
559
|
-
|
|
560
449
|
// create a node and optionally link it with previous one (in a circular doubly linked list)
|
|
561
450
|
function insertNode(i, x, y, last) {
|
|
562
451
|
var p = new Node(i, x, y);
|
|
563
|
-
|
|
564
452
|
if (!last) {
|
|
565
453
|
p.prev = p;
|
|
566
454
|
p.next = p;
|
|
567
|
-
|
|
568
|
-
|
|
455
|
+
}
|
|
456
|
+
else {
|
|
569
457
|
p.next = last.next;
|
|
570
458
|
p.prev = last;
|
|
571
459
|
last.next.prev = p;
|
|
@@ -573,44 +461,36 @@ function insertNode(i, x, y, last) {
|
|
|
573
461
|
}
|
|
574
462
|
return p;
|
|
575
463
|
}
|
|
576
|
-
|
|
577
464
|
function removeNode(p) {
|
|
578
465
|
p.next.prev = p.prev;
|
|
579
466
|
p.prev.next = p.next;
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
if (p.nextZ)
|
|
467
|
+
if (p.prevZ)
|
|
468
|
+
p.prevZ.nextZ = p.nextZ;
|
|
469
|
+
if (p.nextZ)
|
|
470
|
+
p.nextZ.prevZ = p.prevZ;
|
|
583
471
|
}
|
|
584
|
-
|
|
585
472
|
function Node(i, x, y) {
|
|
586
473
|
// vertice index in coordinates array
|
|
587
474
|
this.i = i;
|
|
588
|
-
|
|
589
475
|
// vertex coordinates
|
|
590
476
|
this.x = x;
|
|
591
477
|
this.y = y;
|
|
592
|
-
|
|
593
478
|
// previous and next vertice nodes in a polygon ring
|
|
594
479
|
this.prev = null;
|
|
595
480
|
this.next = null;
|
|
596
|
-
|
|
597
481
|
// z-order curve value
|
|
598
482
|
this.z = null;
|
|
599
|
-
|
|
600
483
|
// previous and next nodes in z-order
|
|
601
484
|
this.prevZ = null;
|
|
602
485
|
this.nextZ = null;
|
|
603
|
-
|
|
604
486
|
// indicates whether this is a steiner point
|
|
605
487
|
this.steiner = false;
|
|
606
488
|
}
|
|
607
|
-
|
|
608
489
|
// return a percentage difference between the polygon area and its triangulation area;
|
|
609
490
|
// used to verify correctness of triangulation
|
|
610
491
|
function deviation(data, holeIndices, dim, triangles) {
|
|
611
492
|
var hasHoles = holeIndices && holeIndices.length;
|
|
612
493
|
var outerLen = hasHoles ? holeIndices[0] * dim : data.length;
|
|
613
|
-
|
|
614
494
|
var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));
|
|
615
495
|
if (hasHoles) {
|
|
616
496
|
for (let i = 0, len = holeIndices.length; i < len; i++) {
|
|
@@ -619,21 +499,17 @@ function deviation(data, holeIndices, dim, triangles) {
|
|
|
619
499
|
polygonArea -= Math.abs(signedArea(data, start, end, dim));
|
|
620
500
|
}
|
|
621
501
|
}
|
|
622
|
-
|
|
623
502
|
var trianglesArea = 0;
|
|
624
503
|
for (let i = 0; i < triangles.length; i += 3) {
|
|
625
504
|
var a = triangles[i] * dim;
|
|
626
505
|
var b = triangles[i + 1] * dim;
|
|
627
506
|
var c = triangles[i + 2] * dim;
|
|
628
|
-
trianglesArea += Math.abs(
|
|
629
|
-
(data[a] - data[c]) * (data[b + 1] - data[a + 1]) -
|
|
507
|
+
trianglesArea += Math.abs((data[a] - data[c]) * (data[b + 1] - data[a + 1]) -
|
|
630
508
|
(data[a] - data[b]) * (data[c + 1] - data[a + 1]));
|
|
631
509
|
}
|
|
632
|
-
|
|
633
510
|
return polygonArea === 0 && trianglesArea === 0 ? 0 :
|
|
634
511
|
Math.abs((trianglesArea - polygonArea) / polygonArea);
|
|
635
512
|
}
|
|
636
|
-
|
|
637
513
|
function signedArea(data, start, end, dim) {
|
|
638
514
|
var sum = 0;
|
|
639
515
|
for (let i = start, j = end - dim; i < end; i += dim) {
|
|
@@ -642,16 +518,13 @@ function signedArea(data, start, end, dim) {
|
|
|
642
518
|
}
|
|
643
519
|
return sum;
|
|
644
520
|
}
|
|
645
|
-
|
|
646
521
|
// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts
|
|
647
522
|
function flatten(data) {
|
|
648
|
-
var dim = data[0][0].length,
|
|
649
|
-
result = { vertices: [], holes: [], dimensions: dim },
|
|
650
|
-
holeIndex = 0;
|
|
651
|
-
|
|
523
|
+
var dim = data[0][0].length, result = { vertices: [], holes: [], dimensions: dim }, holeIndex = 0;
|
|
652
524
|
for (let i = 0; i < data.length; i++) {
|
|
653
525
|
for (let j = 0; j < data[i].length; j++) {
|
|
654
|
-
for (let d = 0; d < dim; d++)
|
|
526
|
+
for (let d = 0; d < dim; d++)
|
|
527
|
+
result.vertices.push(data[i][j][d]);
|
|
655
528
|
}
|
|
656
529
|
if (i > 0) {
|
|
657
530
|
holeIndex += data[i - 1].length;
|
|
@@ -660,5 +533,4 @@ function flatten(data) {
|
|
|
660
533
|
}
|
|
661
534
|
return result;
|
|
662
535
|
}
|
|
663
|
-
|
|
664
536
|
export { earcut, flatten };
|