@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
|
@@ -112,15 +112,31 @@ export function bt_mesh_face_decouple(
|
|
|
112
112
|
const v1 = mesh.edge_read_vertex1(e);
|
|
113
113
|
const v2 = mesh.edge_read_vertex2(e);
|
|
114
114
|
|
|
115
|
-
|
|
115
|
+
const v1_new = v_map.has(v1) ? v_map.get(v1) : v1;
|
|
116
|
+
const v2_new = v_map.has(v2) ? v_map.get(v2) : v2;
|
|
117
|
+
|
|
118
|
+
if (v1_new === v2_new && v1_new !== v1) {
|
|
119
|
+
// Both endpoints remap to the same vertex: this edge becomes a
|
|
120
|
+
// self-loop. Per the disk-cycle convention (see BinaryTopology.js
|
|
121
|
+
// __edge_pool comment) a self-loop occupies the v1 slot only.
|
|
122
|
+
// Detach from both old disks, update both vertex fields, then add
|
|
123
|
+
// once -- a second add would land on the v2 slot and corrupt v's
|
|
124
|
+
// disk cycle.
|
|
125
|
+
bt_disk_edge_remove(mesh, e, v1);
|
|
126
|
+
bt_disk_edge_remove(mesh, e, v2);
|
|
127
|
+
mesh.edge_write_vertex1(e, v1_new);
|
|
128
|
+
mesh.edge_write_vertex2(e, v2_new);
|
|
129
|
+
bt_disk_edge_add(mesh, e, v1_new);
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
if (v1_new !== v1) {
|
|
116
134
|
bt_disk_edge_remove(mesh, e, v1);
|
|
117
|
-
const v1_new = v_map.get(v1);
|
|
118
135
|
mesh.edge_write_vertex1(e, v1_new);
|
|
119
136
|
bt_disk_edge_add(mesh, e, v1_new);
|
|
120
137
|
}
|
|
121
|
-
if (
|
|
138
|
+
if (v2_new !== v2) {
|
|
122
139
|
bt_disk_edge_remove(mesh, e, v2);
|
|
123
|
-
const v2_new = v_map.get(v2);
|
|
124
140
|
mesh.edge_write_vertex2(e, v2_new);
|
|
125
141
|
bt_disk_edge_add(mesh, e, v2_new);
|
|
126
142
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bt_mesh_simplify.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/bt_mesh_simplify.js"],"names":[],"mappings":"AAqLA;;;;;;;;;;;;;;GAcG;AACH,0EAHW,MAAM,wBACN,IAAI,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"bt_mesh_simplify.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/bt_mesh_simplify.js"],"names":[],"mappings":"AAqLA;;;;;;;;;;;;;;GAcG;AACH,0EAHW,MAAM,wBACN,IAAI,MAAM,CAAC,QA6HrB"}
|
|
@@ -295,9 +295,11 @@ export function bt_mesh_simplify(
|
|
|
295
295
|
quadratics[pre_survivor].add(quadratics[pre_victim]);
|
|
296
296
|
quadratics[pre_victim] = null;
|
|
297
297
|
|
|
298
|
-
// Kill any direct parallel edges between survivor and victim
|
|
299
|
-
//
|
|
300
|
-
//
|
|
298
|
+
// Kill any direct parallel edges between survivor and victim up front.
|
|
299
|
+
// bt_vertex_replace can safely move them into the survivor as self-loops
|
|
300
|
+
// (cf. the disk-cycle convention in BinaryTopology.js __edge_pool), but
|
|
301
|
+
// their faces are geometrically degenerate -- killing them here keeps
|
|
302
|
+
// current_face_count accurate without a post-collapse rescan.
|
|
301
303
|
current_face_count -= bt_edge_kill_parallels(mesh, edge_id);
|
|
302
304
|
|
|
303
305
|
const survivor = bt_edge_collapse(mesh, edge_id, scratch_target, 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bt_edge_create.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_create.js"],"names":[],"mappings":"AA8DA;;;;;;GAMG;AACH,yDAJW,MAAM,MACN,MAAM,GACL,MAAM,
|
|
1
|
+
{"version":3,"file":"bt_edge_create.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_create.js"],"names":[],"mappings":"AA8DA;;;;;;GAMG;AACH,yDAJW,MAAM,MACN,MAAM,GACL,MAAM,CA+CjB"}
|
|
@@ -89,6 +89,15 @@ export function bt_edge_create(mesh, v0, v1) {
|
|
|
89
89
|
mesh.edge_write_v1_disk_prev(edge_id, edge_id);
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
+
if (v0 === v1) {
|
|
93
|
+
// Self-loop: by convention the edge occupies the v1 slot of v's disk
|
|
94
|
+
// cycle only; the v2 slot is unused. Running the v1 link pass below
|
|
95
|
+
// would re-enter the same slot a second time, scribbling on its own
|
|
96
|
+
// disk_next pointer (typically setting it to self), and corrupting v's
|
|
97
|
+
// cycle. See BinaryTopology.js __edge_pool comment for the convention.
|
|
98
|
+
return edge_id;
|
|
99
|
+
}
|
|
100
|
+
|
|
92
101
|
const first_v1_edge = mesh.vertex_read_edge(v1);
|
|
93
102
|
|
|
94
103
|
if (first_v1_edge !== NULL_POINTER) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bt_edge_get_or_create.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_get_or_create.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bt_edge_get_or_create.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_get_or_create.js"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,gEAJW,MAAM,MACN,MAAM,GACJ,MAAM,CAUlB"}
|
|
@@ -1,45 +1,21 @@
|
|
|
1
|
-
import { NULL_POINTER } from "../../BinaryTopology.js";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* @param {
|
|
9
|
-
* @param {number}
|
|
10
|
-
* @
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const edge_v2 = mesh.edge_read_vertex2(edge);
|
|
23
|
-
|
|
24
|
-
if (edge_v1 === v1 || edge_v2 === v1) {
|
|
25
|
-
// found edge that connects between v0 and v1
|
|
26
|
-
return edge;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
if (edge_v1 === v0) {
|
|
30
|
-
edge = mesh.edge_read_v1_disk_next(edge);
|
|
31
|
-
} else if (edge_v2 === v0) {
|
|
32
|
-
edge = mesh.edge_read_v2_disk_next(edge);
|
|
33
|
-
} else {
|
|
34
|
-
// invalid edge connection
|
|
35
|
-
throw new Error('Invalid edge, not connected to first vertex');
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
} while (edge !== first_edge);
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// if match is found - return the match, else create a new edge and assign
|
|
43
|
-
|
|
44
|
-
return bt_edge_create(mesh, v0, v1);
|
|
45
|
-
}
|
|
1
|
+
import { NULL_POINTER } from "../../BinaryTopology.js";
|
|
2
|
+
import { bt_edge_get } from "../../query/bt_edge_get.js";
|
|
3
|
+
import { bt_edge_create } from "./bt_edge_create.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Ensure an edge between two vertices
|
|
7
|
+
* NOTE: works without having to use a separate hash map, resulting in faster execution and smaller RAM requirement
|
|
8
|
+
* @param {BinaryTopology} mesh
|
|
9
|
+
* @param {number} v0
|
|
10
|
+
* @param {number} v1
|
|
11
|
+
* @returns {number} edge ID
|
|
12
|
+
*/
|
|
13
|
+
export function bt_edge_get_or_create(mesh, v0, v1) {
|
|
14
|
+
const existing = bt_edge_get(mesh, v0, v1);
|
|
15
|
+
|
|
16
|
+
if (existing !== NULL_POINTER) {
|
|
17
|
+
return existing;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return bt_edge_create(mesh, v0, v1);
|
|
21
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bt_edge_kill.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill.js"],"names":[],"mappings":"AAMA;;;GAGG;AACH,sDAFW,MAAM,
|
|
1
|
+
{"version":3,"file":"bt_edge_kill.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill.js"],"names":[],"mappings":"AAMA;;;GAGG;AACH,sDAFW,MAAM,QA0BhB"}
|
|
@@ -23,7 +23,13 @@ export function bt_edge_kill(mesh, e) {
|
|
|
23
23
|
const v2 = mesh.edge_read_vertex2(e);
|
|
24
24
|
|
|
25
25
|
bt_disk_edge_remove(mesh, e, v1);
|
|
26
|
-
|
|
26
|
+
if (v2 !== v1) {
|
|
27
|
+
// For self-loops the edge occupies a single slot in v's disk cycle
|
|
28
|
+
// (the v1 slot, per convention); the v2 slot is unused. Calling
|
|
29
|
+
// bt_disk_edge_remove again with the same vertex would be idempotent
|
|
30
|
+
// here, but the explicit guard documents the intent and saves a call.
|
|
31
|
+
bt_disk_edge_remove(mesh, e, v2);
|
|
32
|
+
}
|
|
27
33
|
|
|
28
34
|
bt_kill_only_edge(mesh, e);
|
|
29
35
|
}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Kill every edge that shares both endpoints with `keep_edge`, leaving `keep_edge`
|
|
3
|
-
* itself alive.
|
|
4
|
-
* {@link bt_vertex_replace} cannot produce a self-loop edge when a direct parallel
|
|
5
|
-
* exists.
|
|
3
|
+
* itself alive.
|
|
6
4
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
5
|
+
* Useful as a pre-pass before {@link bt_edge_collapse}: without it, each direct
|
|
6
|
+
* parallel survives {@link bt_vertex_replace} as a degenerate self-loop on the
|
|
7
|
+
* survivor (the disk cycle stays valid -- see the convention in
|
|
8
|
+
* BinaryTopology.js __edge_pool -- but the parallel's face is left allocated and
|
|
9
|
+
* geometrically degenerate). Running this pre-pass kills both the parallel and
|
|
10
|
+
* its face up front, keeping the post-collapse mesh clean and letting callers
|
|
11
|
+
* that track face counts decrement accurately without a rescan.
|
|
10
12
|
*
|
|
11
13
|
* @param {BinaryTopology} mesh
|
|
12
14
|
* @param {number} keep_edge Edge ID to preserve; its other-parallels are killed.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bt_edge_kill_parallels.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill_parallels.js"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"bt_edge_kill_parallels.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill_parallels.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AACH,wEAHW,MAAM,GACJ,MAAM,CAyElB"}
|
|
@@ -4,13 +4,15 @@ import { bt_edge_kill } from "./bt_edge_kill.js";
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Kill every edge that shares both endpoints with `keep_edge`, leaving `keep_edge`
|
|
7
|
-
* itself alive.
|
|
8
|
-
* {@link bt_vertex_replace} cannot produce a self-loop edge when a direct parallel
|
|
9
|
-
* exists.
|
|
7
|
+
* itself alive.
|
|
10
8
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
9
|
+
* Useful as a pre-pass before {@link bt_edge_collapse}: without it, each direct
|
|
10
|
+
* parallel survives {@link bt_vertex_replace} as a degenerate self-loop on the
|
|
11
|
+
* survivor (the disk cycle stays valid -- see the convention in
|
|
12
|
+
* BinaryTopology.js __edge_pool -- but the parallel's face is left allocated and
|
|
13
|
+
* geometrically degenerate). Running this pre-pass kills both the parallel and
|
|
14
|
+
* its face up front, keeping the post-collapse mesh clean and letting callers
|
|
15
|
+
* that track face counts decrement accurately without a rescan.
|
|
14
16
|
*
|
|
15
17
|
* @param {BinaryTopology} mesh
|
|
16
18
|
* @param {number} keep_edge Edge ID to preserve; its other-parallels are killed.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kill every edge whose endpoints are within `max_distance` of each other —
|
|
3
|
+
* including any pre-existing self-loops (v1 === v2). Adjacent faces are
|
|
4
|
+
* cascaded through {@link bt_edge_kill}, so a sliver triangle (one short
|
|
5
|
+
* edge, two longer ones) loses the short edge and its face here, and the
|
|
6
|
+
* other two edges are left orphan for the standard cleanup pass to remove.
|
|
7
|
+
*
|
|
8
|
+
* The intended pre-pass before {@link bt_merge_verts_by_distance}. The merge
|
|
9
|
+
* uses `bt_vertex_replace` internally, which produces a self-loop edge if
|
|
10
|
+
* the two vertices it's collapsing are directly edge-connected — and
|
|
11
|
+
* self-loops corrupt the disk cycle in ways that hang the downstream
|
|
12
|
+
* `bt_mesh_fuse_duplicate_edges` walker. Killing the short edges up front
|
|
13
|
+
* means the merge never sees a direct-edge pair, so it never produces a
|
|
14
|
+
* self-loop, so the fuse pass terminates cleanly.
|
|
15
|
+
*
|
|
16
|
+
* @param {BinaryTopology} mesh
|
|
17
|
+
* @param {number} [max_distance] inclusive endpoint distance; defaults match
|
|
18
|
+
* {@link bt_merge_verts_by_distance}
|
|
19
|
+
* @returns {number} number of edges killed
|
|
20
|
+
*/
|
|
21
|
+
export function bt_mesh_kill_short_edges(mesh: BinaryTopology, max_distance?: number): number;
|
|
22
|
+
//# sourceMappingURL=bt_mesh_kill_short_edges.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bt_mesh_kill_short_edges.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_kill_short_edges.js"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,8EAJW,MAAM,GAEJ,MAAM,CA+ClB"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { assert } from "../../../../../../../assert.js";
|
|
2
|
+
import { v3_distance_sqr } from "../../../../../../vec3/v3_distance_sqr.js";
|
|
3
|
+
import { bt_edge_kill } from "./bt_edge_kill.js";
|
|
4
|
+
|
|
5
|
+
const scratch_a = [0, 0, 0];
|
|
6
|
+
const scratch_b = [0, 0, 0];
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Kill every edge whose endpoints are within `max_distance` of each other —
|
|
10
|
+
* including any pre-existing self-loops (v1 === v2). Adjacent faces are
|
|
11
|
+
* cascaded through {@link bt_edge_kill}, so a sliver triangle (one short
|
|
12
|
+
* edge, two longer ones) loses the short edge and its face here, and the
|
|
13
|
+
* other two edges are left orphan for the standard cleanup pass to remove.
|
|
14
|
+
*
|
|
15
|
+
* The intended pre-pass before {@link bt_merge_verts_by_distance}. The merge
|
|
16
|
+
* uses `bt_vertex_replace` internally, which produces a self-loop edge if
|
|
17
|
+
* the two vertices it's collapsing are directly edge-connected — and
|
|
18
|
+
* self-loops corrupt the disk cycle in ways that hang the downstream
|
|
19
|
+
* `bt_mesh_fuse_duplicate_edges` walker. Killing the short edges up front
|
|
20
|
+
* means the merge never sees a direct-edge pair, so it never produces a
|
|
21
|
+
* self-loop, so the fuse pass terminates cleanly.
|
|
22
|
+
*
|
|
23
|
+
* @param {BinaryTopology} mesh
|
|
24
|
+
* @param {number} [max_distance] inclusive endpoint distance; defaults match
|
|
25
|
+
* {@link bt_merge_verts_by_distance}
|
|
26
|
+
* @returns {number} number of edges killed
|
|
27
|
+
*/
|
|
28
|
+
export function bt_mesh_kill_short_edges(mesh, max_distance = 0.0001) {
|
|
29
|
+
assert.defined(mesh, "mesh");
|
|
30
|
+
assert.greaterThan(max_distance, 0, "max_distance must be greater than 0");
|
|
31
|
+
|
|
32
|
+
const max_distance_sqr = max_distance * max_distance;
|
|
33
|
+
|
|
34
|
+
const edge_pool = mesh.edges;
|
|
35
|
+
const edge_count = edge_pool.size;
|
|
36
|
+
|
|
37
|
+
// Collect victims first, kill after — bt_edge_kill mutates disk cycles and
|
|
38
|
+
// face pools, so iterating the pool while mutating it is fragile.
|
|
39
|
+
const victims = [];
|
|
40
|
+
|
|
41
|
+
for (let e = 0; e < edge_count; e++) {
|
|
42
|
+
if (!edge_pool.is_allocated(e)) continue;
|
|
43
|
+
|
|
44
|
+
const v1 = mesh.edge_read_vertex1(e);
|
|
45
|
+
const v2 = mesh.edge_read_vertex2(e);
|
|
46
|
+
|
|
47
|
+
if (v1 === v2) {
|
|
48
|
+
victims.push(e);
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
mesh.vertex_read_coordinate(scratch_a, 0, v1);
|
|
53
|
+
mesh.vertex_read_coordinate(scratch_b, 0, v2);
|
|
54
|
+
|
|
55
|
+
const d2 = v3_distance_sqr(
|
|
56
|
+
scratch_a[0], scratch_a[1], scratch_a[2],
|
|
57
|
+
scratch_b[0], scratch_b[1], scratch_b[2],
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
if (d2 <= max_distance_sqr) {
|
|
61
|
+
victims.push(e);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
for (let i = 0; i < victims.length; i++) {
|
|
66
|
+
const e = victims[i];
|
|
67
|
+
if (edge_pool.is_allocated(e)) {
|
|
68
|
+
bt_edge_kill(mesh, e);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return victims.length;
|
|
73
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bt_vertex_replace.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_replace.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bt_vertex_replace.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_replace.js"],"names":[],"mappings":"AAOA;;;;;;;;;;GAUG;AACH,gEAHW,MAAM,eACN,MAAM,QA8JhB"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { assert } from "../../../../../../../assert.js";
|
|
2
2
|
import { NULL_POINTER } from "../../BinaryTopology.js";
|
|
3
|
+
import { bt_disk_edge_add } from "../bt_disk_edge_add.js";
|
|
4
|
+
import { bt_disk_edge_remove } from "../bt_disk_edge_remove.js";
|
|
3
5
|
|
|
4
6
|
const scratch_edges = new Uint32Array(1024);
|
|
5
7
|
|
|
@@ -69,7 +71,55 @@ export function bt_vertex_replace(
|
|
|
69
71
|
}
|
|
70
72
|
|
|
71
73
|
// --- Update Edge Vertices ---
|
|
72
|
-
|
|
74
|
+
// Three cases. Per the disk-cycle convention (see BinaryTopology.js
|
|
75
|
+
// __edge_pool comment), every edge occupies exactly one slot in each of
|
|
76
|
+
// its endpoints' cycles -- for self-loops that means one slot total, in
|
|
77
|
+
// the v1 slot of the unique endpoint's cycle.
|
|
78
|
+
//
|
|
79
|
+
// (a) Normal: e was attached to victim only. Move the victim endpoint
|
|
80
|
+
// onto replacement and splice e into replacement's cycle.
|
|
81
|
+
// (b) Direct parallel: e connects victim and replacement. Becomes a
|
|
82
|
+
// self-loop on replacement. e is already in replacement's disk on
|
|
83
|
+
// the OTHER side; remove it there, update the vertex, then re-add
|
|
84
|
+
// on the v1 side per convention.
|
|
85
|
+
// (c) Self-loop on victim: e was a self-loop on victim. Becomes a
|
|
86
|
+
// self-loop on replacement. Update BOTH vertex fields (the legacy
|
|
87
|
+
// single-write path would have left vertex2 = victim, dangling
|
|
88
|
+
// after bt_vert_kill(victim) runs upstream), then add to
|
|
89
|
+
// replacement's cycle from scratch.
|
|
90
|
+
const e_v1 = mesh.edge_read_vertex1(e);
|
|
91
|
+
const e_v2 = mesh.edge_read_vertex2(e);
|
|
92
|
+
const is_v1 = e_v1 === victim;
|
|
93
|
+
const other_endpoint = is_v1 ? e_v2 : e_v1;
|
|
94
|
+
|
|
95
|
+
if (other_endpoint === victim) {
|
|
96
|
+
// case (c): self-loop on victim -> self-loop on replacement
|
|
97
|
+
mesh.edge_write_vertex1(e, replacement);
|
|
98
|
+
mesh.edge_write_vertex2(e, replacement);
|
|
99
|
+
bt_disk_edge_add(mesh, e, replacement);
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
if (other_endpoint === replacement) {
|
|
104
|
+
// case (b): direct parallel becoming a self-loop on replacement.
|
|
105
|
+
// e is currently in replacement's disk on the side OPPOSITE the
|
|
106
|
+
// victim side; remove it there before rewriting the vertex slot.
|
|
107
|
+
bt_disk_edge_remove(mesh, e, replacement);
|
|
108
|
+
|
|
109
|
+
if (is_v1) {
|
|
110
|
+
mesh.edge_write_vertex1(e, replacement);
|
|
111
|
+
} else {
|
|
112
|
+
mesh.edge_write_vertex2(e, replacement);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// Now e is a self-loop; bt_disk_edge_add will write the v1 slot
|
|
116
|
+
// per the convention.
|
|
117
|
+
bt_disk_edge_add(mesh, e, replacement);
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// case (a): normal path. Move the victim endpoint onto replacement and
|
|
122
|
+
// splice e into replacement's cycle.
|
|
73
123
|
if (is_v1) {
|
|
74
124
|
mesh.edge_write_vertex1(e, replacement);
|
|
75
125
|
} else {
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Find an existing edge between two vertices
|
|
3
|
+
* NOTE: works without having to use a separate hash map, resulting in faster execution and smaller RAM requirement
|
|
4
|
+
* @param {BinaryTopology} mesh
|
|
5
|
+
* @param {number} v0
|
|
6
|
+
* @param {number} v1
|
|
7
|
+
* @returns {number} edge ID, or {@link NULL_POINTER} if no such edge exists
|
|
8
|
+
*/
|
|
9
|
+
export function bt_edge_get(mesh: BinaryTopology, v0: number, v1: number): number;
|
|
10
|
+
//# sourceMappingURL=bt_edge_get.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bt_edge_get.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/geom/3d/topology/struct/binary/query/bt_edge_get.js"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,sDAJW,MAAM,MACN,MAAM,GACJ,MAAM,CAiClB"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { NULL_POINTER } from "../BinaryTopology.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Find an existing edge between two vertices
|
|
5
|
+
* NOTE: works without having to use a separate hash map, resulting in faster execution and smaller RAM requirement
|
|
6
|
+
* @param {BinaryTopology} mesh
|
|
7
|
+
* @param {number} v0
|
|
8
|
+
* @param {number} v1
|
|
9
|
+
* @returns {number} edge ID, or {@link NULL_POINTER} if no such edge exists
|
|
10
|
+
*/
|
|
11
|
+
export function bt_edge_get(mesh, v0, v1) {
|
|
12
|
+
const first_edge = mesh.vertex_read_edge(v0);
|
|
13
|
+
|
|
14
|
+
if (first_edge === NULL_POINTER) {
|
|
15
|
+
return NULL_POINTER;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// iterate over all edges around the vertex
|
|
19
|
+
let edge = first_edge;
|
|
20
|
+
|
|
21
|
+
do {
|
|
22
|
+
const edge_v1 = mesh.edge_read_vertex1(edge);
|
|
23
|
+
const edge_v2 = mesh.edge_read_vertex2(edge);
|
|
24
|
+
|
|
25
|
+
if (edge_v1 === v1 || edge_v2 === v1) {
|
|
26
|
+
// found edge that connects between v0 and v1
|
|
27
|
+
return edge;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (edge_v1 === v0) {
|
|
31
|
+
edge = mesh.edge_read_v1_disk_next(edge);
|
|
32
|
+
} else if (edge_v2 === v0) {
|
|
33
|
+
edge = mesh.edge_read_v2_disk_next(edge);
|
|
34
|
+
} else {
|
|
35
|
+
// invalid edge connection
|
|
36
|
+
throw new Error('Invalid edge, not connected to first vertex');
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
} while (edge !== first_edge);
|
|
40
|
+
|
|
41
|
+
return NULL_POINTER;
|
|
42
|
+
}
|
package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sample interior Steiner points for the volume enclosed by a closed
|
|
3
|
+
* triangle surface, on a jittered axis-aligned grid sized by
|
|
4
|
+
* `cells_per_dim`. Points outside the surface are discarded; what remains
|
|
5
|
+
* is a Float32Array of (x, y, z) tuples that lies strictly inside the
|
|
6
|
+
* surface (modulo classification noise on near-surface samples).
|
|
7
|
+
*
|
|
8
|
+
* Intended as input to `compute_delaunay_tetrahedral_mesh` alongside the
|
|
9
|
+
* surface vertices, so the Delaunay tet mesh has interior detail rather
|
|
10
|
+
* than being made entirely of surface-bound tets. Without these Steiner
|
|
11
|
+
* points, every tet of a non-trivial volume straddles or touches the
|
|
12
|
+
* surface, blowing up centroid-classification discretization error in
|
|
13
|
+
* the carving step.
|
|
14
|
+
*
|
|
15
|
+
* Grid cells are scaled so the longest bounding-box axis gets
|
|
16
|
+
* `cells_per_dim` cells; other axes get a proportional share rounded to
|
|
17
|
+
* the nearest integer (minimum 1). Each cell contributes one candidate
|
|
18
|
+
* point at its center, perturbed by a deterministic seeded jitter of up
|
|
19
|
+
* to ±0.35 cell widths — enough to break Delaunay-pathological
|
|
20
|
+
* alignments without losing the grid's spatial uniformity.
|
|
21
|
+
*
|
|
22
|
+
* @param {BinaryTopology} mesh closed surface
|
|
23
|
+
* @param {number} cells_per_dim grid resolution along the longest bbox axis
|
|
24
|
+
* @param {number} [seed] seed for the jitter RNG; same seed → same points
|
|
25
|
+
* @returns {Float32Array} flat (x, y, z) interior point positions
|
|
26
|
+
*/
|
|
27
|
+
export function bt_mesh_sample_interior_grid_points(mesh: BinaryTopology, cells_per_dim: number, seed?: number): Float32Array;
|
|
28
|
+
//# sourceMappingURL=bt_mesh_sample_interior_grid_points.d.ts.map
|
package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bt_mesh_sample_interior_grid_points.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.js"],"names":[],"mappings":"AA4HA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,yFAJW,MAAM,SACN,MAAM,GACJ,YAAY,CA8ExB"}
|