@woosh/meep-engine 2.138.20 → 2.139.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/core/collection/PairUint32Map.d.ts +100 -0
- package/src/core/collection/PairUint32Map.d.ts.map +1 -0
- package/src/core/collection/PairUint32Map.js +321 -0
- package/src/core/collection/Uint32Map.d.ts +119 -0
- package/src/core/collection/Uint32Map.d.ts.map +1 -0
- package/src/core/collection/Uint32Map.js +345 -0
- package/src/core/collection/array/array_shuffle.d.ts +10 -3
- package/src/core/collection/array/array_shuffle.d.ts.map +1 -1
- package/src/core/collection/array/array_shuffle.js +27 -22
- package/src/core/collection/heap/FibonacciHeap.d.ts +195 -0
- package/src/core/collection/heap/FibonacciHeap.d.ts.map +1 -0
- package/src/core/collection/heap/FibonacciHeap.js +586 -0
- package/src/core/collection/heap/Uint32Heap.js +1 -1
- package/src/core/collection/heap/Uint32Heap4.d.ts +169 -0
- package/src/core/collection/heap/Uint32Heap4.d.ts.map +1 -0
- package/src/core/collection/heap/Uint32Heap4.js +490 -0
- package/src/core/geom/3d/line/line3_closest_points_segment_segment.d.ts +27 -0
- package/src/core/geom/3d/line/line3_closest_points_segment_segment.d.ts.map +1 -0
- package/src/core/geom/3d/line/line3_closest_points_segment_segment.js +88 -0
- package/src/core/geom/3d/shape/BoxShape3D.d.ts +61 -0
- package/src/core/geom/3d/shape/BoxShape3D.d.ts.map +1 -0
- package/src/core/geom/3d/shape/BoxShape3D.js +158 -0
- package/src/core/geom/3d/shape/CapsuleShape3D.d.ts +11 -0
- package/src/core/geom/3d/shape/CapsuleShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/CapsuleShape3D.js +12 -0
- package/src/core/geom/3d/shape/UnitCubeShape3D.d.ts +37 -9
- package/src/core/geom/3d/shape/UnitCubeShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/UnitCubeShape3D.js +45 -98
- package/src/core/geom/3d/shape/UnitSphereShape3D.d.ts +10 -0
- package/src/core/geom/3d/shape/UnitSphereShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/UnitSphereShape3D.js +11 -0
- package/src/core/geom/3d/shape/util/shape3d_voxelize_to_grid.d.ts +61 -0
- package/src/core/geom/3d/shape/util/shape3d_voxelize_to_grid.d.ts.map +1 -0
- package/src/core/geom/3d/shape/util/shape3d_voxelize_to_grid.js +148 -0
- package/src/core/geom/3d/tetrahedra/compute_tetrahedral_mesh_from_surface.d.ts +39 -0
- package/src/core/geom/3d/tetrahedra/compute_tetrahedral_mesh_from_surface.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/compute_tetrahedral_mesh_from_surface.js +147 -0
- package/src/core/geom/3d/tetrahedra/compute_tetrahedron_quality.d.ts +15 -0
- package/src/core/geom/3d/tetrahedra/compute_tetrahedron_quality.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/compute_tetrahedron_quality.js +22 -0
- package/src/core/geom/3d/tetrahedra/prototype_tetrahedrize_mesh.d.ts +2 -0
- package/src/core/geom/3d/tetrahedra/prototype_tetrahedrize_mesh.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/prototype_tetrahedrize_mesh.js +673 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.d.ts +26 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.js +222 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_find_tets_around_edge.d.ts +34 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_find_tets_around_edge.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_find_tets_around_edge.js +146 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_23.d.ts +36 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_23.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_23.js +232 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_32.d.ts +33 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_32.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_32.js +255 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_improve_quality.d.ts +68 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_improve_quality.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_improve_quality.js +365 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_smooth_vertex.d.ts +31 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_smooth_vertex.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_smooth_vertex.js +112 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_vertex_is_boundary.d.ts +22 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_vertex_is_boundary.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_vertex_is_boundary.js +55 -0
- package/src/core/geom/3d/tetrahedra/tetrahedron_compute_quality.d.ts +32 -0
- package/src/core/geom/3d/tetrahedra/tetrahedron_compute_quality.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedron_compute_quality.js +66 -0
- package/src/core/geom/3d/topology/struct/binary/BinaryElementPool.d.ts +22 -0
- package/src/core/geom/3d/topology/struct/binary/BinaryElementPool.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/BinaryElementPool.js +49 -0
- package/src/core/geom/3d/topology/struct/binary/BinaryTopology.d.ts +134 -0
- package/src/core/geom/3d/topology/struct/binary/BinaryTopology.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/BinaryTopology.js +276 -3
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.d.ts +17 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.js +135 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compact.d.ts +14 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compact.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compact.js +177 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_face_decouple.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_face_decouple.js +20 -4
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_simplify.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_simplify.js +5 -3
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_create.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_create.js +9 -0
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_get_or_create.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_get_or_create.js +21 -45
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill.js +7 -1
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill_parallels.d.ts +8 -6
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill_parallels.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill_parallels.js +8 -6
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_kill_short_edges.d.ts +22 -0
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_kill_short_edges.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_kill_short_edges.js +73 -0
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_replace.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_replace.js +51 -1
- package/src/core/geom/3d/topology/struct/binary/query/bt_edge_get.d.ts +10 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_edge_get.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_edge_get.js +42 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.d.ts +28 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.js +227 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_walk_boundary_loops.d.ts +13 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_walk_boundary_loops.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_walk_boundary_loops.js +108 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_query_edge_is_boundary.d.ts +11 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_query_edge_is_boundary.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_query_edge_is_boundary.js +20 -0
- package/src/core/geom/3d/triangle/triangle_mesh_compute_signed_volume.d.ts +20 -0
- package/src/core/geom/3d/triangle/triangle_mesh_compute_signed_volume.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/triangle_mesh_compute_signed_volume.js +38 -0
- package/src/core/graph/csr/CSRGraph.d.ts +168 -0
- package/src/core/graph/csr/CSRGraph.d.ts.map +1 -0
- package/src/core/graph/csr/CSRGraph.js +319 -0
- package/src/core/graph/metis/cluster_mesh_metis.d.ts +12 -0
- package/src/core/graph/metis/cluster_mesh_metis.d.ts.map +1 -1
- package/src/core/graph/metis/cluster_mesh_metis.js +12 -0
- package/src/core/graph/metis/metis.d.ts +19 -0
- package/src/core/graph/metis/metis.d.ts.map +1 -1
- package/src/core/graph/metis/metis.js +20 -0
- package/src/core/graph/metis/metis_cluster_bs.d.ts +11 -0
- package/src/core/graph/metis/metis_cluster_bs.d.ts.map +1 -1
- package/src/core/graph/metis/metis_cluster_bs.js +11 -0
- package/src/core/graph/metis/metis_options.d.ts +17 -2
- package/src/core/graph/metis/metis_options.d.ts.map +1 -1
- package/src/core/graph/metis/metis_options.js +17 -2
- package/src/core/graph/metis/native/MetisGraph.d.ts +144 -0
- package/src/core/graph/metis/native/MetisGraph.d.ts.map +1 -0
- package/src/core/graph/metis/native/MetisGraph.js +212 -0
- package/src/core/graph/metis/native/bisection/BisectionScratch.d.ts +72 -0
- package/src/core/graph/metis/native/bisection/BisectionScratch.d.ts.map +1 -0
- package/src/core/graph/metis/native/bisection/BisectionScratch.js +101 -0
- package/src/core/graph/metis/native/bisection/bisect_graph.d.ts +37 -0
- package/src/core/graph/metis/native/bisection/bisect_graph.d.ts.map +1 -0
- package/src/core/graph/metis/native/bisection/bisect_graph.js +100 -0
- package/src/core/graph/metis/native/bisection/compute_2way_params.d.ts +15 -0
- package/src/core/graph/metis/native/bisection/compute_2way_params.d.ts.map +1 -0
- package/src/core/graph/metis/native/bisection/compute_2way_params.js +84 -0
- package/src/core/graph/metis/native/bisection/fm_2way.d.ts +30 -0
- package/src/core/graph/metis/native/bisection/fm_2way.d.ts.map +1 -0
- package/src/core/graph/metis/native/bisection/fm_2way.js +290 -0
- package/src/core/graph/metis/native/bisection/grow_bisection.d.ts +23 -0
- package/src/core/graph/metis/native/bisection/grow_bisection.d.ts.map +1 -0
- package/src/core/graph/metis/native/bisection/grow_bisection.js +137 -0
- package/src/core/graph/metis/native/bisection/split_graph_two_way.d.ts +28 -0
- package/src/core/graph/metis/native/bisection/split_graph_two_way.d.ts.map +1 -0
- package/src/core/graph/metis/native/bisection/split_graph_two_way.js +119 -0
- package/src/core/graph/metis/native/coarsen/coarsen_graph.d.ts +20 -0
- package/src/core/graph/metis/native/coarsen/coarsen_graph.d.ts.map +1 -0
- package/src/core/graph/metis/native/coarsen/coarsen_graph.js +94 -0
- package/src/core/graph/metis/native/coarsen/create_coarse_graph.d.ts +24 -0
- package/src/core/graph/metis/native/coarsen/create_coarse_graph.d.ts.map +1 -0
- package/src/core/graph/metis/native/coarsen/create_coarse_graph.js +158 -0
- package/src/core/graph/metis/native/coarsen/match_shem.d.ts +41 -0
- package/src/core/graph/metis/native/coarsen/match_shem.d.ts.map +1 -0
- package/src/core/graph/metis/native/coarsen/match_shem.js +175 -0
- package/src/core/graph/metis/native/initial/initial_kway_bfs.d.ts +24 -0
- package/src/core/graph/metis/native/initial/initial_kway_bfs.d.ts.map +1 -0
- package/src/core/graph/metis/native/initial/initial_kway_bfs.js +122 -0
- package/src/core/graph/metis/native/initial/initial_kway_recursive_bisection.d.ts +29 -0
- package/src/core/graph/metis/native/initial/initial_kway_recursive_bisection.d.ts.map +1 -0
- package/src/core/graph/metis/native/initial/initial_kway_recursive_bisection.js +170 -0
- package/src/core/graph/metis/native/metis_partition_kway.d.ts +41 -0
- package/src/core/graph/metis/native/metis_partition_kway.d.ts.map +1 -0
- package/src/core/graph/metis/native/metis_partition_kway.js +126 -0
- package/src/core/graph/metis/native/refine/IndexedFloatMaxHeap.d.ts +62 -0
- package/src/core/graph/metis/native/refine/IndexedFloatMaxHeap.d.ts.map +1 -0
- package/src/core/graph/metis/native/refine/IndexedFloatMaxHeap.js +261 -0
- package/src/core/graph/metis/native/refine/RefinementScratch.d.ts +45 -0
- package/src/core/graph/metis/native/refine/RefinementScratch.d.ts.map +1 -0
- package/src/core/graph/metis/native/refine/RefinementScratch.js +53 -0
- package/src/core/graph/metis/native/refine/compute_kway_params.d.ts +18 -0
- package/src/core/graph/metis/native/refine/compute_kway_params.d.ts.map +1 -0
- package/src/core/graph/metis/native/refine/compute_kway_params.js +138 -0
- package/src/core/graph/metis/native/refine/fm_kway.d.ts +63 -0
- package/src/core/graph/metis/native/refine/fm_kway.d.ts.map +1 -0
- package/src/core/graph/metis/native/refine/fm_kway.js +462 -0
- package/src/core/graph/metis/native/refine/project_kway.d.ts +22 -0
- package/src/core/graph/metis/native/refine/project_kway.d.ts.map +1 -0
- package/src/core/graph/metis/native/refine/project_kway.js +43 -0
- package/src/core/graph/metis/native/refine/refine_kway.d.ts +34 -0
- package/src/core/graph/metis/native/refine/refine_kway.d.ts.map +1 -0
- package/src/core/graph/metis/native/refine/refine_kway.js +43 -0
- package/src/core/math/linalg/eigen/matrix_householder_in_place.d.ts +2 -2
- package/src/core/math/linalg/eigen/matrix_householder_in_place.js +2 -2
- package/src/core/math/linalg/eigen/matrix_qr_in_place.d.ts +6 -4
- package/src/core/math/linalg/eigen/matrix_qr_in_place.d.ts.map +1 -1
- package/src/core/math/linalg/eigen/matrix_qr_in_place.js +69 -23
- package/src/engine/EngineHarness.d.ts +3 -1
- package/src/engine/EngineHarness.d.ts.map +1 -1
- package/src/engine/EngineHarness.js +3 -0
- package/src/engine/control/first-person/DESIGN.md +30 -6
- package/src/engine/control/first-person/DESIGN_EXTENSIONS.md +563 -0
- package/src/engine/control/first-person/FirstPersonPlayerController.d.ts +102 -9
- package/src/engine/control/first-person/FirstPersonPlayerController.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerController.js +38 -3
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts +533 -4
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.js +315 -6
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts +220 -22
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +858 -241
- package/src/engine/control/first-person/TODO.md +127 -0
- package/src/engine/control/first-person/abilities/Ability.d.ts +101 -0
- package/src/engine/control/first-person/abilities/Ability.d.ts.map +1 -0
- package/src/engine/control/first-person/abilities/Ability.js +119 -0
- package/src/engine/control/first-person/abilities/AbilitySet.d.ts +86 -0
- package/src/engine/control/first-person/abilities/AbilitySet.d.ts.map +1 -0
- package/src/engine/control/first-person/abilities/AbilitySet.js +185 -0
- package/src/engine/control/first-person/abilities/LedgeGrab.d.ts +62 -0
- package/src/engine/control/first-person/abilities/LedgeGrab.d.ts.map +1 -0
- package/src/engine/control/first-person/abilities/LedgeGrab.js +199 -0
- package/src/engine/control/first-person/abilities/Mantle.d.ts +45 -0
- package/src/engine/control/first-person/abilities/Mantle.d.ts.map +1 -0
- package/src/engine/control/first-person/abilities/Mantle.js +188 -0
- package/src/engine/control/first-person/abilities/Slide.d.ts +33 -0
- package/src/engine/control/first-person/abilities/Slide.d.ts.map +1 -0
- package/src/engine/control/first-person/abilities/Slide.js +158 -0
- package/src/engine/control/first-person/abilities/WallJump.d.ts +45 -0
- package/src/engine/control/first-person/abilities/WallJump.d.ts.map +1 -0
- package/src/engine/control/first-person/abilities/WallJump.js +131 -0
- package/src/engine/control/first-person/abilities/WallRun.d.ts +44 -0
- package/src/engine/control/first-person/abilities/WallRun.d.ts.map +1 -0
- package/src/engine/control/first-person/abilities/WallRun.js +180 -0
- package/src/engine/control/first-person/composer/EyeOffsetStack.d.ts +49 -0
- package/src/engine/control/first-person/composer/EyeOffsetStack.d.ts.map +1 -0
- package/src/engine/control/first-person/composer/EyeOffsetStack.js +60 -0
- package/src/engine/control/first-person/mastery/BreathRhythmEvaluator.d.ts +100 -0
- package/src/engine/control/first-person/mastery/BreathRhythmEvaluator.d.ts.map +1 -0
- package/src/engine/control/first-person/mastery/BreathRhythmEvaluator.js +133 -0
- package/src/engine/control/first-person/mastery/DecisionPoint.d.ts +10 -0
- package/src/engine/control/first-person/mastery/DecisionPoint.d.ts.map +1 -0
- package/src/engine/control/first-person/mastery/DecisionPoint.js +30 -0
- package/src/engine/control/first-person/mastery/FootAsymmetryTurnEvaluator.d.ts +61 -0
- package/src/engine/control/first-person/mastery/FootAsymmetryTurnEvaluator.d.ts.map +1 -0
- package/src/engine/control/first-person/mastery/FootAsymmetryTurnEvaluator.js +109 -0
- package/src/engine/control/first-person/mastery/MasteryEvaluator.d.ts +40 -0
- package/src/engine/control/first-person/mastery/MasteryEvaluator.d.ts.map +1 -0
- package/src/engine/control/first-person/mastery/MasteryEvaluator.js +45 -0
- package/src/engine/control/first-person/mastery/MasteryScore.d.ts +68 -0
- package/src/engine/control/first-person/mastery/MasteryScore.d.ts.map +1 -0
- package/src/engine/control/first-person/mastery/MasteryScore.js +100 -0
- package/src/engine/control/first-person/mastery/MasterySet.d.ts +60 -0
- package/src/engine/control/first-person/mastery/MasterySet.d.ts.map +1 -0
- package/src/engine/control/first-person/mastery/MasterySet.js +86 -0
- package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.d.ts +58 -0
- package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.d.ts.map +1 -0
- package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.js +83 -0
- package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.d.ts +69 -0
- package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.d.ts.map +1 -0
- package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.js +109 -0
- package/src/engine/control/first-person/math/Spring.d.ts +56 -0
- package/src/engine/control/first-person/math/Spring.d.ts.map +1 -0
- package/src/engine/control/first-person/math/Spring.js +71 -0
- package/src/engine/control/first-person/math/computeLRCBreathRate.d.ts +26 -0
- package/src/engine/control/first-person/math/computeLRCBreathRate.d.ts.map +1 -0
- package/src/engine/control/first-person/math/computeLRCBreathRate.js +41 -0
- package/src/engine/control/first-person/math/computeMassRatios.d.ts +35 -0
- package/src/engine/control/first-person/math/computeMassRatios.d.ts.map +1 -0
- package/src/engine/control/first-person/math/computeMassRatios.js +44 -0
- package/src/engine/control/first-person/pose/FirstPersonPose.d.ts +31 -1
- package/src/engine/control/first-person/pose/FirstPersonPose.d.ts.map +1 -1
- package/src/engine/control/first-person/pose/FirstPersonPose.js +49 -3
- package/src/engine/control/first-person/pose/FirstPersonPosture.d.ts +7 -0
- package/src/engine/control/first-person/pose/FirstPersonPosture.d.ts.map +1 -0
- package/src/engine/control/first-person/pose/FirstPersonPosture.js +27 -0
- package/src/engine/control/first-person/prototype_first_person_controller.js +550 -119
- package/src/engine/control/first-person/sensors/FirstPersonSensors.d.ts +58 -0
- package/src/engine/control/first-person/sensors/FirstPersonSensors.d.ts.map +1 -0
- package/src/engine/control/first-person/sensors/FirstPersonSensors.js +77 -0
- package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts +80 -0
- package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts.map +1 -0
- package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.js +196 -0
- package/src/engine/control/first-person/test/buildTestPlayer.d.ts +20 -0
- package/src/engine/control/first-person/test/buildTestPlayer.d.ts.map +1 -0
- package/src/engine/control/first-person/test/buildTestPlayer.js +28 -0
- package/src/engine/graphics/camera/testClippingPlaneComputation.js +0 -2
- package/src/engine/graphics/ecs/light/Light.d.ts.map +1 -1
- package/src/engine/graphics/ecs/light/Light.js +27 -0
- package/src/engine/graphics/ecs/light/LightSystem.js +1 -1
- package/src/engine/graphics/ecs/path/PathDisplaySystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/path/testPathDisplaySystem.js +0 -2
- package/src/engine/graphics/ecs/path/tube/prototypeAnimatedPathMask.js +0 -2
- package/src/engine/graphics/render/buffer/buffers/prototypeNormalFrameBuffer.js +0 -2
- package/src/engine/graphics/render/forward_plus/plugin/ptototypeFPPlugin.js +0 -2
- package/src/engine/graphics/render/visibility/hiz/prototypeHiZ.js +0 -2
- package/src/engine/navigation/grid/find_path_on_grid_astar.d.ts.map +1 -1
- package/src/engine/navigation/grid/find_path_on_grid_astar.js +11 -2
- package/src/engine/navigation/mesh/bt_mesh_face_find_path.d.ts.map +1 -1
- package/src/engine/navigation/mesh/bt_mesh_face_find_path.js +11 -1
- package/src/engine/physics/PLAN.md +236 -0
- package/src/engine/physics/body/BodyStorage.d.ts +187 -0
- package/src/engine/physics/body/BodyStorage.d.ts.map +1 -0
- package/src/engine/physics/body/BodyStorage.js +427 -0
- package/src/engine/physics/broadphase/PairList.d.ts +62 -0
- package/src/engine/physics/broadphase/PairList.d.ts.map +1 -0
- package/src/engine/physics/broadphase/PairList.js +97 -0
- package/src/engine/physics/broadphase/aabb_transform_oriented.d.ts +30 -0
- package/src/engine/physics/broadphase/aabb_transform_oriented.d.ts.map +1 -0
- package/src/engine/physics/broadphase/aabb_transform_oriented.js +93 -0
- package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts +16 -0
- package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts.map +1 -0
- package/src/engine/physics/broadphase/compute_fat_world_aabb.js +61 -0
- package/src/engine/physics/broadphase/generate_pairs.d.ts +38 -0
- package/src/engine/physics/broadphase/generate_pairs.d.ts.map +1 -0
- package/src/engine/physics/broadphase/generate_pairs.js +101 -0
- package/src/engine/physics/contact/ManifoldStore.d.ts +226 -0
- package/src/engine/physics/contact/ManifoldStore.d.ts.map +1 -0
- package/src/engine/physics/contact/ManifoldStore.js +499 -0
- package/src/engine/physics/ecs/BodyKind.d.ts +23 -0
- package/src/engine/physics/ecs/BodyKind.d.ts.map +1 -0
- package/src/engine/physics/ecs/BodyKind.js +24 -0
- package/src/engine/physics/ecs/Collider.d.ts +98 -0
- package/src/engine/physics/ecs/Collider.d.ts.map +1 -0
- package/src/engine/physics/ecs/Collider.js +136 -0
- package/src/engine/physics/ecs/ColliderFlags.d.ts +14 -0
- package/src/engine/physics/ecs/ColliderFlags.d.ts.map +1 -0
- package/src/engine/physics/ecs/ColliderFlags.js +15 -0
- package/src/engine/physics/ecs/ColliderObserverSystem.d.ts +58 -0
- package/src/engine/physics/ecs/ColliderObserverSystem.d.ts.map +1 -0
- package/src/engine/physics/ecs/ColliderObserverSystem.js +103 -0
- package/src/engine/physics/ecs/ColliderSerializationAdapter.d.ts +25 -0
- package/src/engine/physics/ecs/ColliderSerializationAdapter.d.ts.map +1 -0
- package/src/engine/physics/ecs/ColliderSerializationAdapter.js +37 -0
- package/src/engine/physics/ecs/PhysicsEvents.d.ts +15 -0
- package/src/engine/physics/ecs/PhysicsEvents.d.ts.map +1 -0
- package/src/engine/physics/ecs/PhysicsEvents.js +16 -0
- package/src/engine/physics/ecs/PhysicsSystem.d.ts +520 -0
- package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -0
- package/src/engine/physics/ecs/PhysicsSystem.js +1159 -0
- package/src/engine/physics/ecs/RigidBody.d.ts +197 -0
- package/src/engine/physics/ecs/RigidBody.d.ts.map +1 -0
- package/src/engine/physics/ecs/RigidBody.js +240 -0
- package/src/engine/physics/ecs/RigidBodyFlags.d.ts +21 -0
- package/src/engine/physics/ecs/RigidBodyFlags.d.ts.map +1 -0
- package/src/engine/physics/ecs/RigidBodyFlags.js +22 -0
- package/src/engine/physics/ecs/RigidBodySerializationAdapter.d.ts +28 -0
- package/src/engine/physics/ecs/RigidBodySerializationAdapter.d.ts.map +1 -0
- package/src/engine/physics/ecs/RigidBodySerializationAdapter.js +81 -0
- package/src/engine/physics/ecs/SleepState.d.ts +11 -0
- package/src/engine/physics/ecs/SleepState.d.ts.map +1 -0
- package/src/engine/physics/ecs/SleepState.js +12 -0
- package/src/engine/physics/events/ContactEventBuffer.d.ts +46 -0
- package/src/engine/physics/events/ContactEventBuffer.d.ts.map +1 -0
- package/src/engine/physics/events/ContactEventBuffer.js +83 -0
- package/src/engine/physics/events/diff_manifolds.d.ts +25 -0
- package/src/engine/physics/events/diff_manifolds.d.ts.map +1 -0
- package/src/engine/physics/events/diff_manifolds.js +50 -0
- package/src/engine/physics/fluid/FluidField.d.ts +294 -16
- package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
- package/src/engine/physics/fluid/FluidField.js +510 -66
- package/src/engine/physics/fluid/FluidSimulator.d.ts +188 -5
- package/src/engine/physics/fluid/FluidSimulator.d.ts.map +1 -1
- package/src/engine/physics/fluid/FluidSimulator.js +455 -95
- package/src/engine/physics/fluid/SliceVisualiser.d.ts +29 -6
- package/src/engine/physics/fluid/SliceVisualiser.d.ts.map +1 -1
- package/src/engine/physics/fluid/SliceVisualiser.js +190 -165
- package/src/engine/physics/fluid/ecs/FluidComponent.d.ts +154 -0
- package/src/engine/physics/fluid/ecs/FluidComponent.d.ts.map +1 -0
- package/src/engine/physics/fluid/ecs/FluidComponent.js +238 -0
- package/src/engine/physics/fluid/ecs/FluidEffectorsComponent.d.ts +45 -0
- package/src/engine/physics/fluid/ecs/FluidEffectorsComponent.d.ts.map +1 -0
- package/src/engine/physics/fluid/ecs/FluidEffectorsComponent.js +89 -0
- package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +107 -0
- package/src/engine/physics/fluid/ecs/FluidSystem.d.ts.map +1 -0
- package/src/engine/physics/fluid/ecs/FluidSystem.js +278 -0
- package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts +62 -1
- package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/AbstractFluidEffector.js +81 -6
- package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts +17 -4
- package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/GlobalFluidEffector.js +105 -12
- package/src/engine/physics/fluid/effector/ImpulseFluidEffector.d.ts +43 -0
- package/src/engine/physics/fluid/effector/ImpulseFluidEffector.d.ts.map +1 -0
- package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +210 -0
- package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts +62 -1
- package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/WakeFluidEffector.js +302 -8
- package/src/engine/physics/fluid/prototype.js +102 -91
- package/src/engine/physics/fluid/solver/optimal_sor_omega.d.ts +33 -0
- package/src/engine/physics/fluid/solver/optimal_sor_omega.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/optimal_sor_omega.js +41 -0
- package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts +20 -5
- package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.js +60 -38
- package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.d.ts +25 -4
- package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.js +93 -73
- package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.d.ts +23 -0
- package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.js +60 -0
- package/src/engine/physics/fluid/solver/v3_grid_compute_divergence.d.ts +23 -0
- package/src/engine/physics/fluid/solver/v3_grid_compute_divergence.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_compute_divergence.js +68 -0
- package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.d.ts +30 -0
- package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.js +66 -0
- package/src/engine/physics/fluid/solver/v3_grid_patch_edges_uniform.d.ts +26 -0
- package/src/engine/physics/fluid/solver/v3_grid_patch_edges_uniform.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_patch_edges_uniform.js +113 -0
- package/src/engine/physics/fluid/solver/v3_grid_shift_in_place.d.ts +30 -0
- package/src/engine/physics/fluid/solver/v3_grid_shift_in_place.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_shift_in_place.js +107 -0
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.d.ts +49 -0
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.js +126 -0
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.d.ts +93 -0
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.js +424 -0
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_unmasked_legacy.d.ts +20 -0
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_unmasked_legacy.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_unmasked_legacy.js +83 -0
- package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.d.ts +26 -0
- package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.js +70 -0
- package/src/engine/physics/gjk/expanding_polytope_algorithm.d.ts.map +1 -1
- package/src/engine/physics/gjk/expanding_polytope_algorithm.js +8 -10
- package/src/engine/physics/inertia/world_inverse_inertia.d.ts +29 -0
- package/src/engine/physics/inertia/world_inverse_inertia.d.ts.map +1 -0
- package/src/engine/physics/inertia/world_inverse_inertia.js +79 -0
- package/src/engine/physics/integration/integrate_position.d.ts +16 -0
- package/src/engine/physics/integration/integrate_position.d.ts.map +1 -0
- package/src/engine/physics/integration/integrate_position.js +48 -0
- package/src/engine/physics/integration/integrate_velocity.d.ts +25 -0
- package/src/engine/physics/integration/integrate_velocity.d.ts.map +1 -0
- package/src/engine/physics/integration/integrate_velocity.js +79 -0
- package/src/engine/physics/integration/quat_integrate.d.ts +27 -0
- package/src/engine/physics/integration/quat_integrate.d.ts.map +1 -0
- package/src/engine/physics/integration/quat_integrate.js +62 -0
- package/src/engine/physics/island/IslandBuilder.d.ts +167 -0
- package/src/engine/physics/island/IslandBuilder.d.ts.map +1 -0
- package/src/engine/physics/island/IslandBuilder.js +411 -0
- package/src/engine/physics/island/union_find.d.ts +51 -0
- package/src/engine/physics/island/union_find.d.ts.map +1 -0
- package/src/engine/physics/island/union_find.js +76 -0
- package/src/engine/physics/narrowphase/PosedShape.d.ts +59 -0
- package/src/engine/physics/narrowphase/PosedShape.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/PosedShape.js +110 -0
- package/src/engine/physics/narrowphase/box_box_manifold.d.ts +32 -0
- package/src/engine/physics/narrowphase/box_box_manifold.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/box_box_manifold.js +543 -0
- package/src/engine/physics/narrowphase/capsule_contacts.d.ts +122 -0
- package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/capsule_contacts.js +508 -0
- package/src/engine/physics/narrowphase/narrowphase_step.d.ts +11 -0
- package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/narrowphase_step.js +382 -0
- package/src/engine/physics/narrowphase/sphere_box_contact.d.ts +38 -0
- package/src/engine/physics/narrowphase/sphere_box_contact.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/sphere_box_contact.js +130 -0
- package/src/engine/physics/narrowphase/sphere_sphere_contact.d.ts +26 -0
- package/src/engine/physics/narrowphase/sphere_sphere_contact.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/sphere_sphere_contact.js +51 -0
- package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts +83 -0
- package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts.map +1 -0
- package/src/engine/physics/queries/PhysicsSurfacePoint.js +100 -0
- package/src/engine/physics/queries/raycast.d.ts +20 -0
- package/src/engine/physics/queries/raycast.d.ts.map +1 -0
- package/src/engine/physics/queries/raycast.js +249 -0
- package/src/engine/physics/solver/friction_cone.d.ts +16 -0
- package/src/engine/physics/solver/friction_cone.d.ts.map +1 -0
- package/src/engine/physics/solver/friction_cone.js +37 -0
- package/src/engine/physics/solver/solve_contacts.d.ts +36 -0
- package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -0
- package/src/engine/physics/solver/solve_contacts.js +598 -0
- package/src/core/geom/3d/topology/struct/binary/io/edge/OrderedEdge.d.ts +0 -34
- package/src/core/geom/3d/topology/struct/binary/io/edge/OrderedEdge.d.ts.map +0 -1
- package/src/core/geom/3d/topology/struct/binary/io/edge/OrderedEdge.js +0 -66
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_calc_edges.d.ts +0 -2
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_calc_edges.d.ts.map +0 -1
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_calc_edges.js +0 -54
- package/src/core/geom/3d/topology/struct/binary/io/edge/get_or_create_edge_map.d.ts +0 -2
- package/src/core/geom/3d/topology/struct/binary/io/edge/get_or_create_edge_map.d.ts.map +0 -1
- package/src/core/geom/3d/topology/struct/binary/io/edge/get_or_create_edge_map.js +0 -26
- package/src/engine/ecs/components/Motion.d.ts +0 -21
- package/src/engine/ecs/components/Motion.d.ts.map +0 -1
- package/src/engine/ecs/components/Motion.js +0 -27
- package/src/engine/ecs/components/MotionSerializationAdapter.d.ts +0 -20
- package/src/engine/ecs/components/MotionSerializationAdapter.d.ts.map +0 -1
- package/src/engine/ecs/components/MotionSerializationAdapter.js +0 -26
- package/src/engine/ecs/systems/MotionSystem.d.ts +0 -9
- package/src/engine/ecs/systems/MotionSystem.d.ts.map +0 -1
- package/src/engine/ecs/systems/MotionSystem.js +0 -29
- package/src/engine/physics/fluid/Fluid.d.ts +0 -26
- package/src/engine/physics/fluid/Fluid.d.ts.map +0 -1
- package/src/engine/physics/fluid/Fluid.js +0 -221
- package/src/engine/physics/fluid/solver/v3_grid_apply_advection_reverse.d.ts +0 -7
- package/src/engine/physics/fluid/solver/v3_grid_apply_advection_reverse.d.ts.map +0 -1
- package/src/engine/physics/fluid/solver/v3_grid_apply_advection_reverse.js +0 -8
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
import { assert } from "../assert.js";
|
|
2
|
+
|
|
3
|
+
const UINT32_MAX = 4294967295;
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Returned by {@link Uint32Map#get} when the key is absent. Chosen so that any uint32 (0 .. UINT32_MAX) is
|
|
7
|
+
* unambiguously a valid value. As a JS Number this is a Smi on all V8 builds, so the return doesn't allocate.
|
|
8
|
+
* @type {number}
|
|
9
|
+
*/
|
|
10
|
+
export const UINT32_MAP_ABSENT = -1;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* 2^32 / phi, rounded to nearest integer. Multiplier for Fibonacci hashing — scatters sequential integer
|
|
14
|
+
* keys across the index space with one multiply and one shift.
|
|
15
|
+
* @type {number}
|
|
16
|
+
*/
|
|
17
|
+
const FIB_HASH_MULTIPLIER = 2654435769;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @type {number}
|
|
21
|
+
*/
|
|
22
|
+
const DEFAULT_CAPACITY = 16;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Smallest table we ever create. Capacity is always a power of two, so the actual minimum is 2.
|
|
26
|
+
* @type {number}
|
|
27
|
+
*/
|
|
28
|
+
const MIN_CAPACITY = 2;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Grow when `size > capacity * 3/4`. Slater ("Optimizing Open Addressing", thenumb.at/Hashtables) puts
|
|
32
|
+
* the sweet-spot load factor for Robin Hood at ~0.75; past that, max probe length climbs fast even though
|
|
33
|
+
* mean stays low.
|
|
34
|
+
* @type {number}
|
|
35
|
+
*/
|
|
36
|
+
const LOAD_FACTOR_NUMERATOR = 3;
|
|
37
|
+
const LOAD_FACTOR_SHIFT = 2; // divide by 4
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Non-allocating Map<uint32, uint32> backed by a single Uint32Array.
|
|
41
|
+
*
|
|
42
|
+
* Layout: one slot occupies two consecutive words — `data[2*slot] = key + 1`, `data[2*slot + 1] = value`.
|
|
43
|
+
* Keys are stored offset by +1 so that 0 is unambiguously "empty slot"; this also keeps every stored value
|
|
44
|
+
* inside the V8 Smi range (under pointer compression, Smi is 31-bit signed = max 2^30 − 1), which means
|
|
45
|
+
* reading any non-empty slot does not allocate a HeapNumber. Without the shift, a sentinel of 0xFFFFFFFF
|
|
46
|
+
* would box on every read of an empty slot — the exact opposite of what we want.
|
|
47
|
+
*
|
|
48
|
+
* Collision resolution: Robin Hood linear probing with backward-shift deletion (Knuth Algorithm R). Hash
|
|
49
|
+
* is Fibonacci multiplicative (see Skarupke 2018, "Fibonacci Hashing"), indexing from the high bits of
|
|
50
|
+
* the product. Table capacity is always a power of two; index is computed by right-shift, not by mask of
|
|
51
|
+
* the low bits — the high bits of a multiplicative hash have more entropy.
|
|
52
|
+
*
|
|
53
|
+
* Allowed key range: 0 .. UINT32_MAX - 1 (because we store key + 1). Allowed value range: full uint32.
|
|
54
|
+
* Values are returned via {@link UINT32_MAP_ABSENT} when not found — callers check `=== -1` rather than
|
|
55
|
+
* `=== undefined`, which is the Map API but is allocation-incompatible with typed-array storage.
|
|
56
|
+
*/
|
|
57
|
+
export class Uint32Map {
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
*
|
|
61
|
+
* @param {number} [initial_capacity] minimum number of slots to reserve. Rounded up to next power of two.
|
|
62
|
+
*/
|
|
63
|
+
constructor(initial_capacity = DEFAULT_CAPACITY) {
|
|
64
|
+
assert.isNonNegativeInteger(initial_capacity, 'initial_capacity');
|
|
65
|
+
|
|
66
|
+
let cap = MIN_CAPACITY;
|
|
67
|
+
while (cap < initial_capacity) {
|
|
68
|
+
cap <<= 1;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* @type {number}
|
|
73
|
+
* @private
|
|
74
|
+
*/
|
|
75
|
+
this.__capacity = cap;
|
|
76
|
+
/**
|
|
77
|
+
* @type {number}
|
|
78
|
+
* @private
|
|
79
|
+
*/
|
|
80
|
+
this.__mask = cap - 1;
|
|
81
|
+
/**
|
|
82
|
+
* Right-shift amount that extracts log2(cap) high bits from a 32-bit hash.
|
|
83
|
+
* @type {number}
|
|
84
|
+
* @private
|
|
85
|
+
*/
|
|
86
|
+
this.__shift = Math.clz32(cap - 1);
|
|
87
|
+
/**
|
|
88
|
+
* @type {number}
|
|
89
|
+
* @private
|
|
90
|
+
*/
|
|
91
|
+
this.__grow_threshold = (cap * LOAD_FACTOR_NUMERATOR) >>> LOAD_FACTOR_SHIFT;
|
|
92
|
+
/**
|
|
93
|
+
* @type {number}
|
|
94
|
+
* @private
|
|
95
|
+
*/
|
|
96
|
+
this.__size = 0;
|
|
97
|
+
/**
|
|
98
|
+
* Packed (key+1, value) pairs. Length is 2 * capacity. Zero-initialized so every slot starts empty.
|
|
99
|
+
* @type {Uint32Array}
|
|
100
|
+
* @private
|
|
101
|
+
*/
|
|
102
|
+
this.__data = new Uint32Array(cap << 1);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
*
|
|
107
|
+
* @returns {number}
|
|
108
|
+
*/
|
|
109
|
+
get size() {
|
|
110
|
+
return this.__size;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
*
|
|
115
|
+
* @returns {number}
|
|
116
|
+
*/
|
|
117
|
+
get capacity() {
|
|
118
|
+
return this.__capacity;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
*
|
|
123
|
+
* @param {number} id
|
|
124
|
+
* @returns {number} value associated with `id`, or {@link UINT32_MAP_ABSENT} (-1) if not present.
|
|
125
|
+
*/
|
|
126
|
+
get(id) {
|
|
127
|
+
const data = this.__data;
|
|
128
|
+
const mask = this.__mask;
|
|
129
|
+
const shift = this.__shift;
|
|
130
|
+
|
|
131
|
+
const key_shifted = id + 1;
|
|
132
|
+
|
|
133
|
+
let slot = Math.imul(key_shifted, FIB_HASH_MULTIPLIER) >>> shift;
|
|
134
|
+
let dist = 0;
|
|
135
|
+
|
|
136
|
+
while (true) {
|
|
137
|
+
const slot2 = slot << 1;
|
|
138
|
+
const k = data[slot2];
|
|
139
|
+
|
|
140
|
+
if (k === 0) {
|
|
141
|
+
return UINT32_MAP_ABSENT;
|
|
142
|
+
}
|
|
143
|
+
if (k === key_shifted) {
|
|
144
|
+
return data[slot2 + 1];
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// Robin Hood early-exit: if our displacement exceeds the occupant's, we would have stolen this
|
|
148
|
+
// slot during insert — so the key cannot be further down the probe chain.
|
|
149
|
+
const slot_home = Math.imul(k, FIB_HASH_MULTIPLIER) >>> shift;
|
|
150
|
+
const slot_dist = (slot - slot_home) & mask;
|
|
151
|
+
if (dist > slot_dist) {
|
|
152
|
+
return UINT32_MAP_ABSENT;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
slot = (slot + 1) & mask;
|
|
156
|
+
dist++;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
*
|
|
162
|
+
* @param {number} id
|
|
163
|
+
* @returns {boolean}
|
|
164
|
+
*/
|
|
165
|
+
has(id) {
|
|
166
|
+
return this.get(id) !== UINT32_MAP_ABSENT;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
*
|
|
171
|
+
* @param {number} id
|
|
172
|
+
* @param {number} value
|
|
173
|
+
*/
|
|
174
|
+
set(id, value) {
|
|
175
|
+
// hot path — asserts commented per codebase convention. Pre-conditions:
|
|
176
|
+
// id must be a non-negative integer <= UINT32_MAX - 1
|
|
177
|
+
// value must be a non-negative integer (full uint32 range)
|
|
178
|
+
// assert.isNonNegativeInteger(id, 'id');
|
|
179
|
+
// assert.lessThanOrEqual(id, UINT32_MAX - 1, 'id must be <= (2^32 - 2)');
|
|
180
|
+
// assert.isNonNegativeInteger(value, 'value');
|
|
181
|
+
|
|
182
|
+
if (this.__size >= this.__grow_threshold) {
|
|
183
|
+
this.__resize(this.__capacity << 1);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
this.__insert_no_grow(id + 1, value);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Insert a (already key+1 shifted) entry assuming there is at least one empty slot. Performs Robin Hood
|
|
191
|
+
* swapping: when the new entry has been displaced further than the current occupant, swap them and
|
|
192
|
+
* continue placing the displaced occupant.
|
|
193
|
+
*
|
|
194
|
+
* @private
|
|
195
|
+
* @param {number} key_shifted
|
|
196
|
+
* @param {number} value
|
|
197
|
+
*/
|
|
198
|
+
__insert_no_grow(key_shifted, value) {
|
|
199
|
+
const data = this.__data;
|
|
200
|
+
const mask = this.__mask;
|
|
201
|
+
const shift = this.__shift;
|
|
202
|
+
|
|
203
|
+
let ks = key_shifted;
|
|
204
|
+
let v = value;
|
|
205
|
+
let slot = Math.imul(ks, FIB_HASH_MULTIPLIER) >>> shift;
|
|
206
|
+
let dist = 0;
|
|
207
|
+
|
|
208
|
+
while (true) {
|
|
209
|
+
const slot2 = slot << 1;
|
|
210
|
+
const k = data[slot2];
|
|
211
|
+
|
|
212
|
+
if (k === 0) {
|
|
213
|
+
data[slot2] = ks;
|
|
214
|
+
data[slot2 + 1] = v;
|
|
215
|
+
this.__size++;
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
if (k === ks) {
|
|
220
|
+
// existing entry — overwrite value, do not change size
|
|
221
|
+
data[slot2 + 1] = v;
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
const slot_home = Math.imul(k, FIB_HASH_MULTIPLIER) >>> shift;
|
|
226
|
+
const slot_dist = (slot - slot_home) & mask;
|
|
227
|
+
|
|
228
|
+
if (slot_dist < dist) {
|
|
229
|
+
// steal: occupant is closer to home than the entry we are carrying. Swap.
|
|
230
|
+
const tmp_k = k;
|
|
231
|
+
const tmp_v = data[slot2 + 1];
|
|
232
|
+
data[slot2] = ks;
|
|
233
|
+
data[slot2 + 1] = v;
|
|
234
|
+
ks = tmp_k;
|
|
235
|
+
v = tmp_v;
|
|
236
|
+
dist = slot_dist;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
slot = (slot + 1) & mask;
|
|
240
|
+
dist++;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
*
|
|
246
|
+
* @param {number} id
|
|
247
|
+
* @returns {boolean} true if the entry existed and was removed.
|
|
248
|
+
*/
|
|
249
|
+
delete(id) {
|
|
250
|
+
const data = this.__data;
|
|
251
|
+
const mask = this.__mask;
|
|
252
|
+
const shift = this.__shift;
|
|
253
|
+
|
|
254
|
+
const key_shifted = id + 1;
|
|
255
|
+
|
|
256
|
+
let slot = Math.imul(key_shifted, FIB_HASH_MULTIPLIER) >>> shift;
|
|
257
|
+
let dist = 0;
|
|
258
|
+
|
|
259
|
+
// locate the slot, applying the same Robin Hood early-exit as `get`
|
|
260
|
+
while (true) {
|
|
261
|
+
const slot2 = slot << 1;
|
|
262
|
+
const k = data[slot2];
|
|
263
|
+
|
|
264
|
+
if (k === 0) {
|
|
265
|
+
return false;
|
|
266
|
+
}
|
|
267
|
+
if (k === key_shifted) {
|
|
268
|
+
break;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
const slot_home = Math.imul(k, FIB_HASH_MULTIPLIER) >>> shift;
|
|
272
|
+
const slot_dist = (slot - slot_home) & mask;
|
|
273
|
+
if (dist > slot_dist) {
|
|
274
|
+
return false;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
slot = (slot + 1) & mask;
|
|
278
|
+
dist++;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
// backward-shift deletion: walk forward, pulling each displaced successor into the freed slot,
|
|
282
|
+
// until we hit an empty slot or an occupant already at its home.
|
|
283
|
+
while (true) {
|
|
284
|
+
const next = (slot + 1) & mask;
|
|
285
|
+
const next2 = next << 1;
|
|
286
|
+
const next_k = data[next2];
|
|
287
|
+
|
|
288
|
+
if (next_k === 0) {
|
|
289
|
+
break;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
const next_home = Math.imul(next_k, FIB_HASH_MULTIPLIER) >>> shift;
|
|
293
|
+
const next_dist = (next - next_home) & mask;
|
|
294
|
+
if (next_dist === 0) {
|
|
295
|
+
// successor is at its home — moving it back would break its lookup
|
|
296
|
+
break;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
const slot2 = slot << 1;
|
|
300
|
+
data[slot2] = next_k;
|
|
301
|
+
data[slot2 + 1] = data[next2 + 1];
|
|
302
|
+
slot = next;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
// clear the final emptied slot
|
|
306
|
+
data[slot << 1] = 0;
|
|
307
|
+
|
|
308
|
+
this.__size--;
|
|
309
|
+
return true;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
/**
|
|
313
|
+
* Remove all entries. Capacity is unchanged.
|
|
314
|
+
*/
|
|
315
|
+
clear() {
|
|
316
|
+
this.__data.fill(0);
|
|
317
|
+
this.__size = 0;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Grow the table and rehash every entry.
|
|
322
|
+
*
|
|
323
|
+
* @private
|
|
324
|
+
* @param {number} new_capacity power of two
|
|
325
|
+
*/
|
|
326
|
+
__resize(new_capacity) {
|
|
327
|
+
const old_data = this.__data;
|
|
328
|
+
const old_capacity = this.__capacity;
|
|
329
|
+
|
|
330
|
+
this.__capacity = new_capacity;
|
|
331
|
+
this.__mask = new_capacity - 1;
|
|
332
|
+
this.__shift = Math.clz32(new_capacity - 1);
|
|
333
|
+
this.__grow_threshold = (new_capacity * LOAD_FACTOR_NUMERATOR) >>> LOAD_FACTOR_SHIFT;
|
|
334
|
+
this.__data = new Uint32Array(new_capacity << 1);
|
|
335
|
+
this.__size = 0;
|
|
336
|
+
|
|
337
|
+
for (let i = 0; i < old_capacity; i++) {
|
|
338
|
+
const i2 = i << 1;
|
|
339
|
+
const k = old_data[i2];
|
|
340
|
+
if (k !== 0) {
|
|
341
|
+
this.__insert_no_grow(k, old_data[i2 + 1]);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Randomly re-orders items in-place
|
|
2
|
+
* Randomly re-orders items in-place using Fisher–Yates.
|
|
3
|
+
*
|
|
4
|
+
* Pass `length` when shuffling a prefix of a larger buffer (e.g. a scratch
|
|
5
|
+
* typed array sized for a worst-case but containing only a smaller active
|
|
6
|
+
* range). Elements beyond `length` are untouched. Default is `array.length`,
|
|
7
|
+
* which gives the natural "shuffle the whole thing" behaviour.
|
|
8
|
+
*
|
|
3
9
|
* @template T
|
|
4
10
|
* @param {function():number} random random number generator; can use Math.random. Must return a value between 0 and 1
|
|
5
|
-
* @param {T[]} array what to shuffle
|
|
11
|
+
* @param {T[]|TypedArray} array what to shuffle (mutated in place)
|
|
12
|
+
* @param {number} [length] how many leading entries of `array` to shuffle; defaults to `array.length`
|
|
6
13
|
*/
|
|
7
|
-
export function array_shuffle<T>(random: () => number, array:
|
|
14
|
+
export function array_shuffle<T>(random: () => number, array: any, length?: number): void;
|
|
8
15
|
//# sourceMappingURL=array_shuffle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array_shuffle.d.ts","sourceRoot":"","sources":["../../../../../src/core/collection/array/array_shuffle.js"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"array_shuffle.d.ts","sourceRoot":"","sources":["../../../../../src/core/collection/array/array_shuffle.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;GAYG;AACH,+CAJsB,MAAM,uBAEjB,MAAM,QAYhB"}
|
|
@@ -1,22 +1,27 @@
|
|
|
1
|
-
import { randomIntegerBetween } from "../../math/random/randomIntegerBetween.js";
|
|
2
|
-
import { array_swap_one } from "./array_swap_one.js";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Randomly re-orders items in-place
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
1
|
+
import { randomIntegerBetween } from "../../math/random/randomIntegerBetween.js";
|
|
2
|
+
import { array_swap_one } from "./array_swap_one.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Randomly re-orders items in-place using Fisher–Yates.
|
|
6
|
+
*
|
|
7
|
+
* Pass `length` when shuffling a prefix of a larger buffer (e.g. a scratch
|
|
8
|
+
* typed array sized for a worst-case but containing only a smaller active
|
|
9
|
+
* range). Elements beyond `length` are untouched. Default is `array.length`,
|
|
10
|
+
* which gives the natural "shuffle the whole thing" behaviour.
|
|
11
|
+
*
|
|
12
|
+
* @template T
|
|
13
|
+
* @param {function():number} random random number generator; can use Math.random. Must return a value between 0 and 1
|
|
14
|
+
* @param {T[]|TypedArray} array what to shuffle (mutated in place)
|
|
15
|
+
* @param {number} [length] how many leading entries of `array` to shuffle; defaults to `array.length`
|
|
16
|
+
*/
|
|
17
|
+
export function array_shuffle(random, array, length = array.length) {
|
|
18
|
+
for (let source_index = 0; source_index < length; ++source_index) {
|
|
19
|
+
const target_index = randomIntegerBetween(random, 0, length - (source_index + 1));
|
|
20
|
+
|
|
21
|
+
if (target_index === source_index) {
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
array_swap_one(array, source_index, target_index);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fibonacci heap implementation that stores uint32 ID along with a floating point score value, intended to be
|
|
3
|
+
* API-compatible with {@link Uint32Heap}.
|
|
4
|
+
*
|
|
5
|
+
* Storage is struct-of-arrays on top of a single {@link BinaryElementPool} — each "node" is a 32-byte
|
|
6
|
+
* record in a contiguous ArrayBuffer, and "node references" are uint32 handles rather than object pointers.
|
|
7
|
+
* This keeps all per-node state in continuous memory, avoiding the per-element allocation and pointer chasing
|
|
8
|
+
* of an object-graph implementation.
|
|
9
|
+
*
|
|
10
|
+
* Fibonacci heaps have theoretically excellent asymptotic bounds:
|
|
11
|
+
* - insert, find-min, decrease-key: amortized O(1)
|
|
12
|
+
* - extract-min, delete: amortized O(log n)
|
|
13
|
+
*
|
|
14
|
+
* In practice they often lose to a simple binary or 4-ary heap on graph-search workloads because of poor
|
|
15
|
+
* cache behavior; this layout closes most of that gap by removing the indirection. See Larkin, Sen & Tarjan
|
|
16
|
+
* (2014), "A Back-to-Basics Empirical Study of Priority Queues" (arXiv:1403.0252) for the empirical context.
|
|
17
|
+
*
|
|
18
|
+
* Reference: Cormen, Leiserson, Rivest, Stein, "Introduction to Algorithms", 3rd ed., chapter 19.
|
|
19
|
+
*
|
|
20
|
+
* @see Uint32Heap
|
|
21
|
+
* @see Uint32Heap4
|
|
22
|
+
*/
|
|
23
|
+
export class FibonacciHeap {
|
|
24
|
+
/**
|
|
25
|
+
*
|
|
26
|
+
* @param {number} [initial_capacity] reserves space for this many nodes up front. The pool grows on demand.
|
|
27
|
+
*/
|
|
28
|
+
constructor(initial_capacity?: number);
|
|
29
|
+
/**
|
|
30
|
+
* @type {BinaryElementPool}
|
|
31
|
+
* @private
|
|
32
|
+
*/
|
|
33
|
+
private __pool;
|
|
34
|
+
/**
|
|
35
|
+
* Handle of the node with the smallest key, or NULL_HANDLE if empty.
|
|
36
|
+
* @type {number}
|
|
37
|
+
* @private
|
|
38
|
+
*/
|
|
39
|
+
private __min;
|
|
40
|
+
/**
|
|
41
|
+
* Number of nodes currently in the heap.
|
|
42
|
+
* @type {number}
|
|
43
|
+
* @private
|
|
44
|
+
*/
|
|
45
|
+
private __size;
|
|
46
|
+
/**
|
|
47
|
+
* Id -> handle lookup, allows update_score / remove / contains / get_score in O(1) expected.
|
|
48
|
+
*
|
|
49
|
+
* Empirically (see the bench tests in FibonacciHeap.spec.js), V8's built-in Map beats a hand-rolled
|
|
50
|
+
* Uint32Array-backed Robin Hood hash table for this workload by 20-90 % on hot paths. Reason: every
|
|
51
|
+
* key and value here is SMI (ids and handles are both small), so V8 Map's native C++ SMI fast path
|
|
52
|
+
* never boxes; meanwhile a JS-side flat-array implementation pays per-probe Math.imul + bounds-checks
|
|
53
|
+
* that V8's compiled Map sidesteps. The Uint32Map primitive lives at core/collection/Uint32Map.js
|
|
54
|
+
* and is the right choice when keys/values exceed 2^30 (V8 Map boxes) or when delete churn is
|
|
55
|
+
* extreme (V8 Map tombstone-rots until rehash) — but not here.
|
|
56
|
+
*
|
|
57
|
+
* @type {Map<number, number>}
|
|
58
|
+
* @private
|
|
59
|
+
*/
|
|
60
|
+
private __handles;
|
|
61
|
+
/**
|
|
62
|
+
*
|
|
63
|
+
* @returns {number}
|
|
64
|
+
*/
|
|
65
|
+
get size(): number;
|
|
66
|
+
/**
|
|
67
|
+
* Node with the lowest score
|
|
68
|
+
* @returns {number}
|
|
69
|
+
*/
|
|
70
|
+
get top_id(): number;
|
|
71
|
+
/**
|
|
72
|
+
*
|
|
73
|
+
* @returns {boolean}
|
|
74
|
+
*/
|
|
75
|
+
is_empty(): boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Returns the score of the node with the lowest score
|
|
78
|
+
* @returns {number}
|
|
79
|
+
*/
|
|
80
|
+
peek_score(): number;
|
|
81
|
+
/**
|
|
82
|
+
* Returns the ID of the node with the lowest score
|
|
83
|
+
* @returns {number}
|
|
84
|
+
*/
|
|
85
|
+
peek_min(): number;
|
|
86
|
+
/**
|
|
87
|
+
* Splice `handle` (a single-element circular list) into the root list to the right of `__min`. The caller
|
|
88
|
+
* is responsible for setting parent and degree on `handle`.
|
|
89
|
+
*
|
|
90
|
+
* @private
|
|
91
|
+
* @param {number} handle
|
|
92
|
+
*/
|
|
93
|
+
private __root_insert;
|
|
94
|
+
/**
|
|
95
|
+
* Remove `handle` from its sibling list (root list or child list of some parent). Sibling pointers of
|
|
96
|
+
* `handle` are left dangling; the caller is expected to re-link it immediately.
|
|
97
|
+
*
|
|
98
|
+
* @private
|
|
99
|
+
* @param {number} handle
|
|
100
|
+
*/
|
|
101
|
+
private __unlink_from_siblings;
|
|
102
|
+
/**
|
|
103
|
+
*
|
|
104
|
+
* @param {number} id
|
|
105
|
+
* @param {number} score
|
|
106
|
+
*/
|
|
107
|
+
insert(id: number, score: number): void;
|
|
108
|
+
/**
|
|
109
|
+
* Removed and returns the ID of the node with the lowest score.
|
|
110
|
+
*
|
|
111
|
+
* @returns {number}
|
|
112
|
+
*/
|
|
113
|
+
pop_min(): number;
|
|
114
|
+
/**
|
|
115
|
+
* Merge trees of equal degree until every degree is unique among the roots. Sets `__min` to the true
|
|
116
|
+
* minimum.
|
|
117
|
+
*
|
|
118
|
+
* @private
|
|
119
|
+
*/
|
|
120
|
+
private __consolidate;
|
|
121
|
+
/**
|
|
122
|
+
* Make `y` (currently in the root list) a child of `x`.
|
|
123
|
+
*
|
|
124
|
+
* @private
|
|
125
|
+
* @param {number} y
|
|
126
|
+
* @param {number} x
|
|
127
|
+
*/
|
|
128
|
+
private __link;
|
|
129
|
+
/**
|
|
130
|
+
* Decrease the key of `handle` to `new_key`. `new_key` must be <= current key.
|
|
131
|
+
*
|
|
132
|
+
* @private
|
|
133
|
+
* @param {number} handle
|
|
134
|
+
* @param {number} new_key
|
|
135
|
+
*/
|
|
136
|
+
private __decrease_key;
|
|
137
|
+
/**
|
|
138
|
+
* Cut `x` from `y`'s child list and promote it to the root list.
|
|
139
|
+
*
|
|
140
|
+
* @private
|
|
141
|
+
* @param {number} x child being cut
|
|
142
|
+
* @param {number} y parent of x
|
|
143
|
+
*/
|
|
144
|
+
private __cut;
|
|
145
|
+
/**
|
|
146
|
+
* Walk up from `y`, cutting marked ancestors and marking unmarked ones.
|
|
147
|
+
*
|
|
148
|
+
* @private
|
|
149
|
+
* @param {number} y
|
|
150
|
+
*/
|
|
151
|
+
private __cascading_cut;
|
|
152
|
+
/**
|
|
153
|
+
* Delete the node referenced by `handle` by decreasing its key to -Infinity and popping the min.
|
|
154
|
+
*
|
|
155
|
+
* @private
|
|
156
|
+
* @param {number} handle
|
|
157
|
+
*/
|
|
158
|
+
private __delete_handle;
|
|
159
|
+
/**
|
|
160
|
+
*
|
|
161
|
+
* @param {number} id
|
|
162
|
+
* @returns {boolean}
|
|
163
|
+
*/
|
|
164
|
+
contains(id: number): boolean;
|
|
165
|
+
/**
|
|
166
|
+
*
|
|
167
|
+
* @param {number} id
|
|
168
|
+
* @returns {number} score of the element with the given id, NaN if not found
|
|
169
|
+
*/
|
|
170
|
+
get_score(id: number): number;
|
|
171
|
+
/**
|
|
172
|
+
*
|
|
173
|
+
* @param {number} id
|
|
174
|
+
* @param {number} score
|
|
175
|
+
*/
|
|
176
|
+
update_score(id: number, score: number): void;
|
|
177
|
+
/**
|
|
178
|
+
* Insert or update an element, if the element already exists, its score will be updated.
|
|
179
|
+
*
|
|
180
|
+
* @param {number} id
|
|
181
|
+
* @param {number} score
|
|
182
|
+
*/
|
|
183
|
+
insert_or_update(id: number, score: number): void;
|
|
184
|
+
/**
|
|
185
|
+
*
|
|
186
|
+
* @param {number} id
|
|
187
|
+
* @returns {boolean}
|
|
188
|
+
*/
|
|
189
|
+
remove(id: number): boolean;
|
|
190
|
+
/**
|
|
191
|
+
* Clear out all the data, heap will be made empty
|
|
192
|
+
*/
|
|
193
|
+
clear(): void;
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=FibonacciHeap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FibonacciHeap.d.ts","sourceRoot":"","sources":["../../../../../src/core/collection/heap/FibonacciHeap.js"],"names":[],"mappings":"AAwCA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH;IAEI;;;OAGG;IACH,+BAFW,MAAM,EAwChB;IAnCG;;;OAGG;IACH,eAAuE;IAEvE;;;;OAIG;IACH,cAAwB;IAExB;;;;OAIG;IACH,eAAe;IAEf;;;;;;;;;;;;;OAaG;IACH,kBAA0B;IAG9B;;;OAGG;IACH,mBAEC;IAED;;;OAGG;IACH,qBAKC;IAED;;;OAGG;IACH,YAFa,OAAO,CAInB;IAED;;;OAGG;IACH,cAFa,MAAM,CAOlB;IAED;;;OAGG;IACH,YAFa,MAAM,CAIlB;IAED;;;;;;OAMG;IACH,sBAyBC;IAED;;;;;;OAMG;IACH,+BASC;IAED;;;;OAIG;IACH,WAHW,MAAM,SACN,MAAM,QA4BhB;IAED;;;;OAIG;IACH,WAFa,MAAM,CAwDlB;IAED;;;;;OAKG;IACH,sBAwDC;IAED;;;;;;OAMG;IACH,eA4BC;IAED;;;;;;OAMG;IACH,uBAkBC;IAED;;;;;;OAMG;IACH,cA2BC;IAED;;;;;OAKG;IACH,wBAaC;IAED;;;;;OAKG;IACH,wBAGC;IAED;;;;OAIG;IACH,aAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;OAIG;IACH,cAHW,MAAM,GACJ,MAAM,CAQlB;IAED;;;;OAIG;IACH,iBAHW,MAAM,SACN,MAAM,QAsBhB;IAED;;;;;OAKG;IACH,qBAHW,MAAM,SACN,MAAM,QAQhB;IAED;;;;OAIG;IACH,WAHW,MAAM,GACJ,OAAO,CAYnB;IAED;;OAEG;IACH,cAKC;CACJ"}
|