@math.gl/geometry 5.0.0-alpha.2 → 5.0.0-alpha.20
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/LICENSE +97 -49
- package/README.md +16 -1
- package/THIRD-PARTY-NOTICES.md +18 -0
- package/dist/culling/constants.d.ts +3 -0
- package/dist/culling/constants.d.ts.map +1 -0
- package/dist/culling/constants.js +5 -0
- package/dist/culling/constants.js.map +1 -0
- package/dist/culling/index.cjs +2014 -0
- package/dist/culling/index.cjs.map +6 -0
- package/dist/culling/index.d.ts +29 -0
- package/dist/culling/index.d.ts.map +1 -0
- package/dist/culling/index.js +23 -0
- package/dist/culling/index.js.map +1 -0
- package/dist/culling/lib/algorithms/bounding-box-from-points.d.ts +15 -0
- package/dist/culling/lib/algorithms/bounding-box-from-points.d.ts.map +1 -0
- package/dist/culling/lib/algorithms/bounding-box-from-points.js +137 -0
- package/dist/culling/lib/algorithms/bounding-box-from-points.js.map +1 -0
- package/dist/culling/lib/algorithms/bounding-sphere-from-points.d.ts +14 -0
- package/dist/culling/lib/algorithms/bounding-sphere-from-points.d.ts.map +1 -0
- package/dist/culling/lib/algorithms/bounding-sphere-from-points.js +146 -0
- package/dist/culling/lib/algorithms/bounding-sphere-from-points.js.map +1 -0
- package/dist/culling/lib/algorithms/compute-eigen-decomposition.d.ts +37 -0
- package/dist/culling/lib/algorithms/compute-eigen-decomposition.d.ts.map +1 -0
- package/dist/culling/lib/algorithms/compute-eigen-decomposition.js +137 -0
- package/dist/culling/lib/algorithms/compute-eigen-decomposition.js.map +1 -0
- package/dist/culling/lib/algorithms/oriented-bounding-box-quaternion.d.ts +7 -0
- package/dist/culling/lib/algorithms/oriented-bounding-box-quaternion.d.ts.map +1 -0
- package/dist/culling/lib/algorithms/oriented-bounding-box-quaternion.js +26 -0
- package/dist/culling/lib/algorithms/oriented-bounding-box-quaternion.js.map +1 -0
- package/dist/culling/lib/bounding-volumes/axis-aligned-bounding-box.d.ts +56 -0
- package/dist/culling/lib/bounding-volumes/axis-aligned-bounding-box.d.ts.map +1 -0
- package/dist/culling/lib/bounding-volumes/axis-aligned-bounding-box.js +116 -0
- package/dist/culling/lib/bounding-volumes/axis-aligned-bounding-box.js.map +1 -0
- package/dist/culling/lib/bounding-volumes/bounding-sphere.d.ts +40 -0
- package/dist/culling/lib/bounding-volumes/bounding-sphere.d.ts.map +1 -0
- package/dist/culling/lib/bounding-volumes/bounding-sphere.js +123 -0
- package/dist/culling/lib/bounding-volumes/bounding-sphere.js.map +1 -0
- package/dist/culling/lib/bounding-volumes/bounding-volume.d.ts +30 -0
- package/dist/culling/lib/bounding-volumes/bounding-volume.d.ts.map +1 -0
- package/dist/culling/lib/bounding-volumes/bounding-volume.js +7 -0
- package/dist/culling/lib/bounding-volumes/bounding-volume.js.map +1 -0
- package/dist/culling/lib/bounding-volumes/oriented-bounding-box.d.ts +62 -0
- package/dist/culling/lib/bounding-volumes/oriented-bounding-box.d.ts.map +1 -0
- package/dist/culling/lib/bounding-volumes/oriented-bounding-box.js +230 -0
- package/dist/culling/lib/bounding-volumes/oriented-bounding-box.js.map +1 -0
- package/dist/culling/lib/culling-volume.d.ts +46 -0
- package/dist/culling/lib/culling-volume.d.ts.map +1 -0
- package/dist/culling/lib/culling-volume.js +126 -0
- package/dist/culling/lib/culling-volume.js.map +1 -0
- package/dist/culling/lib/perspective-frustum.d.ts +153 -0
- package/dist/culling/lib/perspective-frustum.d.ts.map +1 -0
- package/dist/culling/lib/perspective-frustum.js +191 -0
- package/dist/culling/lib/perspective-frustum.js.map +1 -0
- package/dist/culling/lib/perspective-off-center-frustum.d.ts +158 -0
- package/dist/culling/lib/perspective-off-center-frustum.d.ts.map +1 -0
- package/dist/culling/lib/perspective-off-center-frustum.js +276 -0
- package/dist/culling/lib/perspective-off-center-frustum.js.map +1 -0
- package/dist/culling/lib/plane.d.ts +35 -0
- package/dist/culling/lib/plane.d.ts.map +1 -0
- package/dist/culling/lib/plane.js +90 -0
- package/dist/culling/lib/plane.js.map +1 -0
- package/dist/culling/lib/ray.d.ts +13 -0
- package/dist/culling/lib/ray.d.ts.map +1 -0
- package/dist/culling/lib/ray.js +30 -0
- package/dist/culling/lib/ray.js.map +1 -0
- package/dist/culling/lib/shapes/box-shape.d.ts +19 -0
- package/dist/culling/lib/shapes/box-shape.d.ts.map +1 -0
- package/dist/culling/lib/shapes/box-shape.js +69 -0
- package/dist/culling/lib/shapes/box-shape.js.map +1 -0
- package/dist/culling/lib/shapes/capsule-shape.d.ts +23 -0
- package/dist/culling/lib/shapes/capsule-shape.d.ts.map +1 -0
- package/dist/culling/lib/shapes/capsule-shape.js +151 -0
- package/dist/culling/lib/shapes/capsule-shape.js.map +1 -0
- package/dist/culling/lib/shapes/cylinder-shape.d.ts +22 -0
- package/dist/culling/lib/shapes/cylinder-shape.d.ts.map +1 -0
- package/dist/culling/lib/shapes/cylinder-shape.js +99 -0
- package/dist/culling/lib/shapes/cylinder-shape.js.map +1 -0
- package/dist/culling/lib/shapes/implicit-shape.d.ts +56 -0
- package/dist/culling/lib/shapes/implicit-shape.d.ts.map +1 -0
- package/dist/culling/lib/shapes/implicit-shape.js +142 -0
- package/dist/culling/lib/shapes/implicit-shape.js.map +1 -0
- package/dist/culling/lib/shapes/plane-shape.d.ts +27 -0
- package/dist/culling/lib/shapes/plane-shape.d.ts.map +1 -0
- package/dist/culling/lib/shapes/plane-shape.js +71 -0
- package/dist/culling/lib/shapes/plane-shape.js.map +1 -0
- package/dist/culling/lib/shapes/sphere-shape.d.ts +18 -0
- package/dist/culling/lib/shapes/sphere-shape.d.ts.map +1 -0
- package/dist/culling/lib/shapes/sphere-shape.js +43 -0
- package/dist/culling/lib/shapes/sphere-shape.js.map +1 -0
- package/dist/culling/oriented-box-2d.cjs +73 -0
- package/dist/culling/oriented-box-2d.cjs.map +6 -0
- package/dist/culling/oriented-box-2d.d.ts +22 -0
- package/dist/culling/oriented-box-2d.d.ts.map +1 -0
- package/dist/culling/oriented-box-2d.js +86 -0
- package/dist/culling/oriented-box-2d.js.map +1 -0
- package/dist/culling/queries.cjs +161 -0
- package/dist/culling/queries.cjs.map +6 -0
- package/dist/culling/queries.d.ts +20 -0
- package/dist/culling/queries.d.ts.map +1 -0
- package/dist/culling/queries.js +139 -0
- package/dist/culling/queries.js.map +1 -0
- package/dist/curves/bezier-curves.d.ts +18 -0
- package/dist/curves/bezier-curves.d.ts.map +1 -0
- package/dist/curves/bezier-curves.js +54 -0
- package/dist/curves/bezier-curves.js.map +1 -0
- package/dist/curves/catmull-rom-curve.d.ts +15 -0
- package/dist/curves/catmull-rom-curve.d.ts.map +1 -0
- package/dist/curves/catmull-rom-curve.js +77 -0
- package/dist/curves/catmull-rom-curve.js.map +1 -0
- package/dist/curves/curve-arc-length.d.ts +17 -0
- package/dist/curves/curve-arc-length.d.ts.map +1 -0
- package/dist/curves/curve-arc-length.js +58 -0
- package/dist/curves/curve-arc-length.js.map +1 -0
- package/dist/curves/curve.d.ts +23 -0
- package/dist/curves/curve.d.ts.map +1 -0
- package/dist/curves/curve.js +77 -0
- package/dist/curves/curve.js.map +1 -0
- package/dist/curves/hermite-curve.d.ts +9 -0
- package/dist/curves/hermite-curve.d.ts.map +1 -0
- package/dist/curves/hermite-curve.js +24 -0
- package/dist/curves/hermite-curve.js.map +1 -0
- package/dist/curves/index.cjs +293 -0
- package/dist/curves/index.cjs.map +6 -0
- package/dist/curves/index.d.ts +8 -0
- package/dist/curves/index.d.ts.map +1 -0
- package/dist/curves/index.js +9 -0
- package/dist/curves/index.js.map +1 -0
- package/dist/geometries/box-geometry.js +1 -1
- package/dist/geometries/box-geometry.js.map +1 -1
- package/dist/geometries/capsule-geometry.js +1 -1
- package/dist/geometries/capsule-geometry.js.map +1 -1
- package/dist/geometries/cylinder-geometry.js +1 -1
- package/dist/geometries/cylinder-geometry.js.map +1 -1
- package/dist/geometries/geometry-helpers.js +1 -1
- package/dist/geometries/geometry-helpers.js.map +1 -1
- package/dist/geometries/ico-sphere-geometry.js +1 -1
- package/dist/geometries/ico-sphere-geometry.js.map +1 -1
- package/dist/geometries/plane-geometry.js +1 -1
- package/dist/geometries/plane-geometry.js.map +1 -1
- package/dist/geometries/primitive-mesh-builder.d.ts +24 -0
- package/dist/geometries/primitive-mesh-builder.d.ts.map +1 -0
- package/dist/geometries/primitive-mesh-builder.js +74 -0
- package/dist/geometries/primitive-mesh-builder.js.map +1 -0
- package/dist/geometries/prism-geometry.d.ts +13 -0
- package/dist/geometries/prism-geometry.d.ts.map +1 -0
- package/dist/geometries/prism-geometry.js +34 -0
- package/dist/geometries/prism-geometry.js.map +1 -0
- package/dist/geometries/ring-geometry.d.ts +15 -0
- package/dist/geometries/ring-geometry.d.ts.map +1 -0
- package/dist/geometries/ring-geometry.js +64 -0
- package/dist/geometries/ring-geometry.js.map +1 -0
- package/dist/geometries/sphere-geometry.js +1 -1
- package/dist/geometries/sphere-geometry.js.map +1 -1
- package/dist/geometries/surface-of-revolution.js +1 -1
- package/dist/geometries/surface-of-revolution.js.map +1 -1
- package/dist/geometries/truncated-cone-geometry.js +1 -1
- package/dist/geometries/truncated-cone-geometry.js.map +1 -1
- package/dist/index.cjs +290 -9
- package/dist/index.cjs.map +3 -3
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/geometry-utils.js +1 -1
- package/dist/lib/geometry-utils.js.map +1 -1
- package/dist/lib/geometry.d.ts +1 -1
- package/dist/lib/geometry.d.ts.map +1 -1
- package/dist/lib/geometry.js +1 -1
- package/dist/lib/geometry.js.map +1 -1
- package/dist/lib/hinge-tree.d.ts +33 -0
- package/dist/lib/hinge-tree.d.ts.map +1 -0
- package/dist/lib/hinge-tree.js +144 -0
- package/dist/lib/hinge-tree.js.map +1 -0
- package/dist/parametric/lathe-geometry.d.ts +14 -0
- package/dist/parametric/lathe-geometry.d.ts.map +1 -0
- package/dist/parametric/lathe-geometry.js +48 -0
- package/dist/parametric/lathe-geometry.js.map +1 -0
- package/dist/parametric/parametric-geometry.d.ts +20 -0
- package/dist/parametric/parametric-geometry.d.ts.map +1 -0
- package/dist/parametric/parametric-geometry.js +88 -0
- package/dist/parametric/parametric-geometry.js.map +1 -0
- package/dist/parametric/torus-geometry.d.ts +19 -0
- package/dist/parametric/torus-geometry.d.ts.map +1 -0
- package/dist/parametric/torus-geometry.js +89 -0
- package/dist/parametric/torus-geometry.js.map +1 -0
- package/dist/parametric.cjs +328 -0
- package/dist/parametric.cjs.map +6 -0
- package/dist/parametric.d.ts +7 -0
- package/dist/parametric.d.ts.map +1 -0
- package/dist/parametric.js +7 -0
- package/dist/parametric.js.map +1 -0
- package/dist/polygon/cut-by-grid.d.ts +24 -0
- package/dist/polygon/cut-by-grid.d.ts.map +1 -0
- package/dist/polygon/cut-by-grid.js +221 -0
- package/dist/polygon/cut-by-grid.js.map +1 -0
- package/dist/polygon/cut-by-mercator-bounds.d.ts +17 -0
- package/dist/polygon/cut-by-mercator-bounds.d.ts.map +1 -0
- package/dist/polygon/cut-by-mercator-bounds.js +149 -0
- package/dist/polygon/cut-by-mercator-bounds.js.map +1 -0
- package/dist/polygon/earcut.d.ts +13 -0
- package/dist/polygon/earcut.d.ts.map +1 -0
- package/dist/polygon/earcut.js +627 -0
- package/dist/polygon/earcut.js.map +1 -0
- package/dist/polygon/index.cjs +1437 -0
- package/dist/polygon/index.cjs.map +6 -0
- package/dist/polygon/index.d.ts +12 -0
- package/dist/polygon/index.d.ts.map +1 -0
- package/dist/polygon/index.js +12 -0
- package/dist/polygon/index.js.map +1 -0
- package/dist/polygon/lineclip.d.ts +31 -0
- package/dist/polygon/lineclip.d.ts.map +1 -0
- package/dist/polygon/lineclip.js +184 -0
- package/dist/polygon/lineclip.js.map +1 -0
- package/dist/polygon/polygon-utils.d.ts +103 -0
- package/dist/polygon/polygon-utils.d.ts.map +1 -0
- package/dist/polygon/polygon-utils.js +155 -0
- package/dist/polygon/polygon-utils.js.map +1 -0
- package/dist/polygon/polygon.d.ts +41 -0
- package/dist/polygon/polygon.d.ts.map +1 -0
- package/dist/polygon/polygon.js +76 -0
- package/dist/polygon/polygon.js.map +1 -0
- package/dist/polygon/subdivide-polyline.d.ts +56 -0
- package/dist/polygon/subdivide-polyline.d.ts.map +1 -0
- package/dist/polygon/subdivide-polyline.js +141 -0
- package/dist/polygon/subdivide-polyline.js.map +1 -0
- package/dist/polygon/subdivide-triangle-mesh.d.ts +68 -0
- package/dist/polygon/subdivide-triangle-mesh.d.ts.map +1 -0
- package/dist/polygon/subdivide-triangle-mesh.js +228 -0
- package/dist/polygon/subdivide-triangle-mesh.js.map +1 -0
- package/dist/polygon/utils.d.ts +5 -0
- package/dist/polygon/utils.d.ts.map +1 -0
- package/dist/polygon/utils.js +38 -0
- package/dist/polygon/utils.js.map +1 -0
- package/dist/spatial-index/box-index.cjs +328 -0
- package/dist/spatial-index/box-index.cjs.map +6 -0
- package/dist/spatial-index/box-index.d.ts +65 -0
- package/dist/spatial-index/box-index.d.ts.map +1 -0
- package/dist/spatial-index/box-index.js +263 -0
- package/dist/spatial-index/box-index.js.map +1 -0
- package/dist/spatial-index/index.cjs +494 -0
- package/dist/spatial-index/index.cjs.map +6 -0
- package/dist/spatial-index/index.d.ts +5 -0
- package/dist/spatial-index/index.d.ts.map +1 -0
- package/dist/spatial-index/index.js +6 -0
- package/dist/spatial-index/index.js.map +1 -0
- package/dist/spatial-index/triangle-bvh.d.ts +53 -0
- package/dist/spatial-index/triangle-bvh.d.ts.map +1 -0
- package/dist/spatial-index/triangle-bvh.js +102 -0
- package/dist/spatial-index/triangle-bvh.js.map +1 -0
- package/dist/utils/attribute-compression.d.ts +50 -0
- package/dist/utils/attribute-compression.d.ts.map +1 -0
- package/dist/utils/attribute-compression.js +186 -0
- package/dist/utils/attribute-compression.js.map +1 -0
- package/dist/utils/attribute-iterator.d.ts +8 -0
- package/dist/utils/attribute-iterator.d.ts.map +1 -0
- package/dist/utils/attribute-iterator.js +25 -0
- package/dist/utils/attribute-iterator.js.map +1 -0
- package/dist/utils/compute-vertex-normals.d.ts +4 -0
- package/dist/utils/compute-vertex-normals.d.ts.map +1 -0
- package/dist/utils/compute-vertex-normals.js +54 -0
- package/dist/utils/compute-vertex-normals.js.map +1 -0
- package/dist/utils/constants.d.ts +52 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +39 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/coordinates.d.ts +3 -0
- package/dist/utils/coordinates.d.ts.map +1 -0
- package/dist/utils/coordinates.js +8 -0
- package/dist/utils/coordinates.js.map +1 -0
- package/dist/utils/geometry.d.ts +20 -0
- package/dist/utils/geometry.d.ts.map +1 -0
- package/dist/utils/geometry.js +31 -0
- package/dist/utils/geometry.js.map +1 -0
- package/dist/utils/gl-type.d.ts +17 -0
- package/dist/utils/gl-type.d.ts.map +1 -0
- package/dist/utils/gl-type.js +69 -0
- package/dist/utils/gl-type.js.map +1 -0
- package/dist/utils/index.cjs +965 -0
- package/dist/utils/index.cjs.map +6 -0
- package/dist/utils/index.d.ts +18 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +16 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/interpolate-packed-attributes.cjs +176 -0
- package/dist/utils/interpolate-packed-attributes.cjs.map +6 -0
- package/dist/utils/interpolate-packed-attributes.d.ts +43 -0
- package/dist/utils/interpolate-packed-attributes.d.ts.map +1 -0
- package/dist/utils/interpolate-packed-attributes.js +192 -0
- package/dist/utils/interpolate-packed-attributes.js.map +1 -0
- package/dist/utils/mesh-processing.d.ts +18 -0
- package/dist/utils/mesh-processing.d.ts.map +1 -0
- package/dist/utils/mesh-processing.js +300 -0
- package/dist/utils/mesh-processing.js.map +1 -0
- package/dist/utils/primitive-iterator.d.ts +21 -0
- package/dist/utils/primitive-iterator.d.ts.map +1 -0
- package/dist/utils/primitive-iterator.js +117 -0
- package/dist/utils/primitive-iterator.js.map +1 -0
- package/dist/utils/rgb565.d.ts +5 -0
- package/dist/utils/rgb565.d.ts.map +1 -0
- package/dist/utils/rgb565.js +24 -0
- package/dist/utils/rgb565.js.map +1 -0
- package/dist/utils/typed-array-utils.d.ts +3 -0
- package/dist/utils/typed-array-utils.d.ts.map +1 -0
- package/dist/utils/typed-array-utils.js +16 -0
- package/dist/utils/typed-array-utils.js.map +1 -0
- package/package.json +57 -4
- package/src/culling/constants.ts +6 -0
- package/src/culling/index.ts +45 -0
- package/src/culling/lib/algorithms/bounding-box-from-points.ts +174 -0
- package/src/culling/lib/algorithms/bounding-sphere-from-points.ts +175 -0
- package/src/culling/lib/algorithms/compute-eigen-decomposition.ts +171 -0
- package/src/culling/lib/algorithms/oriented-bounding-box-quaternion.ts +32 -0
- package/src/culling/lib/bounding-volumes/axis-aligned-bounding-box.ts +153 -0
- package/src/culling/lib/bounding-volumes/bounding-sphere.ts +154 -0
- package/src/culling/lib/bounding-volumes/bounding-volume.ts +38 -0
- package/src/culling/lib/bounding-volumes/oriented-bounding-box.ts +320 -0
- package/src/culling/lib/culling-volume.ts +163 -0
- package/src/culling/lib/perspective-frustum.ts +288 -0
- package/src/culling/lib/perspective-off-center-frustum.ts +381 -0
- package/src/culling/lib/plane.ts +118 -0
- package/src/culling/lib/ray.ts +33 -0
- package/src/culling/lib/shapes/box-shape.ts +78 -0
- package/src/culling/lib/shapes/capsule-shape.ts +232 -0
- package/src/culling/lib/shapes/cylinder-shape.ts +133 -0
- package/src/culling/lib/shapes/implicit-shape.ts +209 -0
- package/src/culling/lib/shapes/plane-shape.ts +78 -0
- package/src/culling/lib/shapes/sphere-shape.ts +60 -0
- package/src/culling/oriented-box-2d.ts +165 -0
- package/src/culling/queries.ts +155 -0
- package/src/curves/bezier-curves.ts +62 -0
- package/src/curves/catmull-rom-curve.ts +89 -0
- package/src/curves/curve-arc-length.ts +70 -0
- package/src/curves/curve.ts +96 -0
- package/src/curves/hermite-curve.ts +34 -0
- package/src/curves/index.ts +15 -0
- package/src/geometries/box-geometry.ts +1 -1
- package/src/geometries/capsule-geometry.ts +1 -1
- package/src/geometries/cylinder-geometry.ts +1 -1
- package/src/geometries/geometry-helpers.ts +1 -1
- package/src/geometries/ico-sphere-geometry.ts +1 -1
- package/src/geometries/plane-geometry.ts +1 -1
- package/src/geometries/primitive-mesh-builder.ts +84 -0
- package/src/geometries/prism-geometry.ts +57 -0
- package/src/geometries/ring-geometry.ts +102 -0
- package/src/geometries/sphere-geometry.ts +1 -1
- package/src/geometries/surface-of-revolution.ts +1 -1
- package/src/geometries/truncated-cone-geometry.ts +1 -1
- package/src/index.ts +10 -1
- package/src/lib/geometry-utils.ts +2 -2
- package/src/lib/geometry.ts +2 -2
- package/src/lib/hinge-tree.ts +170 -0
- package/src/parametric/lathe-geometry.ts +70 -0
- package/src/parametric/parametric-geometry.ts +118 -0
- package/src/parametric/torus-geometry.ts +118 -0
- package/src/parametric.ts +9 -0
- package/src/polygon/cut-by-grid.ts +313 -0
- package/src/polygon/cut-by-mercator-bounds.ts +204 -0
- package/src/polygon/earcut.ts +798 -0
- package/src/polygon/index.ts +35 -0
- package/src/polygon/lineclip.ts +218 -0
- package/src/polygon/polygon-utils.ts +273 -0
- package/src/polygon/polygon.ts +105 -0
- package/src/polygon/subdivide-polyline.ts +223 -0
- package/src/polygon/subdivide-triangle-mesh.ts +322 -0
- package/src/polygon/utils.ts +50 -0
- package/src/spatial-index/box-index.ts +343 -0
- package/src/spatial-index/index.ts +18 -0
- package/src/spatial-index/triangle-bvh.ts +162 -0
- package/src/utils/attribute-compression.ts +234 -0
- package/src/utils/attribute-iterator.ts +28 -0
- package/src/utils/compute-vertex-normals.ts +63 -0
- package/src/utils/constants.ts +42 -0
- package/src/utils/coordinates.ts +8 -0
- package/src/utils/geometry.ts +49 -0
- package/src/utils/gl-type.ts +87 -0
- package/src/utils/index.ts +55 -0
- package/src/utils/interpolate-packed-attributes.ts +284 -0
- package/src/utils/mesh-processing.ts +377 -0
- package/src/utils/primitive-iterator.ts +145 -0
- package/src/utils/rgb565.ts +26 -0
- package/src/utils/typed-array-utils.ts +16 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/polygon/index.ts", "../../src/polygon/polygon.ts", "../../src/polygon/polygon-utils.ts", "../../src/polygon/earcut.ts", "../../src/polygon/utils.ts", "../../src/polygon/lineclip.ts", "../../src/polygon/cut-by-grid.ts", "../../src/polygon/cut-by-mercator-bounds.ts", "../../src/polygon/subdivide-polyline.ts", "../../src/polygon/subdivide-triangle-mesh.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["import_core", "area", "area", "equals", "index"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { Polygon } from "./polygon.js";
|
|
2
|
+
export { getPolygonSignedArea, getPolygonWindingDirection, forEachSegmentInPolygon, modifyPolygonWindingDirection } from "./polygon-utils.js";
|
|
3
|
+
export type { PolygonWinding, WindingDirection } from "./polygon-utils.js";
|
|
4
|
+
export { earcut } from "./earcut.js";
|
|
5
|
+
export { clipPolygon, clipPolyline } from "./lineclip.js";
|
|
6
|
+
export { cutPolygonByGrid, cutPolylineByGrid } from "./cut-by-grid.js";
|
|
7
|
+
export { cutPolylineByMercatorBounds, cutPolygonByMercatorBounds } from "./cut-by-mercator-bounds.js";
|
|
8
|
+
export { subdividePolyline } from "./subdivide-polyline.js";
|
|
9
|
+
export type { SubdividePolylineOptions, SubdividedPolyline, PolylineEdgeSampler } from "./subdivide-polyline.js";
|
|
10
|
+
export { subdivideTriangleMesh } from "./subdivide-triangle-mesh.js";
|
|
11
|
+
export type { TriangleMesh, SubdivideTriangleMeshOptions, SubdividedTriangleMesh } from "./subdivide-triangle-mesh.js";
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/polygon/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,OAAO,EAAC,qBAAkB;AAElC,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,uBAAuB,EACvB,6BAA6B,EAC9B,2BAAwB;AACzB,YAAY,EAAC,cAAc,EAAE,gBAAgB,EAAC,2BAAwB;AAEtE,OAAO,EAAC,MAAM,EAAC,oBAAiB;AAEhC,OAAO,EAAC,WAAW,EAAE,YAAY,EAAC,sBAAmB;AAErD,OAAO,EAAC,gBAAgB,EAAE,iBAAiB,EAAC,yBAAsB;AAElE,OAAO,EAAC,2BAA2B,EAAE,0BAA0B,EAAC,oCAAiC;AAEjG,OAAO,EAAC,iBAAiB,EAAC,gCAA6B;AACvD,YAAY,EACV,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACpB,gCAA6B;AAE9B,OAAO,EAAC,qBAAqB,EAAC,qCAAkC;AAChE,YAAY,EACV,YAAY,EACZ,4BAA4B,EAC5B,sBAAsB,EACvB,qCAAkC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// math.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
|
|
4
|
+
export { Polygon } from "./polygon.js";
|
|
5
|
+
export { getPolygonSignedArea, getPolygonWindingDirection, forEachSegmentInPolygon, modifyPolygonWindingDirection } from "./polygon-utils.js";
|
|
6
|
+
export { earcut } from "./earcut.js";
|
|
7
|
+
export { clipPolygon, clipPolyline } from "./lineclip.js";
|
|
8
|
+
export { cutPolygonByGrid, cutPolylineByGrid } from "./cut-by-grid.js";
|
|
9
|
+
export { cutPolylineByMercatorBounds, cutPolygonByMercatorBounds } from "./cut-by-mercator-bounds.js";
|
|
10
|
+
export { subdividePolyline } from "./subdivide-polyline.js";
|
|
11
|
+
export { subdivideTriangleMesh } from "./subdivide-triangle-mesh.js";
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/polygon/index.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,4DAA4D;AAE5D,OAAO,EAAC,OAAO,EAAC,qBAAkB;AAElC,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,uBAAuB,EACvB,6BAA6B,EAC9B,2BAAwB;AAGzB,OAAO,EAAC,MAAM,EAAC,oBAAiB;AAEhC,OAAO,EAAC,WAAW,EAAE,YAAY,EAAC,sBAAmB;AAErD,OAAO,EAAC,gBAAgB,EAAE,iBAAiB,EAAC,yBAAsB;AAElE,OAAO,EAAC,2BAA2B,EAAE,0BAA0B,EAAC,oCAAiC;AAEjG,OAAO,EAAC,iBAAiB,EAAC,gCAA6B;AAOvD,OAAO,EAAC,qBAAqB,EAAC,qCAAkC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { NumericArray } from '@math.gl/core';
|
|
2
|
+
export type BoundingBox = [number, number, number, number];
|
|
3
|
+
/**
|
|
4
|
+
* Cohen-Sutherland line clipping algorithm, adapted to efficiently
|
|
5
|
+
* handle polylines rather than just segments
|
|
6
|
+
*/
|
|
7
|
+
export declare function clipPolyline(positions: Readonly<NumericArray>, bbox: BoundingBox, options?: {
|
|
8
|
+
size?: number;
|
|
9
|
+
startIndex?: number;
|
|
10
|
+
endIndex?: number;
|
|
11
|
+
}): number[][];
|
|
12
|
+
/**
|
|
13
|
+
* Sutherland-Hodgeman polygon clipping algorithm
|
|
14
|
+
* polygon must be closed (first vertex == last vertex)
|
|
15
|
+
*/
|
|
16
|
+
export declare function clipPolygon(positions: Readonly<NumericArray>, bbox: BoundingBox, options?: {
|
|
17
|
+
size?: number;
|
|
18
|
+
startIndex?: number;
|
|
19
|
+
endIndex?: number;
|
|
20
|
+
}): number[];
|
|
21
|
+
/** intersect a segment against one of the 4 lines that make up the bbox */
|
|
22
|
+
export declare function intersect(a: number[], b: number[], edge: number, bbox: BoundingBox, out?: number[]): number[];
|
|
23
|
+
/**
|
|
24
|
+
* bit code reflects the point position relative to the bbox:
|
|
25
|
+
* left mid right
|
|
26
|
+
* top 1001 1000 1010
|
|
27
|
+
* mid 0001 0000 0010
|
|
28
|
+
* bottom 0101 0100 0110
|
|
29
|
+
*/
|
|
30
|
+
export declare function bitCode(p: number[], bbox: BoundingBox): number;
|
|
31
|
+
//# sourceMappingURL=lineclip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lineclip.d.ts","sourceRoot":"","sources":["../../src/polygon/lineclip.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAEhD,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAE3D;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,EACjC,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE;IACR,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,MAAM,EAAE,EAAE,CA0DZ;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,EACjC,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE;IACR,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,MAAM,EAAE,CAsCV;AAED,2EAA2E;AAE3E,wBAAgB,SAAS,CACvB,CAAC,EAAE,MAAM,EAAE,EACX,CAAC,EAAE,MAAM,EAAE,EACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,EACjB,GAAG,GAAE,MAAM,EAAO,GACjB,MAAM,EAAE,CA6BV;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,CAY9D"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
// math.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT AND ISC
|
|
3
|
+
// SPDX-FileCopyrightText: Copyright (c) 2015, Mapbox
|
|
4
|
+
// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
|
|
5
|
+
// SPDX-FileComment: Adapted from Mapbox lineclip for flat arrays and 3D positions. Original ISC notice retained below.
|
|
6
|
+
/*
|
|
7
|
+
Adapted from https://github.com/mapbox/lineclip to work with flat arrays
|
|
8
|
+
and 3d positions
|
|
9
|
+
|
|
10
|
+
ISC License
|
|
11
|
+
|
|
12
|
+
Copyright (c) 2015, Mapbox
|
|
13
|
+
|
|
14
|
+
Permission to use, copy, modify, and/or distribute this software for any purpose
|
|
15
|
+
with or without fee is hereby granted, provided that the above copyright notice
|
|
16
|
+
and this permission notice appear in all copies.
|
|
17
|
+
|
|
18
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
19
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
20
|
+
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
21
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
|
22
|
+
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
23
|
+
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
|
|
24
|
+
THIS SOFTWARE.
|
|
25
|
+
|
|
26
|
+
*/
|
|
27
|
+
/* eslint-disable max-statements, max-depth, complexity */
|
|
28
|
+
import { push, copy, getPointAtIndex } from "./utils.js";
|
|
29
|
+
/**
|
|
30
|
+
* Cohen-Sutherland line clipping algorithm, adapted to efficiently
|
|
31
|
+
* handle polylines rather than just segments
|
|
32
|
+
*/
|
|
33
|
+
export function clipPolyline(positions, bbox, options) {
|
|
34
|
+
const { size = 2, startIndex = 0, endIndex = positions.length } = options || {};
|
|
35
|
+
const numPoints = (endIndex - startIndex) / size;
|
|
36
|
+
const result = [];
|
|
37
|
+
let part = [];
|
|
38
|
+
let a;
|
|
39
|
+
let b;
|
|
40
|
+
let codeA = -1;
|
|
41
|
+
let codeB;
|
|
42
|
+
let lastCode;
|
|
43
|
+
for (let i = 1; i < numPoints; i++) {
|
|
44
|
+
a = getPointAtIndex(positions, i - 1, size, startIndex, a);
|
|
45
|
+
b = getPointAtIndex(positions, i, size, startIndex, b);
|
|
46
|
+
if (codeA < 0) {
|
|
47
|
+
codeA = bitCode(a, bbox);
|
|
48
|
+
}
|
|
49
|
+
codeB = lastCode = bitCode(b, bbox);
|
|
50
|
+
// eslint-disable-next-line no-constant-condition
|
|
51
|
+
while (true) {
|
|
52
|
+
if (!(codeA | codeB)) {
|
|
53
|
+
// accept
|
|
54
|
+
push(part, a);
|
|
55
|
+
if (codeB !== lastCode) {
|
|
56
|
+
// segment went outside
|
|
57
|
+
push(part, b);
|
|
58
|
+
if (i < numPoints - 1) {
|
|
59
|
+
// start a new line
|
|
60
|
+
result.push(part);
|
|
61
|
+
part = [];
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else if (i === numPoints - 1) {
|
|
65
|
+
push(part, b);
|
|
66
|
+
}
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
else if (codeA & codeB) {
|
|
70
|
+
// trivial reject
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
else if (codeA) {
|
|
74
|
+
// a outside, intersect with clip edge
|
|
75
|
+
intersect(a, b, codeA, bbox, a);
|
|
76
|
+
codeA = bitCode(a, bbox);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
// b outside
|
|
80
|
+
intersect(a, b, codeB, bbox, b);
|
|
81
|
+
codeB = bitCode(b, bbox);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
codeA = lastCode;
|
|
85
|
+
}
|
|
86
|
+
if (part.length)
|
|
87
|
+
result.push(part);
|
|
88
|
+
return result;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Sutherland-Hodgeman polygon clipping algorithm
|
|
92
|
+
* polygon must be closed (first vertex == last vertex)
|
|
93
|
+
*/
|
|
94
|
+
export function clipPolygon(positions, bbox, options) {
|
|
95
|
+
const { size = 2, endIndex = positions.length } = options || {};
|
|
96
|
+
let { startIndex = 0 } = options || {};
|
|
97
|
+
let numPoints = (endIndex - startIndex) / size;
|
|
98
|
+
let result;
|
|
99
|
+
let p;
|
|
100
|
+
let prev;
|
|
101
|
+
let inside;
|
|
102
|
+
let prevInside;
|
|
103
|
+
// clip against each side of the clip rectangle
|
|
104
|
+
for (let edge = 1; edge <= 8; edge *= 2) {
|
|
105
|
+
result = [];
|
|
106
|
+
prev = getPointAtIndex(positions, numPoints - 1, size, startIndex, prev);
|
|
107
|
+
prevInside = !(bitCode(prev, bbox) & edge);
|
|
108
|
+
for (let i = 0; i < numPoints; i++) {
|
|
109
|
+
p = getPointAtIndex(positions, i, size, startIndex, p);
|
|
110
|
+
inside = !(bitCode(p, bbox) & edge);
|
|
111
|
+
// if segment goes through the clip window, add an intersection
|
|
112
|
+
if (inside !== prevInside)
|
|
113
|
+
push(result, intersect(prev, p, edge, bbox));
|
|
114
|
+
if (inside)
|
|
115
|
+
push(result, p); // add a point if it's inside
|
|
116
|
+
copy(prev, p);
|
|
117
|
+
prevInside = inside;
|
|
118
|
+
}
|
|
119
|
+
// close loop
|
|
120
|
+
positions = result;
|
|
121
|
+
startIndex = 0;
|
|
122
|
+
numPoints = result.length / size;
|
|
123
|
+
if (!numPoints)
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
return result;
|
|
127
|
+
}
|
|
128
|
+
/** intersect a segment against one of the 4 lines that make up the bbox */
|
|
129
|
+
export function intersect(a, b, edge, bbox, out = []) {
|
|
130
|
+
let t;
|
|
131
|
+
// Forces out[snapI] to be on the bbox edge
|
|
132
|
+
// Interpolation introduces precision issue which may cause lineclip to be
|
|
133
|
+
// stuck in an infinite loop
|
|
134
|
+
let snap;
|
|
135
|
+
if (edge & 8) {
|
|
136
|
+
// top
|
|
137
|
+
t = (bbox[3] - a[1]) / (b[1] - a[1]);
|
|
138
|
+
snap = 3;
|
|
139
|
+
}
|
|
140
|
+
else if (edge & 4) {
|
|
141
|
+
// bottom
|
|
142
|
+
t = (bbox[1] - a[1]) / (b[1] - a[1]);
|
|
143
|
+
snap = 1;
|
|
144
|
+
}
|
|
145
|
+
else if (edge & 2) {
|
|
146
|
+
// right
|
|
147
|
+
t = (bbox[2] - a[0]) / (b[0] - a[0]);
|
|
148
|
+
snap = 2;
|
|
149
|
+
}
|
|
150
|
+
else if (edge & 1) {
|
|
151
|
+
// left
|
|
152
|
+
t = (bbox[0] - a[0]) / (b[0] - a[0]);
|
|
153
|
+
snap = 0;
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
for (let i = 0; i < a.length; i++) {
|
|
159
|
+
out[i] = (snap & 1) === i ? bbox[snap] : t * (b[i] - a[i]) + a[i];
|
|
160
|
+
}
|
|
161
|
+
return out;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* bit code reflects the point position relative to the bbox:
|
|
165
|
+
* left mid right
|
|
166
|
+
* top 1001 1000 1010
|
|
167
|
+
* mid 0001 0000 0010
|
|
168
|
+
* bottom 0101 0100 0110
|
|
169
|
+
*/
|
|
170
|
+
export function bitCode(p, bbox) {
|
|
171
|
+
let code = 0;
|
|
172
|
+
if (p[0] < bbox[0])
|
|
173
|
+
code |= 1;
|
|
174
|
+
// left
|
|
175
|
+
else if (p[0] > bbox[2])
|
|
176
|
+
code |= 2; // right
|
|
177
|
+
if (p[1] < bbox[1])
|
|
178
|
+
code |= 4;
|
|
179
|
+
// bottom
|
|
180
|
+
else if (p[1] > bbox[3])
|
|
181
|
+
code |= 8; // top
|
|
182
|
+
return code;
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=lineclip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lineclip.js","sourceRoot":"","sources":["../../src/polygon/lineclip.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import type { NumericArray } from '@math.gl/core';
|
|
2
|
+
/** Direction in which a polygon's vertices are ordered. */
|
|
3
|
+
export type WindingDirection = 'clockwise' | 'counter-clockwise' | 'none';
|
|
4
|
+
/** A non-degenerate polygon winding direction. */
|
|
5
|
+
export type PolygonWinding = Exclude<WindingDirection, 'none'>;
|
|
6
|
+
/** Polygon representation where each point is represented as a separate array of positions. */
|
|
7
|
+
type PointsArray = NumericArray[];
|
|
8
|
+
/** Segment visitor callback type for polygons defined with flat arrays, */
|
|
9
|
+
type SegmentVisitorFlat = (p1x: number, p1y: number, p2x: number, p2y: number, i1: number, i2: number) => void;
|
|
10
|
+
/** Segment visitor callback type for polygons defined with array of points. */
|
|
11
|
+
export type SegmentVisitorPoints = (p1: NumericArray, p2: NumericArray, i1: number, i2: number) => void;
|
|
12
|
+
export type Plane2D = 'xy' | 'yz' | 'xz';
|
|
13
|
+
/** Parameters of a polygon. */
|
|
14
|
+
type PolygonParams = {
|
|
15
|
+
/**
|
|
16
|
+
* Start index of the polygon in the array of positions.
|
|
17
|
+
* @default `0`
|
|
18
|
+
*/
|
|
19
|
+
start?: number;
|
|
20
|
+
/**
|
|
21
|
+
* End index of the polygon in the array of positions.
|
|
22
|
+
* @default number of positions
|
|
23
|
+
*/
|
|
24
|
+
end?: number;
|
|
25
|
+
/**
|
|
26
|
+
* Size of a point, 2 (XZ) or 3 (XYZ). Affects only polygons stored in flat arrays.
|
|
27
|
+
* @default `2`
|
|
28
|
+
*/
|
|
29
|
+
size?: number;
|
|
30
|
+
/**
|
|
31
|
+
* Indicates that the first point of the polygon is equal to the last point, and additional checks should be ommited.
|
|
32
|
+
*/
|
|
33
|
+
isClosed?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* The 2D projection plane on which to calculate the area of a 3D polygon.
|
|
36
|
+
* @default `'xy'`
|
|
37
|
+
*/
|
|
38
|
+
plane?: Plane2D;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Checks winding direction of the polygon and reverses the polygon in case of opposite winding direction.
|
|
42
|
+
* Note: points are modified in-place.
|
|
43
|
+
* @param points An array that represents points of the polygon.
|
|
44
|
+
* @param direction Requested winding direction.
|
|
45
|
+
* @param options Parameters of the polygon.
|
|
46
|
+
* @return Returns true if the winding direction was changed.
|
|
47
|
+
*/
|
|
48
|
+
export declare function modifyPolygonWindingDirection(points: NumericArray, direction: PolygonWinding, options?: PolygonParams): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Returns winding direction of the polygon.
|
|
51
|
+
* @param points An array that represents points of the polygon.
|
|
52
|
+
* @param options Parameters of the polygon.
|
|
53
|
+
* @returns Winding direction of the polygon.
|
|
54
|
+
*/
|
|
55
|
+
export declare function getPolygonWindingDirection(points: NumericArray, options?: PolygonParams): WindingDirection;
|
|
56
|
+
export declare const DimIndex: Record<string, number>;
|
|
57
|
+
/**
|
|
58
|
+
* Returns signed area of the polygon.
|
|
59
|
+
* @param points An array that represents points of the polygon.
|
|
60
|
+
* @param options Parameters of the polygon.
|
|
61
|
+
* @returns Signed area of the polygon.
|
|
62
|
+
* https://en.wikipedia.org/wiki/Shoelace_formula
|
|
63
|
+
*/
|
|
64
|
+
export declare function getPolygonSignedArea(points: NumericArray, options?: PolygonParams): number;
|
|
65
|
+
/**
|
|
66
|
+
* Calls the visitor callback for each segment in the polygon.
|
|
67
|
+
* @param points An array that represents points of the polygon
|
|
68
|
+
* @param visitor A callback to call for each segment.
|
|
69
|
+
* @param options Parameters of the polygon.
|
|
70
|
+
*/
|
|
71
|
+
export declare function forEachSegmentInPolygon(points: NumericArray, visitor: SegmentVisitorFlat, options?: PolygonParams): void;
|
|
72
|
+
/**
|
|
73
|
+
* Checks winding direction of the polygon and reverses the polygon in case of opposite winding direction.
|
|
74
|
+
* Note: points are modified in-place.
|
|
75
|
+
* @param points Array of points that represent the polygon.
|
|
76
|
+
* @param direction Requested winding direction.
|
|
77
|
+
* @param options Parameters of the polygon.
|
|
78
|
+
* @return Returns true if the winding direction was changed.
|
|
79
|
+
*/
|
|
80
|
+
export declare function modifyPolygonWindingDirectionPoints(points: PointsArray, direction: PolygonWinding, options?: PolygonParams): boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Returns winding direction of the polygon.
|
|
83
|
+
* @param points Array of points that represent the polygon.
|
|
84
|
+
* @param options Parameters of the polygon.
|
|
85
|
+
* @returns Winding direction of the polygon.
|
|
86
|
+
*/
|
|
87
|
+
export declare function getPolygonWindingDirectionPoints(points: PointsArray, options?: PolygonParams): WindingDirection;
|
|
88
|
+
/**
|
|
89
|
+
* Returns signed area of the polygon.
|
|
90
|
+
* @param points Array of points that represent the polygon.
|
|
91
|
+
* @param options Parameters of the polygon.
|
|
92
|
+
* @returns Signed area of the polygon.
|
|
93
|
+
*/
|
|
94
|
+
export declare function getPolygonSignedAreaPoints(points: PointsArray, options?: PolygonParams): number;
|
|
95
|
+
/**
|
|
96
|
+
* Calls visitor callback for each segment in the polygon.
|
|
97
|
+
* @param points Array of points that represent the polygon.
|
|
98
|
+
* @param visitor A callback to call for each segment.
|
|
99
|
+
* @param options Parameters of the polygon.
|
|
100
|
+
*/
|
|
101
|
+
export declare function forEachSegmentInPolygonPoints(points: PointsArray, visitor: SegmentVisitorPoints, options?: PolygonParams): void;
|
|
102
|
+
export {};
|
|
103
|
+
//# sourceMappingURL=polygon-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polygon-utils.d.ts","sourceRoot":"","sources":["../../src/polygon/polygon-utils.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAEhD,2DAA2D;AAC3D,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,mBAAmB,GAAG,MAAM,CAAC;AAE1E,kDAAkD;AAClD,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAE/D,+FAA+F;AAC/F,KAAK,WAAW,GAAG,YAAY,EAAE,CAAC;AAElC,2EAA2E;AAC3E,KAAK,kBAAkB,GAAG,CACxB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,KACP,IAAI,CAAC;AAEV,+EAA+E;AAC/E,MAAM,MAAM,oBAAoB,GAAG,CACjC,EAAE,EAAE,YAAY,EAChB,EAAE,EAAE,YAAY,EAChB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,KACP,IAAI,CAAC;AAEV,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEzC,+BAA+B;AAC/B,KAAK,aAAa,GAAG;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,cAAc,EACzB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAOT;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,aAAkB,GAC1B,gBAAgB,CAElB;AAED,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIlC,CAAC;AAEX;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CAY9F;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,kBAAkB,EAC3B,OAAO,GAAE,aAAkB,GAC1B,IAAI,CA+BN;AAqBD;;;;;;;GAOG;AACH,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,cAAc,EACzB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAOT;AAED;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,aAAkB,GAC1B,gBAAgB,CAElB;AAQD;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,aAAkB,GAC1B,MAAM,CAYR;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,oBAAoB,EAC7B,OAAO,GAAE,aAAkB,GAC1B,IAAI,CAUN"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
// math.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT AND ISC
|
|
3
|
+
// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
|
|
4
|
+
/* eslint-disable max-statements, max-depth, complexity, no-unused-expressions */
|
|
5
|
+
import { equals } from '@math.gl/core';
|
|
6
|
+
/**
|
|
7
|
+
* Checks winding direction of the polygon and reverses the polygon in case of opposite winding direction.
|
|
8
|
+
* Note: points are modified in-place.
|
|
9
|
+
* @param points An array that represents points of the polygon.
|
|
10
|
+
* @param direction Requested winding direction.
|
|
11
|
+
* @param options Parameters of the polygon.
|
|
12
|
+
* @return Returns true if the winding direction was changed.
|
|
13
|
+
*/
|
|
14
|
+
export function modifyPolygonWindingDirection(points, direction, options = {}) {
|
|
15
|
+
const windingDirection = getPolygonWindingDirection(points, options);
|
|
16
|
+
if (windingDirection !== direction) {
|
|
17
|
+
reversePolygon(points, options);
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Returns winding direction of the polygon.
|
|
24
|
+
* @param points An array that represents points of the polygon.
|
|
25
|
+
* @param options Parameters of the polygon.
|
|
26
|
+
* @returns Winding direction of the polygon.
|
|
27
|
+
*/
|
|
28
|
+
export function getPolygonWindingDirection(points, options = {}) {
|
|
29
|
+
return getWindingDirection(getPolygonSignedArea(points, options));
|
|
30
|
+
}
|
|
31
|
+
export const DimIndex = {
|
|
32
|
+
x: 0,
|
|
33
|
+
y: 1,
|
|
34
|
+
z: 2
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Returns signed area of the polygon.
|
|
38
|
+
* @param points An array that represents points of the polygon.
|
|
39
|
+
* @param options Parameters of the polygon.
|
|
40
|
+
* @returns Signed area of the polygon.
|
|
41
|
+
* https://en.wikipedia.org/wiki/Shoelace_formula
|
|
42
|
+
*/
|
|
43
|
+
export function getPolygonSignedArea(points, options = {}) {
|
|
44
|
+
const { start = 0, end = points.length, plane = 'xy' } = options;
|
|
45
|
+
const dim = options.size || 2;
|
|
46
|
+
let area = 0;
|
|
47
|
+
const i0 = DimIndex[plane[0]];
|
|
48
|
+
const i1 = DimIndex[plane[1]];
|
|
49
|
+
for (let i = start, j = end - dim; i < end; i += dim) {
|
|
50
|
+
area += (points[i + i0] - points[j + i0]) * (points[i + i1] + points[j + i1]);
|
|
51
|
+
j = i;
|
|
52
|
+
}
|
|
53
|
+
return area / 2;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Calls the visitor callback for each segment in the polygon.
|
|
57
|
+
* @param points An array that represents points of the polygon
|
|
58
|
+
* @param visitor A callback to call for each segment.
|
|
59
|
+
* @param options Parameters of the polygon.
|
|
60
|
+
*/
|
|
61
|
+
export function forEachSegmentInPolygon(points, visitor, options = {}) {
|
|
62
|
+
const { start = 0, end = points.length, size = 2, isClosed } = options;
|
|
63
|
+
const numPoints = (end - start) / size;
|
|
64
|
+
for (let i = 0; i < numPoints - 1; ++i) {
|
|
65
|
+
visitor(points[start + i * size], points[start + i * size + 1], points[start + (i + 1) * size], points[start + (i + 1) * size + 1], i, i + 1);
|
|
66
|
+
}
|
|
67
|
+
const endPointIndex = start + (numPoints - 1) * size;
|
|
68
|
+
const isClosedEx = isClosed ||
|
|
69
|
+
(equals(points[start], points[endPointIndex]) &&
|
|
70
|
+
equals(points[start + 1], points[endPointIndex + 1]));
|
|
71
|
+
if (!isClosedEx) {
|
|
72
|
+
visitor(points[endPointIndex], points[endPointIndex + 1], points[start], points[start + 1], numPoints - 1, 0);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function reversePolygon(points, options) {
|
|
76
|
+
const { start = 0, end = points.length, size = 2 } = options;
|
|
77
|
+
const numPoints = (end - start) / size;
|
|
78
|
+
const numSwaps = Math.floor(numPoints / 2);
|
|
79
|
+
for (let i = 0; i < numSwaps; ++i) {
|
|
80
|
+
const b1 = start + i * size;
|
|
81
|
+
const b2 = start + (numPoints - 1 - i) * size;
|
|
82
|
+
for (let j = 0; j < size; ++j) {
|
|
83
|
+
const tmp = points[b1 + j];
|
|
84
|
+
points[b1 + j] = points[b2 + j];
|
|
85
|
+
points[b2 + j] = tmp;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Checks winding direction of the polygon and reverses the polygon in case of opposite winding direction.
|
|
91
|
+
* Note: points are modified in-place.
|
|
92
|
+
* @param points Array of points that represent the polygon.
|
|
93
|
+
* @param direction Requested winding direction.
|
|
94
|
+
* @param options Parameters of the polygon.
|
|
95
|
+
* @return Returns true if the winding direction was changed.
|
|
96
|
+
*/
|
|
97
|
+
export function modifyPolygonWindingDirectionPoints(points, direction, options = {}) {
|
|
98
|
+
const currentDirection = getPolygonWindingDirectionPoints(points, options);
|
|
99
|
+
if (currentDirection !== direction) {
|
|
100
|
+
points.reverse();
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Returns winding direction of the polygon.
|
|
107
|
+
* @param points Array of points that represent the polygon.
|
|
108
|
+
* @param options Parameters of the polygon.
|
|
109
|
+
* @returns Winding direction of the polygon.
|
|
110
|
+
*/
|
|
111
|
+
export function getPolygonWindingDirectionPoints(points, options = {}) {
|
|
112
|
+
return getWindingDirection(getPolygonSignedAreaPoints(points, options));
|
|
113
|
+
}
|
|
114
|
+
function getWindingDirection(signedArea) {
|
|
115
|
+
if (signedArea > 0)
|
|
116
|
+
return 'clockwise';
|
|
117
|
+
if (signedArea < 0)
|
|
118
|
+
return 'counter-clockwise';
|
|
119
|
+
return 'none';
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Returns signed area of the polygon.
|
|
123
|
+
* @param points Array of points that represent the polygon.
|
|
124
|
+
* @param options Parameters of the polygon.
|
|
125
|
+
* @returns Signed area of the polygon.
|
|
126
|
+
*/
|
|
127
|
+
export function getPolygonSignedAreaPoints(points, options = {}) {
|
|
128
|
+
// https://en.wikipedia.org/wiki/Shoelace_formula
|
|
129
|
+
const { start = 0, end = points.length, plane = 'xy' } = options;
|
|
130
|
+
let area = 0;
|
|
131
|
+
const i0 = DimIndex[plane[0]];
|
|
132
|
+
const i1 = DimIndex[plane[1]];
|
|
133
|
+
for (let i = start, j = end - 1; i < end; ++i) {
|
|
134
|
+
area += (points[i][i0] - points[j][i0]) * (points[i][i1] + points[j][i1]);
|
|
135
|
+
j = i;
|
|
136
|
+
}
|
|
137
|
+
return area / 2;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Calls visitor callback for each segment in the polygon.
|
|
141
|
+
* @param points Array of points that represent the polygon.
|
|
142
|
+
* @param visitor A callback to call for each segment.
|
|
143
|
+
* @param options Parameters of the polygon.
|
|
144
|
+
*/
|
|
145
|
+
export function forEachSegmentInPolygonPoints(points, visitor, options = {}) {
|
|
146
|
+
const { start = 0, end = points.length, isClosed } = options;
|
|
147
|
+
for (let i = start; i < end - 1; ++i) {
|
|
148
|
+
visitor(points[i], points[i + 1], i, i + 1);
|
|
149
|
+
}
|
|
150
|
+
const isClosedEx = isClosed || equals(points[end - 1], points[0]);
|
|
151
|
+
if (!isClosedEx) {
|
|
152
|
+
visitor(points[end - 1], points[0], end - 1, 0);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=polygon-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polygon-utils.js","sourceRoot":"","sources":["../../src/polygon/polygon-utils.ts"],"names":[],"mappings":"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"}
|