@woosh/meep-engine 2.155.0 → 2.156.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.
Files changed (475) hide show
  1. package/README.md +1 -1
  2. package/build/bundle-worker-image-decoder.js +1 -1
  3. package/build/bundle-worker-terrain.js +1 -1
  4. package/editor/view/ecs/ComponentControlView.d.ts +0 -9
  5. package/editor/view/ecs/ComponentControlView.js +2 -98
  6. package/package.json +1 -1
  7. package/src/core/binary/32BitEncoder.js +1 -1
  8. package/src/core/binary/to_half_float_uint16.js +3 -3
  9. package/src/core/bvh2/bvh3/ebvh_build_hierarchy_radix.d.ts.map +1 -1
  10. package/src/core/bvh2/bvh3/ebvh_build_hierarchy_radix.js +275 -253
  11. package/src/core/cache/Cache.d.ts.map +1 -1
  12. package/src/core/cache/Cache.js +7 -0
  13. package/src/core/cache/FrequencySketch.d.ts.map +1 -1
  14. package/src/core/cache/FrequencySketch.js +8 -4
  15. package/src/core/clipboard/obtainClipBoard.d.ts +6 -0
  16. package/src/core/clipboard/obtainClipBoard.d.ts.map +1 -0
  17. package/src/core/clipboard/obtainClipBoard.js +29 -0
  18. package/src/core/clipboard/safeClipboardReadText.d.ts +6 -0
  19. package/src/core/clipboard/safeClipboardReadText.d.ts.map +1 -0
  20. package/src/core/clipboard/safeClipboardReadText.js +55 -0
  21. package/src/core/clipboard/safeClipboardWriteText.d.ts +8 -0
  22. package/src/core/clipboard/safeClipboardWriteText.d.ts.map +1 -0
  23. package/src/core/clipboard/safeClipboardWriteText.js +23 -0
  24. package/src/core/collection/array/array_quick_sort_by_lookup_map.js +1 -1
  25. package/src/core/collection/array/array_set_diff_sorting.d.ts.map +1 -1
  26. package/src/core/collection/array/array_set_diff_sorting.js +4 -1
  27. package/src/core/collection/array/array_shuffle.d.ts.map +1 -1
  28. package/src/core/collection/array/array_shuffle.js +30 -27
  29. package/src/core/collection/array/binarySearchLowIndex.d.ts.map +1 -1
  30. package/src/core/collection/array/binarySearchLowIndex.js +4 -3
  31. package/src/core/collection/array/typed/array_buffer_hash.js +1 -1
  32. package/src/core/collection/array/typed/is_typed_array_equals.d.ts.map +1 -1
  33. package/src/core/collection/array/typed/is_typed_array_equals.js +12 -2
  34. package/src/core/collection/heap/BinaryHeap.d.ts.map +1 -1
  35. package/src/core/collection/heap/BinaryHeap.js +12 -2
  36. package/src/core/collection/queue/Deque.d.ts.map +1 -1
  37. package/src/core/collection/queue/Deque.js +10 -8
  38. package/src/core/collection/table/RowFirstTable.d.ts.map +1 -1
  39. package/src/core/collection/table/RowFirstTable.js +4 -2
  40. package/src/core/collection/table/RowFirstTableSpec.js +2 -2
  41. package/src/core/color/operations/color_lerp.d.ts.map +1 -1
  42. package/src/core/color/operations/color_lerp.js +10 -3
  43. package/src/core/color/rgb2uint32.js +1 -1
  44. package/src/core/color/rgbe9995_to_rgb.js +1 -1
  45. package/src/core/function/objectsEqual.d.ts.map +1 -1
  46. package/src/core/function/objectsEqual.js +2 -1
  47. package/src/core/geom/2d/aabb/AABB2.d.ts.map +1 -1
  48. package/src/core/geom/2d/aabb/AABB2.js +12 -11
  49. package/src/core/geom/2d/convex-hull/convex_hull_jarvis_2d.d.ts.map +1 -1
  50. package/src/core/geom/2d/convex-hull/convex_hull_jarvis_2d.js +30 -4
  51. package/src/core/geom/2d/convex-hull/fixed_convex_hull_relaxation.d.ts.map +1 -1
  52. package/src/core/geom/2d/convex-hull/fixed_convex_hull_relaxation.js +6 -2
  53. package/src/core/geom/2d/hash-grid/SpatialHashGrid.d.ts.map +1 -1
  54. package/src/core/geom/2d/hash-grid/SpatialHashGrid.js +388 -386
  55. package/src/core/geom/2d/hash-grid/shg_query_elements_line.d.ts.map +1 -1
  56. package/src/core/geom/2d/hash-grid/shg_query_elements_line.js +8 -3
  57. package/src/core/geom/2d/quad-tree/QuadTreeDatum.d.ts.map +1 -1
  58. package/src/core/geom/2d/quad-tree/QuadTreeDatum.js +9 -1
  59. package/src/core/geom/2d/quad-tree/qt_query_data_nearest_to_point.d.ts +3 -1
  60. package/src/core/geom/2d/quad-tree/qt_query_data_nearest_to_point.d.ts.map +1 -1
  61. package/src/core/geom/2d/quad-tree/qt_query_data_nearest_to_point.js +3 -1
  62. package/src/core/geom/2d/quad-tree-binary/QuadTree.js +714 -714
  63. package/src/core/geom/2d/r-tree/StaticR2Tree.d.ts.map +1 -1
  64. package/src/core/geom/2d/r-tree/StaticR2Tree.js +5 -4
  65. package/src/core/geom/3d/aabb/aabb3_detailed_volume_intersection.d.ts.map +1 -1
  66. package/src/core/geom/3d/aabb/aabb3_detailed_volume_intersection.js +33 -29
  67. package/src/core/geom/3d/aabb/aabb3_near_distance_to_intersection_ray_segment.d.ts.map +1 -1
  68. package/src/core/geom/3d/aabb/aabb3_near_distance_to_intersection_ray_segment.js +3 -1
  69. package/src/core/geom/3d/aabb/aabb3_signed_distance_to_aabb3.d.ts.map +1 -1
  70. package/src/core/geom/3d/aabb/aabb3_signed_distance_to_aabb3.js +10 -7
  71. package/src/core/geom/3d/aabb/aabb3_transformed_compute_plane_side.d.ts.map +1 -1
  72. package/src/core/geom/3d/aabb/aabb3_transformed_compute_plane_side.js +30 -9
  73. package/src/core/geom/3d/aabb/compute_aabb_from_points.js +3 -3
  74. package/src/core/geom/3d/box/box3_raycast.d.ts +37 -0
  75. package/src/core/geom/3d/box/box3_raycast.d.ts.map +1 -0
  76. package/src/core/geom/3d/box/box3_raycast.js +81 -0
  77. package/src/core/geom/3d/capsule/capsule_raycast.d.ts +35 -0
  78. package/src/core/geom/3d/capsule/capsule_raycast.d.ts.map +1 -0
  79. package/src/core/geom/3d/capsule/capsule_raycast.js +93 -0
  80. package/src/core/geom/3d/cone/compute_bounding_cone_of_2_cones.d.ts.map +1 -1
  81. package/src/core/geom/3d/cone/compute_bounding_cone_of_2_cones.js +4 -0
  82. package/src/core/geom/3d/frustum/frustum3_computeNearestPointToPoint.js +1 -1
  83. package/src/core/geom/3d/line/line3_compute_segment_point_distance_eikonal.d.ts.map +1 -1
  84. package/src/core/geom/3d/line/line3_compute_segment_point_distance_eikonal.js +3 -2
  85. package/src/core/geom/3d/mat4/decompose_matrix_4_array.d.ts.map +1 -1
  86. package/src/core/geom/3d/mat4/decompose_matrix_4_array.js +12 -2
  87. package/src/core/geom/3d/mat4/eulerAnglesFromMatrix.js +2 -2
  88. package/src/core/geom/3d/mat4/m4_multiply_alphatensor.d.ts +1 -1
  89. package/src/core/geom/3d/mat4/m4_multiply_alphatensor.d.ts.map +1 -1
  90. package/src/core/geom/3d/mat4/m4_multiply_alphatensor.js +19 -13
  91. package/src/core/geom/3d/octahedra/octahedral_direction_to_uv.d.ts.map +1 -1
  92. package/src/core/geom/3d/octahedra/octahedral_direction_to_uv.js +3 -2
  93. package/src/core/geom/3d/plane/plane3_compute_plane_intersection.js +3 -2
  94. package/src/core/geom/3d/shape/MeshShape3D.d.ts.map +1 -1
  95. package/src/core/geom/3d/shape/MeshShape3D.js +7 -0
  96. package/src/core/geom/3d/shape/UnionShape3D.d.ts.map +1 -1
  97. package/src/core/geom/3d/shape/UnionShape3D.js +3 -2
  98. package/src/core/geom/3d/shape/util/shape3d_voxelize_to_grid.d.ts.map +1 -1
  99. package/src/core/geom/3d/shape/util/shape3d_voxelize_to_grid.js +153 -148
  100. package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.d.ts.map +1 -1
  101. package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.js +7 -0
  102. package/src/core/geom/3d/sphere/harmonics/sh3_sample_by_direction.d.ts.map +1 -1
  103. package/src/core/geom/3d/sphere/harmonics/sh3_sample_by_direction.js +13 -10
  104. package/src/core/geom/3d/sphere/sphere_projected_sphere_radius_sqr.d.ts +1 -1
  105. package/src/core/geom/3d/sphere/sphere_projected_sphere_radius_sqr.js +2 -2
  106. package/src/core/geom/3d/sphere/sphere_raycast.d.ts +33 -0
  107. package/src/core/geom/3d/sphere/sphere_raycast.d.ts.map +1 -0
  108. package/src/core/geom/3d/sphere/sphere_raycast.js +47 -0
  109. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_tet_get_neighbours.d.ts +24 -0
  110. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_tet_get_neighbours.d.ts.map +1 -0
  111. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_tet_get_neighbours.js +39 -0
  112. package/src/core/geom/3d/tetrahedra/triangle/trace_triangular_depth_map.d.ts.map +1 -1
  113. package/src/core/geom/3d/tetrahedra/triangle/trace_triangular_depth_map.js +4 -2
  114. package/src/core/geom/3d/topology/bounds/computeTriangleClusterNormalBoundingCone.js +3 -3
  115. package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.js +1 -1
  116. package/src/core/geom/3d/topology/tm_vertex_compute_normal.d.ts.map +1 -1
  117. package/src/core/geom/3d/topology/tm_vertex_compute_normal.js +4 -2
  118. package/src/core/geom/3d/util/make_justified_point_grid.d.ts.map +1 -1
  119. package/src/core/geom/3d/util/make_justified_point_grid.js +18 -10
  120. package/src/core/geom/ConicRay.d.ts.map +1 -1
  121. package/src/core/geom/ConicRay.js +11 -13
  122. package/src/core/geom/packing/max-rect/removeRedundantBoxes.d.ts.map +1 -1
  123. package/src/core/geom/packing/max-rect/removeRedundantBoxes.js +19 -4
  124. package/src/core/geom/vec3/v3_orthonormal_matrix_from_normal.d.ts.map +1 -0
  125. package/src/{engine/graphics/sh3/path_tracer/sampling → core/geom/vec3}/v3_orthonormal_matrix_from_normal.js +1 -1
  126. package/src/core/graph/coloring/colorizeGraph.js +2 -2
  127. package/src/core/graph/csr/CSRGraph.d.ts.map +1 -1
  128. package/src/core/graph/csr/CSRGraph.js +325 -319
  129. package/src/core/graph/layout/CircleLayout.d.ts.map +1 -1
  130. package/src/core/graph/layout/CircleLayout.js +8 -6
  131. package/src/core/graph/metis/native/refine/compute_kway_params.d.ts.map +1 -1
  132. package/src/core/graph/metis/native/refine/compute_kway_params.js +139 -138
  133. package/src/core/graph/mn_graph_coarsen.d.ts.map +1 -1
  134. package/src/core/graph/mn_graph_coarsen.js +4 -2
  135. package/src/core/graph/v2/NodeContainer.js +7 -7
  136. package/src/core/localization/LocalizationEngine.js +1 -1
  137. package/src/core/math/bell_membership_function.d.ts.map +1 -1
  138. package/src/core/math/bell_membership_function.js +3 -1
  139. package/src/core/math/complex/complex_add.d.ts +4 -4
  140. package/src/core/math/complex/complex_add.d.ts.map +1 -1
  141. package/src/core/math/complex/complex_add.js +3 -3
  142. package/src/core/math/complex/complex_div.d.ts +4 -4
  143. package/src/core/math/complex/complex_div.d.ts.map +1 -1
  144. package/src/core/math/complex/complex_div.js +3 -3
  145. package/src/core/math/complex/complex_mul.d.ts +4 -4
  146. package/src/core/math/complex/complex_mul.d.ts.map +1 -1
  147. package/src/core/math/complex/complex_mul.js +3 -3
  148. package/src/core/math/complex/complex_sub.d.ts +4 -4
  149. package/src/core/math/complex/complex_sub.d.ts.map +1 -1
  150. package/src/core/math/complex/complex_sub.js +3 -3
  151. package/src/core/math/idct_1d.d.ts +4 -4
  152. package/src/core/math/idct_1d.d.ts.map +1 -1
  153. package/src/core/math/idct_1d.js +3 -3
  154. package/src/core/math/noise/create_simplex_noise_2d.d.ts.map +1 -1
  155. package/src/core/math/noise/create_simplex_noise_2d.js +4 -2
  156. package/src/core/math/noise/sdnoise.d.ts.map +1 -1
  157. package/src/core/math/noise/sdnoise.js +12 -9
  158. package/src/core/math/physics/mie/compute_bhmie_optical_properties.d.ts.map +1 -1
  159. package/src/core/math/physics/mie/compute_bhmie_optical_properties.js +94 -50
  160. package/src/core/math/physics/mie/lorenz_mie_coefs.d.ts +3 -6
  161. package/src/core/math/physics/mie/lorenz_mie_coefs.d.ts.map +1 -1
  162. package/src/core/math/physics/mie/lorenz_mie_coefs.js +180 -157
  163. package/src/core/math/physics/mie/mie_ab_to_optical_properties.d.ts +3 -4
  164. package/src/core/math/physics/mie/mie_ab_to_optical_properties.d.ts.map +1 -1
  165. package/src/core/math/physics/mie/mie_ab_to_optical_properties.js +47 -21
  166. package/src/core/math/random/randomIntegerBetween.d.ts.map +1 -1
  167. package/src/core/math/random/randomIntegerBetween.js +4 -1
  168. package/src/core/math/solveCubic.d.ts.map +1 -1
  169. package/src/core/math/solveCubic.js +95 -82
  170. package/src/core/math/spline/computeCatmullRomSplineUniformDistance.d.ts.map +1 -1
  171. package/src/core/math/spline/computeCatmullRomSplineUniformDistance.js +13 -0
  172. package/src/core/math/statistics/softmax.js +1 -1
  173. package/src/core/model/node-graph/visual/NodeGraphVisualData.d.ts +1 -0
  174. package/src/core/model/node-graph/visual/NodeGraphVisualData.d.ts.map +1 -1
  175. package/src/core/model/node-graph/visual/NodeGraphVisualData.js +2 -1
  176. package/src/core/model/node-graph/visual/NodeVisualData.js +1 -1
  177. package/src/core/model/object/ImmutableObjectPool.d.ts +7 -0
  178. package/src/core/model/object/ImmutableObjectPool.d.ts.map +1 -1
  179. package/src/core/model/object/ImmutableObjectPool.js +20 -10
  180. package/src/core/model/reactive/evaluation/MultiPredicateEvaluator.d.ts.map +1 -1
  181. package/src/core/model/reactive/evaluation/MultiPredicateEvaluator.js +39 -2
  182. package/src/core/model/reactive/model/terminal/ReactiveReference.d.ts.map +1 -1
  183. package/src/core/model/reactive/model/terminal/ReactiveReference.js +2 -0
  184. package/src/core/parser/simple/readHexToken.d.ts.map +1 -1
  185. package/src/core/parser/simple/readHexToken.js +6 -0
  186. package/src/core/primitives/numbers/number_pretty_print.d.ts.map +1 -1
  187. package/src/core/primitives/numbers/number_pretty_print.js +4 -1
  188. package/src/core/primitives/strings/string_jaro_winkler.js +1 -1
  189. package/src/core/process/CompositeProcess.js +1 -1
  190. package/src/core/process/action/AsynchronousDelayAction.d.ts.map +1 -1
  191. package/src/core/process/action/AsynchronousDelayAction.js +3 -0
  192. package/src/core/process/executor/ConcurrentExecutor.d.ts.map +1 -1
  193. package/src/core/process/executor/ConcurrentExecutor.js +3 -2
  194. package/src/core/process/task/util/randomCountTask.d.ts.map +1 -1
  195. package/src/core/process/task/util/randomCountTask.js +3 -1
  196. package/src/core/process/undo/ActionProcessor.d.ts.map +1 -1
  197. package/src/core/process/undo/ActionProcessor.js +5 -3
  198. package/src/core/process/worker/WorkerBuilder.js +3 -3
  199. package/src/engine/animation/curve/AnimationCurve.d.ts.map +1 -1
  200. package/src/engine/animation/curve/AnimationCurve.js +4 -2
  201. package/src/engine/control/first-person/DESIGN.md +1 -1
  202. package/src/engine/control/first-person/FirstPersonMotionPhase.d.ts +55 -0
  203. package/src/engine/control/first-person/FirstPersonMotionPhase.d.ts.map +1 -0
  204. package/src/engine/control/first-person/FirstPersonMotionPhase.js +134 -0
  205. package/src/engine/control/first-person/FirstPersonPlayerController.d.ts +23 -2
  206. package/src/engine/control/first-person/FirstPersonPlayerController.d.ts.map +1 -1
  207. package/src/engine/control/first-person/FirstPersonPlayerController.js +1 -1
  208. package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts +168 -0
  209. package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts.map +1 -1
  210. package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.js +115 -0
  211. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts +71 -0
  212. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
  213. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +255 -55
  214. package/src/engine/control/first-person/abilities/LedgeGrab.d.ts +82 -43
  215. package/src/engine/control/first-person/abilities/LedgeGrab.d.ts.map +1 -1
  216. package/src/engine/control/first-person/abilities/LedgeGrab.js +405 -213
  217. package/src/engine/control/first-person/abilities/Mantle.d.ts +6 -0
  218. package/src/engine/control/first-person/abilities/Mantle.d.ts.map +1 -1
  219. package/src/engine/control/first-person/abilities/Mantle.js +104 -45
  220. package/src/engine/control/first-person/abilities/ScrambleUp.d.ts +61 -0
  221. package/src/engine/control/first-person/abilities/ScrambleUp.d.ts.map +1 -0
  222. package/src/engine/control/first-person/abilities/ScrambleUp.js +182 -0
  223. package/src/engine/control/first-person/math/jumpDynamics.d.ts +84 -0
  224. package/src/engine/control/first-person/math/jumpDynamics.d.ts.map +1 -0
  225. package/src/engine/control/first-person/math/jumpDynamics.js +108 -0
  226. package/src/engine/control/first-person/prototype_first_person_controller.js +45 -1
  227. package/src/engine/graphics/camera/testClippingPlaneComputation.js +1 -1
  228. package/src/engine/graphics/ecs/path/tube/prototypeAnimatedPathMask.js +1 -1
  229. package/src/engine/graphics/particles/particular/engine/utils/volume/prototypeParticleVolume.js +1 -1
  230. package/src/engine/graphics/render/buffer/buffers/prototypeNormalFrameBuffer.js +1 -1
  231. package/src/engine/graphics/render/forward_plus/plugin/ptototypeFPPlugin.js +1 -1
  232. package/src/engine/graphics/render/visibility/hiz/prototypeHiZ.js +1 -1
  233. package/src/engine/graphics/sh3/path_tracer/texture/sample_material.js +1 -1
  234. package/src/engine/graphics/shadows/testShadowMapRendering.js +1 -1
  235. package/src/engine/physics/CONSTRAINT_SOLVER_BENCH_LOG.md +208 -0
  236. package/src/engine/physics/CONSTRAINT_SOLVER_IMPROVEMENTS_PLAN.md +364 -0
  237. package/src/engine/physics/PLAN.md +6 -5
  238. package/src/engine/physics/constraint/solve_constraints.d.ts +4 -1
  239. package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
  240. package/src/engine/physics/constraint/solve_constraints.js +147 -33
  241. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
  242. package/src/engine/physics/ecs/PhysicsSystem.js +1750 -1747
  243. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +3 -3
  244. package/src/engine/physics/gjk/gjk_epa_penetration.d.ts.map +1 -1
  245. package/src/engine/physics/gjk/gjk_epa_penetration.js +5 -9
  246. package/src/engine/physics/narrowphase/convex_convex_manifold.d.ts.map +1 -1
  247. package/src/engine/physics/narrowphase/convex_convex_manifold.js +22 -25
  248. package/src/engine/physics/narrowphase/convex_decomposition.d.ts +32 -13
  249. package/src/engine/physics/narrowphase/convex_decomposition.d.ts.map +1 -1
  250. package/src/engine/physics/narrowphase/convex_decomposition.js +61 -65
  251. package/src/engine/physics/narrowphase/mesh_convex_hull.d.ts.map +1 -1
  252. package/src/engine/physics/narrowphase/mesh_convex_hull.js +13 -8
  253. package/src/engine/physics/narrowphase/refine_ray_concave.d.ts.map +1 -1
  254. package/src/engine/physics/narrowphase/refine_ray_concave.js +5 -3
  255. package/src/engine/physics/narrowphase/refine_ray_hit.d.ts.map +1 -1
  256. package/src/engine/physics/narrowphase/refine_ray_hit.js +81 -78
  257. package/src/engine/sound/SoundEngine.d.ts.map +1 -1
  258. package/src/engine/sound/SoundEngine.js +28 -0
  259. package/src/engine/sound/dB2Volume.d.ts +1 -1
  260. package/src/engine/sound/dB2Volume.d.ts.map +1 -1
  261. package/src/engine/sound/dB2Volume.js +1 -1
  262. package/src/engine/sound/ecs/SoundController.d.ts +4 -0
  263. package/src/engine/sound/ecs/SoundController.d.ts.map +1 -1
  264. package/src/engine/sound/ecs/SoundController.js +4 -0
  265. package/src/engine/sound/ecs/SoundControllerSystem.d.ts +5 -0
  266. package/src/engine/sound/ecs/SoundControllerSystem.d.ts.map +1 -1
  267. package/src/engine/sound/ecs/SoundControllerSystem.js +5 -0
  268. package/src/engine/sound/ecs/audio/AudioEmitter.d.ts +69 -0
  269. package/src/engine/sound/ecs/audio/AudioEmitter.d.ts.map +1 -0
  270. package/src/engine/sound/ecs/audio/AudioEmitter.js +83 -0
  271. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts +97 -0
  272. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -0
  273. package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +238 -0
  274. package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts +90 -0
  275. package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts.map +1 -0
  276. package/src/engine/sound/ecs/audio/LiveEmitterSet.js +324 -0
  277. package/src/engine/sound/ecs/audio/SpatialAudioIndex.d.ts +59 -0
  278. package/src/engine/sound/ecs/audio/SpatialAudioIndex.d.ts.map +1 -0
  279. package/src/engine/sound/ecs/audio/SpatialAudioIndex.js +140 -0
  280. package/src/engine/sound/ecs/emitter/SoundEmitter.d.ts +16 -65
  281. package/src/engine/sound/ecs/emitter/SoundEmitter.d.ts.map +1 -1
  282. package/src/engine/sound/ecs/emitter/SoundEmitter.js +19 -224
  283. package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.d.ts +26 -29
  284. package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.d.ts.map +1 -1
  285. package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.js +168 -135
  286. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.d.ts +36 -59
  287. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.d.ts.map +1 -1
  288. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.js +154 -390
  289. package/src/engine/sound/ecs/emitter/SoundTrack.d.ts +20 -23
  290. package/src/engine/sound/ecs/emitter/SoundTrack.d.ts.map +1 -1
  291. package/src/engine/sound/ecs/emitter/SoundTrack.js +34 -152
  292. package/src/engine/sound/sopra/IMPLEMENTATION_PLAN.md +993 -0
  293. package/src/engine/sound/sopra/README.md +643 -7
  294. package/src/engine/sound/sopra/SopraEngine.d.ts +229 -0
  295. package/src/engine/sound/sopra/SopraEngine.d.ts.map +1 -0
  296. package/src/engine/sound/sopra/SopraEngine.js +423 -0
  297. package/src/engine/sound/sopra/asset/AssetManagerBufferProvider.d.ts +26 -0
  298. package/src/engine/sound/sopra/asset/AssetManagerBufferProvider.d.ts.map +1 -0
  299. package/src/engine/sound/sopra/asset/AssetManagerBufferProvider.js +71 -0
  300. package/src/engine/sound/sopra/asset/BufferProvider.d.ts +24 -0
  301. package/src/engine/sound/sopra/asset/BufferProvider.d.ts.map +1 -0
  302. package/src/engine/sound/sopra/asset/BufferProvider.js +29 -0
  303. package/src/engine/sound/sopra/asset/StubBufferProvider.d.ts +31 -0
  304. package/src/engine/sound/sopra/asset/StubBufferProvider.d.ts.map +1 -0
  305. package/src/engine/sound/sopra/asset/StubBufferProvider.js +58 -0
  306. package/src/engine/sound/sopra/definition/BusDefinition.d.ts +83 -0
  307. package/src/engine/sound/sopra/definition/BusDefinition.d.ts.map +1 -0
  308. package/src/engine/sound/sopra/definition/BusDefinition.js +142 -0
  309. package/src/engine/sound/sopra/definition/BusDefinitionSerializationAdapter.d.ts +17 -0
  310. package/src/engine/sound/sopra/definition/BusDefinitionSerializationAdapter.d.ts.map +1 -0
  311. package/src/engine/sound/sopra/definition/BusDefinitionSerializationAdapter.js +54 -0
  312. package/src/engine/sound/sopra/definition/DuckingRule.d.ts +71 -0
  313. package/src/engine/sound/sopra/definition/DuckingRule.d.ts.map +1 -0
  314. package/src/engine/sound/sopra/definition/DuckingRule.js +106 -0
  315. package/src/engine/sound/sopra/definition/DuckingRuleSerializationAdapter.d.ts +18 -0
  316. package/src/engine/sound/sopra/definition/DuckingRuleSerializationAdapter.d.ts.map +1 -0
  317. package/src/engine/sound/sopra/definition/DuckingRuleSerializationAdapter.js +31 -0
  318. package/src/engine/sound/sopra/definition/EventDescription.d.ts +132 -0
  319. package/src/engine/sound/sopra/definition/EventDescription.d.ts.map +1 -0
  320. package/src/engine/sound/sopra/definition/EventDescription.js +259 -0
  321. package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.d.ts +17 -0
  322. package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.d.ts.map +1 -0
  323. package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.js +71 -0
  324. package/src/engine/sound/sopra/definition/MixerSnapshot.d.ts +51 -0
  325. package/src/engine/sound/sopra/definition/MixerSnapshot.d.ts.map +1 -0
  326. package/src/engine/sound/sopra/definition/MixerSnapshot.js +83 -0
  327. package/src/engine/sound/sopra/definition/MixerSnapshotSerializationAdapter.d.ts +18 -0
  328. package/src/engine/sound/sopra/definition/MixerSnapshotSerializationAdapter.d.ts.map +1 -0
  329. package/src/engine/sound/sopra/definition/MixerSnapshotSerializationAdapter.js +39 -0
  330. package/src/engine/sound/sopra/definition/ParameterDefinition.d.ts +72 -0
  331. package/src/engine/sound/sopra/definition/ParameterDefinition.d.ts.map +1 -0
  332. package/src/engine/sound/sopra/definition/ParameterDefinition.js +117 -0
  333. package/src/engine/sound/sopra/definition/ParameterDefinitionSerializationAdapter.d.ts +18 -0
  334. package/src/engine/sound/sopra/definition/ParameterDefinitionSerializationAdapter.d.ts.map +1 -0
  335. package/src/engine/sound/sopra/definition/ParameterDefinitionSerializationAdapter.js +31 -0
  336. package/src/engine/sound/sopra/definition/SopraPanningModel.d.ts +14 -0
  337. package/src/engine/sound/sopra/definition/SopraPanningModel.d.ts.map +1 -0
  338. package/src/engine/sound/sopra/definition/SopraPanningModel.js +20 -0
  339. package/src/engine/sound/sopra/definition/VoiceStealMode.d.ts +10 -0
  340. package/src/engine/sound/sopra/definition/VoiceStealMode.d.ts.map +1 -0
  341. package/src/engine/sound/sopra/definition/VoiceStealMode.js +18 -0
  342. package/src/engine/sound/sopra/definition/clip/AbstractAudioClip.d.ts +93 -0
  343. package/src/engine/sound/sopra/definition/clip/AbstractAudioClip.d.ts.map +1 -0
  344. package/src/engine/sound/sopra/definition/clip/AbstractAudioClip.js +109 -0
  345. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.d.ts +80 -0
  346. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.d.ts.map +1 -0
  347. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.js +181 -0
  348. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClipSerializationAdapter.d.ts +17 -0
  349. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClipSerializationAdapter.d.ts.map +1 -0
  350. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClipSerializationAdapter.js +74 -0
  351. package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.d.ts +34 -0
  352. package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.d.ts.map +1 -0
  353. package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.js +100 -0
  354. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts +101 -0
  355. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts.map +1 -0
  356. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.js +230 -0
  357. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClipSerializationAdapter.d.ts +17 -0
  358. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClipSerializationAdapter.d.ts.map +1 -0
  359. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClipSerializationAdapter.js +54 -0
  360. package/src/engine/sound/sopra/definition/clip/SampleAudioClip.d.ts +103 -0
  361. package/src/engine/sound/sopra/definition/clip/SampleAudioClip.d.ts.map +1 -0
  362. package/src/engine/sound/sopra/definition/clip/SampleAudioClip.js +191 -0
  363. package/src/engine/sound/sopra/definition/clip/SampleAudioClipSerializationAdapter.d.ts +18 -0
  364. package/src/engine/sound/sopra/definition/clip/SampleAudioClipSerializationAdapter.d.ts.map +1 -0
  365. package/src/engine/sound/sopra/definition/clip/SampleAudioClipSerializationAdapter.js +39 -0
  366. package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.d.ts +40 -0
  367. package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.d.ts.map +1 -0
  368. package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.js +91 -0
  369. package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClipSerializationAdapter.d.ts +17 -0
  370. package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClipSerializationAdapter.d.ts.map +1 -0
  371. package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClipSerializationAdapter.js +42 -0
  372. package/src/engine/sound/sopra/definition/clip/SilenceAudioClip.d.ts +44 -0
  373. package/src/engine/sound/sopra/definition/clip/SilenceAudioClip.d.ts.map +1 -0
  374. package/src/engine/sound/sopra/definition/clip/SilenceAudioClip.js +77 -0
  375. package/src/engine/sound/sopra/definition/clip/SilenceAudioClipSerializationAdapter.d.ts +18 -0
  376. package/src/engine/sound/sopra/definition/clip/SilenceAudioClipSerializationAdapter.d.ts.map +1 -0
  377. package/src/engine/sound/sopra/definition/clip/SilenceAudioClipSerializationAdapter.js +27 -0
  378. package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts +65 -0
  379. package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts.map +1 -0
  380. package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.js +131 -0
  381. package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClipSerializationAdapter.d.ts +17 -0
  382. package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClipSerializationAdapter.d.ts.map +1 -0
  383. package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClipSerializationAdapter.js +41 -0
  384. package/src/engine/sound/sopra/definition/effect/AbstractAudioEffect.d.ts +24 -0
  385. package/src/engine/sound/sopra/definition/effect/AbstractAudioEffect.d.ts.map +1 -0
  386. package/src/engine/sound/sopra/definition/effect/AbstractAudioEffect.js +24 -0
  387. package/src/engine/sound/sopra/definition/effect/CompressorEffect.d.ts +70 -0
  388. package/src/engine/sound/sopra/definition/effect/CompressorEffect.d.ts.map +1 -0
  389. package/src/engine/sound/sopra/definition/effect/CompressorEffect.js +120 -0
  390. package/src/engine/sound/sopra/definition/effect/CompressorEffectSerializationAdapter.d.ts +18 -0
  391. package/src/engine/sound/sopra/definition/effect/CompressorEffectSerializationAdapter.d.ts.map +1 -0
  392. package/src/engine/sound/sopra/definition/effect/CompressorEffectSerializationAdapter.js +31 -0
  393. package/src/engine/sound/sopra/definition/effect/EqEffect.d.ts +74 -0
  394. package/src/engine/sound/sopra/definition/effect/EqEffect.d.ts.map +1 -0
  395. package/src/engine/sound/sopra/definition/effect/EqEffect.js +128 -0
  396. package/src/engine/sound/sopra/definition/effect/EqEffectSerializationAdapter.d.ts +18 -0
  397. package/src/engine/sound/sopra/definition/effect/EqEffectSerializationAdapter.d.ts.map +1 -0
  398. package/src/engine/sound/sopra/definition/effect/EqEffectSerializationAdapter.js +29 -0
  399. package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts +49 -0
  400. package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts.map +1 -0
  401. package/src/engine/sound/sopra/definition/effect/ReverbEffect.js +101 -0
  402. package/src/engine/sound/sopra/definition/effect/ReverbEffectSerializationAdapter.d.ts +18 -0
  403. package/src/engine/sound/sopra/definition/effect/ReverbEffectSerializationAdapter.d.ts.map +1 -0
  404. package/src/engine/sound/sopra/definition/effect/ReverbEffectSerializationAdapter.js +25 -0
  405. package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.d.ts +31 -0
  406. package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.d.ts.map +1 -0
  407. package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.js +106 -0
  408. package/src/engine/sound/sopra/runtime/BusGraph.d.ts +79 -0
  409. package/src/engine/sound/sopra/runtime/BusGraph.d.ts.map +1 -0
  410. package/src/engine/sound/sopra/runtime/BusGraph.js +227 -0
  411. package/src/engine/sound/sopra/runtime/EventInstance.d.ts +144 -0
  412. package/src/engine/sound/sopra/runtime/EventInstance.d.ts.map +1 -0
  413. package/src/engine/sound/sopra/runtime/EventInstance.js +579 -0
  414. package/src/engine/sound/sopra/runtime/ParameterStore.d.ts +42 -0
  415. package/src/engine/sound/sopra/runtime/ParameterStore.d.ts.map +1 -0
  416. package/src/engine/sound/sopra/runtime/ParameterStore.js +98 -0
  417. package/src/engine/sound/sopra/runtime/SopraPlaybackContext.d.ts +42 -0
  418. package/src/engine/sound/sopra/runtime/SopraPlaybackContext.d.ts.map +1 -0
  419. package/src/engine/sound/sopra/runtime/SopraPlaybackContext.js +68 -0
  420. package/src/engine/sound/sopra/runtime/Voice.d.ts +67 -0
  421. package/src/engine/sound/sopra/runtime/Voice.d.ts.map +1 -0
  422. package/src/engine/sound/sopra/runtime/Voice.js +145 -0
  423. package/src/engine/sound/sopra/runtime/VoiceManager.d.ts +38 -0
  424. package/src/engine/sound/sopra/runtime/VoiceManager.d.ts.map +1 -0
  425. package/src/engine/sound/sopra/runtime/VoiceManager.js +136 -0
  426. package/src/engine/sound/sopra/runtime/VoicePool.d.ts +12 -0
  427. package/src/engine/sound/sopra/runtime/VoicePool.d.ts.map +1 -0
  428. package/src/engine/sound/sopra/runtime/VoicePool.js +17 -0
  429. package/src/engine/sound/sopra/serialization/populateSopraSerializationRegistry.d.ts +11 -0
  430. package/src/engine/sound/sopra/serialization/populateSopraSerializationRegistry.d.ts.map +1 -0
  431. package/src/engine/sound/sopra/serialization/populateSopraSerializationRegistry.js +42 -0
  432. package/src/engine/sound/sopra/serialization/sopraJSON.d.ts +33 -0
  433. package/src/engine/sound/sopra/serialization/sopraJSON.d.ts.map +1 -0
  434. package/src/engine/sound/sopra/serialization/sopraJSON.js +99 -0
  435. package/src/engine/sound/sopra/serialization/sopraSerializationHarness.d.ts +27 -0
  436. package/src/engine/sound/sopra/serialization/sopraSerializationHarness.d.ts.map +1 -0
  437. package/src/engine/sound/sopra/serialization/sopraSerializationHarness.js +49 -0
  438. package/src/engine/sound/sopra/util/MockAudioContext.d.ts +74 -0
  439. package/src/engine/sound/sopra/util/MockAudioContext.d.ts.map +1 -0
  440. package/src/engine/sound/sopra/util/MockAudioContext.js +215 -0
  441. package/src/engine/sound/sopra/util/buildAttenuationCurve.d.ts +15 -0
  442. package/src/engine/sound/sopra/util/buildAttenuationCurve.d.ts.map +1 -0
  443. package/src/engine/sound/sopra/util/buildAttenuationCurve.js +40 -0
  444. package/src/engine/sound/sopra/util/fadeOutAndStop.d.ts +34 -0
  445. package/src/engine/sound/sopra/util/fadeOutAndStop.d.ts.map +1 -0
  446. package/src/engine/sound/sopra/util/fadeOutAndStop.js +60 -0
  447. package/src/engine/sound/volume2dB.d.ts +1 -1
  448. package/src/engine/sound/volume2dB.d.ts.map +1 -1
  449. package/src/engine/sound/volume2dB.js +1 -1
  450. package/src/engine/graphics/sh3/path_tracer/sampling/v3_orthonormal_matrix_from_normal.d.ts.map +0 -1
  451. package/src/engine/physics/narrowphase/ray_shapes.d.ts +0 -66
  452. package/src/engine/physics/narrowphase/ray_shapes.d.ts.map +0 -1
  453. package/src/engine/physics/narrowphase/ray_shapes.js +0 -187
  454. package/src/engine/sound/ecs/emitter/SoundEmitterChannel.d.ts +0 -23
  455. package/src/engine/sound/ecs/emitter/SoundEmitterChannel.d.ts.map +0 -1
  456. package/src/engine/sound/ecs/emitter/SoundEmitterChannel.js +0 -32
  457. package/src/engine/sound/ecs/emitter/SoundTrackNodes.d.ts +0 -18
  458. package/src/engine/sound/ecs/emitter/SoundTrackNodes.d.ts.map +0 -1
  459. package/src/engine/sound/ecs/emitter/SoundTrackNodes.js +0 -18
  460. package/src/engine/sound/sopra/AbstractAudioClip.d.ts +0 -26
  461. package/src/engine/sound/sopra/AbstractAudioClip.d.ts.map +0 -1
  462. package/src/engine/sound/sopra/AbstractAudioClip.js +0 -29
  463. package/src/engine/sound/sopra/ContainerAudioClip.d.ts +0 -12
  464. package/src/engine/sound/sopra/ContainerAudioClip.d.ts.map +0 -1
  465. package/src/engine/sound/sopra/ContainerAudioClip.js +0 -13
  466. package/src/engine/sound/sopra/RandomContainerAudioClip.d.ts +0 -12
  467. package/src/engine/sound/sopra/RandomContainerAudioClip.d.ts.map +0 -1
  468. package/src/engine/sound/sopra/RandomContainerAudioClip.js +0 -15
  469. package/src/engine/sound/sopra/SequenceContainerAudioClip.d.ts +0 -7
  470. package/src/engine/sound/sopra/SequenceContainerAudioClip.d.ts.map +0 -1
  471. package/src/engine/sound/sopra/SequenceContainerAudioClip.js +0 -8
  472. package/src/engine/sound/sopra/SilenceAudioClip.d.ts +0 -13
  473. package/src/engine/sound/sopra/SilenceAudioClip.d.ts.map +0 -1
  474. package/src/engine/sound/sopra/SilenceAudioClip.js +0 -15
  475. /package/src/{engine/graphics/sh3/path_tracer/sampling → core/geom/vec3}/v3_orthonormal_matrix_from_normal.d.ts +0 -0
@@ -68,10 +68,12 @@ function doLayerLayout(circles) {
68
68
 
69
69
  const r = circle.r;
70
70
 
71
- circle.x0 = offsetX + r;
72
- circle.y0 = offsetY + r;
71
+ // write the real circle fields (x/y), not phantom x0/y0 which nothing reads — that made the
72
+ // layered initial layout silently discarded.
73
+ circle.x = offsetX + r;
74
+ circle.y = offsetY + r;
73
75
 
74
- offsetX += r;
76
+ offsetX += 2 * r; // advance by the diameter so circles in a layer don't overlap
75
77
 
76
78
  layerHeight = Math.max(r, layerHeight);
77
79
  }
@@ -734,9 +736,9 @@ function resolveCircleLineOverlap(circle, c0, c1) {
734
736
  //Impale
735
737
  const mid = (t1 + t2) / 2;
736
738
 
737
- //find closest point on the line to the circle center
738
- const nX = x1 + mid * dX;
739
- const nY = y1 + mid * dY;
739
+ //find closest point on the line to the circle center: P(mid) = start + mid * direction
740
+ const nX = x0 + mid * dX;
741
+ const nY = y0 + mid * dY;
740
742
 
741
743
  //compute distance to center
742
744
  const ndX = cX - nX;
@@ -1 +1 @@
1
- {"version":3,"file":"compute_kway_params.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/graph/metis/native/refine/compute_kway_params.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH,2CAHW,OAAO,kBAAkB,EAAE,UAAU,mBACrC,MAAM,QAyHhB"}
1
+ {"version":3,"file":"compute_kway_params.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/graph/metis/native/refine/compute_kway_params.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH,2CAHW,OAAO,kBAAkB,EAAE,UAAU,mBACrC,MAAM,QA0HhB"}
@@ -1,138 +1,139 @@
1
- import { assert } from "../../../../assert.js";
2
-
3
- /**
4
- * From a freshly-assigned `vertex_partition[]`, populate the rest of the k-way
5
- * refinement state: per-partition weights, per-vertex internal/external degree,
6
- * the neighbour-partition list (via `neighbor_partition_pool`), the boundary
7
- * list, and the total edge cut.
8
- *
9
- * Mirrors `ComputeKWayPartitionParams` from libmetis/kwayrefine.c, cut-objective
10
- * branch only.
11
- *
12
- * Boundary insertion rule (refinement-type boundary): a vertex is added to the
13
- * boundary when `external_degree >= internal_degree`. That captures "worth
14
- * considering for a move" — vertices with no external pull aren't candidates.
15
- *
16
- * @param {import('../MetisGraph.js').MetisGraph} graph
17
- * @param {number} partition_count
18
- */
19
- export function compute_kway_params(graph, partition_count) {
20
- const vertex_count = graph.vertex_count;
21
- const edge_addresses = graph.edge_addresses;
22
- const adjacency = graph.adjacency;
23
- const edge_weights = graph.edge_weights;
24
- const vertex_weights = graph.vertex_weights;
25
- const vertex_partition = graph.vertex_partition;
26
- const partition_weights = graph.partition_weights;
27
- const internal_degree = graph.internal_degree;
28
- const external_degree = graph.external_degree;
29
- const neighbor_partition_count = graph.neighbor_partition_count;
30
- const neighbor_partition_offset = graph.neighbor_partition_offset;
31
- const boundary_vertices = graph.boundary_vertices;
32
- const boundary_position_of_vertex = graph.boundary_position_of_vertex;
33
- const neighbor_partition_pool = graph.neighbor_partition_pool;
34
-
35
- assert.equal(vertex_partition !== null, true, 'graph.vertex_partition must be allocated');
36
- assert.equal(neighbor_partition_pool !== null, true, 'graph.neighbor_partition_pool must be allocated');
37
-
38
- partition_weights.fill(0);
39
- internal_degree.fill(0);
40
- external_degree.fill(0);
41
- neighbor_partition_count.fill(0);
42
- neighbor_partition_offset.fill(-1);
43
- boundary_position_of_vertex.fill(-1);
44
- neighbor_partition_pool.clear();
45
-
46
- // Recompute partition weights from `vertex_partition`. initial_kway_bfs
47
- // already produces these, but refinement passes invalidate the count, so
48
- // recompute unconditionally to keep this routine self-contained.
49
- for (let v = 0; v < vertex_count; v++) {
50
- partition_weights[vertex_partition[v]] += vertex_weights[v];
51
- }
52
-
53
- // Scratch arrays for per-vertex neighbour-partition deduplication:
54
- // `scratch_partition_position[p]` = where in `scratch_partition_id` /
55
- // `scratch_partition_edge_weight` we've stored partition p for the current
56
- // vertex, or -1 if p hasn't been seen yet for this vertex.
57
- const scratch_partition_position = new Int32Array(partition_count);
58
- scratch_partition_position.fill(-1);
59
-
60
- // A vertex's distinct neighbour-partition count never exceeds its degree
61
- // nor `partition_count`; `partition_count` is the safe upper bound on
62
- // scratch size.
63
- const scratch_partition_id = new Uint32Array(partition_count);
64
- const scratch_partition_edge_weight = new Uint32Array(partition_count);
65
-
66
- let boundary_count = 0;
67
- let cut_doubled = 0;
68
-
69
- const pool_data = neighbor_partition_pool.data_uint32;
70
-
71
- for (let vertex = 0; vertex < vertex_count; vertex++) {
72
- const my_partition = vertex_partition[vertex];
73
-
74
- let v_internal_degree = 0;
75
- let v_external_degree = 0;
76
- let distinct_neighbor_partitions = 0;
77
-
78
- const edge_start = edge_addresses[vertex];
79
- const edge_end = edge_addresses[vertex + 1];
80
- for (let edge_offset = edge_start; edge_offset < edge_end; edge_offset++) {
81
- const neighbor_partition = vertex_partition[adjacency[edge_offset]];
82
- const edge_weight = edge_weights[edge_offset];
83
- if (neighbor_partition === my_partition) {
84
- v_internal_degree += edge_weight;
85
- } else {
86
- v_external_degree += edge_weight;
87
- const existing_position = scratch_partition_position[neighbor_partition];
88
- if (existing_position === -1) {
89
- scratch_partition_position[neighbor_partition] = distinct_neighbor_partitions;
90
- scratch_partition_id[distinct_neighbor_partitions] = neighbor_partition;
91
- scratch_partition_edge_weight[distinct_neighbor_partitions] = edge_weight;
92
- distinct_neighbor_partitions++;
93
- } else {
94
- scratch_partition_edge_weight[existing_position] += edge_weight;
95
- }
96
- }
97
- }
98
-
99
- internal_degree[vertex] = v_internal_degree;
100
- external_degree[vertex] = v_external_degree;
101
-
102
- if (v_external_degree > 0) {
103
- cut_doubled += v_external_degree;
104
-
105
- // Reserve pool slots sized to the vertex's degree (not just the
106
- // current distinct-neighbour-partition count). fm_kway can grow
107
- // a vertex's neighbour-partition list when its neighbours move
108
- // and introduce a new partition; we need room.
109
- const degree = edge_end - edge_start;
110
- const pool_record_offset = neighbor_partition_pool.allocate_continuous(degree);
111
- neighbor_partition_offset[vertex] = pool_record_offset;
112
- neighbor_partition_count[vertex] = distinct_neighbor_partitions;
113
-
114
- // Each pool record is 8 bytes = 2 uint32 words: (partition_id, edge_weight).
115
- const word_base = neighbor_partition_pool.element_word(pool_record_offset);
116
- for (let nbr = 0; nbr < distinct_neighbor_partitions; nbr++) {
117
- pool_data[word_base + nbr * 2] = scratch_partition_id[nbr];
118
- pool_data[word_base + nbr * 2 + 1] = scratch_partition_edge_weight[nbr];
119
- }
120
-
121
- if (v_external_degree >= v_internal_degree) {
122
- boundary_vertices[boundary_count] = vertex;
123
- boundary_position_of_vertex[vertex] = boundary_count;
124
- boundary_count++;
125
- }
126
- }
127
-
128
- // Reset only the touched scratch entries.
129
- for (let nbr = 0; nbr < distinct_neighbor_partitions; nbr++) {
130
- scratch_partition_position[scratch_partition_id[nbr]] = -1;
131
- }
132
- }
133
-
134
- // Each crossing edge contributes to both endpoints' external_degree, so we
135
- // counted it twice across the loop above.
136
- graph.current_cut = cut_doubled >> 1;
137
- graph.boundary_count = boundary_count;
138
- }
1
+ import { assert } from "../../../../assert.js";
2
+
3
+ /**
4
+ * From a freshly-assigned `vertex_partition[]`, populate the rest of the k-way
5
+ * refinement state: per-partition weights, per-vertex internal/external degree,
6
+ * the neighbour-partition list (via `neighbor_partition_pool`), the boundary
7
+ * list, and the total edge cut.
8
+ *
9
+ * Mirrors `ComputeKWayPartitionParams` from libmetis/kwayrefine.c, cut-objective
10
+ * branch only.
11
+ *
12
+ * Boundary insertion rule (refinement-type boundary): a vertex is added to the
13
+ * boundary when `external_degree >= internal_degree`. That captures "worth
14
+ * considering for a move" — vertices with no external pull aren't candidates.
15
+ *
16
+ * @param {import('../MetisGraph.js').MetisGraph} graph
17
+ * @param {number} partition_count
18
+ */
19
+ export function compute_kway_params(graph, partition_count) {
20
+ const vertex_count = graph.vertex_count;
21
+ const edge_addresses = graph.edge_addresses;
22
+ const adjacency = graph.adjacency;
23
+ const edge_weights = graph.edge_weights;
24
+ const vertex_weights = graph.vertex_weights;
25
+ const vertex_partition = graph.vertex_partition;
26
+ const partition_weights = graph.partition_weights;
27
+ const internal_degree = graph.internal_degree;
28
+ const external_degree = graph.external_degree;
29
+ const neighbor_partition_count = graph.neighbor_partition_count;
30
+ const neighbor_partition_offset = graph.neighbor_partition_offset;
31
+ const boundary_vertices = graph.boundary_vertices;
32
+ const boundary_position_of_vertex = graph.boundary_position_of_vertex;
33
+ const neighbor_partition_pool = graph.neighbor_partition_pool;
34
+
35
+ assert.equal(vertex_partition !== null, true, 'graph.vertex_partition must be allocated');
36
+ assert.equal(neighbor_partition_pool !== null, true, 'graph.neighbor_partition_pool must be allocated');
37
+
38
+ partition_weights.fill(0);
39
+ internal_degree.fill(0);
40
+ external_degree.fill(0);
41
+ neighbor_partition_count.fill(0);
42
+ neighbor_partition_offset.fill(-1);
43
+ boundary_position_of_vertex.fill(-1);
44
+ neighbor_partition_pool.clear();
45
+
46
+ // Recompute partition weights from `vertex_partition`. initial_kway_bfs
47
+ // already produces these, but refinement passes invalidate the count, so
48
+ // recompute unconditionally to keep this routine self-contained.
49
+ for (let v = 0; v < vertex_count; v++) {
50
+ partition_weights[vertex_partition[v]] += vertex_weights[v];
51
+ }
52
+
53
+ // Scratch arrays for per-vertex neighbour-partition deduplication:
54
+ // `scratch_partition_position[p]` = where in `scratch_partition_id` /
55
+ // `scratch_partition_edge_weight` we've stored partition p for the current
56
+ // vertex, or -1 if p hasn't been seen yet for this vertex.
57
+ const scratch_partition_position = new Int32Array(partition_count);
58
+ scratch_partition_position.fill(-1);
59
+
60
+ // A vertex's distinct neighbour-partition count never exceeds its degree
61
+ // nor `partition_count`; `partition_count` is the safe upper bound on
62
+ // scratch size.
63
+ const scratch_partition_id = new Uint32Array(partition_count);
64
+ const scratch_partition_edge_weight = new Uint32Array(partition_count);
65
+
66
+ let boundary_count = 0;
67
+ let cut_doubled = 0;
68
+
69
+ for (let vertex = 0; vertex < vertex_count; vertex++) {
70
+ const my_partition = vertex_partition[vertex];
71
+
72
+ let v_internal_degree = 0;
73
+ let v_external_degree = 0;
74
+ let distinct_neighbor_partitions = 0;
75
+
76
+ const edge_start = edge_addresses[vertex];
77
+ const edge_end = edge_addresses[vertex + 1];
78
+ for (let edge_offset = edge_start; edge_offset < edge_end; edge_offset++) {
79
+ const neighbor_partition = vertex_partition[adjacency[edge_offset]];
80
+ const edge_weight = edge_weights[edge_offset];
81
+ if (neighbor_partition === my_partition) {
82
+ v_internal_degree += edge_weight;
83
+ } else {
84
+ v_external_degree += edge_weight;
85
+ const existing_position = scratch_partition_position[neighbor_partition];
86
+ if (existing_position === -1) {
87
+ scratch_partition_position[neighbor_partition] = distinct_neighbor_partitions;
88
+ scratch_partition_id[distinct_neighbor_partitions] = neighbor_partition;
89
+ scratch_partition_edge_weight[distinct_neighbor_partitions] = edge_weight;
90
+ distinct_neighbor_partitions++;
91
+ } else {
92
+ scratch_partition_edge_weight[existing_position] += edge_weight;
93
+ }
94
+ }
95
+ }
96
+
97
+ internal_degree[vertex] = v_internal_degree;
98
+ external_degree[vertex] = v_external_degree;
99
+
100
+ if (v_external_degree > 0) {
101
+ cut_doubled += v_external_degree;
102
+
103
+ // Reserve pool slots sized to the vertex's degree (not just the
104
+ // current distinct-neighbour-partition count). fm_kway can grow
105
+ // a vertex's neighbour-partition list when its neighbours move
106
+ // and introduce a new partition; we need room.
107
+ const degree = edge_end - edge_start;
108
+ const pool_record_offset = neighbor_partition_pool.allocate_continuous(degree);
109
+ // Re-read the backing view AFTER allocating: allocate_continuous may have grown the pool and
110
+ // replaced data_uint32, leaving any previously-captured view pointing at a detached (stale) buffer.
111
+ const pool_data = neighbor_partition_pool.data_uint32;
112
+ neighbor_partition_offset[vertex] = pool_record_offset;
113
+ neighbor_partition_count[vertex] = distinct_neighbor_partitions;
114
+
115
+ // Each pool record is 8 bytes = 2 uint32 words: (partition_id, edge_weight).
116
+ const word_base = neighbor_partition_pool.element_word(pool_record_offset);
117
+ for (let nbr = 0; nbr < distinct_neighbor_partitions; nbr++) {
118
+ pool_data[word_base + nbr * 2] = scratch_partition_id[nbr];
119
+ pool_data[word_base + nbr * 2 + 1] = scratch_partition_edge_weight[nbr];
120
+ }
121
+
122
+ if (v_external_degree >= v_internal_degree) {
123
+ boundary_vertices[boundary_count] = vertex;
124
+ boundary_position_of_vertex[vertex] = boundary_count;
125
+ boundary_count++;
126
+ }
127
+ }
128
+
129
+ // Reset only the touched scratch entries.
130
+ for (let nbr = 0; nbr < distinct_neighbor_partitions; nbr++) {
131
+ scratch_partition_position[scratch_partition_id[nbr]] = -1;
132
+ }
133
+ }
134
+
135
+ // Each crossing edge contributes to both endpoints' external_degree, so we
136
+ // counted it twice across the loop above.
137
+ graph.current_cut = cut_doubled >> 1;
138
+ graph.boundary_count = boundary_count;
139
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"mn_graph_coarsen.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/mn_graph_coarsen.js"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,gFAFW,MAAM,QA2BhB"}
1
+ {"version":3,"file":"mn_graph_coarsen.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/mn_graph_coarsen.js"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,gFAFW,MAAM,QA6BhB"}
@@ -30,8 +30,10 @@ export function mn_graph_coarsen(graph, max_node_limit) {
30
30
  // attempt collapse of the heaviest edge
31
31
  const collapsed = mn_graph_collapse_weighted_edge(graph, edge, max_node_limit, open_set);
32
32
 
33
- if(!collapsed){
34
- throw new Error(`Failed to collapse edge ${edge}`);
33
+ if (!collapsed) {
34
+ // The edge legitimately can't be collapsed within max_node_limit (coarsening is done / this edge
35
+ // is rejected). Drop it from the heap and keep coarsening the rest rather than aborting.
36
+ continue;
35
37
  }
36
38
  }
37
39
  }
@@ -195,17 +195,17 @@ export class NodeContainer {
195
195
  * @returns {number}
196
196
  */
197
197
  traverseEdges(visitor, thisArg) {
198
- let i = 0;
199
-
200
- const edges = this.__edges;
198
+ // Iterate over a snapshot: a visitor may mutate the live __edges array (e.g. Graph.removeNode visits
199
+ // with removeEdge, which splices the edge out of this container). Walking the live array by index would
200
+ // skip edges whenever one is removed mid-traversal.
201
+ const edges = this.__edges.slice();
201
202
  const n = edges.length;
202
203
 
203
- for (; i < n; i++) {
204
- const edge = edges[i];
205
- visitor.call(thisArg, edge);
204
+ for (let i = 0; i < n; i++) {
205
+ visitor.call(thisArg, edges[i]);
206
206
  }
207
207
 
208
- return i;
208
+ return n;
209
209
  }
210
210
 
211
211
  /**
@@ -77,7 +77,7 @@ export class LocalizationEngine {
77
77
 
78
78
  const fallback = fallbacks[i];
79
79
 
80
- if (array_get_index_in_range(resolve_chain, fallback, 0, resolve_chain_end) !== -1) {
80
+ if (array_get_index_in_range(resolve_chain, fallback, 0, resolve_chain_end - 1) !== -1) {
81
81
  // circular dependency, that language was already attempted
82
82
  continue;
83
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bell_membership_function.d.ts","sourceRoot":"","sources":["../../../../src/core/math/bell_membership_function.js"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,4CANW,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,GACJ,MAAM,CAclB"}
1
+ {"version":3,"file":"bell_membership_function.d.ts","sourceRoot":"","sources":["../../../../src/core/math/bell_membership_function.js"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,4CANW,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,GACJ,MAAM,CAgBlB"}
@@ -18,7 +18,9 @@ export function bell_membership_function(v, a, b, c) {
18
18
  const vc = v - c;
19
19
  const N = vc / a;
20
20
 
21
- const d = 1 + Math.pow(N, b * 2);
21
+ // |(v-c)/a|^(2b): use the magnitude so the function is symmetric about c and avoids NaN from
22
+ // Math.pow(negative, non-integer) when v is left of center and b is non-integer.
23
+ const d = 1 + Math.pow(Math.abs(N), b * 2);
22
24
 
23
25
  return 1 / d;
24
26
  }
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Add two complex numbers
3
- * @param {number[]} result
4
- * @param {number[]} a
5
- * @param {number[]} b
3
+ * @param {number[]|Float64Array|Float32Array} result
4
+ * @param {number[]|Float64Array|Float32Array} a
5
+ * @param {number[]|Float64Array|Float32Array} b
6
6
  */
7
- export function complex_add(result: number[], a: number[], b: number[]): void;
7
+ export function complex_add(result: number[] | Float64Array | Float32Array, a: number[] | Float64Array | Float32Array, b: number[] | Float64Array | Float32Array): void;
8
8
  //# sourceMappingURL=complex_add.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"complex_add.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/complex/complex_add.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,oCAJW,MAAM,EAAE,KACR,MAAM,EAAE,KACR,MAAM,EAAE,QAKlB"}
1
+ {"version":3,"file":"complex_add.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/complex/complex_add.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,oCAJW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,KAClC,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,KAClC,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,QAK5C"}
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Add two complex numbers
3
- * @param {number[]} result
4
- * @param {number[]} a
5
- * @param {number[]} b
3
+ * @param {number[]|Float64Array|Float32Array} result
4
+ * @param {number[]|Float64Array|Float32Array} a
5
+ * @param {number[]|Float64Array|Float32Array} b
6
6
  */
7
7
  export function complex_add(result, a, b) {
8
8
  result[0] = a[0] + b[0];
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Divide two complex numbers
3
- * @param {number[]} result
4
- * @param {number[]} a
5
- * @param {number[]} b
3
+ * @param {number[]|Float64Array|Float32Array} result
4
+ * @param {number[]|Float64Array|Float32Array} a
5
+ * @param {number[]|Float64Array|Float32Array} b
6
6
  */
7
- export function complex_div(result: number[], a: number[], b: number[]): void;
7
+ export function complex_div(result: number[] | Float64Array | Float32Array, a: number[] | Float64Array | Float32Array, b: number[] | Float64Array | Float32Array): void;
8
8
  //# sourceMappingURL=complex_div.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"complex_div.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/complex/complex_div.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,oCAJW,MAAM,EAAE,KACR,MAAM,EAAE,KACR,MAAM,EAAE,QAOlB"}
1
+ {"version":3,"file":"complex_div.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/complex/complex_div.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,oCAJW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,KAClC,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,KAClC,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,QAO5C"}
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Divide two complex numbers
3
- * @param {number[]} result
4
- * @param {number[]} a
5
- * @param {number[]} b
3
+ * @param {number[]|Float64Array|Float32Array} result
4
+ * @param {number[]|Float64Array|Float32Array} a
5
+ * @param {number[]|Float64Array|Float32Array} b
6
6
  */
7
7
  export function complex_div(result, a, b) {
8
8
  const sqr_norm_b = b[0] * b[0] + b[1] * b[1];
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Multiply two complex numbers
3
- * @param {number[]} result
4
- * @param {number[]} a
5
- * @param {number[]} b
3
+ * @param {number[]|Float64Array|Float32Array} result
4
+ * @param {number[]|Float64Array|Float32Array} a
5
+ * @param {number[]|Float64Array|Float32Array} b
6
6
  */
7
- export function complex_mul(result: number[], a: number[], b: number[]): void;
7
+ export function complex_mul(result: number[] | Float64Array | Float32Array, a: number[] | Float64Array | Float32Array, b: number[] | Float64Array | Float32Array): void;
8
8
  //# sourceMappingURL=complex_mul.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"complex_mul.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/complex/complex_mul.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,oCAJW,MAAM,EAAE,KACR,MAAM,EAAE,KACR,MAAM,EAAE,QAKlB"}
1
+ {"version":3,"file":"complex_mul.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/complex/complex_mul.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,oCAJW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,KAClC,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,KAClC,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,QAK5C"}
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Multiply two complex numbers
3
- * @param {number[]} result
4
- * @param {number[]} a
5
- * @param {number[]} b
3
+ * @param {number[]|Float64Array|Float32Array} result
4
+ * @param {number[]|Float64Array|Float32Array} a
5
+ * @param {number[]|Float64Array|Float32Array} b
6
6
  */
7
7
  export function complex_mul(result, a, b) {
8
8
  result[0] = a[0] * b[0] - a[1] * b[1];
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Subtract two complex numbers
3
- * @param {number[]} result
4
- * @param {number[]} a
5
- * @param {number[]} b
3
+ * @param {number[]|Float64Array|Float32Array} result
4
+ * @param {number[]|Float64Array|Float32Array} a
5
+ * @param {number[]|Float64Array|Float32Array} b
6
6
  */
7
- export function complex_sub(result: number[], a: number[], b: number[]): void;
7
+ export function complex_sub(result: number[] | Float64Array | Float32Array, a: number[] | Float64Array | Float32Array, b: number[] | Float64Array | Float32Array): void;
8
8
  //# sourceMappingURL=complex_sub.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"complex_sub.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/complex/complex_sub.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,oCAJW,MAAM,EAAE,KACR,MAAM,EAAE,KACR,MAAM,EAAE,QAKlB"}
1
+ {"version":3,"file":"complex_sub.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/complex/complex_sub.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,oCAJW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,KAClC,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,KAClC,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,QAK5C"}
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Subtract two complex numbers
3
- * @param {number[]} result
4
- * @param {number[]} a
5
- * @param {number[]} b
3
+ * @param {number[]|Float64Array|Float32Array} result
4
+ * @param {number[]|Float64Array|Float32Array} a
5
+ * @param {number[]|Float64Array|Float32Array} b
6
6
  */
7
7
  export function complex_sub(result, a, b) {
8
8
  result[0] = a[0] - b[0];
@@ -1,14 +1,14 @@
1
1
  /**
2
- * Performs a 1D Inverse Discrete Cosine Transform on an 8-element block.
2
+ * Performs a 1D Inverse Discrete Cosine Transform on an 8-element block.
3
3
  *
4
4
  * This function implements a fast AAN (Arai-Agui-Nakajima) algorithm.
5
5
  * It performs the transformation in-place, modifying the input array directly.
6
6
  *
7
7
  * NOTE: ported from ffmpeg https://github.com/RPi-Distro/ffmpeg/blob/3a48fe739a020d939a4e752684ef1eed901fd189/libavcodec/exr.c#L916
8
8
  *
9
- * @param {Float64Array} block A pointer to an array of 8 double-precision floating-point values.
9
+ * @param {number[]|Float32Array|Float64Array} block A pointer to an array of 8 floating-point values.
10
10
  * @param {number} offset
11
- * @param {number} stride
11
+ * @param {number} stride for images, this will typically be number of channels.
12
12
  */
13
- export function idct_1d(block: Float64Array, offset: number, stride: number): void;
13
+ export function idct_1d(block: number[] | Float32Array | Float64Array, offset: number, stride: number): void;
14
14
  //# sourceMappingURL=idct_1d.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"idct_1d.d.ts","sourceRoot":"","sources":["../../../../src/core/math/idct_1d.js"],"names":[],"mappings":"AAaA;;;;;;;;;;;GAWG;AACH,+BAJW,YAAY,UACZ,MAAM,UACN,MAAM,QA6ChB"}
1
+ {"version":3,"file":"idct_1d.d.ts","sourceRoot":"","sources":["../../../../src/core/math/idct_1d.js"],"names":[],"mappings":"AAaA;;;;;;;;;;;GAWG;AACH,+BAJW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,UAClC,MAAM,UACN,MAAM,QA6ChB"}
@@ -12,16 +12,16 @@ const f = .5 * Math.cos(3 * Math.PI / 8);
12
12
  const g = .5 * Math.cos(7 * Math.PI / 16);
13
13
 
14
14
  /**
15
- * Performs a 1D Inverse Discrete Cosine Transform on an 8-element block.
15
+ * Performs a 1D Inverse Discrete Cosine Transform on an 8-element block.
16
16
  *
17
17
  * This function implements a fast AAN (Arai-Agui-Nakajima) algorithm.
18
18
  * It performs the transformation in-place, modifying the input array directly.
19
19
  *
20
20
  * NOTE: ported from ffmpeg https://github.com/RPi-Distro/ffmpeg/blob/3a48fe739a020d939a4e752684ef1eed901fd189/libavcodec/exr.c#L916
21
21
  *
22
- * @param {Float64Array} block A pointer to an array of 8 double-precision floating-point values.
22
+ * @param {number[]|Float32Array|Float64Array} block A pointer to an array of 8 floating-point values.
23
23
  * @param {number} offset
24
- * @param {number} stride
24
+ * @param {number} stride for images, this will typically be number of channels.
25
25
  */
26
26
  export function idct_1d(block, offset, stride) {
27
27
 
@@ -1 +1 @@
1
- {"version":3,"file":"create_simplex_noise_2d.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/noise/create_simplex_noise_2d.js"],"names":[],"mappings":"AAyDA;;;;GAIG;AACH,6EAFwB,MAAM,CAwG7B"}
1
+ {"version":3,"file":"create_simplex_noise_2d.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/noise/create_simplex_noise_2d.js"],"names":[],"mappings":"AAyDA;;;;GAIG;AACH,6EAFwB,MAAM,CA0G7B"}
@@ -85,8 +85,10 @@ export function create_simplex_noise_2d(random = Math.random) {
85
85
  // Skew the input space to determine which simplex cell we're in
86
86
  const s = (x + y) * F2; // Hairy factor for 2D
87
87
 
88
- const i = (x + s) | 0;
89
- const j = (y + s) | 0;
88
+ // Math.floor, not `| 0`: `| 0` truncates toward zero, which is wrong for negative inputs and breaks
89
+ // noise continuity across the x<0 / y<0 half-planes.
90
+ const i = Math.floor(x + s);
91
+ const j = Math.floor(y + s);
90
92
 
91
93
  const t = (i + j) * G2;
92
94
  const X0 = i - t; // Unskew the cell origin back to (x,y) space
@@ -1 +1 @@
1
- {"version":3,"file":"sdnoise.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/noise/sdnoise.js"],"names":[],"mappings":"AA6LA;;;;;;;GAOG;AACH,sCAHW,MAAM,EAAE,KADR,MAAM,GAEJ,MAAM,CAmDlB;AAUD;;;;;;;;GAQG;AACH,sCAHW,MAAM,EAAE,KAFR,MAAM,KACN,MAAM,GAEJ,MAAM,CAiIlB;AAUD;;;;;;;;;GASG;AACH,sCAHW,MAAM,EAAE,KAHR,MAAM,KACN,MAAM,KACN,MAAM,GAEJ,MAAM,CA+OlB;AAMD;;;;;;;;;;GAUG;AACH,sCAPW,MAAM,EAAE,KACR,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,GACJ,MAAM,CA6RlB"}
1
+ {"version":3,"file":"sdnoise.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/noise/sdnoise.js"],"names":[],"mappings":"AA6LA;;;;;;;GAOG;AACH,sCAHW,MAAM,EAAE,KADR,MAAM,GAEJ,MAAM,CAmDlB;AAUD;;;;;;;;GAQG;AACH,sCAHW,MAAM,EAAE,KAFR,MAAM,KACN,MAAM,GAEJ,MAAM,CAkIlB;AAUD;;;;;;;;;GASG;AACH,sCAHW,MAAM,EAAE,KAHR,MAAM,KACN,MAAM,KACN,MAAM,GAEJ,MAAM,CA+OlB;AAMD;;;;;;;;;;GAUG;AACH,sCAPW,MAAM,EAAE,KACR,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,GACJ,MAAM,CA+RlB"}