@woosh/meep-engine 2.163.10 → 2.164.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 (1796) hide show
  1. package/build/bundle-worker-terrain.js +1 -1
  2. package/editor/ecs/component/editors/ecs/Trail3DEditor.js +45 -0
  3. package/editor/ecs/component/prototypeObjectEditor.js +3 -0
  4. package/editor/tools/v2/BlenderCameraOrientationGizmo.js +2 -2
  5. package/editor/view/node-graph/connection_wire_geometry.js +2 -2
  6. package/package.json +1 -1
  7. package/src/core/bvh2/binary/2/BinaryUint32BVH.js +2 -2
  8. package/src/core/bvh2/binary/2/bvh32_query_user_data_ray.d.ts.map +1 -1
  9. package/src/core/bvh2/binary/2/bvh32_query_user_data_ray.js +2 -4
  10. package/src/core/bvh2/bvh3/BVH.d.ts +388 -55
  11. package/src/core/bvh2/bvh3/BVH.d.ts.map +1 -1
  12. package/src/core/bvh2/bvh3/BVH.js +11 -5
  13. package/src/core/bvh2/bvh3/BvhClient.d.ts +31 -11
  14. package/src/core/bvh2/bvh3/bvh_build_from_unindexed_triangles.d.ts.map +1 -0
  15. package/src/core/bvh2/bvh3/ebvh_build_for_geometry_incremental.js +2 -2
  16. package/src/core/bvh2/bvh3/ebvh_build_hierarchy.d.ts.map +1 -1
  17. package/src/core/bvh2/bvh3/ebvh_build_hierarchy.js +8 -0
  18. package/src/core/bvh2/bvh3/ebvh_geometry_query_any_triangle_ray.d.ts +22 -0
  19. package/src/core/bvh2/bvh3/ebvh_geometry_query_any_triangle_ray.d.ts.map +1 -0
  20. package/src/core/bvh2/bvh3/ebvh_geometry_query_any_triangle_ray.js +149 -0
  21. package/src/core/bvh2/bvh3/ebvh_geometry_query_nearest_triangle_ray.d.ts +5 -2
  22. package/src/core/bvh2/bvh3/ebvh_geometry_query_nearest_triangle_ray.d.ts.map +1 -1
  23. package/src/core/bvh2/bvh3/ebvh_geometry_query_nearest_triangle_ray.js +16 -10
  24. package/src/core/bvh2/bvh3/ebvh_optimize_treelet.d.ts.map +1 -1
  25. package/src/core/bvh2/bvh3/ebvh_optimize_treelet.js +19 -6
  26. package/src/core/bvh2/bvh3/ebvh_sort_for_traversal_depth_first.d.ts +14 -3
  27. package/src/core/bvh2/bvh3/ebvh_sort_for_traversal_depth_first.d.ts.map +1 -1
  28. package/src/core/bvh2/bvh3/ebvh_sort_for_traversal_depth_first.js +96 -116
  29. package/src/core/bvh2/bvh3/query/backtracking/bvh_backtracking_query_leaves_ray.d.ts +3 -3
  30. package/src/core/bvh2/bvh3/query/backtracking/bvh_backtracking_query_leaves_ray.d.ts.map +1 -1
  31. package/src/core/bvh2/bvh3/query/backtracking/bvh_backtracking_query_leaves_ray.js +3 -3
  32. package/src/core/bvh2/bvh3/query/bvh_query_depth_range_in_frustum.js +2 -2
  33. package/src/core/bvh2/bvh3/query/bvh_query_leaves_generic.d.ts +12 -5
  34. package/src/core/bvh2/bvh3/query/bvh_query_leaves_generic.d.ts.map +1 -1
  35. package/src/core/bvh2/bvh3/query/bvh_query_leaves_generic.js +11 -4
  36. package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray.d.ts +3 -3
  37. package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray.d.ts.map +1 -1
  38. package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray.js +3 -3
  39. package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray_segment.d.ts +3 -3
  40. package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray_segment.d.ts.map +1 -1
  41. package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray_segment.js +3 -3
  42. package/src/core/bvh2/bvh3/query/bvh_query_user_data_generic.d.ts +12 -5
  43. package/src/core/bvh2/bvh3/query/bvh_query_user_data_generic.d.ts.map +1 -1
  44. package/src/core/bvh2/bvh3/query/bvh_query_user_data_generic.js +11 -4
  45. package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_aabb.d.ts +9 -0
  46. package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_aabb.d.ts.map +1 -0
  47. package/src/core/bvh2/bvh3/query/{bvh_query_user_data_overlaps_aabb.js → bvh_query_user_data_intersects_aabb.js} +1 -1
  48. package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_capsule.d.ts +22 -0
  49. package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_capsule.d.ts.map +1 -0
  50. package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_capsule.js +101 -0
  51. package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_frustum.d.ts +9 -0
  52. package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_frustum.d.ts.map +1 -0
  53. package/src/core/bvh2/bvh3/query/{bvh_query_user_data_overlaps_frustum.js → bvh_query_user_data_intersects_frustum.js} +3 -3
  54. package/src/core/bvh2/bvh3/query/{bvh_query_user_data_overlaps_sphere.d.ts → bvh_query_user_data_intersects_sphere.d.ts} +2 -2
  55. package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_sphere.d.ts.map +1 -0
  56. package/src/core/bvh2/bvh3/query/{bvh_query_user_data_overlaps_sphere.js → bvh_query_user_data_intersects_sphere.js} +1 -1
  57. package/src/core/bvh2/bvh3/query/bvh_query_user_data_nearest_to_point_filtered.d.ts +23 -0
  58. package/src/core/bvh2/bvh3/query/bvh_query_user_data_nearest_to_point_filtered.d.ts.map +1 -0
  59. package/src/core/bvh2/bvh3/query/bvh_query_user_data_nearest_to_point_filtered.js +86 -0
  60. package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray.d.ts +3 -3
  61. package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray.d.ts.map +1 -1
  62. package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray.js +3 -3
  63. package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray_segment.d.ts +3 -3
  64. package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray_segment.d.ts.map +1 -1
  65. package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray_segment.js +3 -3
  66. package/src/core/bvh2/traversal/aabb3_detailed_volume_intersection_callback_based.js +2 -2
  67. package/src/core/bvh8/bvh8_node_child_surface_area.js +2 -2
  68. package/src/core/bvh8/bvh8_quality.js +2 -2
  69. package/src/core/collection/SCRATCH_UINT32_TRAVERSAL_STACK.d.ts +12 -0
  70. package/src/core/collection/SCRATCH_UINT32_TRAVERSAL_STACK.d.ts.map +1 -1
  71. package/src/core/collection/SCRATCH_UINT32_TRAVERSAL_STACK.js +12 -0
  72. package/src/core/collection/heap/IndexedFloatMinHeap.d.ts +62 -0
  73. package/src/core/collection/heap/IndexedFloatMinHeap.d.ts.map +1 -0
  74. package/src/core/collection/heap/IndexedFloatMinHeap.js +268 -0
  75. package/src/core/color/tonemap/tonemap_aces.d.ts +21 -0
  76. package/src/core/color/tonemap/tonemap_aces.d.ts.map +1 -0
  77. package/src/core/color/tonemap/tonemap_aces.js +41 -0
  78. package/src/core/geom/2d/Rectangle.js +2 -2
  79. package/src/core/geom/2d/aabb/AABB2.d.ts.map +1 -1
  80. package/src/core/geom/2d/aabb/AABB2.js +11 -13
  81. package/src/core/geom/2d/aabb/aabb2_area.d.ts +10 -0
  82. package/src/core/geom/2d/aabb/aabb2_area.d.ts.map +1 -0
  83. package/src/core/geom/2d/aabb/aabb2_area.js +14 -0
  84. package/src/core/geom/2d/aabb/aabb2_array_combine.d.ts +4 -8
  85. package/src/core/geom/2d/aabb/aabb2_array_combine.d.ts.map +1 -1
  86. package/src/core/geom/2d/aabb/aabb2_array_combine.js +7 -35
  87. package/src/core/geom/2d/aabb/aabb2_center_from_aabb2_buffer.d.ts +8 -0
  88. package/src/core/geom/2d/aabb/aabb2_center_from_aabb2_buffer.d.ts.map +1 -0
  89. package/src/core/geom/2d/aabb/aabb2_center_from_aabb2_buffer.js +24 -0
  90. package/src/core/geom/2d/aabb/aabb2_compute_area.d.ts +4 -7
  91. package/src/core/geom/2d/aabb/aabb2_compute_area.d.ts.map +1 -1
  92. package/src/core/geom/2d/aabb/aabb2_compute_area.js +7 -14
  93. package/src/core/geom/2d/aabb/aabb2_compute_center_from_multiple.d.ts +4 -5
  94. package/src/core/geom/2d/aabb/aabb2_compute_center_from_multiple.d.ts.map +1 -1
  95. package/src/core/geom/2d/aabb/aabb2_compute_center_from_multiple.js +7 -24
  96. package/src/core/geom/2d/aabb/aabb2_compute_intersection.d.ts +15 -0
  97. package/src/core/geom/2d/aabb/aabb2_compute_intersection.d.ts.map +1 -0
  98. package/src/core/geom/2d/aabb/aabb2_compute_intersection.js +42 -0
  99. package/src/core/geom/2d/aabb/aabb2_compute_overlap.d.ts +4 -12
  100. package/src/core/geom/2d/aabb/aabb2_compute_overlap.d.ts.map +1 -1
  101. package/src/core/geom/2d/aabb/aabb2_compute_overlap.js +7 -42
  102. package/src/core/geom/2d/aabb/aabb2_contains_point.d.ts +12 -0
  103. package/src/core/geom/2d/aabb/aabb2_contains_point.d.ts.map +1 -0
  104. package/src/core/geom/2d/aabb/aabb2_contains_point.js +17 -0
  105. package/src/core/geom/2d/aabb/aabb2_from_rectangle.d.ts +8 -0
  106. package/src/core/geom/2d/aabb/aabb2_from_rectangle.d.ts.map +1 -0
  107. package/src/core/geom/2d/aabb/aabb2_from_rectangle.js +29 -0
  108. package/src/core/geom/2d/aabb/aabb2_from_v2_array.d.ts +4 -5
  109. package/src/core/geom/2d/aabb/aabb2_from_v2_array.d.ts.map +1 -1
  110. package/src/core/geom/2d/aabb/aabb2_from_v2_array.js +7 -33
  111. package/src/core/geom/2d/aabb/aabb2_from_v2_buffer.d.ts +8 -0
  112. package/src/core/geom/2d/aabb/aabb2_from_v2_buffer.d.ts.map +1 -0
  113. package/src/core/geom/2d/aabb/aabb2_from_v2_buffer.js +33 -0
  114. package/src/core/geom/2d/aabb/aabb2_intersects_aabb2.d.ts +14 -0
  115. package/src/core/geom/2d/aabb/aabb2_intersects_aabb2.d.ts.map +1 -0
  116. package/src/core/geom/2d/aabb/aabb2_intersects_aabb2.js +21 -0
  117. package/src/core/geom/2d/aabb/aabb2_intersects_point.d.ts +4 -9
  118. package/src/core/geom/2d/aabb/aabb2_intersects_point.d.ts.map +1 -1
  119. package/src/core/geom/2d/aabb/aabb2_intersects_point.js +7 -17
  120. package/src/core/geom/2d/aabb/aabb2_overlap_exists.d.ts +4 -11
  121. package/src/core/geom/2d/aabb/aabb2_overlap_exists.d.ts.map +1 -1
  122. package/src/core/geom/2d/aabb/aabb2_overlap_exists.js +7 -21
  123. package/src/core/geom/2d/aabb/aabb2_union_array.d.ts +11 -0
  124. package/src/core/geom/2d/aabb/aabb2_union_array.d.ts.map +1 -0
  125. package/src/core/geom/2d/aabb/aabb2_union_array.js +35 -0
  126. package/src/core/geom/2d/bvh/BVH2D.js +5 -5
  127. package/src/core/geom/2d/circle/circle_compute_circle_intersection.d.ts +4 -11
  128. package/src/core/geom/2d/circle/circle_compute_circle_intersection.d.ts.map +1 -1
  129. package/src/core/geom/2d/circle/circle_compute_circle_intersection.js +7 -64
  130. package/src/core/geom/2d/circle/circle_compute_circle_penetration.d.ts +4 -9
  131. package/src/core/geom/2d/circle/circle_compute_circle_penetration.d.ts.map +1 -1
  132. package/src/core/geom/2d/circle/circle_compute_circle_penetration.js +7 -32
  133. package/src/core/geom/2d/circle/circle_compute_intersection.d.ts +14 -0
  134. package/src/core/geom/2d/circle/circle_compute_intersection.d.ts.map +1 -0
  135. package/src/core/geom/2d/circle/circle_compute_intersection.js +64 -0
  136. package/src/core/geom/2d/circle/circle_compute_penetration.d.ts +12 -0
  137. package/src/core/geom/2d/circle/circle_compute_penetration.d.ts.map +1 -0
  138. package/src/core/geom/2d/circle/circle_compute_penetration.js +32 -0
  139. package/src/core/geom/2d/circle/circle_contains_point.d.ts +11 -0
  140. package/src/core/geom/2d/circle/circle_contains_point.d.ts.map +1 -0
  141. package/src/core/geom/2d/circle/circle_contains_point.js +16 -0
  142. package/src/core/geom/2d/circle/circle_intersects_point.d.ts +4 -8
  143. package/src/core/geom/2d/circle/circle_intersects_point.d.ts.map +1 -1
  144. package/src/core/geom/2d/circle/circle_intersects_point.js +7 -16
  145. package/src/core/geom/2d/compute_polygon_area_2d.d.ts +4 -5
  146. package/src/core/geom/2d/compute_polygon_area_2d.d.ts.map +1 -1
  147. package/src/core/geom/2d/compute_polygon_area_2d.js +7 -34
  148. package/src/core/geom/2d/convex-hull/convex_hull_fixed_count_2d_bruteforce.d.ts +17 -0
  149. package/src/core/geom/2d/convex-hull/convex_hull_fixed_count_2d_bruteforce.d.ts.map +1 -0
  150. package/src/core/geom/2d/convex-hull/convex_hull_fixed_count_2d_bruteforce.js +156 -0
  151. package/src/core/geom/2d/convex-hull/convex_hull_fixed_count_2d_relaxation.d.ts +17 -0
  152. package/src/core/geom/2d/convex-hull/convex_hull_fixed_count_2d_relaxation.d.ts.map +1 -0
  153. package/src/core/geom/2d/convex-hull/convex_hull_fixed_count_2d_relaxation.js +288 -0
  154. package/src/core/geom/2d/convex-hull/convex_hull_jarvis_2d.js +2 -2
  155. package/src/core/geom/2d/convex-hull/convex_hull_monotone_2d.js +3 -3
  156. package/src/core/geom/2d/convex-hull/fixed_convex_hull_humus.d.ts +4 -14
  157. package/src/core/geom/2d/convex-hull/fixed_convex_hull_humus.d.ts.map +1 -1
  158. package/src/core/geom/2d/convex-hull/fixed_convex_hull_humus.js +7 -156
  159. package/src/core/geom/2d/convex-hull/fixed_convex_hull_relaxation.d.ts +4 -14
  160. package/src/core/geom/2d/convex-hull/fixed_convex_hull_relaxation.d.ts.map +1 -1
  161. package/src/core/geom/2d/convex-hull/fixed_convex_hull_relaxation.js +7 -288
  162. package/src/core/geom/2d/convex-hull/orient2d_indexed.d.ts +10 -0
  163. package/src/core/geom/2d/convex-hull/orient2d_indexed.d.ts.map +1 -0
  164. package/src/core/geom/2d/convex-hull/orient2d_indexed.js +22 -0
  165. package/src/core/geom/2d/convex-hull/orientation3_array.d.ts +4 -7
  166. package/src/core/geom/2d/convex-hull/orientation3_array.d.ts.map +1 -1
  167. package/src/core/geom/2d/convex-hull/orientation3_array.js +7 -22
  168. package/src/core/geom/2d/hash-grid/shg_query_elements_line.js +3 -3
  169. package/src/core/geom/2d/intersect_ray_2d.d.ts +4 -13
  170. package/src/core/geom/2d/intersect_ray_2d.d.ts.map +1 -1
  171. package/src/core/geom/2d/intersect_ray_2d.js +7 -49
  172. package/src/core/geom/2d/line/line2_compute_segment_point_distance_sqr.d.ts +11 -0
  173. package/src/core/geom/2d/line/line2_compute_segment_point_distance_sqr.d.ts.map +1 -0
  174. package/src/core/geom/2d/line/line2_compute_segment_point_distance_sqr.js +39 -0
  175. package/src/core/geom/2d/line/line2_distance_to_point_sqr.d.ts +4 -8
  176. package/src/core/geom/2d/line/line2_distance_to_point_sqr.d.ts.map +1 -1
  177. package/src/core/geom/2d/line/line2_distance_to_point_sqr.js +7 -39
  178. package/src/core/geom/2d/line/line2_segment_intersection_fraction_2d.d.ts +23 -0
  179. package/src/core/geom/2d/line/line2_segment_intersection_fraction_2d.d.ts.map +1 -0
  180. package/src/core/geom/2d/line/line2_segment_intersection_fraction_2d.js +44 -0
  181. package/src/core/geom/2d/line/line_segment_compute_line_segment_intersection_2d.d.ts +4 -11
  182. package/src/core/geom/2d/line/line_segment_compute_line_segment_intersection_2d.d.ts.map +1 -1
  183. package/src/core/geom/2d/line/line_segment_compute_line_segment_intersection_2d.js +7 -35
  184. package/src/core/geom/2d/line/line_segment_compute_line_segment_intersection_array_2d.d.ts +4 -17
  185. package/src/core/geom/2d/line/line_segment_compute_line_segment_intersection_array_2d.d.ts.map +1 -1
  186. package/src/core/geom/2d/line/line_segment_compute_line_segment_intersection_array_2d.js +7 -51
  187. package/src/core/geom/2d/line/line_segment_compute_line_segment_intersection_vectors_2d.d.ts +4 -7
  188. package/src/core/geom/2d/line/line_segment_compute_line_segment_intersection_vectors_2d.d.ts.map +1 -1
  189. package/src/core/geom/2d/line/line_segment_compute_line_segment_intersection_vectors_2d.js +7 -15
  190. package/src/core/geom/2d/line/line_segment_compute_line_segment_intersection_vectors_array_2d.d.ts +4 -6
  191. package/src/core/geom/2d/line/line_segment_compute_line_segment_intersection_vectors_array_2d.d.ts.map +1 -1
  192. package/src/core/geom/2d/line/line_segment_compute_line_segment_intersection_vectors_array_2d.js +7 -30
  193. package/src/core/geom/2d/line/line_segment_intersection_fraction_2d.d.ts +4 -20
  194. package/src/core/geom/2d/line/line_segment_intersection_fraction_2d.d.ts.map +1 -1
  195. package/src/core/geom/2d/line/line_segment_intersection_fraction_2d.js +4 -41
  196. package/src/core/geom/2d/line/line_segment_line_segment_intersection_exists_2d.d.ts +4 -12
  197. package/src/core/geom/2d/line/line_segment_line_segment_intersection_exists_2d.d.ts.map +1 -1
  198. package/src/core/geom/2d/line/line_segment_line_segment_intersection_exists_2d.js +7 -29
  199. package/src/core/geom/2d/line/ray2_ray2_compute_intersection_array_2d.d.ts +16 -0
  200. package/src/core/geom/2d/line/ray2_ray2_compute_intersection_array_2d.d.ts.map +1 -0
  201. package/src/core/geom/2d/line/ray2_ray2_compute_intersection_array_2d.js +49 -0
  202. package/src/core/geom/2d/line/segment2_intersects_segment2_2d.d.ts +15 -0
  203. package/src/core/geom/2d/line/segment2_intersects_segment2_2d.d.ts.map +1 -0
  204. package/src/core/geom/2d/line/segment2_intersects_segment2_2d.js +29 -0
  205. package/src/core/geom/2d/line/segment2_segment_compute_intersection_array_2d.d.ts +20 -0
  206. package/src/core/geom/2d/line/segment2_segment_compute_intersection_array_2d.d.ts.map +1 -0
  207. package/src/core/geom/2d/line/segment2_segment_compute_intersection_array_2d.js +51 -0
  208. package/src/core/geom/2d/line/segment2_segment_compute_intersection_to_new_array_2d.d.ts +9 -0
  209. package/src/core/geom/2d/line/segment2_segment_compute_intersection_to_new_array_2d.d.ts.map +1 -0
  210. package/src/core/geom/2d/line/segment2_segment_compute_intersection_to_new_array_2d.js +28 -0
  211. package/src/core/geom/2d/line/segment2_segment_compute_intersection_v2_2d.d.ts +14 -0
  212. package/src/core/geom/2d/line/segment2_segment_compute_intersection_v2_2d.d.ts.map +1 -0
  213. package/src/core/geom/2d/line/segment2_segment_compute_intersection_v2_2d.js +33 -0
  214. package/src/core/geom/2d/line/segment2_segment_compute_intersection_v2_objects_2d.d.ts +10 -0
  215. package/src/core/geom/2d/line/segment2_segment_compute_intersection_v2_objects_2d.d.ts.map +1 -0
  216. package/src/core/geom/2d/line/segment2_segment_compute_intersection_v2_objects_2d.js +13 -0
  217. package/src/core/geom/2d/polygon/polygon2_clip_halfplane.d.ts +17 -0
  218. package/src/core/geom/2d/polygon/polygon2_clip_halfplane.d.ts.map +1 -0
  219. package/src/core/geom/2d/polygon/polygon2_clip_halfplane.js +50 -0
  220. package/src/core/geom/2d/polygon/polygon2_signed_area.d.ts +8 -0
  221. package/src/core/geom/2d/polygon/polygon2_signed_area.d.ts.map +1 -0
  222. package/src/core/geom/2d/polygon/polygon2_signed_area.js +34 -0
  223. package/src/core/geom/2d/quad-tree/qt_collect_by_box.js +3 -3
  224. package/src/core/geom/2d/quad-tree/qt_collect_by_point.js +3 -3
  225. package/src/core/geom/2d/quad-tree/qt_query_closest_to_point.d.ts +12 -0
  226. package/src/core/geom/2d/quad-tree/qt_query_closest_to_point.d.ts.map +1 -0
  227. package/src/core/geom/2d/quad-tree/qt_query_closest_to_point.js +62 -0
  228. package/src/core/geom/2d/quad-tree/qt_query_data_nearest_to_point.d.ts +4 -9
  229. package/src/core/geom/2d/quad-tree/qt_query_data_nearest_to_point.d.ts.map +1 -1
  230. package/src/core/geom/2d/quad-tree/qt_query_data_nearest_to_point.js +7 -62
  231. package/src/core/geom/2d/r-tree/StaticR2Tree.js +3 -3
  232. package/src/core/geom/2d/rectangle_to_aabb.d.ts +4 -5
  233. package/src/core/geom/2d/rectangle_to_aabb.d.ts.map +1 -1
  234. package/src/core/geom/2d/rectangle_to_aabb.js +7 -29
  235. package/src/core/geom/2d/spline2_quadratic_bezier.d.ts +13 -0
  236. package/src/core/geom/2d/spline2_quadratic_bezier.d.ts.map +1 -0
  237. package/src/core/geom/2d/spline2_quadratic_bezier.js +26 -0
  238. package/src/core/geom/2d/spline_bezier2_2d.d.ts +4 -10
  239. package/src/core/geom/2d/spline_bezier2_2d.d.ts.map +1 -1
  240. package/src/core/geom/2d/spline_bezier2_2d.js +7 -26
  241. package/src/core/geom/2d/triangle/tri2_compute_barycentric.d.ts +15 -0
  242. package/src/core/geom/2d/triangle/tri2_compute_barycentric.d.ts.map +1 -0
  243. package/src/core/geom/2d/triangle/tri2_compute_barycentric.js +48 -0
  244. package/src/core/geom/2d/triangle/tri2_contains_point.d.ts +14 -0
  245. package/src/core/geom/2d/triangle/tri2_contains_point.d.ts.map +1 -0
  246. package/src/core/geom/2d/triangle/tri2_contains_point.js +39 -0
  247. package/src/core/geom/2d/triangle/tri2_signed_area.d.ts +12 -0
  248. package/src/core/geom/2d/triangle/tri2_signed_area.d.ts.map +1 -0
  249. package/src/core/geom/2d/triangle/tri2_signed_area.js +23 -0
  250. package/src/core/geom/2d/triangle2d_compute_area.d.ts +4 -9
  251. package/src/core/geom/2d/triangle2d_compute_area.d.ts.map +1 -1
  252. package/src/core/geom/2d/triangle2d_compute_area.js +7 -23
  253. package/src/core/geom/2d/triangle2d_contains_point.d.ts +4 -11
  254. package/src/core/geom/2d/triangle2d_contains_point.d.ts.map +1 -1
  255. package/src/core/geom/2d/triangle2d_contains_point.js +7 -39
  256. package/src/core/geom/2d/triangle2d_get_barycentric.d.ts +4 -12
  257. package/src/core/geom/2d/triangle2d_get_barycentric.d.ts.map +1 -1
  258. package/src/core/geom/2d/triangle2d_get_barycentric.js +7 -48
  259. package/src/core/geom/3d/aabb/AABB3.js +6 -6
  260. package/src/core/geom/3d/aabb/aabb3_array_intersects_frustum_degree.d.ts +4 -6
  261. package/src/core/geom/3d/aabb/aabb3_array_intersects_frustum_degree.d.ts.map +1 -1
  262. package/src/core/geom/3d/aabb/aabb3_array_intersects_frustum_degree.js +7 -29
  263. package/src/core/geom/3d/aabb/aabb3_array_near_distance_to_intersection_ray_segment.js +2 -2
  264. package/src/core/geom/3d/aabb/aabb3_box_surface_area_2.d.ts +4 -4
  265. package/src/core/geom/3d/aabb/aabb3_box_surface_area_2.d.ts.map +1 -1
  266. package/src/core/geom/3d/aabb/aabb3_box_surface_area_2.js +7 -10
  267. package/src/core/geom/3d/aabb/aabb3_build_frustum.d.ts +11 -0
  268. package/src/core/geom/3d/aabb/aabb3_build_frustum.d.ts.map +1 -1
  269. package/src/core/geom/3d/aabb/aabb3_build_frustum.js +6 -1
  270. package/src/core/geom/3d/aabb/aabb3_classify_against_frustum.d.ts +13 -0
  271. package/src/core/geom/3d/aabb/aabb3_classify_against_frustum.d.ts.map +1 -0
  272. package/src/core/geom/3d/aabb/aabb3_classify_against_frustum.js +46 -0
  273. package/src/core/geom/3d/aabb/aabb3_classify_against_frustum_array.d.ts +9 -0
  274. package/src/core/geom/3d/aabb/aabb3_classify_against_frustum_array.d.ts.map +1 -0
  275. package/src/core/geom/3d/aabb/aabb3_classify_against_frustum_array.js +29 -0
  276. package/src/core/geom/3d/aabb/aabb3_closest_point_on_surface.d.ts +15 -0
  277. package/src/core/geom/3d/aabb/aabb3_closest_point_on_surface.d.ts.map +1 -0
  278. package/src/core/geom/3d/aabb/aabb3_closest_point_on_surface.js +57 -0
  279. package/src/core/geom/3d/aabb/aabb3_combined_surface_area.d.ts +4 -5
  280. package/src/core/geom/3d/aabb/aabb3_combined_surface_area.d.ts.map +1 -1
  281. package/src/core/geom/3d/aabb/aabb3_combined_surface_area.js +7 -21
  282. package/src/core/geom/3d/aabb/aabb3_compute_clipping_volume_intersection.d.ts +22 -0
  283. package/src/core/geom/3d/aabb/aabb3_compute_clipping_volume_intersection.d.ts.map +1 -0
  284. package/src/core/geom/3d/aabb/aabb3_compute_clipping_volume_intersection.js +298 -0
  285. package/src/core/geom/3d/aabb/aabb3_compute_half_surface_area.d.ts +4 -9
  286. package/src/core/geom/3d/aabb/aabb3_compute_half_surface_area.d.ts.map +1 -1
  287. package/src/core/geom/3d/aabb/aabb3_compute_half_surface_area.js +7 -19
  288. package/src/core/geom/3d/aabb/aabb3_compute_projected_area.d.ts +4 -6
  289. package/src/core/geom/3d/aabb/aabb3_compute_projected_area.d.ts.map +1 -1
  290. package/src/core/geom/3d/aabb/aabb3_compute_projected_area.js +7 -86
  291. package/src/core/geom/3d/aabb/aabb3_compute_surface_area.d.ts +4 -9
  292. package/src/core/geom/3d/aabb/aabb3_compute_surface_area.d.ts.map +1 -1
  293. package/src/core/geom/3d/aabb/aabb3_compute_surface_area.js +7 -16
  294. package/src/core/geom/3d/aabb/aabb3_detailed_volume_intersection.d.ts +4 -19
  295. package/src/core/geom/3d/aabb/aabb3_detailed_volume_intersection.d.ts.map +1 -1
  296. package/src/core/geom/3d/aabb/aabb3_detailed_volume_intersection.js +7 -298
  297. package/src/core/geom/3d/aabb/aabb3_estimate_projected_area.d.ts +8 -0
  298. package/src/core/geom/3d/aabb/aabb3_estimate_projected_area.d.ts.map +1 -0
  299. package/src/core/geom/3d/aabb/aabb3_estimate_projected_area.js +59 -0
  300. package/src/core/geom/3d/aabb/aabb3_estimate_projected_area2.d.ts +4 -5
  301. package/src/core/geom/3d/aabb/aabb3_estimate_projected_area2.d.ts.map +1 -1
  302. package/src/core/geom/3d/aabb/aabb3_estimate_projected_area2.js +7 -59
  303. package/src/core/geom/3d/aabb/aabb3_from_three_geometry.d.ts +7 -0
  304. package/src/core/geom/3d/aabb/aabb3_from_three_geometry.d.ts.map +1 -0
  305. package/src/core/geom/3d/aabb/aabb3_from_three_geometry.js +18 -0
  306. package/src/core/geom/3d/aabb/aabb3_from_threejs_geometry.d.ts +4 -4
  307. package/src/core/geom/3d/aabb/aabb3_from_threejs_geometry.d.ts.map +1 -1
  308. package/src/core/geom/3d/aabb/aabb3_from_threejs_geometry.js +7 -18
  309. package/src/core/geom/3d/aabb/aabb3_from_triangle_group.d.ts +12 -0
  310. package/src/core/geom/3d/aabb/aabb3_from_triangle_group.d.ts.map +1 -0
  311. package/src/core/geom/3d/aabb/aabb3_from_triangle_group.js +46 -0
  312. package/src/core/geom/3d/aabb/aabb3_half_surface_area.d.ts +7 -0
  313. package/src/core/geom/3d/aabb/aabb3_half_surface_area.d.ts.map +1 -0
  314. package/src/core/geom/3d/aabb/aabb3_half_surface_area.js +10 -0
  315. package/src/core/geom/3d/aabb/aabb3_half_surface_area_extents.d.ts +12 -0
  316. package/src/core/geom/3d/aabb/aabb3_half_surface_area_extents.d.ts.map +1 -0
  317. package/src/core/geom/3d/aabb/aabb3_half_surface_area_extents.js +19 -0
  318. package/src/core/geom/3d/aabb/aabb3_intersects_frustum_degree.d.ts +4 -10
  319. package/src/core/geom/3d/aabb/aabb3_intersects_frustum_degree.d.ts.map +1 -1
  320. package/src/core/geom/3d/aabb/aabb3_intersects_frustum_degree.js +7 -46
  321. package/src/core/geom/3d/aabb/aabb3_intersects_line_segment.d.ts +4 -15
  322. package/src/core/geom/3d/aabb/aabb3_intersects_line_segment.d.ts.map +1 -1
  323. package/src/core/geom/3d/aabb/aabb3_intersects_line_segment.js +7 -77
  324. package/src/core/geom/3d/aabb/aabb3_intersects_ray_segment.d.ts +13 -0
  325. package/src/core/geom/3d/aabb/aabb3_intersects_ray_segment.d.ts.map +1 -1
  326. package/src/core/geom/3d/aabb/aabb3_intersects_ray_segment.js +27 -6
  327. package/src/core/geom/3d/aabb/aabb3_intersects_segment3.d.ts +18 -0
  328. package/src/core/geom/3d/aabb/aabb3_intersects_segment3.d.ts.map +1 -0
  329. package/src/core/geom/3d/aabb/aabb3_intersects_segment3.js +77 -0
  330. package/src/core/geom/3d/aabb/aabb3_near_distance_to_intersection_ray_segment.d.ts +4 -17
  331. package/src/core/geom/3d/aabb/aabb3_near_distance_to_intersection_ray_segment.d.ts.map +1 -1
  332. package/src/core/geom/3d/aabb/aabb3_near_distance_to_intersection_ray_segment.js +7 -70
  333. package/src/core/geom/3d/aabb/aabb3_nearest_point_on_surface.d.ts +4 -12
  334. package/src/core/geom/3d/aabb/aabb3_nearest_point_on_surface.d.ts.map +1 -1
  335. package/src/core/geom/3d/aabb/aabb3_nearest_point_on_surface.js +4 -54
  336. package/src/core/geom/3d/aabb/aabb3_projected_area.d.ts +9 -0
  337. package/src/core/geom/3d/aabb/aabb3_projected_area.d.ts.map +1 -0
  338. package/src/core/geom/3d/aabb/aabb3_projected_area.js +86 -0
  339. package/src/core/geom/3d/aabb/aabb3_ray_segment_entry_distance.d.ts +38 -0
  340. package/src/core/geom/3d/aabb/aabb3_ray_segment_entry_distance.d.ts.map +1 -0
  341. package/src/core/geom/3d/aabb/aabb3_ray_segment_entry_distance.js +95 -0
  342. package/src/core/geom/3d/aabb/aabb3_raycast.d.ts +4 -22
  343. package/src/core/geom/3d/aabb/aabb3_raycast.d.ts.map +1 -1
  344. package/src/core/geom/3d/aabb/aabb3_raycast.js +7 -109
  345. package/src/core/geom/3d/aabb/aabb3_raycast_hit_point.d.ts +25 -0
  346. package/src/core/geom/3d/aabb/aabb3_raycast_hit_point.d.ts.map +1 -0
  347. package/src/core/geom/3d/aabb/aabb3_raycast_hit_point.js +109 -0
  348. package/src/core/geom/3d/aabb/aabb3_score_boxes_SAH.js +2 -2
  349. package/src/core/geom/3d/aabb/aabb3_score_boxes_SAH_delta.d.ts +7 -1
  350. package/src/core/geom/3d/aabb/aabb3_score_boxes_SAH_delta.d.ts.map +1 -1
  351. package/src/core/geom/3d/aabb/aabb3_score_boxes_SAH_delta.js +8 -5
  352. package/src/core/geom/3d/aabb/aabb3_surface_area.d.ts +12 -0
  353. package/src/core/geom/3d/aabb/aabb3_surface_area.d.ts.map +1 -0
  354. package/src/core/geom/3d/aabb/aabb3_surface_area.js +16 -0
  355. package/src/core/geom/3d/aabb/aabb3_transform_oriented_inverse.js +2 -2
  356. package/src/core/geom/3d/aabb/aabb3_transformed_compute_plane_side.d.ts.map +1 -1
  357. package/src/core/geom/3d/aabb/aabb3_transformed_compute_plane_side.js +4 -1
  358. package/src/core/geom/3d/aabb/aabb3_union_half_surface_area.d.ts +8 -0
  359. package/src/core/geom/3d/aabb/aabb3_union_half_surface_area.d.ts.map +1 -0
  360. package/src/core/geom/3d/aabb/aabb3_union_half_surface_area.js +21 -0
  361. package/src/core/geom/3d/aabb/aabb_nd_from_points.d.ts +10 -0
  362. package/src/core/geom/3d/aabb/aabb_nd_from_points.d.ts.map +1 -0
  363. package/src/core/geom/3d/aabb/aabb_nd_from_points.js +39 -0
  364. package/src/core/geom/3d/aabb/compute_aabb_from_points.d.ts +4 -7
  365. package/src/core/geom/3d/aabb/compute_aabb_from_points.d.ts.map +1 -1
  366. package/src/core/geom/3d/aabb/compute_aabb_from_points.js +7 -39
  367. package/src/core/geom/3d/aabb/compute_triangle_group_aabb3.d.ts +4 -9
  368. package/src/core/geom/3d/aabb/compute_triangle_group_aabb3.d.ts.map +1 -1
  369. package/src/core/geom/3d/aabb/compute_triangle_group_aabb3.js +4 -43
  370. package/src/core/geom/3d/capsule/capsule_intersects_aabb3_closed.d.ts +40 -0
  371. package/src/core/geom/3d/capsule/capsule_intersects_aabb3_closed.d.ts.map +1 -0
  372. package/src/core/geom/3d/capsule/capsule_intersects_aabb3_closed.js +67 -0
  373. package/src/core/geom/3d/capsule/capsule_intersects_aabb3_iterative.d.ts +45 -0
  374. package/src/core/geom/3d/capsule/capsule_intersects_aabb3_iterative.d.ts.map +1 -0
  375. package/src/core/geom/3d/capsule/capsule_intersects_aabb3_iterative.js +137 -0
  376. package/src/core/geom/3d/circle3_compute_bounding_box.d.ts +14 -0
  377. package/src/core/geom/3d/circle3_compute_bounding_box.d.ts.map +1 -0
  378. package/src/core/geom/3d/circle3_compute_bounding_box.js +35 -0
  379. package/src/core/geom/3d/compute_circle_bounding_box.d.ts +4 -11
  380. package/src/core/geom/3d/compute_circle_bounding_box.d.ts.map +1 -1
  381. package/src/core/geom/3d/compute_circle_bounding_box.js +7 -35
  382. package/src/core/geom/3d/cone/computeConeBoundingBox.d.ts +4 -11
  383. package/src/core/geom/3d/cone/computeConeBoundingBox.d.ts.map +1 -1
  384. package/src/core/geom/3d/cone/computeConeBoundingBox.js +7 -58
  385. package/src/core/geom/3d/cone/computeConePlaneSide.d.ts +4 -16
  386. package/src/core/geom/3d/cone/computeConePlaneSide.d.ts.map +1 -1
  387. package/src/core/geom/3d/cone/computeConePlaneSide.js +7 -86
  388. package/src/core/geom/3d/cone/compute_bounding_cone_of_2_cones.d.ts +4 -5
  389. package/src/core/geom/3d/cone/compute_bounding_cone_of_2_cones.d.ts.map +1 -1
  390. package/src/core/geom/3d/cone/compute_bounding_cone_of_2_cones.js +7 -97
  391. package/src/core/geom/3d/cone/cone_compute_bounding_box.d.ts +14 -0
  392. package/src/core/geom/3d/cone/cone_compute_bounding_box.d.ts.map +1 -0
  393. package/src/core/geom/3d/cone/cone_compute_bounding_box.js +58 -0
  394. package/src/core/geom/3d/cone/cone_compute_bounding_of_2_cones.d.ts +8 -0
  395. package/src/core/geom/3d/cone/cone_compute_bounding_of_2_cones.d.ts.map +1 -0
  396. package/src/core/geom/3d/cone/cone_compute_bounding_of_2_cones.js +97 -0
  397. package/src/core/geom/3d/cone/cone_compute_plane_side.d.ts +19 -0
  398. package/src/core/geom/3d/cone/cone_compute_plane_side.d.ts.map +1 -0
  399. package/src/core/geom/3d/cone/cone_compute_plane_side.js +86 -0
  400. package/src/core/geom/3d/frustum/clipping_volume_matrix4_project.d.ts +4 -8
  401. package/src/core/geom/3d/frustum/clipping_volume_matrix4_project.d.ts.map +1 -1
  402. package/src/core/geom/3d/frustum/clipping_volume_matrix4_project.js +7 -45
  403. package/src/core/geom/3d/frustum/frustum3_computeNearestPointToPoint.d.ts +4 -9
  404. package/src/core/geom/3d/frustum/frustum3_computeNearestPointToPoint.d.ts.map +1 -1
  405. package/src/core/geom/3d/frustum/frustum3_computeNearestPointToPoint.js +7 -112
  406. package/src/core/geom/3d/frustum/frustum3_compute_closest_point.d.ts +12 -0
  407. package/src/core/geom/3d/frustum/frustum3_compute_closest_point.d.ts.map +1 -0
  408. package/src/core/geom/3d/frustum/frustum3_compute_closest_point.js +110 -0
  409. package/src/core/geom/3d/frustum/frustum3_from_aabb.d.ts +19 -0
  410. package/src/core/geom/3d/frustum/frustum3_from_aabb.d.ts.map +1 -0
  411. package/src/core/geom/3d/frustum/frustum3_from_aabb.js +60 -0
  412. package/src/core/geom/3d/frustum/frustum3_matrix4_project.d.ts +10 -0
  413. package/src/core/geom/3d/frustum/frustum3_matrix4_project.d.ts.map +1 -0
  414. package/src/core/geom/3d/frustum/frustum3_matrix4_project.js +18 -0
  415. package/src/core/geom/3d/frustum/frustum3_matrix4_project_n.d.ts +11 -0
  416. package/src/core/geom/3d/frustum/frustum3_matrix4_project_n.d.ts.map +1 -0
  417. package/src/core/geom/3d/frustum/frustum3_matrix4_project_n.js +45 -0
  418. package/src/core/geom/3d/frustum/frustum3_planes_to_flat_from_three.d.ts +7 -0
  419. package/src/core/geom/3d/frustum/frustum3_planes_to_flat_from_three.d.ts.map +1 -0
  420. package/src/core/geom/3d/frustum/frustum3_planes_to_flat_from_three.js +26 -0
  421. package/src/core/geom/3d/frustum/frustum3_slice_linear_to_points.d.ts +10 -0
  422. package/src/core/geom/3d/frustum/frustum3_slice_linear_to_points.d.ts.map +1 -0
  423. package/src/core/geom/3d/frustum/frustum3_slice_linear_to_points.js +96 -0
  424. package/src/core/geom/3d/frustum/frustum_compute_corners.js +9 -9
  425. package/src/core/geom/3d/frustum/frustum_matrix4_project.d.ts +4 -7
  426. package/src/core/geom/3d/frustum/frustum_matrix4_project.d.ts.map +1 -1
  427. package/src/core/geom/3d/frustum/frustum_matrix4_project.js +7 -18
  428. package/src/core/geom/3d/frustum/hexahedron_from_aabb.d.ts +4 -16
  429. package/src/core/geom/3d/frustum/hexahedron_from_aabb.d.ts.map +1 -1
  430. package/src/core/geom/3d/frustum/hexahedron_from_aabb.js +7 -60
  431. package/src/core/geom/3d/frustum/read_three_planes_to_array.d.ts.map +1 -1
  432. package/src/core/geom/3d/frustum/read_three_planes_to_array.js +7 -26
  433. package/src/core/geom/3d/frustum/slice_frustum_linear_to_points.d.ts +4 -7
  434. package/src/core/geom/3d/frustum/slice_frustum_linear_to_points.d.ts.map +1 -1
  435. package/src/core/geom/3d/frustum/slice_frustum_linear_to_points.js +7 -96
  436. package/src/core/geom/3d/funnel_string_pull.d.ts.map +1 -0
  437. package/src/{engine/navigation/mesh → core/geom/3d}/funnel_string_pull.js +1 -1
  438. package/src/core/geom/3d/gjk/GJK_REVIEW_NOTES.md +146 -0
  439. package/src/core/geom/3d/gjk/gjk.js +4 -4
  440. package/src/core/geom/3d/gjk/gjk_epa_penetration.js +13 -13
  441. package/src/core/geom/3d/line/line3_closest_points_segment_segment.d.ts +4 -24
  442. package/src/core/geom/3d/line/line3_closest_points_segment_segment.d.ts.map +1 -1
  443. package/src/core/geom/3d/line/line3_closest_points_segment_segment.js +4 -85
  444. package/src/core/geom/3d/line/line3_compute_nearest_point_to_point.d.ts.map +1 -1
  445. package/src/core/geom/3d/line/line3_compute_nearest_point_to_point.js +7 -34
  446. package/src/core/geom/3d/line/line3_compute_segment_closest_point.d.ts +16 -0
  447. package/src/core/geom/3d/line/line3_compute_segment_closest_point.d.ts.map +1 -0
  448. package/src/core/geom/3d/line/line3_compute_segment_closest_point.js +34 -0
  449. package/src/core/geom/3d/line/line3_compute_segment_closest_point_t.d.ts +19 -0
  450. package/src/core/geom/3d/line/line3_compute_segment_closest_point_t.d.ts.map +1 -0
  451. package/src/core/geom/3d/line/line3_compute_segment_closest_point_t.js +48 -0
  452. package/src/core/geom/3d/line/line3_compute_segment_closest_point_to_aabb3_t.d.ts +44 -0
  453. package/src/core/geom/3d/line/line3_compute_segment_closest_point_to_aabb3_t.d.ts.map +1 -0
  454. package/src/core/geom/3d/line/line3_compute_segment_closest_point_to_aabb3_t.js +153 -0
  455. package/src/core/geom/3d/line/line3_compute_segment_nearest_point_to_aabb3_t.d.ts +7 -0
  456. package/src/core/geom/3d/line/line3_compute_segment_nearest_point_to_aabb3_t.d.ts.map +1 -0
  457. package/src/core/geom/3d/line/line3_compute_segment_nearest_point_to_aabb3_t.js +7 -0
  458. package/src/core/geom/3d/line/line3_compute_segment_nearest_point_to_point_t.d.ts +4 -16
  459. package/src/core/geom/3d/line/line3_compute_segment_nearest_point_to_point_t.d.ts.map +1 -1
  460. package/src/core/geom/3d/line/line3_compute_segment_nearest_point_to_point_t.js +7 -48
  461. package/src/core/geom/3d/line/line3_compute_segment_point_distance_sqr.d.ts +1 -1
  462. package/src/core/geom/3d/line/line3_compute_segment_point_distance_sqr.js +2 -2
  463. package/src/core/geom/3d/line/line3_compute_segment_segment_closest_points.d.ts +27 -0
  464. package/src/core/geom/3d/line/line3_compute_segment_segment_closest_points.d.ts.map +1 -0
  465. package/src/core/geom/3d/line/line3_compute_segment_segment_closest_points.js +88 -0
  466. package/src/core/geom/3d/line/segment3_point_distance_to_segments.d.ts +11 -0
  467. package/src/core/geom/3d/line/segment3_point_distance_to_segments.d.ts.map +1 -0
  468. package/src/core/geom/3d/line/segment3_point_distance_to_segments.js +25 -0
  469. package/src/core/geom/3d/mat4/allocate_m4.d.ts +4 -3
  470. package/src/core/geom/3d/mat4/allocate_m4.d.ts.map +1 -1
  471. package/src/core/geom/3d/mat4/allocate_m4.js +7 -16
  472. package/src/core/geom/3d/mat4/apply_mat4_transform_to_direction_v3_array.d.ts +4 -9
  473. package/src/core/geom/3d/mat4/apply_mat4_transform_to_direction_v3_array.d.ts.map +1 -1
  474. package/src/core/geom/3d/mat4/apply_mat4_transform_to_direction_v3_array.js +7 -55
  475. package/src/core/geom/3d/mat4/apply_mat4_transform_to_v3_array.d.ts +4 -9
  476. package/src/core/geom/3d/mat4/apply_mat4_transform_to_v3_array.d.ts.map +1 -1
  477. package/src/core/geom/3d/mat4/apply_mat4_transform_to_v3_array.js +7 -30
  478. package/src/core/geom/3d/mat4/compose_matrix4_array.d.ts +4 -19
  479. package/src/core/geom/3d/mat4/compose_matrix4_array.d.ts.map +1 -1
  480. package/src/core/geom/3d/mat4/compose_matrix4_array.js +7 -53
  481. package/src/core/geom/3d/mat4/decompose_matrix_4_array.d.ts +4 -6
  482. package/src/core/geom/3d/mat4/decompose_matrix_4_array.d.ts.map +1 -1
  483. package/src/core/geom/3d/mat4/decompose_matrix_4_array.js +7 -76
  484. package/src/core/geom/3d/mat4/eulerAnglesFromMatrix.d.ts +4 -30
  485. package/src/core/geom/3d/mat4/eulerAnglesFromMatrix.d.ts.map +1 -1
  486. package/src/core/geom/3d/mat4/eulerAnglesFromMatrix.js +7 -124
  487. package/src/core/geom/3d/mat4/m4_allocate.d.ts +6 -0
  488. package/src/core/geom/3d/mat4/m4_allocate.d.ts.map +1 -0
  489. package/src/core/geom/3d/mat4/m4_allocate.js +16 -0
  490. package/src/core/geom/3d/mat4/m4_compose.d.ts +22 -0
  491. package/src/core/geom/3d/mat4/m4_compose.d.ts.map +1 -0
  492. package/src/core/geom/3d/mat4/m4_compose.js +53 -0
  493. package/src/core/geom/3d/mat4/m4_compute_normal_matrix3.d.ts +7 -0
  494. package/src/core/geom/3d/mat4/m4_compute_normal_matrix3.d.ts.map +1 -0
  495. package/src/core/geom/3d/mat4/m4_compute_normal_matrix3.js +7 -0
  496. package/src/core/geom/3d/mat4/m4_decompose.d.ts +9 -0
  497. package/src/core/geom/3d/mat4/m4_decompose.d.ts.map +1 -0
  498. package/src/core/geom/3d/mat4/m4_decompose.js +76 -0
  499. package/src/core/geom/3d/mat4/m4_euler_angles.d.ts +33 -0
  500. package/src/core/geom/3d/mat4/m4_euler_angles.d.ts.map +1 -0
  501. package/src/core/geom/3d/mat4/m4_euler_angles.js +124 -0
  502. package/src/core/geom/3d/mat4/m4_normal_matrix3.d.ts +20 -0
  503. package/src/core/geom/3d/mat4/m4_normal_matrix3.d.ts.map +1 -0
  504. package/src/core/geom/3d/mat4/m4_normal_matrix3.js +39 -0
  505. package/src/core/geom/3d/mat4/m4_transform_direction_v3_buffer.d.ts +12 -0
  506. package/src/core/geom/3d/mat4/m4_transform_direction_v3_buffer.d.ts.map +1 -0
  507. package/src/core/geom/3d/mat4/m4_transform_direction_v3_buffer.js +55 -0
  508. package/src/core/geom/3d/mat4/m4_transform_v3_buffer.d.ts +12 -0
  509. package/src/core/geom/3d/mat4/m4_transform_v3_buffer.d.ts.map +1 -0
  510. package/src/core/geom/3d/mat4/m4_transform_v3_buffer.js +30 -0
  511. package/src/core/geom/3d/morton/mortonEncode_LUT.d.ts +4 -9
  512. package/src/core/geom/3d/morton/mortonEncode_LUT.d.ts.map +1 -1
  513. package/src/core/geom/3d/morton/mortonEncode_LUT.js +7 -143
  514. package/src/core/geom/3d/morton/mortonEncode_magicbits.d.ts +4 -9
  515. package/src/core/geom/3d/morton/mortonEncode_magicbits.d.ts.map +1 -1
  516. package/src/core/geom/3d/morton/mortonEncode_magicbits.js +7 -20
  517. package/src/core/geom/3d/morton/v3_morton_encode.d.ts +2 -2
  518. package/src/core/geom/3d/morton/v3_morton_encode.d.ts.map +1 -1
  519. package/src/core/geom/3d/morton/v3_morton_encode.js +2 -2
  520. package/src/core/geom/3d/morton/v3_morton_encode_bounded.d.ts +2 -2
  521. package/src/core/geom/3d/morton/v3_morton_encode_bounded.d.ts.map +1 -1
  522. package/src/core/geom/3d/morton/v3_morton_encode_bounded.js +1 -1
  523. package/src/core/geom/3d/morton/v3_morton_encode_lut.d.ts +12 -0
  524. package/src/core/geom/3d/morton/v3_morton_encode_lut.d.ts.map +1 -0
  525. package/src/core/geom/3d/morton/v3_morton_encode_lut.js +143 -0
  526. package/src/core/geom/3d/morton/v3_morton_encode_magicbits.d.ts +12 -0
  527. package/src/core/geom/3d/morton/v3_morton_encode_magicbits.d.ts.map +1 -0
  528. package/src/core/geom/3d/morton/v3_morton_encode_magicbits.js +20 -0
  529. package/src/core/geom/3d/normal/hemioct/encode_unit3_hemioct.d.ts +1 -14
  530. package/src/core/geom/3d/normal/hemioct/encode_unit3_hemioct.d.ts.map +1 -1
  531. package/src/core/geom/3d/normal/hemioct/encode_unit3_hemioct.js +5 -29
  532. package/src/core/geom/3d/normal/hemioct/encode_unit_to_hemioct.d.ts +15 -0
  533. package/src/core/geom/3d/normal/hemioct/encode_unit_to_hemioct.d.ts.map +1 -0
  534. package/src/core/geom/3d/normal/hemioct/encode_unit_to_hemioct.js +28 -0
  535. package/src/core/geom/3d/normal/lambert_azimuth/decode_azimuth_to_unit.d.ts +9 -0
  536. package/src/core/geom/3d/normal/lambert_azimuth/decode_azimuth_to_unit.d.ts.map +1 -0
  537. package/src/core/geom/3d/normal/{lamber_azimuth/transform.js → lambert_azimuth/decode_azimuth_to_unit.js} +30 -61
  538. package/src/core/geom/3d/normal/lambert_azimuth/encode_unit_to_azimuth.d.ts +10 -0
  539. package/src/core/geom/3d/normal/lambert_azimuth/encode_unit_to_azimuth.d.ts.map +1 -0
  540. package/src/core/geom/3d/normal/lambert_azimuth/encode_unit_to_azimuth.js +19 -0
  541. package/src/core/geom/3d/normal/spherical/decode_spheremap_to_unit.d.ts +9 -0
  542. package/src/core/geom/3d/normal/spherical/decode_spheremap_to_unit.d.ts.map +1 -0
  543. package/src/core/geom/3d/normal/spherical/decode_spheremap_to_unit.js +38 -0
  544. package/src/core/geom/3d/normal/spherical/{sphere_map_transform.d.ts → encode_unit_to_spheremap.d.ts} +2 -2
  545. package/src/core/geom/3d/normal/spherical/encode_unit_to_spheremap.d.ts.map +1 -0
  546. package/src/core/geom/3d/normal/spherical/encode_unit_to_spheremap.js +30 -0
  547. package/src/core/geom/3d/octahedra/octahedral_uv_to_direction.js +2 -2
  548. package/src/core/geom/3d/plane/is_point_within_planes.d.ts +4 -10
  549. package/src/core/geom/3d/plane/is_point_within_planes.d.ts.map +1 -1
  550. package/src/core/geom/3d/plane/is_point_within_planes.js +7 -46
  551. package/src/core/geom/3d/plane/plane3_compute_3_plane_intersection.d.ts +25 -0
  552. package/src/core/geom/3d/plane/plane3_compute_3_plane_intersection.d.ts.map +1 -0
  553. package/src/core/geom/3d/plane/plane3_compute_3_plane_intersection.js +72 -0
  554. package/src/core/geom/3d/plane/plane3_compute_3_plane_intersection_from_three.d.ts +11 -0
  555. package/src/core/geom/3d/plane/plane3_compute_3_plane_intersection_from_three.d.ts.map +1 -0
  556. package/src/core/geom/3d/plane/plane3_compute_3_plane_intersection_from_three.js +27 -0
  557. package/src/core/geom/3d/plane/plane3_compute_convex_3_plane_intersection.d.ts +4 -22
  558. package/src/core/geom/3d/plane/plane3_compute_convex_3_plane_intersection.d.ts.map +1 -1
  559. package/src/core/geom/3d/plane/plane3_compute_convex_3_plane_intersection.js +7 -72
  560. package/src/core/geom/3d/plane/plane3_compute_intersection.d.ts +17 -0
  561. package/src/core/geom/3d/plane/plane3_compute_intersection.d.ts.map +1 -0
  562. package/src/core/geom/3d/plane/plane3_compute_intersection.js +76 -0
  563. package/src/core/geom/3d/plane/plane3_compute_intersection_objects.d.ts +14 -0
  564. package/src/core/geom/3d/plane/plane3_compute_intersection_objects.d.ts.map +1 -0
  565. package/src/core/geom/3d/plane/plane3_compute_intersection_objects.js +82 -0
  566. package/src/core/geom/3d/plane/plane3_compute_plane_intersection.d.ts +4 -11
  567. package/src/core/geom/3d/plane/plane3_compute_plane_intersection.d.ts.map +1 -1
  568. package/src/core/geom/3d/plane/plane3_compute_plane_intersection.js +7 -82
  569. package/src/core/geom/3d/plane/plane3_contains_point_within_set.d.ts +13 -0
  570. package/src/core/geom/3d/plane/plane3_contains_point_within_set.d.ts.map +1 -0
  571. package/src/core/geom/3d/plane/plane3_contains_point_within_set.js +46 -0
  572. package/src/core/geom/3d/plane/plane3_intersect_plane.d.ts +4 -14
  573. package/src/core/geom/3d/plane/plane3_intersect_plane.d.ts.map +1 -1
  574. package/src/core/geom/3d/plane/plane3_intersect_plane.js +7 -76
  575. package/src/core/geom/3d/plane/plane3_matrix4_project.js +4 -4
  576. package/src/core/geom/3d/plane/plane3_three_compute_convex_3_plane_intersection.d.ts +4 -8
  577. package/src/core/geom/3d/plane/plane3_three_compute_convex_3_plane_intersection.d.ts.map +1 -1
  578. package/src/core/geom/3d/plane/plane3_three_compute_convex_3_plane_intersection.js +7 -27
  579. package/src/core/geom/3d/quaternion/quat3_createFromAxisAngle.d.ts +4 -5
  580. package/src/core/geom/3d/quaternion/quat3_createFromAxisAngle.d.ts.map +1 -1
  581. package/src/core/geom/3d/quaternion/quat3_createFromAxisAngle.js +7 -11
  582. package/src/core/geom/3d/quaternion/quat3_decode_from_uint32.d.ts +12 -0
  583. package/src/core/geom/3d/quaternion/quat3_decode_from_uint32.d.ts.map +1 -0
  584. package/src/core/geom/3d/quaternion/quat3_decode_from_uint32.js +66 -0
  585. package/src/core/geom/3d/quaternion/quat3_encode_to_uint32.d.ts +14 -0
  586. package/src/core/geom/3d/quaternion/quat3_encode_to_uint32.d.ts.map +1 -0
  587. package/src/core/geom/3d/quaternion/quat3_encode_to_uint32.js +110 -0
  588. package/src/core/geom/3d/quaternion/quat3_from_axis_angle.d.ts +8 -0
  589. package/src/core/geom/3d/quaternion/quat3_from_axis_angle.d.ts.map +1 -0
  590. package/src/core/geom/3d/quaternion/quat3_from_axis_angle.js +11 -0
  591. package/src/core/geom/3d/quaternion/quat_decode_from_uint32.d.ts +4 -9
  592. package/src/core/geom/3d/quaternion/quat_decode_from_uint32.d.ts.map +1 -1
  593. package/src/core/geom/3d/quaternion/quat_decode_from_uint32.js +7 -57
  594. package/src/core/geom/3d/quaternion/quat_encode_to_uint32.d.ts +4 -11
  595. package/src/core/geom/3d/quaternion/quat_encode_to_uint32.d.ts.map +1 -1
  596. package/src/core/geom/3d/quaternion/quat_encode_to_uint32.js +7 -110
  597. package/src/core/geom/3d/ray/Ray3.js +4 -4
  598. package/src/core/geom/3d/ray/ray3_array_apply_matrix4.js +2 -2
  599. package/src/core/geom/3d/ray/ray3_array_compose.d.ts +4 -9
  600. package/src/core/geom/3d/ray/ray3_array_compose.d.ts.map +1 -1
  601. package/src/core/geom/3d/ray/ray3_array_compose.js +7 -19
  602. package/src/core/geom/3d/ray/ray3_compose_array.d.ts +12 -0
  603. package/src/core/geom/3d/ray/ray3_compose_array.d.ts.map +1 -0
  604. package/src/core/geom/3d/ray/ray3_compose_array.js +19 -0
  605. package/src/core/geom/3d/ray/ray3_compute_closest_point.d.ts +16 -0
  606. package/src/core/geom/3d/ray/ray3_compute_closest_point.d.ts.map +1 -0
  607. package/src/core/geom/3d/ray/ray3_compute_closest_point.js +43 -0
  608. package/src/core/geom/3d/ray/ray3_compute_nearest_point_to_point.d.ts +4 -13
  609. package/src/core/geom/3d/ray/ray3_compute_nearest_point_to_point.d.ts.map +1 -1
  610. package/src/core/geom/3d/ray/ray3_compute_nearest_point_to_point.js +7 -43
  611. package/src/core/geom/3d/ray/ray3_compute_point_projection_t.d.ts +15 -0
  612. package/src/core/geom/3d/ray/ray3_compute_point_projection_t.d.ts.map +1 -0
  613. package/src/core/geom/3d/ray/ray3_compute_point_projection_t.js +31 -0
  614. package/src/core/geom/3d/ray/ray3_distance_to_point.d.ts +4 -12
  615. package/src/core/geom/3d/ray/ray3_distance_to_point.d.ts.map +1 -1
  616. package/src/core/geom/3d/ray/ray3_distance_to_point.js +7 -31
  617. package/src/core/geom/3d/ray/ray3_shift_origin_along_direction.d.ts +4 -7
  618. package/src/core/geom/3d/ray/ray3_shift_origin_along_direction.d.ts.map +1 -1
  619. package/src/core/geom/3d/ray/ray3_shift_origin_along_direction.js +7 -35
  620. package/src/core/geom/3d/ray/ray3_shift_origin_along_direction_array.d.ts +10 -0
  621. package/src/core/geom/3d/ray/ray3_shift_origin_along_direction_array.d.ts.map +1 -0
  622. package/src/core/geom/3d/ray/ray3_shift_origin_along_direction_array.js +35 -0
  623. package/src/core/geom/3d/shape/AbstractShape3D.d.ts +13 -0
  624. package/src/core/geom/3d/shape/AbstractShape3D.d.ts.map +1 -1
  625. package/src/core/geom/3d/shape/AbstractShape3D.js +16 -0
  626. package/src/core/geom/3d/shape/BoxShape3D.d.ts +1 -0
  627. package/src/core/geom/3d/shape/BoxShape3D.d.ts.map +1 -1
  628. package/src/core/geom/3d/shape/BoxShape3D.js +21 -5
  629. package/src/core/geom/3d/shape/CapsuleShape3D.d.ts +1 -0
  630. package/src/core/geom/3d/shape/CapsuleShape3D.d.ts.map +1 -1
  631. package/src/core/geom/3d/shape/CapsuleShape3D.js +23 -4
  632. package/src/core/geom/3d/shape/ConvexHullShape3D.js +3 -3
  633. package/src/core/geom/3d/shape/CylinderShape3D.js +2 -2
  634. package/src/core/geom/3d/shape/MeshShape3D.d.ts +39 -4
  635. package/src/core/geom/3d/shape/MeshShape3D.d.ts.map +1 -1
  636. package/src/core/geom/3d/shape/MeshShape3D.js +120 -11
  637. package/src/core/geom/3d/shape/SphereShape3D.d.ts +1 -0
  638. package/src/core/geom/3d/shape/SphereShape3D.d.ts.map +1 -1
  639. package/src/core/geom/3d/shape/SphereShape3D.js +17 -2
  640. package/src/core/geom/3d/shape/TransformedShape3D.d.ts +7 -3
  641. package/src/core/geom/3d/shape/TransformedShape3D.d.ts.map +1 -1
  642. package/src/core/geom/3d/shape/TransformedShape3D.js +3 -1
  643. package/src/core/geom/3d/shape/Triangle3D.d.ts +1 -1
  644. package/src/core/geom/3d/shape/Triangle3D.js +5 -5
  645. package/src/core/geom/3d/shape/shape3_mesh_from_geometry.d.ts +30 -0
  646. package/src/core/geom/3d/shape/shape3_mesh_from_geometry.d.ts.map +1 -0
  647. package/src/core/geom/3d/shape/shape3_mesh_from_geometry.js +64 -0
  648. package/src/core/geom/3d/shape/shape_mesh_from_geometry.d.ts +4 -27
  649. package/src/core/geom/3d/shape/shape_mesh_from_geometry.d.ts.map +1 -1
  650. package/src/core/geom/3d/shape/shape_mesh_from_geometry.js +4 -61
  651. package/src/core/geom/3d/shape/util/shape3_voxelize_to_grid.d.ts +61 -0
  652. package/src/core/geom/3d/shape/util/shape3_voxelize_to_grid.d.ts.map +1 -0
  653. package/src/core/geom/3d/shape/util/shape3_voxelize_to_grid.js +153 -0
  654. package/src/core/geom/3d/shape/util/shape3d_voxelize_to_grid.d.ts +4 -58
  655. package/src/core/geom/3d/shape/util/shape3d_voxelize_to_grid.d.ts.map +1 -1
  656. package/src/core/geom/3d/shape/util/shape3d_voxelize_to_grid.js +7 -153
  657. package/src/core/geom/3d/sphere/compute_bounding_sphere_of_2_spheres.d.ts +4 -5
  658. package/src/core/geom/3d/sphere/compute_bounding_sphere_of_2_spheres.d.ts.map +1 -1
  659. package/src/core/geom/3d/sphere/compute_bounding_sphere_of_2_spheres.js +7 -74
  660. package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.js +2 -2
  661. package/src/core/geom/3d/sphere/harmonics/sh3_rotate.d.ts +8 -0
  662. package/src/core/geom/3d/sphere/harmonics/sh3_rotate.d.ts.map +1 -0
  663. package/src/core/geom/3d/sphere/harmonics/sh3_rotate.js +94 -0
  664. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_bl.d.ts +4 -5
  665. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_bl.d.ts.map +1 -1
  666. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_bl.js +7 -94
  667. package/src/core/geom/3d/sphere/harmonics/sh_compute_K.d.ts +4 -6
  668. package/src/core/geom/3d/sphere/harmonics/sh_compute_K.d.ts.map +1 -1
  669. package/src/core/geom/3d/sphere/harmonics/sh_compute_K.js +7 -17
  670. package/src/core/geom/3d/sphere/harmonics/sh_normalization_factor.d.ts +9 -0
  671. package/src/core/geom/3d/sphere/harmonics/sh_normalization_factor.d.ts.map +1 -0
  672. package/src/core/geom/3d/sphere/harmonics/sh_normalization_factor.js +17 -0
  673. package/src/core/geom/3d/sphere/sphere_array_intersects_point.d.ts +4 -7
  674. package/src/core/geom/3d/sphere/sphere_array_intersects_point.d.ts.map +1 -1
  675. package/src/core/geom/3d/sphere/sphere_array_intersects_point.js +7 -15
  676. package/src/core/geom/3d/sphere/sphere_array_intersects_ray.d.ts +4 -10
  677. package/src/core/geom/3d/sphere/sphere_array_intersects_ray.d.ts.map +1 -1
  678. package/src/core/geom/3d/sphere/sphere_array_intersects_ray.js +7 -25
  679. package/src/core/geom/3d/sphere/sphere_compute_bounding_of_2_spheres.d.ts +8 -0
  680. package/src/core/geom/3d/sphere/sphere_compute_bounding_of_2_spheres.d.ts.map +1 -0
  681. package/src/core/geom/3d/sphere/sphere_compute_bounding_of_2_spheres.js +74 -0
  682. package/src/core/geom/3d/sphere/sphere_contains_point.d.ts +13 -0
  683. package/src/core/geom/3d/sphere/sphere_contains_point.d.ts.map +1 -0
  684. package/src/core/geom/3d/sphere/sphere_contains_point.js +29 -0
  685. package/src/core/geom/3d/sphere/sphere_fibonacci_point.d.ts +2 -2
  686. package/src/core/geom/3d/sphere/sphere_fibonacci_point.d.ts.map +1 -1
  687. package/src/core/geom/3d/sphere/sphere_fibonacci_point.js +1 -1
  688. package/src/core/geom/3d/sphere/sphere_intersects_point.d.ts +4 -10
  689. package/src/core/geom/3d/sphere/sphere_intersects_point.d.ts.map +1 -1
  690. package/src/core/geom/3d/sphere/sphere_intersects_point.js +7 -29
  691. package/src/core/geom/3d/sphere/sphere_matrix4_transform.d.ts +7 -0
  692. package/src/core/geom/3d/sphere/sphere_matrix4_transform.d.ts.map +1 -1
  693. package/src/core/geom/3d/sphere/sphere_matrix4_transform.js +6 -2
  694. package/src/core/geom/3d/sphere/sphere_packed_contains_point.d.ts +10 -0
  695. package/src/core/geom/3d/sphere/sphere_packed_contains_point.d.ts.map +1 -0
  696. package/src/core/geom/3d/sphere/sphere_packed_contains_point.js +15 -0
  697. package/src/core/geom/3d/sphere/sphere_packed_intersects_ray.d.ts +13 -0
  698. package/src/core/geom/3d/sphere/sphere_packed_intersects_ray.d.ts.map +1 -0
  699. package/src/core/geom/3d/sphere/sphere_packed_intersects_ray.js +25 -0
  700. package/src/core/geom/3d/sphere/sphere_project.js +2 -2
  701. package/src/core/geom/3d/sphere/sphere_projected_radius_sqr.d.ts +9 -0
  702. package/src/core/geom/3d/sphere/sphere_projected_radius_sqr.d.ts.map +1 -0
  703. package/src/core/geom/3d/sphere/sphere_projected_radius_sqr.js +45 -0
  704. package/src/core/geom/3d/sphere/sphere_projected_sphere_radius_sqr.d.ts +4 -6
  705. package/src/core/geom/3d/sphere/sphere_projected_sphere_radius_sqr.d.ts.map +1 -1
  706. package/src/core/geom/3d/sphere/sphere_projected_sphere_radius_sqr.js +7 -45
  707. package/src/core/geom/3d/sphere/sphere_radius_sqr_from_v3_array_transformed.d.ts +4 -6
  708. package/src/core/geom/3d/sphere/sphere_radius_sqr_from_v3_array_transformed.d.ts.map +1 -1
  709. package/src/core/geom/3d/sphere/sphere_radius_sqr_from_v3_array_transformed.js +7 -32
  710. package/src/core/geom/3d/sphere/sphere_radius_sqr_from_v3_buffer_transformed.d.ts +9 -0
  711. package/src/core/geom/3d/sphere/sphere_radius_sqr_from_v3_buffer_transformed.d.ts.map +1 -0
  712. package/src/core/geom/3d/sphere/sphere_radius_sqr_from_v3_buffer_transformed.js +32 -0
  713. package/src/core/geom/3d/sphere/sphere_spherical_from_cartesian.d.ts +10 -0
  714. package/src/core/geom/3d/sphere/sphere_spherical_from_cartesian.d.ts.map +1 -0
  715. package/src/core/geom/3d/sphere/sphere_spherical_from_cartesian.js +29 -0
  716. package/src/core/geom/3d/sphere/spherical_from_cartesian.d.ts +4 -7
  717. package/src/core/geom/3d/sphere/spherical_from_cartesian.d.ts.map +1 -1
  718. package/src/core/geom/3d/sphere/spherical_from_cartesian.js +7 -29
  719. package/src/core/geom/3d/tetrahedra/compute_bounding_simplex_3d.js +5 -5
  720. package/src/core/geom/3d/tetrahedra/compute_tetrahedral_mesh_from_surface.d.ts.map +1 -1
  721. package/src/core/geom/3d/tetrahedra/compute_tetrahedral_mesh_from_surface.js +3 -5
  722. package/src/core/geom/3d/tetrahedra/compute_tetrahedron_quality.d.ts +4 -12
  723. package/src/core/geom/3d/tetrahedra/compute_tetrahedron_quality.d.ts.map +1 -1
  724. package/src/core/geom/3d/tetrahedra/compute_tetrahedron_quality.js +4 -19
  725. package/src/core/geom/3d/tetrahedra/compute_tetrahedron_volume.d.ts +4 -6
  726. package/src/core/geom/3d/tetrahedra/compute_tetrahedron_volume.d.ts.map +1 -1
  727. package/src/core/geom/3d/tetrahedra/compute_tetrahedron_volume.js +7 -18
  728. package/src/core/geom/3d/tetrahedra/delaunay/compute_delaunay_tetrahedral_mesh.js +2 -2
  729. package/src/core/geom/3d/tetrahedra/delaunay/fill_in_a_cavity.d.ts +4 -7
  730. package/src/core/geom/3d/tetrahedra/delaunay/fill_in_a_cavity.d.ts.map +1 -1
  731. package/src/core/geom/3d/tetrahedra/delaunay/fill_in_a_cavity.js +7 -166
  732. package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_fill_cavity.d.ts +10 -0
  733. package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_fill_cavity.d.ts.map +1 -0
  734. package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_fill_cavity.js +166 -0
  735. package/src/core/geom/3d/tetrahedra/prototypeTetrahedraBuilder.js +2 -2
  736. package/src/core/geom/3d/tetrahedra/prototype_tetrahedrize_mesh.js +6 -8
  737. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.js +3 -3
  738. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_compute_tet_quality.d.ts +15 -0
  739. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_compute_tet_quality.d.ts.map +1 -0
  740. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_compute_tet_quality.js +22 -0
  741. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_compute_tet_volume.d.ts +9 -0
  742. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_compute_tet_volume.d.ts.map +1 -0
  743. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_compute_tet_volume.js +18 -0
  744. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_get_neighbours.d.ts +24 -0
  745. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_get_neighbours.d.ts.map +1 -0
  746. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_get_neighbours.js +39 -0
  747. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_improve_quality.js +12 -12
  748. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_tet_get_neighbours.d.ts +4 -21
  749. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_tet_get_neighbours.d.ts.map +1 -1
  750. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_tet_get_neighbours.js +7 -39
  751. package/src/core/geom/3d/tetrahedra/tetrahedron_compute_quality.js +5 -5
  752. package/src/core/geom/3d/tetrahedra/tetrahedron_compute_signed_volume.js +2 -2
  753. package/src/core/geom/3d/tetrahedra/triangle/prototype.js +5 -4
  754. package/src/core/geom/3d/tetrahedra/triangle/trace_triangular_depth_map.js +2 -2
  755. package/src/core/geom/3d/tetrahedra/triangle/triangle_decode_depth.d.ts +2 -0
  756. package/src/core/geom/3d/tetrahedra/triangle/triangle_decode_depth.d.ts.map +1 -0
  757. package/src/core/geom/3d/tetrahedra/triangle/{triangle_encode_rasterized_depth.js → triangle_decode_depth.js} +59 -112
  758. package/src/core/geom/3d/tetrahedra/triangle/triangle_rasterized_depth_sample_index.d.ts +12 -0
  759. package/src/core/geom/3d/tetrahedra/triangle/triangle_rasterized_depth_sample_index.d.ts.map +1 -0
  760. package/src/core/geom/3d/tetrahedra/triangle/triangle_rasterized_depth_sample_index.js +54 -0
  761. package/src/core/geom/3d/tetrahedra/validate_neighbour.d.ts +10 -0
  762. package/src/core/geom/3d/tetrahedra/validate_neighbour.d.ts.map +1 -0
  763. package/src/core/geom/3d/tetrahedra/validate_neighbour.js +70 -0
  764. package/src/core/geom/3d/tetrahedra/validate_tetrahedral_mesh.d.ts +0 -16
  765. package/src/core/geom/3d/tetrahedra/validate_tetrahedral_mesh.d.ts.map +1 -1
  766. package/src/core/geom/3d/tetrahedra/validate_tetrahedral_mesh.js +69 -186
  767. package/src/core/geom/3d/tetrahedra/validate_tetrahedron_neighbourhood.d.ts +9 -0
  768. package/src/core/geom/3d/tetrahedra/validate_tetrahedron_neighbourhood.d.ts.map +1 -0
  769. package/src/core/geom/3d/tetrahedra/validate_tetrahedron_neighbourhood.js +50 -0
  770. package/src/core/geom/3d/topology/bounds/computeTopoMeshBoundingSphere.d.ts +4 -4
  771. package/src/core/geom/3d/topology/bounds/computeTopoMeshBoundingSphere.d.ts.map +1 -1
  772. package/src/core/geom/3d/topology/bounds/computeTopoMeshBoundingSphere.js +7 -37
  773. package/src/core/geom/3d/topology/bounds/computeTopoMeshBoundiningBox.d.ts +4 -4
  774. package/src/core/geom/3d/topology/bounds/computeTopoMeshBoundiningBox.d.ts.map +1 -1
  775. package/src/core/geom/3d/topology/bounds/computeTopoMeshBoundiningBox.js +7 -16
  776. package/src/core/geom/3d/topology/bounds/computeTriangleClusterNormalBoundingCone.d.ts +4 -6
  777. package/src/core/geom/3d/topology/bounds/computeTriangleClusterNormalBoundingCone.d.ts.map +1 -1
  778. package/src/core/geom/3d/topology/bounds/computeTriangleClusterNormalBoundingCone.js +7 -87
  779. package/src/core/geom/3d/topology/bounds/compute_topo_mesh_bounding_box.d.ts +7 -0
  780. package/src/core/geom/3d/topology/bounds/compute_topo_mesh_bounding_box.d.ts.map +1 -0
  781. package/src/core/geom/3d/topology/bounds/compute_topo_mesh_bounding_box.js +16 -0
  782. package/src/core/geom/3d/topology/bounds/compute_topo_mesh_bounding_sphere.d.ts +7 -0
  783. package/src/core/geom/3d/topology/bounds/compute_topo_mesh_bounding_sphere.d.ts.map +1 -0
  784. package/src/core/geom/3d/topology/bounds/compute_topo_mesh_bounding_sphere.js +37 -0
  785. package/src/core/geom/3d/topology/bounds/compute_triangle_cluster_normal_bounding_cone.d.ts +9 -0
  786. package/src/core/geom/3d/topology/bounds/compute_triangle_cluster_normal_bounding_cone.d.ts.map +1 -0
  787. package/src/core/geom/3d/topology/bounds/compute_triangle_cluster_normal_bounding_cone.js +87 -0
  788. package/src/core/geom/3d/topology/build_face_graph_from_mesh.d.ts +0 -7
  789. package/src/core/geom/3d/topology/build_face_graph_from_mesh.d.ts.map +1 -1
  790. package/src/core/geom/3d/topology/build_face_graph_from_mesh.js +78 -113
  791. package/src/core/geom/3d/topology/compareEdges.d.ts +6 -1
  792. package/src/core/geom/3d/topology/compareEdges.d.ts.map +1 -1
  793. package/src/core/geom/3d/topology/compareEdges.js +7 -16
  794. package/src/core/geom/3d/topology/compare_edges.d.ts +8 -0
  795. package/src/core/geom/3d/topology/compare_edges.d.ts.map +1 -0
  796. package/src/core/geom/3d/topology/compare_edges.js +16 -0
  797. package/src/core/geom/3d/topology/computeTopoMeshVertexDuplicates.d.ts +4 -6
  798. package/src/core/geom/3d/topology/computeTopoMeshVertexDuplicates.d.ts.map +1 -1
  799. package/src/core/geom/3d/topology/computeTopoMeshVertexDuplicates.js +7 -108
  800. package/src/core/geom/3d/topology/compute_topo_mesh_vertex_duplicates.d.ts +9 -0
  801. package/src/core/geom/3d/topology/compute_topo_mesh_vertex_duplicates.d.ts.map +1 -0
  802. package/src/core/geom/3d/topology/compute_topo_mesh_vertex_duplicates.js +108 -0
  803. package/src/core/geom/3d/topology/expandConnectivityByLocality.js +2 -2
  804. package/src/core/geom/3d/topology/graph_create_off_mesh_links.d.ts +8 -0
  805. package/src/core/geom/3d/topology/graph_create_off_mesh_links.d.ts.map +1 -0
  806. package/src/core/geom/3d/topology/graph_create_off_mesh_links.js +35 -0
  807. package/src/core/geom/3d/topology/samples/prototypeFloodFill.js +4 -4
  808. package/src/core/geom/3d/topology/simplify/EdgeCollapseCandidate.d.ts.map +1 -1
  809. package/src/core/geom/3d/topology/simplify/EdgeCollapseCandidate.js +9 -8
  810. package/src/core/geom/3d/topology/simplify/collapse_degenerate_edge.js +2 -2
  811. package/src/core/geom/3d/topology/simplify/collapse_edge.d.ts +11 -0
  812. package/src/core/geom/3d/topology/simplify/collapse_edge.d.ts.map +1 -0
  813. package/src/core/geom/3d/topology/simplify/collapse_edge.js +21 -0
  814. package/src/core/geom/3d/topology/simplify/computeEdgeCollapseCost.d.ts +4 -8
  815. package/src/core/geom/3d/topology/simplify/computeEdgeCollapseCost.d.ts.map +1 -1
  816. package/src/core/geom/3d/topology/simplify/computeEdgeCollapseCost.js +7 -82
  817. package/src/core/geom/3d/topology/simplify/compute_edge_collapse_cost.d.ts +11 -0
  818. package/src/core/geom/3d/topology/simplify/compute_edge_collapse_cost.d.ts.map +1 -0
  819. package/src/core/geom/3d/topology/simplify/compute_edge_collapse_cost.js +82 -0
  820. package/src/core/geom/3d/topology/simplify/compute_face_normal_change_dot_product.js +3 -3
  821. package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.js +2 -2
  822. package/src/core/geom/3d/topology/simplify/edge_collapse_quadratic.js +2 -2
  823. package/src/core/geom/3d/topology/simplify/partial_edge_collapse.d.ts +11 -0
  824. package/src/core/geom/3d/topology/simplify/partial_edge_collapse.d.ts.map +1 -0
  825. package/src/core/geom/3d/topology/simplify/{collapseEdge.js → partial_edge_collapse.js} +118 -167
  826. package/src/core/geom/3d/topology/simplify/prototypeMeshSimplification.js +2 -2
  827. package/src/core/geom/3d/topology/simplify/quadratic/apply_border_penalties_to_vertex_quadrics.d.ts +9 -0
  828. package/src/core/geom/3d/topology/simplify/quadratic/apply_border_penalties_to_vertex_quadrics.d.ts.map +1 -0
  829. package/src/core/geom/3d/topology/simplify/quadratic/apply_border_penalties_to_vertex_quadrics.js +16 -0
  830. package/src/core/geom/3d/topology/simplify/quadratic/apply_border_penalty_to_vertex_quadrics.d.ts +10 -0
  831. package/src/core/geom/3d/topology/simplify/quadratic/apply_border_penalty_to_vertex_quadrics.d.ts.map +1 -0
  832. package/src/core/geom/3d/topology/simplify/quadratic/apply_border_penalty_to_vertex_quadrics.js +47 -0
  833. package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadrics.d.ts +9 -0
  834. package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadrics.d.ts.map +1 -0
  835. package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadrics.js +95 -0
  836. package/src/core/geom/3d/topology/simplify/quadratic/compute_edge_collapse_cost_quadratic.d.ts +4 -7
  837. package/src/core/geom/3d/topology/simplify/quadratic/compute_edge_collapse_cost_quadratic.d.ts.map +1 -1
  838. package/src/core/geom/3d/topology/simplify/quadratic/compute_edge_collapse_cost_quadratic.js +7 -28
  839. package/src/core/geom/3d/topology/simplify/quadratic/compute_edge_collapse_cost_quadric.d.ts +10 -0
  840. package/src/core/geom/3d/topology/simplify/quadratic/compute_edge_collapse_cost_quadric.d.ts.map +1 -0
  841. package/src/core/geom/3d/topology/simplify/quadratic/compute_edge_collapse_cost_quadric.js +28 -0
  842. package/src/core/geom/3d/topology/simplify/quadratic/deep_copy_vertex_quadrics.d.ts +8 -0
  843. package/src/core/geom/3d/topology/simplify/quadratic/deep_copy_vertex_quadrics.d.ts.map +1 -0
  844. package/src/core/geom/3d/topology/simplify/quadratic/deep_copy_vertex_quadrics.js +20 -0
  845. package/src/core/geom/3d/topology/simplify/simplifyTopoMesh.js +2 -2
  846. package/src/core/geom/3d/topology/simplify/simplifyTopoMesh2.js +2 -2
  847. package/src/core/geom/3d/topology/struct/TopoMesh.d.ts +3 -3
  848. package/src/core/geom/3d/topology/struct/TopoMesh.js +10 -10
  849. package/src/core/geom/3d/topology/struct/TopoTriangle.js +2 -2
  850. package/src/core/geom/3d/topology/struct/binary/BinaryTopology.d.ts.map +1 -1
  851. package/src/core/geom/3d/topology/struct/binary/BinaryTopology.js +18 -7
  852. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_bridge_islands.js +4 -4
  853. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_cleanup_faceless_references.js +2 -2
  854. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.js +2 -2
  855. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_face_normals.js +2 -2
  856. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadratics.d.ts +4 -11
  857. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadratics.d.ts.map +1 -1
  858. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadratics.js +4 -92
  859. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadrics.d.ts +14 -0
  860. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadrics.d.ts.map +1 -0
  861. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadrics.js +95 -0
  862. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_face_decouple_islands.js +2 -2
  863. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_face_island_erode.d.ts.map +1 -1
  864. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_face_island_erode.js +6 -8
  865. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_fill_small_holes.js +2 -2
  866. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_resolve_t_junctions.d.ts +6 -0
  867. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_resolve_t_junctions.d.ts.map +1 -1
  868. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_resolve_t_junctions.js +139 -95
  869. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_simplify.js +6 -6
  870. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_simplify_by_error.d.ts.map +1 -1
  871. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_simplify_by_error.js +45 -10
  872. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_collapse.js +2 -2
  873. package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_poke.d.ts +14 -0
  874. package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_poke.d.ts.map +1 -1
  875. package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_poke.js +6 -2
  876. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_kill_only_vert.d.ts +4 -4
  877. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_kill_only_vert.d.ts.map +1 -1
  878. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_kill_only_vert.js +7 -8
  879. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_merge_vertices_by_distance.d.ts +10 -0
  880. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_merge_vertices_by_distance.d.ts.map +1 -0
  881. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_merge_vertices_by_distance.js +165 -0
  882. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_merge_verts_by_distance.d.ts +4 -7
  883. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_merge_verts_by_distance.d.ts.map +1 -1
  884. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_merge_verts_by_distance.js +7 -165
  885. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vert_fuse_duplicate_edges.d.ts +4 -19
  886. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vert_fuse_duplicate_edges.d.ts.map +1 -1
  887. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vert_fuse_duplicate_edges.js +4 -145
  888. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vert_kill.d.ts +4 -4
  889. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vert_kill.d.ts.map +1 -1
  890. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vert_kill.js +7 -21
  891. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_fuse_duplicate_edges.d.ts +22 -0
  892. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_fuse_duplicate_edges.d.ts.map +1 -0
  893. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_fuse_duplicate_edges.js +148 -0
  894. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_kill.d.ts +7 -0
  895. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_kill.d.ts.map +1 -0
  896. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_kill.js +21 -0
  897. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_kill_only.d.ts +7 -0
  898. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_kill_only.d.ts.map +1 -0
  899. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_kill_only.js +8 -0
  900. package/src/core/geom/3d/topology/struct/binary/query/bt_collect_boundary_segments.d.ts +14 -0
  901. package/src/core/geom/3d/topology/struct/binary/query/bt_collect_boundary_segments.d.ts.map +1 -0
  902. package/src/core/geom/3d/topology/struct/binary/query/bt_collect_boundary_segments.js +29 -0
  903. package/src/core/geom/3d/topology/struct/binary/query/bt_edge_is_boundary.d.ts +11 -0
  904. package/src/core/geom/3d/topology/struct/binary/query/bt_edge_is_boundary.d.ts.map +1 -0
  905. package/src/core/geom/3d/topology/struct/binary/query/bt_edge_is_boundary.js +20 -0
  906. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_attached_faces.d.ts +4 -9
  907. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_attached_faces.d.ts.map +1 -1
  908. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_attached_faces.js +7 -96
  909. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_edge_adjacent_faces.d.ts +12 -0
  910. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_edge_adjacent_faces.d.ts.map +1 -0
  911. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_edge_adjacent_faces.js +74 -0
  912. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_incenter.js +2 -2
  913. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_neighbour_faces.d.ts +4 -9
  914. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_neighbour_faces.d.ts.map +1 -1
  915. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_neighbour_faces.js +7 -74
  916. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_shared_loop.d.ts +15 -0
  917. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_shared_loop.d.ts.map +1 -0
  918. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_shared_loop.js +48 -0
  919. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_vertex_adjacent_faces.d.ts +12 -0
  920. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_vertex_adjacent_faces.d.ts.map +1 -0
  921. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_vertex_adjacent_faces.js +96 -0
  922. package/src/core/geom/3d/topology/struct/binary/query/bt_face_island_flood_fill.js +2 -2
  923. package/src/core/geom/3d/topology/struct/binary/query/bt_faces_shared_loop.d.ts +4 -12
  924. package/src/core/geom/3d/topology/struct/binary/query/bt_faces_shared_loop.d.ts.map +1 -1
  925. package/src/core/geom/3d/topology/struct/binary/query/bt_faces_shared_loop.js +4 -45
  926. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_build_boundary_euclidean_distance_field.d.ts +0 -23
  927. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_build_boundary_euclidean_distance_field.d.ts.map +1 -1
  928. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_build_boundary_euclidean_distance_field.js +2 -54
  929. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_build_face_bvh.d.ts +9 -0
  930. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_build_face_bvh.d.ts.map +1 -0
  931. package/src/{engine/navigation/mesh/bvh_build_from_bt_mesh.js → core/geom/3d/topology/struct/binary/query/bt_mesh_build_face_bvh.js} +5 -3
  932. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path.d.ts.map +1 -0
  933. package/src/{engine/navigation/mesh → core/geom/3d/topology/struct/binary/query}/bt_mesh_face_find_path.js +7 -9
  934. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path_polyanya.d.ts.map +1 -0
  935. package/src/{engine/navigation/mesh → core/geom/3d/topology/struct/binary/query}/bt_mesh_face_find_path_polyanya.js +16 -16
  936. package/src/{engine/navigation/mesh/bvh_query_nearest_face.d.ts → core/geom/3d/topology/struct/binary/query/bt_mesh_find_nearest_face.d.ts} +3 -3
  937. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_find_nearest_face.d.ts.map +1 -0
  938. package/src/{engine/navigation/mesh/bvh_query_nearest_face.js → core/geom/3d/topology/struct/binary/query/bt_mesh_find_nearest_face.js} +9 -11
  939. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.js +3 -3
  940. package/src/{engine/navigation/mesh/bvh_segment_penetrates_mesh.d.ts → core/geom/3d/topology/struct/binary/query/bt_mesh_segment_penetrates_surface.d.ts} +3 -3
  941. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_segment_penetrates_surface.d.ts.map +1 -0
  942. package/src/{engine/navigation/mesh/bvh_segment_penetrates_mesh.js → core/geom/3d/topology/struct/binary/query/bt_mesh_segment_penetrates_surface.js} +4 -4
  943. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_walk_boundary_loops.js +3 -3
  944. package/src/core/geom/3d/topology/struct/binary/query/bt_query_edge_is_boundary.d.ts +4 -8
  945. package/src/core/geom/3d/topology/struct/binary/query/bt_query_edge_is_boundary.d.ts.map +1 -1
  946. package/src/core/geom/3d/topology/struct/binary/query/bt_query_edge_is_boundary.js +4 -17
  947. package/src/core/geom/3d/topology/tm_edge_kill.js +2 -2
  948. package/src/core/geom/3d/topology/tm_edge_kill_only.d.ts +7 -0
  949. package/src/core/geom/3d/topology/tm_edge_kill_only.d.ts.map +1 -0
  950. package/src/core/geom/3d/topology/tm_edge_kill_only.js +35 -0
  951. package/src/core/geom/3d/topology/tm_face_area.js +2 -2
  952. package/src/core/geom/3d/topology/tm_face_kill.js +2 -2
  953. package/src/core/geom/3d/topology/tm_face_kill_only.d.ts +7 -0
  954. package/src/core/geom/3d/topology/tm_face_kill_only.d.ts.map +1 -0
  955. package/src/core/geom/3d/topology/tm_face_kill_only.js +12 -0
  956. package/src/core/geom/3d/topology/tm_face_normal.js +2 -2
  957. package/src/core/geom/3d/topology/tm_kill_only_edge.d.ts +4 -4
  958. package/src/core/geom/3d/topology/tm_kill_only_edge.d.ts.map +1 -1
  959. package/src/core/geom/3d/topology/tm_kill_only_edge.js +7 -35
  960. package/src/core/geom/3d/topology/tm_kill_only_face.d.ts +4 -4
  961. package/src/core/geom/3d/topology/tm_kill_only_face.d.ts.map +1 -1
  962. package/src/core/geom/3d/topology/tm_kill_only_face.js +7 -12
  963. package/src/core/geom/3d/topology/tm_kill_only_vert.d.ts +4 -4
  964. package/src/core/geom/3d/topology/tm_kill_only_vert.d.ts.map +1 -1
  965. package/src/core/geom/3d/topology/tm_kill_only_vert.js +7 -14
  966. package/src/core/geom/3d/topology/tm_vert_kill.d.ts +4 -4
  967. package/src/core/geom/3d/topology/tm_vert_kill.d.ts.map +1 -1
  968. package/src/core/geom/3d/topology/tm_vert_kill.js +7 -19
  969. package/src/core/geom/3d/topology/tm_vert_splice.d.ts +4 -9
  970. package/src/core/geom/3d/topology/tm_vert_splice.d.ts.map +1 -1
  971. package/src/core/geom/3d/topology/tm_vert_splice.js +7 -64
  972. package/src/core/geom/3d/topology/tm_vertex_compute_normal.js +2 -2
  973. package/src/core/geom/3d/topology/tm_vertex_kill.d.ts +7 -0
  974. package/src/core/geom/3d/topology/tm_vertex_kill.d.ts.map +1 -0
  975. package/src/core/geom/3d/topology/tm_vertex_kill.js +19 -0
  976. package/src/core/geom/3d/topology/tm_vertex_kill_only.d.ts +7 -0
  977. package/src/core/geom/3d/topology/tm_vertex_kill_only.d.ts.map +1 -0
  978. package/src/core/geom/3d/topology/tm_vertex_kill_only.js +14 -0
  979. package/src/core/geom/3d/topology/tm_vertex_splice.d.ts +12 -0
  980. package/src/core/geom/3d/topology/tm_vertex_splice.d.ts.map +1 -0
  981. package/src/core/geom/3d/topology/tm_vertex_splice.js +64 -0
  982. package/src/core/geom/3d/topology/tm_weld_duplicate_vertices.js +4 -4
  983. package/src/core/geom/3d/triangle/computeTriangleClosestPointToPointBarycentric.d.ts +4 -17
  984. package/src/core/geom/3d/triangle/computeTriangleClosestPointToPointBarycentric.d.ts.map +1 -1
  985. package/src/core/geom/3d/triangle/computeTriangleClosestPointToPointBarycentric.js +7 -167
  986. package/src/core/geom/3d/triangle/computeTriangleRayIntersection.d.ts +4 -20
  987. package/src/core/geom/3d/triangle/computeTriangleRayIntersection.d.ts.map +1 -1
  988. package/src/core/geom/3d/triangle/computeTriangleRayIntersection.js +4 -157
  989. package/src/core/geom/3d/triangle/computeTriangleRayIntersectionBarycentric.d.ts +4 -22
  990. package/src/core/geom/3d/triangle/computeTriangleRayIntersectionBarycentric.d.ts.map +1 -1
  991. package/src/core/geom/3d/triangle/computeTriangleRayIntersectionBarycentric.js +4 -93
  992. package/src/core/geom/3d/triangle/computeTriangleRayIntersectionBarycentricEdge.d.ts +4 -23
  993. package/src/core/geom/3d/triangle/computeTriangleRayIntersectionBarycentricEdge.d.ts.map +1 -1
  994. package/src/core/geom/3d/triangle/computeTriangleRayIntersectionBarycentricEdge.js +7 -95
  995. package/src/core/geom/3d/triangle/computeTriangleRayIntersectionBarycentricGeometry.d.ts +4 -13
  996. package/src/core/geom/3d/triangle/computeTriangleRayIntersectionBarycentricGeometry.d.ts.map +1 -1
  997. package/src/core/geom/3d/triangle/computeTriangleRayIntersectionBarycentricGeometry.js +7 -55
  998. package/src/core/geom/3d/triangle/compute_triangle_area_3d.d.ts +4 -12
  999. package/src/core/geom/3d/triangle/compute_triangle_area_3d.d.ts.map +1 -1
  1000. package/src/core/geom/3d/triangle/compute_triangle_area_3d.js +7 -50
  1001. package/src/core/geom/3d/triangle/compute_triangle_normal.d.ts +4 -18
  1002. package/src/core/geom/3d/triangle/compute_triangle_normal.d.ts.map +1 -1
  1003. package/src/core/geom/3d/triangle/compute_triangle_normal.js +7 -25
  1004. package/src/core/geom/3d/triangle/rayTriangleIntersection.d.ts +4 -10
  1005. package/src/core/geom/3d/triangle/rayTriangleIntersection.d.ts.map +1 -1
  1006. package/src/core/geom/3d/triangle/rayTriangleIntersection.js +7 -37
  1007. package/src/core/geom/3d/triangle/tri3_area.d.ts +15 -0
  1008. package/src/core/geom/3d/triangle/tri3_area.d.ts.map +1 -0
  1009. package/src/core/geom/3d/triangle/tri3_area.js +50 -0
  1010. package/src/core/geom/3d/triangle/tri3_closest_point_barycentric.d.ts +20 -0
  1011. package/src/core/geom/3d/triangle/tri3_closest_point_barycentric.d.ts.map +1 -0
  1012. package/src/core/geom/3d/triangle/tri3_closest_point_barycentric.js +167 -0
  1013. package/src/core/geom/3d/triangle/tri3_compute_normal.d.ts +16 -0
  1014. package/src/core/geom/3d/triangle/tri3_compute_normal.d.ts.map +1 -0
  1015. package/src/core/geom/3d/triangle/tri3_compute_normal.js +57 -0
  1016. package/src/core/geom/3d/triangle/tri3_compute_normal_v3_objects.d.ts +21 -0
  1017. package/src/core/geom/3d/triangle/tri3_compute_normal_v3_objects.d.ts.map +1 -0
  1018. package/src/core/geom/3d/triangle/tri3_compute_normal_v3_objects.js +25 -0
  1019. package/src/core/geom/3d/triangle/tri3_compute_plane_side.d.ts +24 -0
  1020. package/src/core/geom/3d/triangle/tri3_compute_plane_side.d.ts.map +1 -0
  1021. package/src/core/geom/3d/triangle/tri3_compute_plane_side.js +39 -0
  1022. package/src/core/geom/3d/triangle/tri3_compute_signed_volume.d.ts +17 -0
  1023. package/src/core/geom/3d/triangle/tri3_compute_signed_volume.d.ts.map +1 -0
  1024. package/src/core/geom/3d/triangle/tri3_compute_signed_volume.js +33 -0
  1025. package/src/core/geom/3d/triangle/tri3_incenter.d.ts +19 -0
  1026. package/src/core/geom/3d/triangle/tri3_incenter.d.ts.map +1 -0
  1027. package/src/core/geom/3d/triangle/tri3_incenter.js +60 -0
  1028. package/src/core/geom/3d/triangle/tri3_intersects_clipping_volume.d.ts +17 -0
  1029. package/src/core/geom/3d/triangle/tri3_intersects_clipping_volume.d.ts.map +1 -0
  1030. package/src/core/geom/3d/triangle/tri3_intersects_clipping_volume.js +51 -0
  1031. package/src/core/geom/3d/triangle/tri3_mesh_compute_signed_volume.d.ts +20 -0
  1032. package/src/core/geom/3d/triangle/tri3_mesh_compute_signed_volume.d.ts.map +1 -0
  1033. package/src/core/geom/3d/triangle/tri3_mesh_compute_signed_volume.js +38 -0
  1034. package/src/core/geom/3d/triangle/tri3_ray_intersection.d.ts +23 -0
  1035. package/src/core/geom/3d/triangle/tri3_ray_intersection.d.ts.map +1 -0
  1036. package/src/core/geom/3d/triangle/tri3_ray_intersection.js +160 -0
  1037. package/src/core/geom/3d/triangle/tri3_ray_intersection_barycentric.d.ts +25 -0
  1038. package/src/core/geom/3d/triangle/tri3_ray_intersection_barycentric.d.ts.map +1 -0
  1039. package/src/core/geom/3d/triangle/tri3_ray_intersection_barycentric.js +96 -0
  1040. package/src/core/geom/3d/triangle/tri3_ray_intersection_barycentric_edge.d.ts +26 -0
  1041. package/src/core/geom/3d/triangle/tri3_ray_intersection_barycentric_edge.d.ts.map +1 -0
  1042. package/src/core/geom/3d/triangle/tri3_ray_intersection_barycentric_edge.js +95 -0
  1043. package/src/core/geom/3d/triangle/tri3_ray_intersection_indexed.d.ts +16 -0
  1044. package/src/core/geom/3d/triangle/tri3_ray_intersection_indexed.d.ts.map +1 -0
  1045. package/src/core/geom/3d/triangle/tri3_ray_intersection_indexed.js +55 -0
  1046. package/src/core/geom/3d/triangle/tri3_ray_intersection_v3_objects.d.ts +13 -0
  1047. package/src/core/geom/3d/triangle/tri3_ray_intersection_v3_objects.d.ts.map +1 -0
  1048. package/src/core/geom/3d/triangle/tri3_ray_intersection_v3_objects.js +37 -0
  1049. package/src/core/geom/3d/triangle/triangle3_incenter.d.ts +4 -16
  1050. package/src/core/geom/3d/triangle/triangle3_incenter.d.ts.map +1 -1
  1051. package/src/core/geom/3d/triangle/triangle3_incenter.js +7 -60
  1052. package/src/core/geom/3d/triangle/triangle_compute_plane_side.d.ts +4 -21
  1053. package/src/core/geom/3d/triangle/triangle_compute_plane_side.d.ts.map +1 -1
  1054. package/src/core/geom/3d/triangle/triangle_compute_plane_side.js +7 -39
  1055. package/src/core/geom/3d/triangle/triangle_compute_signed_volume.d.ts +4 -14
  1056. package/src/core/geom/3d/triangle/triangle_compute_signed_volume.d.ts.map +1 -1
  1057. package/src/core/geom/3d/triangle/triangle_compute_signed_volume.js +7 -33
  1058. package/src/core/geom/3d/triangle/triangle_intersects_clipping_volume.d.ts +4 -14
  1059. package/src/core/geom/3d/triangle/triangle_intersects_clipping_volume.d.ts.map +1 -1
  1060. package/src/core/geom/3d/triangle/triangle_intersects_clipping_volume.js +7 -51
  1061. package/src/core/geom/3d/triangle/triangle_mesh_compute_signed_volume.d.ts +4 -17
  1062. package/src/core/geom/3d/triangle/triangle_mesh_compute_signed_volume.d.ts.map +1 -1
  1063. package/src/core/geom/3d/triangle/triangle_mesh_compute_signed_volume.js +4 -35
  1064. package/src/core/geom/3d/triangle/v3_compute_triangle_normal.d.ts +4 -13
  1065. package/src/core/geom/3d/triangle/v3_compute_triangle_normal.d.ts.map +1 -1
  1066. package/src/core/geom/3d/triangle/v3_compute_triangle_normal.js +7 -57
  1067. package/src/core/geom/3d/util/aabb3_emit_point_grid.d.ts +10 -0
  1068. package/src/core/geom/3d/util/aabb3_emit_point_grid.d.ts.map +1 -0
  1069. package/src/core/geom/3d/util/aabb3_emit_point_grid.js +42 -0
  1070. package/src/core/geom/3d/util/make_justified_point_grid.d.ts +4 -7
  1071. package/src/core/geom/3d/util/make_justified_point_grid.d.ts.map +1 -1
  1072. package/src/core/geom/3d/util/make_justified_point_grid.js +7 -42
  1073. package/src/core/geom/GEOMETRY_REVIEW_002_API_ISSUES.md +381 -0
  1074. package/src/core/geom/GEOMETRY_REVIEW_002_NAMING.md +684 -0
  1075. package/src/core/geom/Vector3.js +2 -2
  1076. package/src/core/geom/Vector4.d.ts +1 -1
  1077. package/src/core/geom/Vector4.d.ts.map +1 -1
  1078. package/src/core/geom/Vector4.js +0 -10
  1079. package/src/core/geom/mat3/m3_cm_from_translation.d.ts +4 -5
  1080. package/src/core/geom/mat3/m3_cm_from_translation.d.ts.map +1 -1
  1081. package/src/core/geom/mat3/m3_cm_from_translation.js +7 -19
  1082. package/src/core/geom/mat3/m3_cm_invert.d.ts +4 -4
  1083. package/src/core/geom/mat3/m3_cm_invert.d.ts.map +1 -1
  1084. package/src/core/geom/mat3/m3_cm_invert.js +7 -45
  1085. package/src/core/geom/mat3/m3_cm_make_translation.d.ts +8 -0
  1086. package/src/core/geom/mat3/m3_cm_make_translation.d.ts.map +1 -0
  1087. package/src/core/geom/mat3/m3_cm_make_translation.js +19 -0
  1088. package/src/core/geom/mat3/m3_invert.d.ts +7 -0
  1089. package/src/core/geom/mat3/m3_invert.d.ts.map +1 -0
  1090. package/src/core/geom/mat3/m3_invert.js +45 -0
  1091. package/src/core/geom/mat3/m3_make_rotation.d.ts +1 -8
  1092. package/src/core/geom/mat3/m3_make_rotation.d.ts.map +1 -1
  1093. package/src/core/geom/mat3/m3_make_rotation.js +5 -31
  1094. package/src/core/geom/mat3/m3_make_rotation_TBN.d.ts +9 -0
  1095. package/src/core/geom/mat3/m3_make_rotation_TBN.d.ts.map +1 -0
  1096. package/src/core/geom/mat3/m3_make_rotation_TBN.js +31 -0
  1097. package/src/core/geom/mat3/m3_multiply_vec3.d.ts +4 -5
  1098. package/src/core/geom/mat3/m3_multiply_vec3.d.ts.map +1 -1
  1099. package/src/core/geom/mat3/m3_multiply_vec3.js +7 -21
  1100. package/src/core/geom/mat3/m3_scale_columns_by_vec3.d.ts +8 -0
  1101. package/src/core/geom/mat3/m3_scale_columns_by_vec3.d.ts.map +1 -0
  1102. package/src/core/geom/mat3/m3_scale_columns_by_vec3.js +21 -0
  1103. package/src/core/geom/packing/computeBoundingSphereOfSpheres.d.ts +4 -9
  1104. package/src/core/geom/packing/computeBoundingSphereOfSpheres.d.ts.map +1 -1
  1105. package/src/core/geom/packing/computeBoundingSphereOfSpheres.js +7 -102
  1106. package/src/core/geom/packing/max-rect/MaxRectanglesPacker.js +9 -9
  1107. package/src/core/geom/packing/max-rect/aabb2_validate_packing.d.ts +7 -1
  1108. package/src/core/geom/packing/max-rect/aabb2_validate_packing.d.ts.map +1 -1
  1109. package/src/core/geom/packing/max-rect/aabb2_validate_packing.js +2 -2
  1110. package/src/core/geom/packing/max-rect/cost/costByBestShortSide.d.ts +4 -7
  1111. package/src/core/geom/packing/max-rect/cost/costByBestShortSide.d.ts.map +1 -1
  1112. package/src/core/geom/packing/max-rect/cost/costByBestShortSide.js +7 -11
  1113. package/src/core/geom/packing/max-rect/cost/costByRemainingArea.d.ts +4 -7
  1114. package/src/core/geom/packing/max-rect/cost/costByRemainingArea.d.ts.map +1 -1
  1115. package/src/core/geom/packing/max-rect/cost/costByRemainingArea.js +7 -14
  1116. package/src/core/geom/packing/max-rect/cost/cost_by_best_short_side.d.ts +10 -0
  1117. package/src/core/geom/packing/max-rect/cost/cost_by_best_short_side.d.ts.map +1 -0
  1118. package/src/core/geom/packing/max-rect/cost/cost_by_best_short_side.js +11 -0
  1119. package/src/core/geom/packing/max-rect/cost/cost_by_remaining_area.d.ts +10 -0
  1120. package/src/core/geom/packing/max-rect/cost/cost_by_remaining_area.d.ts.map +1 -0
  1121. package/src/core/geom/packing/max-rect/cost/cost_by_remaining_area.js +14 -0
  1122. package/src/core/geom/packing/max-rect/cutArea.d.ts +4 -4
  1123. package/src/core/geom/packing/max-rect/cutArea.d.ts.map +1 -1
  1124. package/src/core/geom/packing/max-rect/cutArea.js +7 -85
  1125. package/src/core/geom/packing/max-rect/cut_area.d.ts +7 -0
  1126. package/src/core/geom/packing/max-rect/cut_area.d.ts.map +1 -0
  1127. package/src/core/geom/packing/max-rect/cut_area.js +85 -0
  1128. package/src/core/geom/packing/max-rect/findBestContainer.d.ts +4 -7
  1129. package/src/core/geom/packing/max-rect/findBestContainer.d.ts.map +1 -1
  1130. package/src/core/geom/packing/max-rect/findBestContainer.js +7 -80
  1131. package/src/core/geom/packing/max-rect/find_best_container.d.ts +10 -0
  1132. package/src/core/geom/packing/max-rect/find_best_container.d.ts.map +1 -0
  1133. package/src/core/geom/packing/max-rect/find_best_container.js +80 -0
  1134. package/src/core/geom/packing/max-rect/packMaxRectangles.d.ts +4 -7
  1135. package/src/core/geom/packing/max-rect/packMaxRectangles.d.ts.map +1 -1
  1136. package/src/core/geom/packing/max-rect/packMaxRectangles.js +7 -16
  1137. package/src/core/geom/packing/max-rect/packOneBox.d.ts +4 -5
  1138. package/src/core/geom/packing/max-rect/packOneBox.d.ts.map +1 -1
  1139. package/src/core/geom/packing/max-rect/packOneBox.js +7 -54
  1140. package/src/core/geom/packing/max-rect/pack_max_rectangles.d.ts +10 -0
  1141. package/src/core/geom/packing/max-rect/pack_max_rectangles.d.ts.map +1 -0
  1142. package/src/core/geom/packing/max-rect/pack_max_rectangles.js +16 -0
  1143. package/src/core/geom/packing/max-rect/pack_one_box.d.ts +8 -0
  1144. package/src/core/geom/packing/max-rect/pack_one_box.d.ts.map +1 -0
  1145. package/src/core/geom/packing/max-rect/pack_one_box.js +54 -0
  1146. package/src/core/geom/packing/max-rect/removeRedundantBoxes.d.ts +4 -3
  1147. package/src/core/geom/packing/max-rect/removeRedundantBoxes.d.ts.map +1 -1
  1148. package/src/core/geom/packing/max-rect/removeRedundantBoxes.js +7 -84
  1149. package/src/core/geom/packing/max-rect/removeRedundantBoxesArray.d.ts +4 -3
  1150. package/src/core/geom/packing/max-rect/removeRedundantBoxesArray.d.ts.map +1 -1
  1151. package/src/core/geom/packing/max-rect/removeRedundantBoxesArray.js +7 -46
  1152. package/src/core/geom/packing/max-rect/remove_redundant_boxes.d.ts +6 -0
  1153. package/src/core/geom/packing/max-rect/remove_redundant_boxes.d.ts.map +1 -0
  1154. package/src/core/geom/packing/max-rect/remove_redundant_boxes.js +84 -0
  1155. package/src/core/geom/packing/max-rect/remove_redundant_boxes_from_array.d.ts +6 -0
  1156. package/src/core/geom/packing/max-rect/remove_redundant_boxes_from_array.d.ts.map +1 -0
  1157. package/src/core/geom/packing/max-rect/remove_redundant_boxes_from_array.js +46 -0
  1158. package/src/core/geom/packing/sphere_compute_bounding_of_spheres.d.ts +12 -0
  1159. package/src/core/geom/packing/sphere_compute_bounding_of_spheres.d.ts.map +1 -0
  1160. package/src/core/geom/packing/sphere_compute_bounding_of_spheres.js +102 -0
  1161. package/src/core/geom/random/randomPointInBox.d.ts +4 -5
  1162. package/src/core/geom/random/randomPointInBox.d.ts.map +1 -1
  1163. package/src/core/geom/random/randomPointInBox.js +7 -16
  1164. package/src/core/geom/random/randomPointInCircle.d.ts +4 -6
  1165. package/src/core/geom/random/randomPointInCircle.d.ts.map +1 -1
  1166. package/src/core/geom/random/randomPointInCircle.js +7 -21
  1167. package/src/core/geom/random/randomPointInPoint.d.ts +4 -5
  1168. package/src/core/geom/random/randomPointInPoint.d.ts.map +1 -1
  1169. package/src/core/geom/random/randomPointInPoint.js +7 -11
  1170. package/src/core/geom/random/randomPointInSphere.d.ts +4 -6
  1171. package/src/core/geom/random/randomPointInSphere.d.ts.map +1 -1
  1172. package/src/core/geom/random/randomPointInSphere.js +7 -35
  1173. package/src/core/geom/random/randomPointOnBox.d.ts +4 -5
  1174. package/src/core/geom/random/randomPointOnBox.d.ts.map +1 -1
  1175. package/src/core/geom/random/randomPointOnBox.js +7 -37
  1176. package/src/core/geom/random/randomPointOnSphere.d.ts +4 -6
  1177. package/src/core/geom/random/randomPointOnSphere.d.ts.map +1 -1
  1178. package/src/core/geom/random/randomPointOnSphere.js +7 -26
  1179. package/src/core/geom/random/random_point_in_box.d.ts +8 -0
  1180. package/src/core/geom/random/random_point_in_box.d.ts.map +1 -0
  1181. package/src/core/geom/random/random_point_in_box.js +16 -0
  1182. package/src/core/geom/random/random_point_in_circle.d.ts +9 -0
  1183. package/src/core/geom/random/random_point_in_circle.d.ts.map +1 -0
  1184. package/src/core/geom/random/random_point_in_circle.js +21 -0
  1185. package/src/core/geom/random/random_point_in_point.d.ts +8 -0
  1186. package/src/core/geom/random/random_point_in_point.d.ts.map +1 -0
  1187. package/src/core/geom/random/random_point_in_point.js +11 -0
  1188. package/src/core/geom/random/random_point_in_sphere.d.ts +9 -0
  1189. package/src/core/geom/random/random_point_in_sphere.d.ts.map +1 -0
  1190. package/src/core/geom/random/random_point_in_sphere.js +35 -0
  1191. package/src/core/geom/random/random_point_on_box.d.ts +8 -0
  1192. package/src/core/geom/random/random_point_on_box.d.ts.map +1 -0
  1193. package/src/core/geom/random/random_point_on_box.js +37 -0
  1194. package/src/core/geom/random/random_point_on_sphere.d.ts +9 -0
  1195. package/src/core/geom/random/random_point_on_sphere.d.ts.map +1 -0
  1196. package/src/core/geom/random/random_point_on_sphere.js +26 -0
  1197. package/src/core/geom/vec/vector_copy.d.ts +4 -7
  1198. package/src/core/geom/vec/vector_copy.d.ts.map +1 -1
  1199. package/src/core/geom/vec/vector_copy.js +7 -13
  1200. package/src/core/geom/vec/vector_copy_offset.d.ts +10 -0
  1201. package/src/core/geom/vec/vector_copy_offset.d.ts.map +1 -0
  1202. package/src/core/geom/vec/vector_copy_offset.js +13 -0
  1203. package/src/core/geom/vec/vector_scale_array.d.ts +4 -8
  1204. package/src/core/geom/vec/vector_scale_array.d.ts.map +1 -1
  1205. package/src/core/geom/vec/vector_scale_array.js +7 -31
  1206. package/src/core/geom/vec/vector_scale_offset.d.ts +11 -0
  1207. package/src/core/geom/vec/vector_scale_offset.d.ts.map +1 -0
  1208. package/src/core/geom/vec/vector_scale_offset.js +31 -0
  1209. package/src/core/geom/vec3/v3_add.d.ts +10 -0
  1210. package/src/core/geom/vec3/v3_add.d.ts.map +1 -0
  1211. package/src/core/geom/vec3/v3_add.js +13 -0
  1212. package/src/core/geom/vec3/v3_add_array.d.ts +10 -0
  1213. package/src/core/geom/vec3/v3_add_array.d.ts.map +1 -0
  1214. package/src/core/geom/vec3/v3_add_array.js +19 -0
  1215. package/src/core/geom/vec3/v3_angle.d.ts +12 -0
  1216. package/src/core/geom/vec3/v3_angle.d.ts.map +1 -0
  1217. package/src/core/geom/vec3/v3_angle.js +23 -0
  1218. package/src/core/geom/vec3/v3_angle_atan2_between.d.ts +4 -9
  1219. package/src/core/geom/vec3/v3_angle_atan2_between.d.ts.map +1 -1
  1220. package/src/core/geom/vec3/v3_angle_atan2_between.js +7 -27
  1221. package/src/core/geom/vec3/v3_angle_between.d.ts +4 -9
  1222. package/src/core/geom/vec3/v3_angle_between.d.ts.map +1 -1
  1223. package/src/core/geom/vec3/v3_angle_between.js +7 -23
  1224. package/src/core/geom/vec3/v3_angle_cos_between.d.ts +4 -9
  1225. package/src/core/geom/vec3/v3_angle_cos_between.d.ts.map +1 -1
  1226. package/src/core/geom/vec3/v3_angle_cos_between.js +7 -35
  1227. package/src/core/geom/vec3/v3_angle_stable.d.ts +12 -0
  1228. package/src/core/geom/vec3/v3_angle_stable.d.ts.map +1 -0
  1229. package/src/core/geom/vec3/v3_angle_stable.js +27 -0
  1230. package/src/core/geom/vec3/v3_array_add_in_place.d.ts +4 -7
  1231. package/src/core/geom/vec3/v3_array_add_in_place.d.ts.map +1 -1
  1232. package/src/core/geom/vec3/v3_array_add_in_place.js +7 -13
  1233. package/src/core/geom/vec3/v3_array_centroid.d.ts +4 -8
  1234. package/src/core/geom/vec3/v3_array_centroid.d.ts.map +1 -1
  1235. package/src/core/geom/vec3/v3_array_centroid.js +7 -40
  1236. package/src/core/geom/vec3/v3_array_copy.d.ts +4 -6
  1237. package/src/core/geom/vec3/v3_array_copy.d.ts.map +1 -1
  1238. package/src/core/geom/vec3/v3_array_copy.js +7 -17
  1239. package/src/core/geom/vec3/v3_array_displace_in_direction.d.ts +4 -11
  1240. package/src/core/geom/vec3/v3_array_displace_in_direction.d.ts.map +1 -1
  1241. package/src/core/geom/vec3/v3_array_displace_in_direction.js +7 -23
  1242. package/src/core/geom/vec3/v3_array_equals.d.ts +4 -6
  1243. package/src/core/geom/vec3/v3_array_equals.d.ts.map +1 -1
  1244. package/src/core/geom/vec3/v3_array_equals.js +7 -13
  1245. package/src/core/geom/vec3/v3_array_immediate_add.d.ts +4 -7
  1246. package/src/core/geom/vec3/v3_array_immediate_add.d.ts.map +1 -1
  1247. package/src/core/geom/vec3/v3_array_immediate_add.js +7 -19
  1248. package/src/core/geom/vec3/v3_array_matrix4_rotate.d.ts +4 -8
  1249. package/src/core/geom/vec3/v3_array_matrix4_rotate.d.ts.map +1 -1
  1250. package/src/core/geom/vec3/v3_array_matrix4_rotate.js +7 -22
  1251. package/src/core/geom/vec3/v3_array_normalize.d.ts +4 -6
  1252. package/src/core/geom/vec3/v3_array_normalize.d.ts.map +1 -1
  1253. package/src/core/geom/vec3/v3_array_normalize.js +7 -32
  1254. package/src/core/geom/vec3/v3_array_scale.d.ts +4 -8
  1255. package/src/core/geom/vec3/v3_array_scale.d.ts.map +1 -1
  1256. package/src/core/geom/vec3/v3_array_scale.js +5 -16
  1257. package/src/core/geom/vec3/v3_centroid_v3_buffer.d.ts +11 -0
  1258. package/src/core/geom/vec3/v3_centroid_v3_buffer.d.ts.map +1 -0
  1259. package/src/core/geom/vec3/v3_centroid_v3_buffer.js +40 -0
  1260. package/src/core/geom/vec3/v3_compute_interior_angle.d.ts +4 -19
  1261. package/src/core/geom/vec3/v3_compute_interior_angle.d.ts.map +1 -1
  1262. package/src/core/geom/vec3/v3_compute_interior_angle.js +7 -26
  1263. package/src/core/geom/vec3/v3_copy_array.d.ts +9 -0
  1264. package/src/core/geom/vec3/v3_copy_array.d.ts.map +1 -0
  1265. package/src/core/geom/vec3/v3_copy_array.js +17 -0
  1266. package/src/core/geom/vec3/v3_cos_angle.d.ts +12 -0
  1267. package/src/core/geom/vec3/v3_cos_angle.d.ts.map +1 -0
  1268. package/src/core/geom/vec3/v3_cos_angle.js +35 -0
  1269. package/src/core/geom/vec3/v3_displace_in_direction_to_array.d.ts +14 -0
  1270. package/src/core/geom/vec3/v3_displace_in_direction_to_array.d.ts.map +1 -0
  1271. package/src/core/geom/vec3/v3_displace_in_direction_to_array.js +23 -0
  1272. package/src/core/geom/vec3/v3_dot_array.d.ts +10 -0
  1273. package/src/core/geom/vec3/v3_dot_array.d.ts.map +1 -0
  1274. package/src/core/geom/vec3/v3_dot_array.js +25 -0
  1275. package/src/core/geom/vec3/v3_dot_array_array.d.ts +4 -7
  1276. package/src/core/geom/vec3/v3_dot_array_array.d.ts.map +1 -1
  1277. package/src/core/geom/vec3/v3_dot_array_array.js +7 -25
  1278. package/src/core/geom/vec3/v3_equals_array.d.ts +9 -0
  1279. package/src/core/geom/vec3/v3_equals_array.d.ts.map +1 -0
  1280. package/src/core/geom/vec3/v3_equals_array.js +13 -0
  1281. package/src/core/geom/vec3/v3_interior_angle.d.ts +22 -0
  1282. package/src/core/geom/vec3/v3_interior_angle.d.ts.map +1 -0
  1283. package/src/core/geom/vec3/v3_interior_angle.js +26 -0
  1284. package/src/core/geom/vec3/v3_matrix3_rotate.d.ts +3 -3
  1285. package/src/core/geom/vec3/v3_matrix3_rotate.d.ts.map +1 -1
  1286. package/src/core/geom/vec3/v3_matrix3_rotate.js +2 -2
  1287. package/src/core/geom/vec3/v3_matrix4_rotate.d.ts +4 -13
  1288. package/src/core/geom/vec3/v3_matrix4_rotate.d.ts.map +1 -1
  1289. package/src/core/geom/vec3/v3_matrix4_rotate.js +7 -51
  1290. package/src/core/geom/vec3/v3_matrix4_rotate_array.d.ts +11 -0
  1291. package/src/core/geom/vec3/v3_matrix4_rotate_array.d.ts.map +1 -0
  1292. package/src/core/geom/vec3/v3_matrix4_rotate_array.js +22 -0
  1293. package/src/core/geom/vec3/v3_matrix4_rotate_unit.d.ts +16 -0
  1294. package/src/core/geom/vec3/v3_matrix4_rotate_unit.d.ts.map +1 -0
  1295. package/src/core/geom/vec3/v3_matrix4_rotate_unit.js +51 -0
  1296. package/src/core/geom/vec3/v3_multiply_scalar.d.ts +4 -8
  1297. package/src/core/geom/vec3/v3_multiply_scalar.d.ts.map +1 -1
  1298. package/src/core/geom/vec3/v3_multiply_scalar.js +7 -19
  1299. package/src/core/geom/vec3/v3_normalize_array.d.ts +9 -0
  1300. package/src/core/geom/vec3/v3_normalize_array.d.ts.map +1 -0
  1301. package/src/core/geom/vec3/v3_normalize_array.js +32 -0
  1302. package/src/core/geom/vec3/v3_orthonormal_matrix_from_normal.d.ts +4 -1
  1303. package/src/core/geom/vec3/v3_orthonormal_matrix_from_normal.d.ts.map +1 -1
  1304. package/src/core/geom/vec3/v3_orthonormal_matrix_from_normal.js +4 -1
  1305. package/src/core/geom/vec3/v3_quat3_apply.d.ts +4 -26
  1306. package/src/core/geom/vec3/v3_quat3_apply.d.ts.map +1 -1
  1307. package/src/core/geom/vec3/v3_quat3_apply.js +5 -37
  1308. package/src/core/geom/vec3/v3_quat3_apply_inverse.d.ts +4 -27
  1309. package/src/core/geom/vec3/v3_quat3_apply_inverse.d.ts.map +1 -1
  1310. package/src/core/geom/vec3/v3_quat3_apply_inverse.js +5 -39
  1311. package/src/core/geom/vec3/v3_quaternion_apply.d.ts +29 -0
  1312. package/src/core/geom/vec3/v3_quaternion_apply.d.ts.map +1 -0
  1313. package/src/core/geom/vec3/v3_quaternion_apply.js +39 -0
  1314. package/src/core/geom/vec3/v3_quaternion_apply_inverse.d.ts +30 -0
  1315. package/src/core/geom/vec3/v3_quaternion_apply_inverse.d.ts.map +1 -0
  1316. package/src/core/geom/vec3/v3_quaternion_apply_inverse.js +41 -0
  1317. package/src/core/geom/vec3/v3_reflect.d.ts +19 -0
  1318. package/src/core/geom/vec3/v3_reflect.d.ts.map +1 -0
  1319. package/src/core/geom/vec3/v3_reflect.js +24 -0
  1320. package/src/core/geom/vec3/v3_scale.d.ts +11 -0
  1321. package/src/core/geom/vec3/v3_scale.d.ts.map +1 -0
  1322. package/src/core/geom/vec3/v3_scale.js +19 -0
  1323. package/src/core/geom/vec3/v3_scale_array.d.ts +11 -0
  1324. package/src/core/geom/vec3/v3_scale_array.d.ts.map +1 -0
  1325. package/src/core/geom/vec3/v3_scale_array.js +18 -0
  1326. package/src/core/geom/vec3/v3_triple_cross.d.ts +32 -0
  1327. package/src/core/geom/vec3/v3_triple_cross.d.ts.map +1 -0
  1328. package/src/core/geom/vec3/v3_triple_cross.js +45 -0
  1329. package/src/core/geom/vec3/v3_triple_cross_product.d.ts +4 -29
  1330. package/src/core/geom/vec3/v3_triple_cross_product.d.ts.map +1 -1
  1331. package/src/core/geom/vec3/v3_triple_cross_product.js +5 -43
  1332. package/src/core/geom/vec4/v4_matrix4_multiply.d.ts +8 -0
  1333. package/src/core/geom/vec4/v4_matrix4_multiply.d.ts.map +1 -0
  1334. package/src/core/geom/vec4/v4_matrix4_multiply.js +42 -0
  1335. package/src/core/geom/vec4/v4_multiply_mat4.d.ts +4 -5
  1336. package/src/core/geom/vec4/v4_multiply_mat4.d.ts.map +1 -1
  1337. package/src/core/geom/vec4/v4_multiply_mat4.js +7 -42
  1338. package/src/core/graph/csr/CSRGraph.d.ts +12 -8
  1339. package/src/core/graph/csr/CSRGraph.d.ts.map +1 -1
  1340. package/src/core/graph/csr/CSRGraph.js +18 -10
  1341. package/src/core/graph/csr/csr_graph_build_distance_field.d.ts +36 -0
  1342. package/src/core/graph/csr/csr_graph_build_distance_field.d.ts.map +1 -0
  1343. package/src/core/graph/csr/csr_graph_build_distance_field.js +112 -0
  1344. package/src/core/graph/csr/csr_graph_find_edge.d.ts +15 -0
  1345. package/src/core/graph/csr/csr_graph_find_edge.d.ts.map +1 -0
  1346. package/src/core/graph/csr/csr_graph_find_edge.js +25 -0
  1347. package/src/core/graph/csr/csr_graph_find_shortest_path.d.ts +20 -0
  1348. package/src/core/graph/csr/csr_graph_find_shortest_path.d.ts.map +1 -0
  1349. package/src/core/graph/csr/csr_graph_find_shortest_path.js +105 -0
  1350. package/src/core/graph/layout/CircleLayout.d.ts.map +1 -1
  1351. package/src/core/graph/layout/CircleLayout.js +2 -4
  1352. package/src/core/graph/layout/box/applyCentralGravityAABB2.js +2 -2
  1353. package/src/core/graph/metis/cluster_mesh_metis.d.ts.map +1 -1
  1354. package/src/core/graph/metis/cluster_mesh_metis.js +8 -1
  1355. package/src/core/graph/metis/mesh_to_metis_graph.d.ts +2 -2
  1356. package/src/core/graph/metis/mesh_to_metis_graph.d.ts.map +1 -1
  1357. package/src/core/graph/metis/mesh_to_metis_graph.js +3 -3
  1358. package/src/core/graph/metis/native/MetisGraph.d.ts +26 -10
  1359. package/src/core/graph/metis/native/MetisGraph.d.ts.map +1 -1
  1360. package/src/core/graph/metis/native/MetisGraph.js +34 -15
  1361. package/src/core/graph/metis/native/bisection/BisectionScratch.d.ts +2 -2
  1362. package/src/core/graph/metis/native/bisection/BisectionScratch.d.ts.map +1 -1
  1363. package/src/core/graph/metis/native/bisection/BisectionScratch.js +4 -2
  1364. package/src/core/graph/metis/native/bisection/compute_2way_params.d.ts.map +1 -1
  1365. package/src/core/graph/metis/native/bisection/compute_2way_params.js +3 -1
  1366. package/src/core/graph/metis/native/metis_partition_kway.d.ts +2 -2
  1367. package/src/core/graph/metis/native/metis_partition_kway.d.ts.map +1 -1
  1368. package/src/core/graph/metis/native/metis_partition_kway.js +1 -1
  1369. package/src/core/graph/metis/native/refine/compute_kway_params.d.ts.map +1 -1
  1370. package/src/core/graph/metis/native/refine/compute_kway_params.js +20 -8
  1371. package/src/core/graph/metis/native/refine/fm_kway.d.ts.map +1 -1
  1372. package/src/core/graph/metis/native/refine/fm_kway.js +58 -33
  1373. package/src/engine/EngineHarness.js +2 -2
  1374. package/src/engine/animation/curve/view/AnimationCurveView.js +2 -2
  1375. package/src/engine/asset/loaders/material/planeHash.js +2 -2
  1376. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
  1377. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +7 -7
  1378. package/src/engine/control/first-person/prototype_first_person_controller.js +3 -3
  1379. package/src/engine/ecs/terrain/ecs/TerrainSystem.js +6 -6
  1380. package/src/engine/ecs/terrain/tiles/TerrainTile.js +2 -2
  1381. package/src/engine/ecs/terrain/tiles/TerrainTileManager.js +3 -3
  1382. package/src/engine/ecs/transform/Transform.js +7 -7
  1383. package/src/engine/ecs/transform/TransformSerializationAdapter.js +4 -4
  1384. package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.js +2 -2
  1385. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js +2 -2
  1386. package/src/engine/graphics/ecs/decal/v2/FPDecalSystem.js +8 -8
  1387. package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.d.ts.map +1 -1
  1388. package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.js +4 -6
  1389. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.js +2 -2
  1390. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.js +6 -6
  1391. package/src/engine/graphics/ecs/mesh-v2/render/ShadedGeometryRendererContext.js +3 -3
  1392. package/src/engine/graphics/ecs/trail2d/Trail2D.d.ts +26 -5
  1393. package/src/engine/graphics/ecs/trail2d/Trail2D.d.ts.map +1 -1
  1394. package/src/engine/graphics/ecs/trail2d/Trail2D.js +51 -11
  1395. package/src/engine/graphics/ecs/trail2d/Trail2DSystem.d.ts.map +1 -1
  1396. package/src/engine/graphics/ecs/trail2d/Trail2DSystem.js +1 -0
  1397. package/src/engine/graphics/ecs/trail2d/prototypeTrail2D.js +2 -2
  1398. package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts +186 -0
  1399. package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts.map +1 -0
  1400. package/src/engine/graphics/ecs/trail3d/Trail3D.js +430 -0
  1401. package/src/engine/graphics/ecs/trail3d/Trail3DFlags.d.ts +9 -0
  1402. package/src/engine/graphics/ecs/trail3d/Trail3DFlags.d.ts.map +1 -0
  1403. package/src/engine/graphics/ecs/trail3d/Trail3DFlags.js +18 -0
  1404. package/src/engine/graphics/ecs/trail3d/Trail3DSystem.d.ts +55 -0
  1405. package/src/engine/graphics/ecs/trail3d/Trail3DSystem.d.ts.map +1 -0
  1406. package/src/engine/graphics/ecs/trail3d/Trail3DSystem.js +248 -0
  1407. package/src/engine/graphics/ecs/trail3d/prototypeTrail3D.d.ts +2 -0
  1408. package/src/engine/graphics/ecs/trail3d/prototypeTrail3D.d.ts.map +1 -0
  1409. package/src/engine/graphics/ecs/trail3d/prototypeTrail3D.js +76 -0
  1410. package/src/engine/graphics/geometry/buffered/geometry_compute_vertex_normals_indexed.js +4 -4
  1411. package/src/engine/graphics/geometry/buffered/query/GeometrySpatialQueryAccelerator.js +2 -2
  1412. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_nearest.d.ts.map +1 -1
  1413. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_nearest.js +4 -6
  1414. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_overlap_clipping_volume.d.ts.map +1 -1
  1415. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_overlap_clipping_volume.js +2 -4
  1416. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.js +2 -2
  1417. package/src/engine/graphics/geometry/buffered/query/query_bvh_geometry_nearest.d.ts.map +1 -1
  1418. package/src/engine/graphics/geometry/buffered/query/query_bvh_geometry_nearest.js +4 -6
  1419. package/src/engine/graphics/geometry/buffered/v3_array_normalize_many.js +2 -2
  1420. package/src/engine/graphics/geometry/computeMeshSurfaceArea.js +2 -2
  1421. package/src/engine/graphics/geometry/geometry_construct_triangle_normal.js +2 -2
  1422. package/src/engine/graphics/impostors/octahedral/bake/compute_bounding_sphere.js +2 -2
  1423. package/src/engine/graphics/impostors/octahedral/bake/compute_bounding_sphere_radius_only.d.ts.map +1 -1
  1424. package/src/engine/graphics/impostors/octahedral/bake/compute_bounding_sphere_radius_only.js +2 -4
  1425. package/src/engine/graphics/impostors/octahedral/util/sampler2d_build_cutout.js +4 -4
  1426. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +8 -8
  1427. package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts +20 -5
  1428. package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts.map +1 -1
  1429. package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.js +2 -2
  1430. package/src/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.js +10 -10
  1431. package/src/engine/graphics/render/forward_plus/LightManager.d.ts.map +1 -1
  1432. package/src/engine/graphics/render/forward_plus/LightManager.js +8 -13
  1433. package/src/engine/graphics/render/forward_plus/assign_cluster.d.ts.map +1 -1
  1434. package/src/engine/graphics/render/forward_plus/assign_cluster.js +1 -2
  1435. package/src/engine/graphics/render/forward_plus/computeFrustumCorners.d.ts.map +1 -1
  1436. package/src/engine/graphics/render/forward_plus/computeFrustumCorners.js +9 -11
  1437. package/src/engine/graphics/render/forward_plus/model/SpotLight.js +2 -2
  1438. package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.d.ts +8 -0
  1439. package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.d.ts.map +1 -1
  1440. package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.js +8 -0
  1441. package/src/engine/graphics/render/forward_plus/query/point_light_inside_volume.d.ts +12 -2
  1442. package/src/engine/graphics/render/forward_plus/query/point_light_inside_volume.d.ts.map +1 -1
  1443. package/src/engine/graphics/render/forward_plus/query/point_light_inside_volume.js +18 -48
  1444. package/src/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.d.ts +1 -2
  1445. package/src/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.d.ts.map +1 -1
  1446. package/src/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.js +2 -3
  1447. package/src/engine/graphics/render/forward_plus/query/spot_light_inside_volume.js +2 -2
  1448. package/src/engine/graphics/render/forward_plus/testClusterEquality.js +1 -1
  1449. package/src/engine/graphics/render/gizmo/GizmoShapeRenderingInterface.js +5 -5
  1450. package/src/engine/graphics/render/layers/RenderLayerUtils.d.ts.map +1 -1
  1451. package/src/engine/graphics/render/layers/RenderLayerUtils.js +2 -4
  1452. package/src/engine/graphics/render/make_bvh_visibility_builder.js +3 -3
  1453. package/src/engine/graphics/render/view/CameraView.js +2 -2
  1454. package/src/engine/graphics/sh3/fromCubeRenderTarget.js +2 -2
  1455. package/src/engine/graphics/sh3/gi/prototypeSHGI.js +2 -2
  1456. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.js +4 -4
  1457. package/src/engine/graphics/sh3/lpv/depth/octahedral/bake_octahedral_depth_map.js +2 -2
  1458. package/src/engine/graphics/sh3/lpv/depth/octahedral/bake_octahedral_depth_map_fibonacci.js +2 -2
  1459. package/src/engine/graphics/sh3/lpv/depth/sh3_bake_depth.js +2 -2
  1460. package/src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.d.ts.map +1 -1
  1461. package/src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.js +7 -8
  1462. package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.d.ts +1 -0
  1463. package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.d.ts.map +1 -1
  1464. package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.js +20 -6
  1465. package/src/engine/graphics/sh3/path_tracer/PathTracedRenderer.d.ts +57 -0
  1466. package/src/engine/graphics/sh3/path_tracer/PathTracedRenderer.d.ts.map +1 -0
  1467. package/src/engine/graphics/sh3/path_tracer/PathTracedRenderer.js +186 -0
  1468. package/src/engine/graphics/sh3/path_tracer/PathTracedScene.d.ts.map +1 -1
  1469. package/src/engine/graphics/sh3/path_tracer/PathTracedScene.js +166 -51
  1470. package/src/engine/graphics/sh3/path_tracer/PathTracer.d.ts.map +1 -1
  1471. package/src/engine/graphics/sh3/path_tracer/PathTracer.js +44 -25
  1472. package/src/engine/graphics/sh3/path_tracer/REVIEW_001_ACTION_PLAN.md +490 -0
  1473. package/src/engine/graphics/sh3/path_tracer/make_sky_hosek.js +4 -4
  1474. package/src/engine/graphics/sh3/path_tracer/material/MaterialConverter.d.ts.map +1 -1
  1475. package/src/engine/graphics/sh3/path_tracer/material/MaterialConverter.js +10 -2
  1476. package/src/engine/graphics/sh3/path_tracer/material/StandardTexture.d.ts +6 -0
  1477. package/src/engine/graphics/sh3/path_tracer/material/StandardTexture.d.ts.map +1 -1
  1478. package/src/engine/graphics/sh3/path_tracer/material/StandardTexture.js +14 -0
  1479. package/src/engine/graphics/sh3/path_tracer/prototypePathTracer.js +9 -136
  1480. package/src/engine/graphics/sh3/path_tracer/ray_hit_apply_transform.d.ts +2 -1
  1481. package/src/engine/graphics/sh3/path_tracer/ray_hit_apply_transform.d.ts.map +1 -1
  1482. package/src/engine/graphics/sh3/path_tracer/ray_hit_apply_transform.js +32 -31
  1483. package/src/engine/graphics/sh3/path_tracer/sampling/getBiasedNormalSample.d.ts +3 -3
  1484. package/src/engine/graphics/sh3/path_tracer/sampling/getBiasedNormalSample.d.ts.map +1 -1
  1485. package/src/engine/graphics/sh3/path_tracer/sampling/getBiasedNormalSample.js +3 -3
  1486. package/src/engine/graphics/sh3/path_tracer/texture/sample_material.d.ts +1 -1
  1487. package/src/engine/graphics/sh3/path_tracer/texture/sample_material.d.ts.map +1 -1
  1488. package/src/engine/graphics/sh3/path_tracer/texture/sample_material.js +144 -133
  1489. package/src/engine/graphics/sh3/prototypeSH3Probe.js +2 -2
  1490. package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.js +7 -7
  1491. package/src/engine/graphics/texture/sprite/prototypeSpriteCutoutGeometry.js +5 -5
  1492. package/src/engine/graphics/three/expand_aabb_by_transformed_three_object.js +2 -2
  1493. package/src/engine/graphics/trail/TrailSpawnMode.d.ts +19 -0
  1494. package/src/engine/graphics/trail/TrailSpawnMode.d.ts.map +1 -0
  1495. package/src/engine/graphics/trail/TrailSpawnMode.js +20 -0
  1496. package/src/engine/graphics/trail/tube/TubeMaterialX.d.ts +5 -0
  1497. package/src/engine/graphics/trail/tube/TubeMaterialX.d.ts.map +1 -0
  1498. package/src/engine/graphics/trail/tube/TubeMaterialX.js +80 -0
  1499. package/src/engine/graphics/trail/tube/TubeX.d.ts +141 -0
  1500. package/src/engine/graphics/trail/tube/TubeX.d.ts.map +1 -0
  1501. package/src/engine/graphics/trail/tube/TubeX.js +555 -0
  1502. package/src/engine/graphics/trail/tube/TubeXMaterialSpec.d.ts +26 -0
  1503. package/src/engine/graphics/trail/tube/TubeXMaterialSpec.d.ts.map +1 -0
  1504. package/src/engine/graphics/trail/tube/TubeXMaterialSpec.js +47 -0
  1505. package/src/engine/graphics/trail/tube/TubeXPlugin.d.ts +21 -0
  1506. package/src/engine/graphics/trail/tube/TubeXPlugin.d.ts.map +1 -0
  1507. package/src/engine/graphics/trail/tube/TubeXPlugin.js +80 -0
  1508. package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.d.ts +14 -0
  1509. package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.d.ts.map +1 -0
  1510. package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.js +32 -0
  1511. package/src/engine/graphics/trail/tube/tube_attributes_spec.d.ts +26 -0
  1512. package/src/engine/graphics/trail/tube/tube_attributes_spec.d.ts.map +1 -0
  1513. package/src/engine/graphics/trail/tube/tube_attributes_spec.js +69 -0
  1514. package/src/engine/graphics/trail/tube/tube_frame.d.ts +32 -0
  1515. package/src/engine/graphics/trail/tube/tube_frame.d.ts.map +1 -0
  1516. package/src/engine/graphics/trail/tube/tube_frame.js +83 -0
  1517. package/src/engine/graphics/util/composeMatrix4.js +2 -2
  1518. package/src/engine/navigation/mesh/NavigationMesh.js +6 -6
  1519. package/src/engine/navigation/mesh/PATHFINDING_PLAN.md +1 -1
  1520. package/src/engine/navigation/mesh/build/clip_soup_against_overhangs.d.ts.map +1 -1
  1521. package/src/engine/navigation/mesh/build/clip_soup_against_overhangs.js +5 -51
  1522. package/src/engine/navigation/mesh/build/navmesh_build_topology.d.ts.map +1 -1
  1523. package/src/engine/navigation/mesh/build/navmesh_build_topology.js +19 -23
  1524. package/src/engine/network/CONGESTION_CONTROL.md +87 -0
  1525. package/src/engine/network/NetworkSession.d.ts +7 -1
  1526. package/src/engine/network/NetworkSession.d.ts.map +1 -1
  1527. package/src/engine/network/NetworkSession.js +144 -0
  1528. package/src/engine/network/README.md +7 -0
  1529. package/src/engine/network/adapters/TransformInterpolationAdapter.js +5 -5
  1530. package/src/engine/network/adapters/TransformReplicationAdapter.js +4 -4
  1531. package/src/engine/network/core/MalformedPacketError.d.ts +24 -0
  1532. package/src/engine/network/core/MalformedPacketError.d.ts.map +1 -0
  1533. package/src/engine/network/core/MalformedPacketError.js +26 -0
  1534. package/src/engine/network/ecs/owner_authorization.d.ts +49 -0
  1535. package/src/engine/network/ecs/owner_authorization.d.ts.map +1 -0
  1536. package/src/engine/network/ecs/owner_authorization.js +55 -0
  1537. package/src/engine/network/orchestrator/NetworkPeer.d.ts +31 -0
  1538. package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
  1539. package/src/engine/network/orchestrator/NetworkPeer.js +89 -2
  1540. package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts +38 -1
  1541. package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts.map +1 -1
  1542. package/src/engine/network/orchestrator/ServerAuthoritativeServer.js +75 -0
  1543. package/src/engine/network/replication/Replicator.d.ts.map +1 -1
  1544. package/src/engine/network/replication/Replicator.js +28 -0
  1545. package/src/engine/network/sim/SimActionExecutor.d.ts +46 -1
  1546. package/src/engine/network/sim/SimActionExecutor.d.ts.map +1 -1
  1547. package/src/engine/network/sim/SimActionExecutor.js +68 -0
  1548. package/src/engine/network/sim/Snapshotter.d.ts.map +1 -1
  1549. package/src/engine/network/sim/Snapshotter.js +18 -2
  1550. package/src/engine/network/transport/Channel.d.ts +12 -1
  1551. package/src/engine/network/transport/Channel.d.ts.map +1 -1
  1552. package/src/engine/network/transport/Channel.js +34 -1
  1553. package/src/engine/physics/broadphase/generate_pairs.js +3 -3
  1554. package/src/engine/physics/constraint/solve_constraints.js +3 -3
  1555. package/src/engine/physics/ecs/PhysicsSystem.js +2 -2
  1556. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  1557. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +3 -3
  1558. package/src/engine/physics/inverse_kinematics/two_joint_ik.js +4 -4
  1559. package/src/engine/physics/narrowphase/box_box_manifold.d.ts.map +1 -1
  1560. package/src/engine/physics/narrowphase/box_box_manifold.js +4 -6
  1561. package/src/engine/physics/narrowphase/box_triangle_contact.d.ts.map +1 -1
  1562. package/src/engine/physics/narrowphase/box_triangle_contact.js +4 -6
  1563. package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -1
  1564. package/src/engine/physics/narrowphase/capsule_contacts.js +27 -34
  1565. package/src/engine/physics/narrowphase/capsule_triangle_contact.js +8 -8
  1566. package/src/engine/physics/narrowphase/compute_penetration.js +8 -8
  1567. package/src/engine/physics/narrowphase/convex_convex_manifold.js +9 -9
  1568. package/src/engine/physics/narrowphase/convex_decomposition.js +8 -8
  1569. package/src/engine/physics/narrowphase/mesh_convex_hull.js +3 -3
  1570. package/src/engine/physics/narrowphase/mesh_mesh_tet_manifold.js +3 -3
  1571. package/src/engine/physics/narrowphase/refine_ray_concave.js +5 -5
  1572. package/src/engine/physics/narrowphase/refine_ray_hit.js +5 -5
  1573. package/src/engine/physics/narrowphase/sphere_box_contact.js +5 -5
  1574. package/src/engine/physics/narrowphase/sphere_triangle_contact.js +2 -2
  1575. package/src/engine/physics/queries/overlap_shape.js +3 -3
  1576. package/src/engine/physics/queries/raycast.d.ts.map +1 -1
  1577. package/src/engine/physics/queries/raycast.js +3 -5
  1578. package/src/engine/physics/queries/shape_cast.js +3 -3
  1579. package/src/engine/physics/solver/solve_contacts.js +6 -6
  1580. package/src/engine/physics/vehicle/RaycastVehicle.js +4 -4
  1581. package/src/engine/sound/SoundEngine.js +2 -2
  1582. package/src/engine/sound/ecs/audio/AudioEmitter.d.ts +32 -1
  1583. package/src/engine/sound/ecs/audio/AudioEmitter.d.ts.map +1 -1
  1584. package/src/engine/sound/ecs/audio/AudioEmitter.js +40 -1
  1585. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts +33 -8
  1586. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -1
  1587. package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +90 -12
  1588. package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts +12 -1
  1589. package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts.map +1 -1
  1590. package/src/engine/sound/ecs/audio/LiveEmitterSet.js +25 -4
  1591. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.js +1 -1
  1592. package/src/engine/sound/simulation/AcousticSimulator.d.ts +134 -0
  1593. package/src/engine/sound/simulation/AcousticSimulator.d.ts.map +1 -0
  1594. package/src/engine/sound/simulation/AcousticSimulator.js +637 -0
  1595. package/src/engine/sound/simulation/IMPLEMENTATION_PLAN.md +432 -0
  1596. package/src/engine/sound/simulation/PROBE_PLACEMENT.md +250 -0
  1597. package/src/engine/sound/simulation/PROBE_TRANSFER_RESEARCH.md +322 -0
  1598. package/src/engine/sound/simulation/README.md +277 -0
  1599. package/src/engine/sound/simulation/REFLECTION_IR_PLAN.md +261 -0
  1600. package/src/engine/sound/simulation/VISIBILITY_GRAPH_PLAN.md +121 -0
  1601. package/src/engine/sound/simulation/configureAcousticSimulation.d.ts +31 -0
  1602. package/src/engine/sound/simulation/configureAcousticSimulation.d.ts.map +1 -0
  1603. package/src/engine/sound/simulation/configureAcousticSimulation.js +48 -0
  1604. package/src/engine/sound/simulation/core/AcousticMedium.d.ts +60 -0
  1605. package/src/engine/sound/simulation/core/AcousticMedium.d.ts.map +1 -0
  1606. package/src/engine/sound/simulation/core/AcousticMedium.js +113 -0
  1607. package/src/engine/sound/simulation/core/AcousticMediumSerializationAdapter.d.ts +22 -0
  1608. package/src/engine/sound/simulation/core/AcousticMediumSerializationAdapter.d.ts.map +1 -0
  1609. package/src/engine/sound/simulation/core/AcousticMediumSerializationAdapter.js +27 -0
  1610. package/src/engine/sound/simulation/core/AcousticOccluderIndex.d.ts +85 -0
  1611. package/src/engine/sound/simulation/core/AcousticOccluderIndex.d.ts.map +1 -0
  1612. package/src/engine/sound/simulation/core/AcousticOccluderIndex.js +314 -0
  1613. package/src/engine/sound/simulation/core/AcousticRegionIndex.d.ts +56 -0
  1614. package/src/engine/sound/simulation/core/AcousticRegionIndex.d.ts.map +1 -0
  1615. package/src/engine/sound/simulation/core/AcousticRegionIndex.js +159 -0
  1616. package/src/engine/sound/simulation/core/AcousticSolution.d.ts +66 -0
  1617. package/src/engine/sound/simulation/core/AcousticSolution.d.ts.map +1 -0
  1618. package/src/engine/sound/simulation/core/AcousticSolution.js +90 -0
  1619. package/src/engine/sound/simulation/core/AcousticSourceState.d.ts +55 -0
  1620. package/src/engine/sound/simulation/core/AcousticSourceState.d.ts.map +1 -0
  1621. package/src/engine/sound/simulation/core/AcousticSourceState.js +109 -0
  1622. package/src/engine/sound/simulation/core/AcousticVolumeRegion.d.ts +45 -0
  1623. package/src/engine/sound/simulation/core/AcousticVolumeRegion.d.ts.map +1 -0
  1624. package/src/engine/sound/simulation/core/AcousticVolumeRegion.js +73 -0
  1625. package/src/engine/sound/simulation/core/OccluderBody.d.ts +57 -0
  1626. package/src/engine/sound/simulation/core/OccluderBody.d.ts.map +1 -0
  1627. package/src/engine/sound/simulation/core/OccluderBody.js +74 -0
  1628. package/src/engine/sound/simulation/core/OcclusionSolver.d.ts +29 -0
  1629. package/src/engine/sound/simulation/core/OcclusionSolver.d.ts.map +1 -0
  1630. package/src/engine/sound/simulation/core/OcclusionSolver.js +119 -0
  1631. package/src/engine/sound/simulation/core/RayHit.d.ts +42 -0
  1632. package/src/engine/sound/simulation/core/RayHit.d.ts.map +1 -0
  1633. package/src/engine/sound/simulation/core/RayHit.js +50 -0
  1634. package/src/engine/sound/simulation/core/VolumeField.d.ts +55 -0
  1635. package/src/engine/sound/simulation/core/VolumeField.d.ts.map +1 -0
  1636. package/src/engine/sound/simulation/core/VolumeField.js +145 -0
  1637. package/src/engine/sound/simulation/definition/AcousticDirectivity.d.ts +75 -0
  1638. package/src/engine/sound/simulation/definition/AcousticDirectivity.d.ts.map +1 -0
  1639. package/src/engine/sound/simulation/definition/AcousticDirectivity.js +114 -0
  1640. package/src/engine/sound/simulation/definition/AcousticDirectivitySerializationAdapter.d.ts +23 -0
  1641. package/src/engine/sound/simulation/definition/AcousticDirectivitySerializationAdapter.d.ts.map +1 -0
  1642. package/src/engine/sound/simulation/definition/AcousticDirectivitySerializationAdapter.js +30 -0
  1643. package/src/engine/sound/simulation/definition/AcousticMaterial.d.ts +61 -0
  1644. package/src/engine/sound/simulation/definition/AcousticMaterial.d.ts.map +1 -0
  1645. package/src/engine/sound/simulation/definition/AcousticMaterial.js +122 -0
  1646. package/src/engine/sound/simulation/definition/AcousticMaterialSerializationAdapter.d.ts +23 -0
  1647. package/src/engine/sound/simulation/definition/AcousticMaterialSerializationAdapter.d.ts.map +1 -0
  1648. package/src/engine/sound/simulation/definition/AcousticMaterialSerializationAdapter.js +32 -0
  1649. package/src/engine/sound/simulation/ecs/AcousticBody.d.ts +39 -0
  1650. package/src/engine/sound/simulation/ecs/AcousticBody.d.ts.map +1 -0
  1651. package/src/engine/sound/simulation/ecs/AcousticBody.js +48 -0
  1652. package/src/engine/sound/simulation/ecs/AcousticBodySerializationAdapter.d.ts +24 -0
  1653. package/src/engine/sound/simulation/ecs/AcousticBodySerializationAdapter.d.ts.map +1 -0
  1654. package/src/engine/sound/simulation/ecs/AcousticBodySerializationAdapter.js +34 -0
  1655. package/src/engine/sound/simulation/ecs/AcousticProbeFieldSystem.d.ts +39 -0
  1656. package/src/engine/sound/simulation/ecs/AcousticProbeFieldSystem.d.ts.map +1 -0
  1657. package/src/engine/sound/simulation/ecs/AcousticProbeFieldSystem.js +64 -0
  1658. package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.d.ts +44 -0
  1659. package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.d.ts.map +1 -0
  1660. package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.js +75 -0
  1661. package/src/engine/sound/simulation/ecs/AcousticVolume.d.ts +53 -0
  1662. package/src/engine/sound/simulation/ecs/AcousticVolume.d.ts.map +1 -0
  1663. package/src/engine/sound/simulation/ecs/AcousticVolume.js +74 -0
  1664. package/src/engine/sound/simulation/ecs/AcousticVolumeSerializationAdapter.d.ts +25 -0
  1665. package/src/engine/sound/simulation/ecs/AcousticVolumeSerializationAdapter.d.ts.map +1 -0
  1666. package/src/engine/sound/simulation/ecs/AcousticVolumeSerializationAdapter.js +37 -0
  1667. package/src/engine/sound/simulation/ecs/AcousticVolumeSystem.d.ts +39 -0
  1668. package/src/engine/sound/simulation/ecs/AcousticVolumeSystem.d.ts.map +1 -0
  1669. package/src/engine/sound/simulation/ecs/AcousticVolumeSystem.js +66 -0
  1670. package/src/engine/sound/simulation/probe/AcousticProbeField.d.ts +245 -0
  1671. package/src/engine/sound/simulation/probe/AcousticProbeField.d.ts.map +1 -0
  1672. package/src/engine/sound/simulation/probe/AcousticProbeField.js +574 -0
  1673. package/src/engine/sound/simulation/probe/AcousticProbeFieldSerializationAdapter.d.ts +24 -0
  1674. package/src/engine/sound/simulation/probe/AcousticProbeFieldSerializationAdapter.d.ts.map +1 -0
  1675. package/src/engine/sound/simulation/probe/AcousticProbeFieldSerializationAdapter.js +60 -0
  1676. package/src/engine/sound/simulation/probe/ProbeFieldPathingSolution.d.ts +48 -0
  1677. package/src/engine/sound/simulation/probe/ProbeFieldPathingSolution.d.ts.map +1 -0
  1678. package/src/engine/sound/simulation/probe/ProbeFieldPathingSolution.js +64 -0
  1679. package/src/engine/sound/simulation/probe/ProbeVisibilityRecheck.d.ts +51 -0
  1680. package/src/engine/sound/simulation/probe/ProbeVisibilityRecheck.d.ts.map +1 -0
  1681. package/src/engine/sound/simulation/probe/ProbeVisibilityRecheck.js +137 -0
  1682. package/src/engine/sound/simulation/probe/acoustic_probe_transfer.d.ts +29 -0
  1683. package/src/engine/sound/simulation/probe/acoustic_probe_transfer.d.ts.map +1 -0
  1684. package/src/engine/sound/simulation/probe/acoustic_probe_transfer.js +99 -0
  1685. package/src/engine/sound/simulation/probe/acoustic_trace_energy.d.ts +46 -0
  1686. package/src/engine/sound/simulation/probe/acoustic_trace_energy.d.ts.map +1 -0
  1687. package/src/engine/sound/simulation/probe/acoustic_trace_energy.js +136 -0
  1688. package/src/engine/sound/simulation/probe/bakeProbeField.d.ts +50 -0
  1689. package/src/engine/sound/simulation/probe/bakeProbeField.d.ts.map +1 -0
  1690. package/src/engine/sound/simulation/probe/bakeProbeField.js +169 -0
  1691. package/src/engine/sound/simulation/probe/bakeProbeReflectors.d.ts +15 -0
  1692. package/src/engine/sound/simulation/probe/bakeProbeReflectors.d.ts.map +1 -0
  1693. package/src/engine/sound/simulation/probe/bakeProbeReflectors.js +108 -0
  1694. package/src/engine/sound/simulation/probe/bakeReverbBands.d.ts +32 -0
  1695. package/src/engine/sound/simulation/probe/bakeReverbBands.d.ts.map +1 -0
  1696. package/src/engine/sound/simulation/probe/bakeReverbBands.js +114 -0
  1697. package/src/engine/sound/simulation/probe/bakeVisibility.d.ts +48 -0
  1698. package/src/engine/sound/simulation/probe/bakeVisibility.d.ts.map +1 -0
  1699. package/src/engine/sound/simulation/probe/bakeVisibility.js +178 -0
  1700. package/src/engine/sound/simulation/probe/echogram_band_rt60.d.ts +17 -0
  1701. package/src/engine/sound/simulation/probe/echogram_band_rt60.d.ts.map +1 -0
  1702. package/src/engine/sound/simulation/probe/echogram_band_rt60.js +83 -0
  1703. package/src/engine/sound/simulation/probe/probe_delaunay_edges.d.ts +23 -0
  1704. package/src/engine/sound/simulation/probe/probe_delaunay_edges.d.ts.map +1 -0
  1705. package/src/engine/sound/simulation/probe/probe_delaunay_edges.js +215 -0
  1706. package/src/engine/sound/simulation/probe/probe_densify_portals.d.ts +35 -0
  1707. package/src/engine/sound/simulation/probe/probe_densify_portals.d.ts.map +1 -0
  1708. package/src/engine/sound/simulation/probe/probe_densify_portals.js +143 -0
  1709. package/src/engine/sound/simulation/probe/probe_detect_portals.d.ts +32 -0
  1710. package/src/engine/sound/simulation/probe/probe_detect_portals.d.ts.map +1 -0
  1711. package/src/engine/sound/simulation/probe/probe_detect_portals.js +196 -0
  1712. package/src/engine/sound/simulation/probe/probe_edge_visible.d.ts +16 -0
  1713. package/src/engine/sound/simulation/probe/probe_edge_visible.d.ts.map +1 -0
  1714. package/src/engine/sound/simulation/probe/probe_edge_visible.js +41 -0
  1715. package/src/engine/sound/simulation/probe/probe_place_sdf_cover.d.ts +28 -0
  1716. package/src/engine/sound/simulation/probe/probe_place_sdf_cover.d.ts.map +1 -0
  1717. package/src/engine/sound/simulation/probe/probe_place_sdf_cover.js +82 -0
  1718. package/src/engine/sound/simulation/probe/probe_refine_connectivity.d.ts +26 -0
  1719. package/src/engine/sound/simulation/probe/probe_refine_connectivity.d.ts.map +1 -0
  1720. package/src/engine/sound/simulation/probe/probe_refine_connectivity.js +181 -0
  1721. package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts +100 -0
  1722. package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts.map +1 -0
  1723. package/src/engine/sound/simulation/probe/probe_sdf_grid.js +183 -0
  1724. package/src/engine/sound/simulation/probe/probe_visibility_augment.d.ts +30 -0
  1725. package/src/engine/sound/simulation/probe/probe_visibility_augment.d.ts.map +1 -0
  1726. package/src/engine/sound/simulation/probe/probe_visibility_augment.js +182 -0
  1727. package/src/engine/sound/simulation/probe/probe_visibility_bridge_components.d.ts +31 -0
  1728. package/src/engine/sound/simulation/probe/probe_visibility_bridge_components.d.ts.map +1 -0
  1729. package/src/engine/sound/simulation/probe/probe_visibility_bridge_components.js +166 -0
  1730. package/src/engine/sound/simulation/prototypeAcousticSolver.d.ts +2 -0
  1731. package/src/engine/sound/simulation/prototypeAcousticSolver.d.ts.map +1 -0
  1732. package/src/engine/sound/simulation/prototypeAcousticSolver.js +1534 -0
  1733. package/src/engine/sound/simulation/render/FoaProbeReverbRenderer.d.ts +80 -0
  1734. package/src/engine/sound/simulation/render/FoaProbeReverbRenderer.d.ts.map +1 -0
  1735. package/src/engine/sound/simulation/render/FoaProbeReverbRenderer.js +354 -0
  1736. package/src/engine/sound/simulation/render/ProbeReverbRenderer.d.ts +75 -0
  1737. package/src/engine/sound/simulation/render/ProbeReverbRenderer.d.ts.map +1 -0
  1738. package/src/engine/sound/simulation/render/ProbeReverbRenderer.js +231 -0
  1739. package/src/engine/sound/simulation/render/foaReverbImpulseResponse.d.ts +37 -0
  1740. package/src/engine/sound/simulation/render/foaReverbImpulseResponse.d.ts.map +1 -0
  1741. package/src/engine/sound/simulation/render/foaReverbImpulseResponse.js +113 -0
  1742. package/src/engine/sound/simulation/render/reverbImpulseResponse.d.ts +26 -0
  1743. package/src/engine/sound/simulation/render/reverbImpulseResponse.d.ts.map +1 -0
  1744. package/src/engine/sound/simulation/render/reverbImpulseResponse.js +76 -0
  1745. package/src/engine/sound/simulation/serialization/populateAcousticSerializationRegistry.d.ts +10 -0
  1746. package/src/engine/sound/simulation/serialization/populateAcousticSerializationRegistry.d.ts.map +1 -0
  1747. package/src/engine/sound/simulation/serialization/populateAcousticSerializationRegistry.js +25 -0
  1748. package/src/engine/sound/sopra/SopraEngine.d.ts +6 -0
  1749. package/src/engine/sound/sopra/SopraEngine.d.ts.map +1 -1
  1750. package/src/engine/sound/sopra/SopraEngine.js +9 -0
  1751. package/src/engine/sound/sopra/definition/EventDescription.d.ts +3 -0
  1752. package/src/engine/sound/sopra/definition/EventDescription.d.ts.map +1 -1
  1753. package/src/engine/sound/sopra/definition/EventDescription.js +4 -1
  1754. package/src/engine/sound/sopra/runtime/BusGraph.d.ts +7 -0
  1755. package/src/engine/sound/sopra/runtime/BusGraph.d.ts.map +1 -1
  1756. package/src/engine/sound/sopra/runtime/BusGraph.js +16 -0
  1757. package/src/engine/sound/sopra/runtime/EventInstance.d.ts +46 -2
  1758. package/src/engine/sound/sopra/runtime/EventInstance.d.ts.map +1 -1
  1759. package/src/engine/sound/sopra/runtime/EventInstance.js +240 -4
  1760. package/src/engine/sound/sopra/util/MockAudioContext.d.ts +4 -0
  1761. package/src/engine/sound/sopra/util/MockAudioContext.d.ts.map +1 -1
  1762. package/src/engine/sound/sopra/util/MockAudioContext.js +9 -0
  1763. package/src/engine/ui/tiles2d/computeTileGridMove.js +2 -2
  1764. package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.js +2 -2
  1765. package/src/view/elements/progress/RectangularPieProgressView.d.ts.map +1 -1
  1766. package/src/view/elements/progress/RectangularPieProgressView.js +6 -8
  1767. package/src/view/tooltip/TooltipView.js +2 -2
  1768. package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_aabb.d.ts +0 -9
  1769. package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_aabb.d.ts.map +0 -1
  1770. package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_frustum.d.ts +0 -9
  1771. package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_frustum.d.ts.map +0 -1
  1772. package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_sphere.d.ts.map +0 -1
  1773. package/src/core/geom/3d/normal/lamber_azimuth/transform.d.ts +0 -18
  1774. package/src/core/geom/3d/normal/lamber_azimuth/transform.d.ts.map +0 -1
  1775. package/src/core/geom/3d/normal/spherical/sphere_map_transform.d.ts.map +0 -1
  1776. package/src/core/geom/3d/normal/spherical/sphere_map_transform.js +0 -77
  1777. package/src/core/geom/3d/tetrahedra/triangle/triangle_encode_rasterized_depth.d.ts +0 -9
  1778. package/src/core/geom/3d/tetrahedra/triangle/triangle_encode_rasterized_depth.d.ts.map +0 -1
  1779. package/src/core/geom/3d/topology/simplify/collapseEdge.d.ts +0 -21
  1780. package/src/core/geom/3d/topology/simplify/collapseEdge.d.ts.map +0 -1
  1781. package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadratics.d.ts +0 -25
  1782. package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadratics.d.ts.map +0 -1
  1783. package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadratics.js +0 -177
  1784. package/src/engine/navigation/mesh/bt_mesh_face_find_path.d.ts.map +0 -1
  1785. package/src/engine/navigation/mesh/bt_mesh_face_find_path_polyanya.d.ts.map +0 -1
  1786. package/src/engine/navigation/mesh/build/bvh_build_from_unindexed_triangles.d.ts.map +0 -1
  1787. package/src/engine/navigation/mesh/bvh_build_from_bt_mesh.d.ts +0 -7
  1788. package/src/engine/navigation/mesh/bvh_build_from_bt_mesh.d.ts.map +0 -1
  1789. package/src/engine/navigation/mesh/bvh_query_nearest_face.d.ts.map +0 -1
  1790. package/src/engine/navigation/mesh/bvh_segment_penetrates_mesh.d.ts.map +0 -1
  1791. package/src/engine/navigation/mesh/funnel_string_pull.d.ts.map +0 -1
  1792. /package/src/{engine/navigation/mesh/build → core/bvh2/bvh3}/bvh_build_from_unindexed_triangles.d.ts +0 -0
  1793. /package/src/{engine/navigation/mesh/build → core/bvh2/bvh3}/bvh_build_from_unindexed_triangles.js +0 -0
  1794. /package/src/{engine/navigation/mesh → core/geom/3d}/funnel_string_pull.d.ts +0 -0
  1795. /package/src/{engine/navigation/mesh → core/geom/3d/topology/struct/binary/query}/bt_mesh_face_find_path.d.ts +0 -0
  1796. /package/src/{engine/navigation/mesh → core/geom/3d/topology/struct/binary/query}/bt_mesh_face_find_path_polyanya.d.ts +0 -0
@@ -0,0 +1,684 @@
1
+ # GEOMETRY_REVIEW_002 — naming convention & rename plan
2
+
3
+ `app/src/mir-engine/meep/src/core/geom`
4
+
5
+ > Companion to **GEOMETRY_REVIEW_002_API_ISSUES.md**. This document proposes a single naming
6
+ > convention for the whole geometry package, catalogues the overarching mismatches it resolves,
7
+ > records the choices that need a human decision, and gives the full old→new rename table that
8
+ > drives the refactor.
9
+
10
+ ## Why
11
+
12
+ The package mixes (at least) three naming worlds: a dominant **type-prefix snake** style
13
+ (`v3_`, `aabb3_`, `m4_`, `plane3_`, `quat3_`, `tm_`, `bt_`), a **verbose snake** style
14
+ (`compute_triangle_area_3d`, `line_segment_compute_line_segment_intersection_array_2d`), and a
15
+ **legacy camelCase** style (`computeConeBoundingBox`, `serializeAABB3`, `randomPointInBox`,
16
+ `simplifyTopoMesh`). The user's flagship pair captures it: `line2_distance_to_point_sqr` and
17
+ `line_segment_compute_line_segment_intersection_array_2d` both operate on 2D segments yet share
18
+ no convention — and the first even lies (it clamps `t∈[0,1]`, so it is a *segment* distance, not
19
+ a *line* distance).
20
+
21
+ ## Migration strategy (deprecated shims)
22
+
23
+ Rename/move to the new name, then **leave a shim file at the old path** that re-exports the new
24
+ symbol under the old name with an `@deprecated` JSDoc — matching the house style already used in
25
+ e.g. `3d/shape/UnitCubeShape3D.js`. `meep` is a library: unreferenced exports are public
26
+ surface, so we alias rather than delete. Shim shape:
27
+
28
+ ```js
29
+ // 2d/line/line2_distance_to_point_sqr.js (shim)
30
+ import { line2_compute_segment_point_distance_sqr } from "./line2_compute_segment_point_distance_sqr.js";
31
+
32
+ /**
33
+ * @deprecated Renamed to {@link line2_compute_segment_point_distance_sqr}. This function
34
+ * measures distance to a SEGMENT (it clamps t to [0,1]), not an infinite line.
35
+ */
36
+ export const line2_distance_to_point_sqr = line2_compute_segment_point_distance_sqr;
37
+ ```
38
+
39
+ Each shim is one-line + JSDoc; the move + shim is mechanical and reversible. Renames that **also**
40
+ fix a correctness bug or change a signature (see the API-issues doc) must land the behavior fix
41
+ and the shim together, and the shim must preserve the **old** signature where it differs.
42
+
43
+ ---
44
+
45
+ ## Status — applied vs deferred
46
+
47
+ **Applied this session (~175 renames, every old name kept as an `@deprecated` re-export shim; `core/geom`
48
+ test suite green — 302 suites / 1780 tests, including new regression specs):**
49
+
50
+ - The **134 clean 1:1 renames** — the bulk: dimension tokens (`triangle2d_*`/`compute_*_3d` → `tri2_`/`tri3_`),
51
+ the `_array` overload split, `nearest`→`closest`, camelCase islands (`mat4`, `morton`, the triangle ray island),
52
+ redundant-token de-stutter, predicate/producer fixes, and the flagship `line2_distance_to_point_sqr` →
53
+ `line2_compute_segment_point_distance_sqr` and `line_segment_…_array_2d` → `segment2_segment_compute_intersection_array_2d`.
54
+ - **34 family renames** — `random/`, `packing/max-rect/` (+`cost/`), `tm_vert*`/`tm_kill_only_*`, `bt_vert*`,
55
+ `computeTopoMesh*`, frustum `*_matrix4_project` → `frustum3_*`, `bt_face_get_{attached,neighbour}_faces`,
56
+ the `compute_tetrahedron_*` mesh-form dedup, `aabb3_project_to_2d`→`aabb3_projected_area`, `aabb3_raycast`→`aabb3_raycast_hit_point`, etc.
57
+ - **~8 manual** — same-file export renames (`aabb_build_frustum`→`aabb3_build_frustum`, `sphere_matrix4_project`→
58
+ `sphere_matrix4_transform`, `bt_mesh_face_poke`→`bt_face_poke`), file-only renames (`m3_make_rotation.js`→
59
+ `m3_make_rotation_TBN.js`, `encode_unit3_hemioct.js`→`encode_unit_to_hemioct.js`), exporting the two dead
60
+ bug-functions (`compare_edges`, `aabb3_score_boxes_SAH_delta`), `aabb2_validate_packing`, and `fill_in_a_cavity`→`tetrahedral_mesh_fill_cavity`.
61
+ - **8 multi-export file splits** (breaking changes, no shims — all importers were inside geom and were
62
+ rewritten): `lamber_azimuth/transform.js` → `lambert_azimuth/{encode_unit_to_azimuth,decode_azimuth_to_unit}.js`
63
+ (folder typo fixed); `spherical/sphere_map_transform.js` → `{encode_unit_to_spheremap,decode_spheremap_to_unit}.js`
64
+ (dead decode now exported); `build_face_graph_from_mesh.js` (split out `graph_create_off_mesh_links`);
65
+ `validate_tetrahedral_mesh.js` → 3 files; `bt_mesh_build_boundary_euclidean_distance_field.js` → 3 files
66
+ (the generic point-distance helper moved to `3d/line/segment3_point_distance_to_segments.js`);
67
+ `triangle_encode_rasterized_depth.js` → `{triangle_rasterized_depth_sample_index,triangle_decode_depth}.js`;
68
+ `collapseEdge.js` → `{collapse_edge,partial_edge_collapse}.js`;
69
+ `build_vertex_quadratics.js` → 4 files (`quadratics`→`quadrics`, shared border-penalty helper promoted).
70
+ - The **6 correctness bugs + 2 latent traps** fixed at root with regression tests (see API_ISSUES §0).
71
+
72
+ **Deferred (with reason):**
73
+
74
+ - **Class methods/fields (~18)** — per decision, the OO value-type classes (`Vector*`, `Quaternion`, `AABB2/3`,
75
+ `Rectangle`, `ConicRay`, `StaticR2Tree`, `ConvexHullShape3D`, and the `TopoMesh.setFacedUnindexed` typo) keep
76
+ camelCase. Not renamed.
77
+ - **Signature/param-only entries (~10)** — where the name is unchanged and only the signature needs work
78
+ (`quat3_integrate`/`gjk_epa_penetration`/`ray3_compose_array` add `out_offset`, `aabb3_expand_array` /
79
+ `polygon2_clip_axis_halfplane` output-first, `m3_determinant` array form, `vector_*_offset` param casing,
80
+ `v3_rigid_align_*`/`aabb3_transform_oriented_inverse` arg order). These are API-shape fixes tracked in
81
+ **GEOMETRY_REVIEW_002_API_ISSUES.md**, not renames.
82
+ - **Pipeline consolidations (design, not mechanical)** — `simplifyTopoMesh`/`simplifyTopoMesh2` →
83
+ `_quadric`/`_decimate` (consolidate duplicate entry points), `qt_match_data_by_circle` → merge into
84
+ `qt_collect_by_circle` with an optional predicate. (These three files — plus
85
+ `decimate_edge_collapse_snap.js` — remain multi-export on purpose: they are the duplicate
86
+ decimation pipeline slated for consolidation, so splitting them piecemeal would be undone.)
87
+ - **Debug-only** — `3d/tetrahedra/delaunay/debug/validate_cavity_boundary.js` (2 exports) left as-is.
88
+ - **Windows case-only (cosmetic)** — `aabb3_score_boxes_SAH`→`sah`, `aabb3_*_mapping`→`AABB3_*_MAPPING`
89
+ constUpper. Need a git case-rename two-step on a case-insensitive filesystem; low value.
90
+ - **Dead file** — `compute_legendre_polynomial.js` (0 bytes, exports nothing) — delete or implement.
91
+
92
+ ---
93
+
94
+ ## Part A — Proposed convention
95
+
96
+ ### A1. Type+dimension token and placement
97
+
98
+ **Rule.** Use a single scheme for ALL free functions: <typetoken><verb_or_noun>_<qualifier>, where the type token is a glued lowercase abbreviation with the dimension digit glued directly to the type letter(s) and a trailing underscore: v2_ v3_ v4_ m2_ m3_ m4_ aabb2_ aabb3_ quat3_ line2_ line3_ ray3_ box3_ tri2_ tri3_ sphere_ circle_ capsule_ cone_ plane3_ frustum3_ tm_ bt_ sh3_/sh_ shape3_. The digit always means SPATIAL DIMENSION (or, for quat3_, the dimension of the rotated space), never 'number of operands' nor 'squared' nor a version. NEVER use a spelled-out _3d / _2d suffix on a typed primitive (so compute_triangle_area_3d -> tri3_area, triangle2d_* -> tri2_*). The glued-digit prefix WINS over the suffix form everywhere.
99
+
100
+ *Why:* The glued-digit prefix (v3_, aabb3_, quat3_) is already the overwhelming majority across vec3/, mat*/, 3d/aabb/, 3d/quaternion/, 3d/topology/struct/binary/ and is what callers grep for. A single placement rule lets a reader predict the name and the arg-count from the token. Mixing _3d-suffix, prefix-digit, and bare tokens (the triangle/polygon mess) is the single largest source of unpredictability.
101
+
102
+ - Good: `v3_distance_sqr`, `aabb3_intersects_ray`, `tri3_compute_area`, `line2_compute_segment_point_distance_sqr`, `quat3_multiply`
103
+ - Current violators: `compute_triangle_area_3d`, `triangle2d_compute_area`, `orientation3_array (3=points not dim)`, `StaticR2Tree (R2 not 2)`, `spline_bezier2_2d (double dim token)`
104
+
105
+ ### A2. How non-vec primitives (triangle/line/ray/segment/box/sphere) carry dimension
106
+
107
+ **Rule.** Every geometric primitive gets the same glued-digit prefix as vectors: tri2_/tri3_, line2_/line3_, ray2_/ray3_, box3_, plane3_, frustum3_, circle_ (2d-only, digit omitted because the type is inherently planar), sphere_/capsule_/cone_ (3d-only, digit omitted because inherently volumetric). When a primitive is mathematically tied to one dimension (circle=2d, sphere=3d), omit the digit; when it exists in both (triangle, line, ray, aabb), the digit is mandatory. A SEGMENT is named with the token 'segment' inside the line family, never as a bare 'line'.
108
+
109
+ *Why:* Resolves the flagship 'line vs segment' lie and the triangle2d_/triangle3_/triangle_/compute_*_3d sprawl. Tying inherently-mono-dimensional types (circle/sphere) to a digitless token avoids meaningless tokens like circle2_ while keeping triangle/line/ray unambiguous.
110
+
111
+ - Good: `tri3_compute_signed_volume`, `line3_compute_segment_point_distance_sqr`, `sphere_intersects_ray`, `circle_area`
112
+ - Current violators: `line2_distance_to_point_sqr (actually a segment)`, `triangle_compute_signed_volume (no dim digit, is 3d)`, `orientation3_array`
113
+
114
+ ### A3. Verb prefix: compute_ vs bare noun vs bare verb
115
+
116
+ **Rule.** PRODUCERS that derive a value/geometry use compute_ ONLY when the work is non-trivial computation that isn't already obvious from the noun; pure 'getter-like' derived quantities (area, length, centroid, surface_area, distance) use a BARE NOUN with no compute_. Rule of thumb: a scalar metric named by its physical quantity drops compute_ (v3_length, aabb3_surface_area, tri3_area, circle_area); an operation that builds a structured result or runs an algorithm keeps compute_ (aabb3_compute_from_triangle, quat3_compute_swing_twist, tri3_compute_barycentric). Apply uniformly within a family: do not have aabb2_compute_area next to aabb2_distance_to_point. PREDICATES never take a verb prefix.
117
+
118
+ *Why:* The catalogs show compute_ applied arbitrarily (aabb2_compute_area vs aabb2_distance_to_point; m4_compute_normal_matrix3 vs m4_rotation_translation; box3_projected_half_extent vs aabb3_compute_projected_area). A 'metric=bare noun, algorithm/builder=compute_' rule is teachable and collapses the variance.
119
+
120
+ - Good: `aabb3_surface_area`, `v3_length`, `tri3_compute_barycentric`, `aabb3_compute_from_triangle`
121
+ - Current violators: `aabb2_compute_area`, `aabb3_compute_surface_area`, `m4_compute_normal_matrix3 (inconsistent with m4_rotation_translation)`, `triangle2d_get_barycentric (uses get_)`
122
+
123
+ ### A4. Predicate vs producer naming (bool vs geometry vs bare verb)
124
+
125
+ **Rule.** THREE distinct shapes, three distinct name forms. (1) BOOLEAN predicate -> present-tense verb phrase: X_intersects_Y, X_contains_Y, X_is_<property>; returns a plain boolean, no output arg. Standardize box-vs-box overlap on intersects (aabb2_intersects_aabb2), NOT overlap_exists / compute_overlap. (2) GEOMETRY producer (writes a point/region/normal) -> X_compute_<thing>_intersection or X_<noun> writing into a leading (result, result_offset); may return a boolean 'did it exist' flag in addition to writing. (3) The BARE verb 'intersect' is BANNED as a public name (ambiguous between predicate and producer). Functions that return a 3-state / degree / classification are NOT predicates: name them X_classify_<thing> or X_<thing>_side / X_<thing>_containment, never intersects_*_degree.
126
+
127
+ *Why:* Directly resolves the prompt's mandate. The catalogs show overlap_exists vs intersects_circle vs compute_overlap all meaning boolean overlap; and intersects_frustum_degree / aabb3_array_intersects_frustum_degree lying about returning a bool. A reader must be able to infer return shape from the verb.
128
+
129
+ - Good: `aabb2_intersects_aabb2`, `sphere_contains_point`, `aabb3_classify_against_frustum`, `plane3_compute_3_plane_intersection`, `tm_edge_is_boundary`
130
+ - Current violators: `aabb2_overlap_exists`, `aabb2_compute_overlap`, `aabb3_intersects_frustum_degree`, `sphere_intersects_point (is containment)`, `circle_intersects_point`
131
+
132
+ ### A5. nearest vs closest
133
+
134
+ **Rule.** Pick CLOSEST everywhere; 'nearest' is banned as a public token. closest_point, closest_point_on_surface, line3_closest_points_segment_segment, aabb3_closest_point_on_surface, qt_query_closest_to_point. Rename every *nearest* symbol.
135
+
136
+ *Why:* The repo already uses 'closest' in its load-bearing physics seam (closestHit/anyHit, gjk closest-feature) per project memory, and 50 files use nearest vs 30 closest — but the keystone API is 'closest', so converging on closest aligns the geom library with the physics/raycast contract it feeds. One word, package-wide.
137
+
138
+ - Good: `aabb3_closest_point_on_surface`, `tri3_closest_point_barycentric`, `qt_query_closest_to_point`
139
+ - Current violators: `aabb3_nearest_point_on_surface`, `AABB2.computeNearestPointToPoint`, `line3_compute_nearest_point_to_point`, `frustum3_computeNearestPointToPoint`, `tetrahedral_mesh_find_tets... (n/a)`
140
+
141
+ ### A6. _sqr placement
142
+
143
+ **Rule.** _sqr is always the FINAL token of the name, after the full quantity-and-operands phrase: <prefix>_distance_sqr, <prefix>_distance_sqr_to_point, <prefix>_length_sqr, <prefix>_signed_distance_sqr_to_point. Never bury it mid-name as Sqr-before-To (distanceSqrTo) and never spell it 'Squared'/'2'. On class methods follow the same trailing rule: lengthSqr, distanceSqrTo is acceptable only because 'To<operand>' is the operand phrase; prefer distance_to_point_sqr style on free functions. The squared variant is the primitive; the non-sqr wrapper calls it and sqrt's.
144
+
145
+ *Why:* The package already trends to trailing _sqr on free functions (v3_length_sqr, v3_distance_sqr, aabb2_signed_distance_sqr_to_point). The drift is in class methods (lengthSq/distanceToSquared) and the 'dist2_array'/'2'=squared abuse in convex-hull. One trailing-token rule removes the 'is the companion called _sqr or Squared or 2' guessing.
146
+
147
+ - Good: `v3_distance_sqr`, `aabb2_signed_distance_sqr_to_point`, `bt_vertex_distance_to_vertex_sqr`
148
+ - Current violators: `Vector3.distanceToSquared`, `Vector3.lengthSq`, `convex-hull dist2_array`
149
+
150
+ ### A7. Abbreviation policy for type tokens
151
+
152
+ **Rule.** KEEP the established short type prefixes: v2_ v3_ v4_ m2_ m3_ m4_ aabb2_ aabb3_ quat3_ (these are universal, grep-stable, and documented). KEEP domain-mesh prefixes tm_ (TopoMesh ops) and bt_ (binary-topology ops) — they are large, internally-consistent families and renaming them would churn hundreds of call sites for no clarity gain; document them once at the module level. REPLACE qt_ -> keep (quad-tree is a coherent family) but FIX its verbs (see clusters). REPLACE shg_ -> keep (spatial-hash-grid family is consistent) and document. ELIMINATE the 'three'-as-count-or-vendor ambiguity, 'vert' abbreviation, and the m4-vs-mat3 param abbreviation drift. Spell out 'vertex' (not vert/verts), 'matrix' params as m2/m3/m4 (not mat3).
153
+
154
+ *Why:* tm_/bt_/qt_/shg_ are not noise: each is a well-populated, internally-consistent namespace and meep is a library where churning public surface is costly (project memory: 'meep is a library'). The real abbreviation harm is the inconsistent ones (vert/verts/vertex; mat3 vs m4; aabb vs aabb2 in rectangle_to_aabb).
155
+
156
+ - Good: `v3_dot`, `aabb3_intersects_ray`, `tm_edge_kill`, `bt_edge_collapse`, `shg_query_elements_circle`
157
+ - Current violators: `tm_vert_kill (abbrev)`, `bt_merge_verts_by_distance`, `v3_matrix3_rotate param 'mat3'`, `rectangle_to_aabb (drops the 2)`
158
+
159
+ ### A8. camelCase -> snake_case migration
160
+
161
+ **Rule.** All FREE FUNCTIONS are snake_case with the type prefix. Migrate every camelCase free-function island: 3d/random/* (randomPointInBox -> random_point_in_box ... but see open question on the 'In/On' token), packing/max-rect/* (packMaxRectangles -> pack_max_rectangles, costByRemainingArea -> cost_by_remaining_area), 3d/mat4/eulerAnglesFromMatrix -> m4_euler_angles, the morton camelHybrid (mortonEncode_magicbits -> v3_morton_encode_magicbits), the topology camelCase layer (simplifyTopoMesh, computeTopoMeshBoundingSphere, collapseEdge), the cone camel island (computeConePlaneSide -> cone_compute_plane_side), the camelCase triangle ray island (computeTriangleRayIntersection* -> tri3_ray_intersection*), the harmonics sh3 serializers stay snake. CLASSES remain PascalCase with camelCase methods IF they are engine-facing OO types (Vector3, Quaternion, AABB3, TetrahedralMesh) — that is the deliberate OO layer; but NEW data-structure classes should use snake_case methods to match the free-function layer (BVH2D, SpatialHashGrid already do). Do not mix casings WITHIN one class (fix StaticR2Tree, Cavity).
162
+
163
+ *Why:* snake_case is the package norm for the perf/free-function layer; camelCase survives only as legacy islands and the deliberate OO vector/matrix/quaternion classes. The line is 'free functions + new struct methods = snake; established mutable OO value types = camelCase methods'. Mixed-casing within a single class is never acceptable.
164
+
165
+ - Good: `random_point_in_box`, `m4_euler_angles`, `cone_compute_plane_side`, `Vector3.lengthSqr (OO method, camel ok)`
166
+ - Current violators: `randomPointInBox`, `eulerAnglesFromMatrix`, `computeConePlaneSide`, `StaticR2Tree (mixed setBuffer + sort_morton)`, `simplifyTopoMesh`
167
+
168
+ ### A9. Vendor token (three vs threejs vs geometry)
169
+
170
+ **Rule.** Use the single vendor token 'three' (not 'threejs') wherever a three.js type genuinely crosses a boundary, and CONFINE it to clearly adapter-named functions/modules (project memory: confine vendor imports to boundaries). Prefer the neutral token 'geometry' / 'buffer_geometry' when the function consumes an indexed/unindexed triangle buffer rather than a literal THREE type. Do NOT embed 'three' to disambiguate from the literal count three — rename plane3_three_compute_* to plane3_compute_3_plane_intersection_from_planes (object adapter) so 'three' never collides with '3'.
171
+
172
+ *Why:* Catalogs show three/threejs/geometry used interchangeably (aabb3_from_threejs_geometry vs three_buffer_geometry_to_topo_mesh) and 'three' colliding with the count-3 in plane3_three_*. One spelling + boundary-confinement matches the existing project rule.
173
+
174
+ - Good: `aabb3_from_three_geometry`, `three_buffer_geometry_to_topo_mesh`, `shape_mesh_from_geometry`
175
+ - Current violators: `aabb3_from_threejs_geometry`, `plane3_three_compute_convex_3_plane_intersection`, `Vector4.threeApplyMatrix4`
176
+
177
+ ### A10. Disambiguating the overloaded _array suffix
178
+
179
+ **Rule.** _array is RESERVED for exactly one meaning: 'this operand (the typed-array-of-scalars it qualifies) is accessed at a caller-supplied (buffer, offset)'. Apply consistently as a SUFFIX on the operand it describes, with the operand-type token preceding it (v3_*_array means the v3 operands are at offsets). FORBIDDEN alternate meanings: (a) 'returns a freshly allocated array' — name those *_to_new_array or just let them return and document the allocation, never bare _array; (b) 'array of MANY vectors / a batch' — use an explicit count param and a _batch or _v3_buffer token, e.g. aabb3_from_v3_buffer; (c) 'a packed single primitive [cx,cy,cz,r]' for sphere_array_* — rename to sphere_packed_* . The DOUBLE _array_array is banned: a single _array already implies offset operands (v3_dot_array, not v3_dot_array_array). PREFER suffix placement (v3_normalize_array) over prefix (v3_array_normalize) uniformly.
180
+
181
+ *Why:* The prompt's mandate. _array carries 3-4 contradictory meanings across vec3/, aabb/, line/, mat4/. Pinning it to 'offset-addressed operand' (the dominant intent) and giving the other meanings their own tokens removes the ambiguity that makes the flagship name unreadable.
182
+
183
+ - Good: `v3_dot_array`, `v3_normalize_array`, `aabb3_from_v3_buffer`, `sphere_packed_intersects_point`
184
+ - Current violators: `v3_dot_array_array`, `v3_array_normalize (prefix)`, `line_segment_compute_line_segment_intersection_vectors_array_2d (allocates)`, `aabb3_array_compute_from_sphere (prefix)`, `sphere_array_intersects_point (packed)`
185
+
186
+ ### A11. Eliminating redundant token repetition
187
+
188
+ **Rule.** A token that is already implied by the type prefix must not be repeated. circle_compute_circle_intersection -> circle_compute_intersection; sphere_projected_sphere_radius_sqr -> sphere_projected_radius_sqr; plane3_compute_plane_intersection -> plane3_compute_intersection; line_segment_compute_line_segment_intersection_* -> segment_segment_intersection_* (the operands are two segments; say segment once per operand role, not 'line_segment' twice). For class methods, the class IS the type token: Vector3.projectOntoVector3 -> projectOnto, computeNearestPointToPoint -> compute_closest_point (no PointToPoint doubling), tetrahedral_mesh_tet_get_neighbours -> tetrahedral_mesh_get_neighbours.
189
+
190
+ *Why:* The flagship #2 (line_segment...line_segment) and many siblings stutter the type. Removing the repetition shortens names and is mechanically checkable (token appears twice).
191
+
192
+ - Good: `segment_segment_intersection_2d`, `circle_compute_intersection`, `plane3_compute_intersection`, `Vector3.projectOnto`
193
+ - Current violators: `line_segment_compute_line_segment_intersection_array_2d`, `circle_compute_circle_intersection`, `sphere_projected_sphere_radius_sqr`, `Vector3.projectOntoVector3`
194
+
195
+ ### A12. Output-argument placement and the (out, out_offset) pair
196
+
197
+ **Rule.** For free functions that WRITE into a caller buffer: the output is ALWAYS the first parameter, immediately followed by its offset: (out, out_offset, ...inputs). Every such writer takes an out_offset even if it currently hardcodes 0. The output param is named 'result' for geometry/value writers and 'out' is also acceptable but pick ONE per family — standardize on 'result'/'result_offset'. Reducers (return a scalar) take NO output arg. Serializers/(de)serializers are the documented exception: (buffer, target) with buffer first. Batch/source-then-dest helpers that genuinely have one input and one output may use (output, output_offset, input, input_offset). The Vector3-object sink form (result.set(...)) is allowed only as a thin, separately-named wrapper (suffix _v3), never mixed into the flat-array family.
198
+
199
+ *Why:* Output-first is already the strong majority and is the one thing most areas get right; the violations (mat4 apply_* output-3rd, aabb3_expand_array output-2nd, flip_23/flip_32 output-last, distance-field builders mesh-second) are the exceptions. Mandating out_offset everywhere kills the 'this sibling can't write at an offset' trap (ray3_array_compose, aabb3_nearest_point_on_surface, quat3_integrate, aabb2_from_v2_array).
200
+
201
+ - Good: `v3_cross(result, result_offset, ...)`, `aabb3_array_set(result, result_offset, ...)`, `quat3_multiply(out, out_offset, ...)`
202
+ - Current violators: `aabb3_expand_array(input, output, distance)`, `tetrahedral_mesh_flip_23(mesh,t1,t2,out)`, `quat3_createFromAxisAngle(axis,angle,result)`, `bt_mesh_build_boundary_distance_field(map, mesh, ...)`, `read_three_planes_to_array(planes, array)`
203
+
204
+ ### A13. Parameter naming uniformity
205
+
206
+ **Rule.** The same role uses the same name across all siblings. Output buffer + offset: result, result_offset (not out/output/destination/target/r/data/array). Source buffer + offset: input, input_offset (not source/data/in). Element count: count (not n/length/dimensions/dimension_count — pick 'count' for item count, 'dimension_count' only when it literally means components-per-item). Queried point: point_x/point_y/point_z (not px/py/pz or ref_x or r_x). Plane 4th component: plane_constant (not w/dist/plane_offset/constant). Mesh handle: mesh (not tet_mesh/tetrahedra/data). Vertex: vertex / vertex_id (not v/vert/verts). Tet id: tet_id. Scalar multiplier sits immediately before its vector operand (BLAS axpy order).
207
+
208
+ *Why:* Every catalog flagged 3-5 spellings for the identical concept. A fixed vocabulary is the cheapest, highest-leverage consistency win and is enforceable by lint.
209
+
210
+ - Good: `(result, result_offset, input, input_offset, count)`, `point_x, point_y, point_z`, `plane_constant`
211
+ - Current violators: `vector_copy 'length' vs vector_dot 'n' vs vector_scale_array 'dimensions'`, `aabb2 px/py vs point_x/point_y`, `plane 'w'/'dist'/'plane_offset'/'constant'`
212
+
213
+ ### A14. One export per file, file name matches export
214
+
215
+ **Rule.** Each file exports exactly one public symbol whose name equals the filename (the established meep convention). Fix every filename/export mismatch (aabb3_build_frustum.js -> aabb_build_frustum, sphere_matrix4_transform.js -> sphere_matrix4_project, bt_face_poke.js -> bt_mesh_face_poke, m3_make_rotation.js -> m3_make_rotation_TBN, aabb3_compute_projected_area.js -> aabb3_project_to_2d). Split multi-export files (validate_tetrahedral_mesh.js, bt_mesh_build_boundary_euclidean_distance_field.js, build_face_graph_from_mesh.js, decimate_edge_collapse_snap.js, the lambert_azimuth/transform.js, triangle_encode_rasterized_depth.js). An export that is declared but never exported (aabb3_score_boxes_SAH_delta, decode_spheremap_to_unit, compareEdges, aabb2_validate_packing's 'validate') is a bug: either export it (it is public surface in a library) or delete if truly dead.
216
+
217
+ *Why:* Discoverability-by-filename is a core meep convention; mismatches and multi-export files break grep-by-path and hide public surface. Library semantics (per memory) mean unexported-but-intended symbols are bugs to fix, not delete.
218
+
219
+ - Good: `v3_cross.js exports v3_cross`
220
+ - Current violators: `aabb3_build_frustum.js exports aabb_build_frustum`, `aabb3_score_boxes_SAH_delta.js exports nothing`, `compute_legendre_polynomial.js (0 bytes)`
221
+
222
+ ### A15. Casing of constants and acronyms
223
+
224
+ **Rule.** Module-level frozen sentinels/identities are constUpper (M4_IDENTITY, NULL_POINTER, INVALID_NEIGHBOUR). Exported lookup tables that are conceptually constant data use constUpper too (AABB3_CORNER_EDGE_MAPPING). Embedded acronyms inside a snake_case function name are lowercased (aabb3_score_boxes_sah, not _SAH). Sentinel names for the same concept are unified across structures (one of NULL_POINTER) rather than NULL_NODE / NULL_POINTER / QT_NULL_POINTER.
225
+
226
+ *Why:* Mixed-case SAH inside snake names and three different null-sentinel names are gratuitous variance; constUpper for true constants is already established (M2_IDENTITY, M4_IDENTITY).
227
+
228
+ - Good: `M4_IDENTITY`, `aabb3_score_boxes_sah`, `NULL_POINTER`
229
+ - Current violators: `aabb3_score_boxes_SAH`, `aabb3_corner_edge_mapping (lowercase data table)`, `NULL_NODE vs QT_NULL_POINTER`
230
+
231
+ ---
232
+
233
+ ## Part B — Overarching inconsistency clusters
234
+
235
+ The convention mismatches across the package, by theme.
236
+
237
+ ### B1. array-token-overload — *major*
238
+
239
+ The _array token carries 3-4 contradictory meanings (offset-addressed single operand as prefix vs suffix; returns-a-new-array; batch-of-many-vectors; packed single primitive) plus a double _array_array. Reserve _array=offset-addressed operand (suffix), and give the other meanings distinct tokens (_to_new_array, _buffer/_batch, _packed).
240
+
241
+ Examples: `v3_array_normalize vs v3_negate_array vs v3_dot_array_array` · `line_segment_compute_line_segment_intersection_vectors_array_2d (allocates)` · `aabb3_array_compute_from_sphere (prefix) vs aabb3_expand_array (suffix=offset-0)` · `sphere_array_intersects_point (packed) vs sphere_radius_sqr_from_v3_array_transformed (batch)`
242
+
243
+ ### B2. dimension-token-placement — *major*
244
+
245
+ Dimension is encoded five ways: glued prefix-digit (v3_/aabb3_), glued suffix (triangle2d_), verb-first _3d suffix (compute_triangle_area_3d), bare/no-digit-though-3d (triangle_compute_signed_volume), and digit-means-not-dimension (orientation3_array=3 points, StaticR2Tree=R2). Converge on glued prefix-digit; digit always = spatial dimension; omit digit only for inherently-mono-dimensional types (circle/sphere/capsule/cone).
246
+
247
+ Examples: `triangle2d_compute_area / tri3 / triangle_compute_signed_volume / compute_triangle_area_3d` · `orientation3_array` · `spline_bezier2_2d` · `StaticR2Tree`
248
+
249
+ ### B3. misleading-name-lies-about-behavior — *major*
250
+
251
+ Names that contradict behavior: segment functions named 'line'; transform functions named 'project'; predicates named 'intersects' that return a degree/number; 'create' that doesn't allocate; 'nearest' surface helpers that are containment; serializer 'quantize' comment on a dequantizer; quadric tensors named 'quadratics'.
252
+
253
+ Examples: `line2_distance_to_point_sqr (segment)` · `sphere_matrix4_project (transforms)` · `aabb3_intersects_frustum_degree (returns 0/1/2)` · `quat3_createFromAxisAngle (no alloc)` · `sphere_intersects_point / circle_intersects_point (containment)` · `compute_*_vertex_quadratics (Quadric3)`
254
+
255
+ ### B4. redundant-token-repetition — *major*
256
+
257
+ The type token is stuttered: line_segment...line_segment, circle_compute_circle_*, sphere_projected_sphere_*, plane3_compute_plane_*, NearestPointToPoint, projectOntoVector3, tetrahedral_mesh_tet_get_*.
258
+
259
+ Examples: `line_segment_compute_line_segment_intersection_array_2d` · `circle_compute_circle_intersection` · `sphere_projected_sphere_radius_sqr` · `Vector3.projectOntoVector3`
260
+
261
+ ### B5. camelCase-legacy-islands — *major*
262
+
263
+ Whole folders/files in camelCase against the snake_case norm: random/, packing/max-rect/, the topology camelCase layer, cone camel island, the camelCase triangle ray island, mat4 eulerAnglesFromMatrix, morton camel-hybrid. Migrate free functions to snake_case; keep deliberate OO value-type classes (Vector*/Quaternion/AABB3) camelCase-methoded but never mix casings within one class.
264
+
265
+ Examples: `randomPointInBox` · `packMaxRectangles` · `simplifyTopoMesh` · `computeConePlaneSide` · `computeTriangleRayIntersection` · `eulerAnglesFromMatrix` · `StaticR2Tree (mixed within class)`
266
+
267
+ ### B6. predicate-vs-producer-vs-degree — *major*
268
+
269
+ Boolean overlap tests have three names (intersects_/overlap_exists/compute_overlap); degree/classification functions wear the boolean 'intersects' prefix; bare verb 'intersect' is ambiguous. Standardize: intersects_/contains_/is_=bool, compute_*_intersection=geometry, classify_/_side=multi-state.
270
+
271
+ Examples: `aabb2_overlap_exists vs aabb2_intersects_circle vs aabb2_compute_overlap` · `aabb3_intersects_frustum_degree` · `aabb3_array_intersects_frustum_degree` · `Rectangle.intersects vs Rectangle.overlaps`
272
+
273
+ ### B7. output-arg-placement-and-missing-offset — *major*
274
+
275
+ Output buffer position flips (first/second/third/last) and many writers hardcode offset 0 with no out_offset param, breaking the pack-into-shared-buffer use case. Mandate (result, result_offset, ...) first, always with an offset.
276
+
277
+ Examples: `aabb3_expand_array (output 2nd)` · `tetrahedral_mesh_flip_23/_32 (output last)` · `quat3_integrate (no offset)` · `ray3_array_compose (no offset)` · `aabb2_from_v2_array (hardcoded 0)` · `ray3_shift_origin_along_direction (offset-0 bug)`
278
+
279
+ ### B8. param-name-vocabulary-drift — *major*
280
+
281
+ Identical roles get many names: count=n/length/dimensions/dimension_count; output=out/output/result/target/data/r/destination; queried point=px/ref_x/r_x/point_x; plane 4th=w/dist/plane_offset/constant; mesh=mesh/tet_mesh/tetrahedra/data; vertex=v/vert/verts/vertex; tet id has 5 spellings.
282
+
283
+ Examples: `vector_copy length / vector_dot n / vector_scale_array dimensions` · `aabb2 px/py vs signed point_x/point_y` · `plane3 w/dist/plane_offset/constant` · `tet_index/tet/tet_id/tetrahedron_index/containing_tetra`
284
+
285
+ ### B9. filename-export-mismatch-and-multi-export — *major*
286
+
287
+ Files whose single export name differs from the filename, files exporting 3-4 symbols, and declared-but-never-exported functions (dead public surface or latent bugs).
288
+
289
+ Examples: `aabb3_build_frustum.js->aabb_build_frustum` · `sphere_matrix4_transform.js->sphere_matrix4_project` · `bt_face_poke.js->bt_mesh_face_poke` · `aabb3_score_boxes_SAH_delta (no export)` · `compute_legendre_polynomial.js (0 bytes)` · `validate_tetrahedral_mesh.js (3 exports)`
290
+
291
+ ### B10. correctness-bugs-surfaced-by-audit — *major*
292
+
293
+ Genuine defects found while auditing names — must be fixed at root, not renamed around: y/x mix-ups, dead early returns, signed-distance-as-bool, unexported functions, offset-0 hardcoding bugs.
294
+
295
+ Examples: `circle_intersects_point v2_distance(cx,cx,...)` · `circle_compute_circle_penetration dy=by-ax` · `aabb3_transformed_compute_plane_side signed-dist-as-bool` · `ray3_shift_origin_along_direction offset-0` · `aabb3_score_boxes_SAH_delta half-vs-full-area 2x` · `compareEdges compares v0 twice`
296
+
297
+ > Note: a cataloguer also flagged a "dead `return indices_0`" in `triangle_encode_rasterized_depth`; on verification that claim was **false** (all three index branches are reachable) and has been dropped. The file still warrants the *naming* fix below (the export returns a vertex index, not encoded depth) and the multi-export split.
298
+
299
+ ### B11. nearest-vs-closest-synonym — *minor*
300
+
301
+ 'nearest' and 'closest' used interchangeably for the same closest-point/feature concept across line/ray/aabb/frustum/triangle/quad-tree. Converge on 'closest' to match the physics closestHit seam.
302
+
303
+ Examples: `aabb3_nearest_point_on_surface vs line3_closest_points_segment_segment` · `frustum3_computeNearestPointToPoint` · `computeTriangleClosestPointToPointBarycentric` · `qt_query_data_nearest_to_point`
304
+
305
+ ### B12. sqr-placement-and-companion-coverage — *minor*
306
+
307
+ _sqr buried mid-name on class methods (distanceToSquared/lengthSq) vs trailing on free functions; '2'-means-squared abuse; asymmetric sqr/non-sqr companion coverage. Trailing _sqr everywhere; the squared form is the primitive.
308
+
309
+ Examples: `Vector3.distanceToSquared / lengthSq` · `convex-hull dist2_array` · `aabb3_signed_distance_sqr_to_point (no sqrt companion) vs aabb3_signed_distance_to_aabb3 (no sqr)`
310
+
311
+ ### B13. verb-prefix-inconsistency — *minor*
312
+
313
+ compute_ / build_ / make_ / from_ / get_ applied arbitrarily to producers; bare-noun metrics sometimes carry compute_, sometimes not; m3 from_translation vs m4 make_translation.
314
+
315
+ Examples: `aabb2_compute_area vs aabb2_distance_to_point` · `m3_cm_from_translation vs m4_make_translation` · `tetrahedral_mesh_build_* vs _compute_* vs _find_*` · `triangle2d_get_barycentric (get_)`
316
+
317
+ ### B14. out-param-and-return-shape-divergence — *minor*
318
+
319
+ Sibling writers disagree on return shape (void vs return-out vs bool) and on Vector3-object-sink vs flat-array-sink; degree/scalar/bool returns hide behind shared prefixes; some methods return this, siblings return undefined.
320
+
321
+ Examples: `m2_add void vs m2_transpose returns out vs m4_invert returns bool` · `Vector4.multiplyVector3 returns undefined` · `plane3 Vector3-sink vs flat-array-sink` · `qt_collect_* (count) vs qt_query_data_nearest (single datum)`
322
+
323
+ ### B15. vendor-token-three-vs-threejs-vs-geometry — *minor*
324
+
325
+ three.js token spelled three/threejs/geometry and embedded where it collides with the literal count three; some vendor imports not confined to adapter boundaries.
326
+
327
+ Examples: `aabb3_from_threejs_geometry vs three_buffer_geometry_to_topo_mesh` · `plane3_three_compute_convex_3_plane_intersection` · `Vector4.threeApplyMatrix4`
328
+
329
+ ### B16. abbreviation-vert-and-matrix-param — *minor*
330
+
331
+ vertex abbreviated vert/verts/vertex; matrix params m4 vs mat3; quat vs qt vs Quaternion; immediate/in_place opaque tokens for add accumulate.
332
+
333
+ Examples: `tm_vert_kill vs tm_vertex_compute_normal` · `bt_merge_verts_by_distance` · `v3_matrix3_rotate param mat3 vs m4` · `v3_array_immediate_add vs v3_array_add_in_place`
334
+
335
+ ---
336
+
337
+ ## Part C — Open questions (need a decision before mass-rename)
338
+
339
+ Each of these is a genuine fork with churn implications; the rename table assumes the
340
+ *recommended* option but they are called out so the direction can be confirmed.
341
+
342
+ ### C1. Should geometric primitives use a glued prefix-digit token (tri3_, line3_, box3_, plane3_) or keep some types digitless because they read fine without it (e.g. should the existing aabb3_/quat3_ digit style be forced onto sphere_/capsule_/cone_/circle_)?
343
+
344
+ - A: glued prefix-digit on EVERYTHING, even inherently-mono-dimensional types (circle2_, sphere3_, capsule3_)
345
+ - B: prefix-digit only for types that exist in multiple dimensions (triangle, line, ray, aabb, box, plane); digitless for inherently-mono-dimensional types (circle, sphere, capsule, cone)
346
+
347
+ **Recommendation:** B. circle2_/sphere3_ add a meaningless token (a circle is always 2d, a sphere always 3d), and sphere_/capsule_/cone_ are already established digitless. Reserve the digit to disambiguate genuinely multi-dimensional families.
348
+
349
+ ### C2. How aggressively should the camelCase OO value-type classes (Vector2/3/4, Quaternion, AABB2/3, Matrix wrappers) be migrated? Their METHODS are camelCase while the entire free-function layer is snake_case.
350
+
351
+ - A: Leave class methods camelCase forever (deliberate OO layer; matches three.js muscle memory and is huge call-site churn)
352
+ - B: Migrate class methods to snake_case to match the free-function layer (one casing package-wide)
353
+ - C: Freeze existing classes as camelCase but mandate snake_case methods on all NEW structure classes (BVH2D/SpatialHashGrid already do this)
354
+
355
+ **Recommendation:** C. Full migration (B) is enormous churn on the most-referenced types for little gain and fights three.js familiarity; A leaves the rule unstated. C draws a clear, low-churn line: established mutable value types stay camelCase, new struct classes are snake_case — and bans within-class mixing (StaticR2Tree, Cavity).
356
+
357
+ ### C3. random/ samplers encode surface-vs-volume as an In/On preposition (randomPointInBox vs randomPointOnBox). Under snake_case, do we keep in/on or switch to explicit volume/surface tokens?
358
+
359
+ - A: random_point_in_box / random_point_on_box (keep In/On preposition)
360
+ - B: random_point_in_volume_box / random_point_on_surface_box (explicit)
361
+ - C: box_sample_random_in_volume / box_sample_random_on_surface (type-first, mirrors AbstractShape3D.sample_random_point_in_volume)
362
+
363
+ **Recommendation:** C for long-term consistency with the shape API (which already says sample_random_point_in_volume), but it is the highest-churn option and arguably over-engineered for a tiny self-contained folder; if churn is a concern, A is an acceptable minimal fix (snake the names, keep In/On). Flagging because the tradeoff is real.
364
+
365
+ ### C4. Output-argument convention for WRITERS: standardize on output-FIRST (result, result_offset, ...) everywhere, or keep the serializer/source-then-dest exceptions documented?
366
+
367
+ - A: output-first universally; serializers are a single documented exception (buffer, target)
368
+ - B: output-first for value/geometry writers, but allow (output, output_offset, input, input_offset) for pure transform/batch helpers and (dst, src) for copy-likes
369
+
370
+ **Recommendation:** A with the serializer carve-out. Output-first is already the dominant, teachable rule; the (input,...,output) and output-last violations are pure inconsistency, not principled. Keep the serializer (buffer-first) exception because the buffer genuinely is both the medium and conventionally leads.
371
+
372
+ ### C5. Should the large domain-mesh prefixes tm_ (TopoMesh) and bt_ (binary topology) be spelled out or kept abbreviated, given the package otherwise spells out tokens (triangle->tri only as a proposal)?
373
+
374
+ - A: Keep tm_/bt_ abbreviated (large internally-consistent families; meep is a library so renaming churns hundreds of call sites)
375
+ - B: Spell out to topo_mesh_ / binary_topo_ for self-documentation
376
+
377
+ **Recommendation:** A. These are coherent, heavily-used namespaces; per the 'meep is a library' rule, churning public surface for marginal readability is not worth it. Document the prefixes once at module level instead. (Contrast: 'vert' abbreviation IS worth fixing because it's applied inconsistently.)
378
+
379
+ ### C6. For the bounding-volume-of-N family, which canonical shape: <type>_compute_bounding_box / <type>_compute_bounding_of_N_<types>, or compute_bounding_<type>_of_N_<types>?
380
+
381
+ - A: type-token-first: sphere_compute_bounding_of_2_spheres, cone_compute_bounding_of_2_cones, circle3_compute_bounding_box
382
+ - B: verb-first: compute_bounding_sphere_of_2_spheres, compute_bounding_box (current mixed state, mostly verb-first)
383
+
384
+ **Recommendation:** A (type-token-first) to match the package-wide prefix rule and make these greppable alongside the rest of each type's family. This contradicts the current verb-first majority in this corner, so it is a genuine choice with churn cost — flagging rather than silently picking.
385
+
386
+ ---
387
+
388
+ ## Part D — Rename table
389
+
390
+ 208 symbols violate the convention. Grouped by cluster; `[move]` marks a file relocation.
391
+
392
+ ### dimension-token-placement (30)
393
+
394
+ | old | → new | file | why |
395
+ |-----|-------|------|-----|
396
+ | `compose_matrix4_array` | `m4_compose` | [3d/mat4/compose_matrix4_array.js](3d/mat4/compose_matrix4_array.js) <br>*[move → 3d/mat4/m4_compose.js]* | Normalize to m4_ prefix; drop redundant _array (a mat4 is always an array here). |
397
+ | `decompose_matrix_4_array` | `m4_decompose` | [3d/mat4/decompose_matrix_4_array.js](3d/mat4/decompose_matrix_4_array.js) <br>*[move → 3d/mat4/m4_decompose.js]* | Normalize to m4_ prefix; mirror m4_compose stem; also stop calling private __setFromRotationMatrix (promote a public quat3_from_matrix3). |
398
+ | `allocate_m4` | `m4_allocate` | [3d/mat4/allocate_m4.js](3d/mat4/allocate_m4.js) <br>*[move → 3d/mat4/m4_allocate.js]* | Type token must lead; matches v3_allocate. |
399
+ | `rectangle_to_aabb` | `aabb2_from_rectangle` | [2d/rectangle_to_aabb.js](2d/rectangle_to_aabb.js) <br>*[move → 2d/aabb/aabb2_from_rectangle.js]* | Use the aabb2_ type prefix (mirrors aabb2_from_v2_buffer); produced type is AABB2 not 'aabb'; document the negative-size clamp. |
400
+ | `aabb3_estimate_projected_area2` | `aabb3_estimate_projected_area` | [3d/aabb/aabb3_estimate_projected_area2.js](3d/aabb/aabb3_estimate_projected_area2.js) <br>*[move → 3d/aabb/aabb3_estimate_projected_area.js]* | Trailing '2' is a meaningless version suffix (no base name exists). |
401
+ | `compute_aabb_from_points` | `aabb_nd_from_points` | [3d/aabb/compute_aabb_from_points.js](3d/aabb/compute_aabb_from_points.js) <br>*[move → 3d/aabb/aabb_nd_from_points.js]* | n-dimensional (controlled by d) — use aabb_nd_ token; type token must lead. |
402
+ | `compute_triangle_group_aabb3` | `aabb3_from_triangle_group` | [3d/aabb/compute_triangle_group_aabb3.js](3d/aabb/compute_triangle_group_aabb3.js) <br>*[move → 3d/aabb/aabb3_from_triangle_group.js]* | aabb3 token must be a PREFIX not suffix; rename output/output_offset params to result/result_offset. |
403
+ | `compute_bounding_sphere_of_2_spheres` | `sphere_compute_bounding_of_2_spheres` | [3d/sphere/compute_bounding_sphere_of_2_spheres.js](3d/sphere/compute_bounding_sphere_of_2_spheres.js) <br>*[move → 3d/sphere/sphere_compute_bounding_of_2_spheres.js]* | Type token must lead; unify with the bounding-volume naming rule; also use closed-form (drop per-call Miniball alloc). |
404
+ | `compute_circle_bounding_box` | `circle3_compute_bounding_box` | [3d/compute_circle_bounding_box.js](3d/compute_circle_bounding_box.js) <br>*[move → 3d/circle3_compute_bounding_box.js]* | Operates in 3d (takes a normal) but name reads 2d; add dimension token. |
405
+ | `compute_bounding_cone_of_2_cones` | `cone_compute_bounding_of_2_cones` | [3d/cone/compute_bounding_cone_of_2_cones.js](3d/cone/compute_bounding_cone_of_2_cones.js) <br>*[move → 3d/cone/cone_compute_bounding_of_2_cones.js]* | Type token leads; mirror sphere bounding naming. |
406
+ | `spherical_from_cartesian` | `sphere_spherical_from_cartesian` | [3d/sphere/spherical_from_cartesian.js](3d/sphere/spherical_from_cartesian.js) <br>*[move → 3d/sphere/sphere_spherical_from_cartesian.js]* | Add sphere_ family prefix for discoverability (optional but consistent). |
407
+ | `triangle2d_compute_area` | `tri2_signed_area` | [2d/triangle2d_compute_area.js](2d/triangle2d_compute_area.js) <br>*[move → 2d/triangle/tri2_signed_area.js]* | Glued-prefix-digit token tri2_; returns SIGNED area (encode sign); drop compute_ (bare metric). |
408
+ | `triangle2d_get_barycentric` | `tri2_compute_barycentric` | [2d/triangle2d_get_barycentric.js](2d/triangle2d_get_barycentric.js) <br>*[move → 2d/triangle/tri2_compute_barycentric.js]* | tri2_ token; 'get_'->'compute_' (it solves); emit canonical [u,v,w] order. |
409
+ | `triangle2d_contains_point` | `tri2_contains_point` | [2d/triangle2d_contains_point.js](2d/triangle2d_contains_point.js) <br>*[move → 2d/triangle/tri2_contains_point.js]* | tri2_ token; fix [u,v,w] read order to match producer. |
410
+ | `compute_polygon_area_2d` | `polygon2_signed_area` | [2d/compute_polygon_area_2d.js](2d/compute_polygon_area_2d.js) <br>*[move → 2d/polygon/polygon2_signed_area.js]* | Glued prefix-digit polygon2_; drop compute_/2d suffix; signed. |
411
+ | `fixed_convex_hull_humus` | `convex_hull_fixed_count_2d_bruteforce` | [2d/convex-hull/fixed_convex_hull_humus.js](2d/convex-hull/fixed_convex_hull_humus.js) <br>*[move → 2d/convex-hull/convex_hull_fixed_count_2d_bruteforce.js]* | Add dimension token; remove proper-noun 'humus'; describe behavior. |
412
+ | `fixed_convex_hull_relaxation` | `convex_hull_fixed_count_2d_relaxation` | [2d/convex-hull/fixed_convex_hull_relaxation.js](2d/convex-hull/fixed_convex_hull_relaxation.js) <br>*[move → 2d/convex-hull/convex_hull_fixed_count_2d_relaxation.js]* | Add dimension token; fix JSDoc Float64/Float32 mismatch. |
413
+ | `triangle_compute_signed_volume` | `tri3_compute_signed_volume` | [3d/triangle/triangle_compute_signed_volume.js](3d/triangle/triangle_compute_signed_volume.js) <br>*[move → 3d/triangle/tri3_compute_signed_volume.js]* | Bare 'triangle_' (no digit, is 3d) -> tri3_ prefix. |
414
+ | `triangle_mesh_compute_signed_volume` | `tri3_mesh_compute_signed_volume` | [3d/triangle/triangle_mesh_compute_signed_volume.js](3d/triangle/triangle_mesh_compute_signed_volume.js) <br>*[move → 3d/triangle/tri3_mesh_compute_signed_volume.js]* | tri3_ token for the 3d triangle family. |
415
+ | `compute_triangle_area_3d` | `tri3_area` | [3d/triangle/compute_triangle_area_3d.js](3d/triangle/compute_triangle_area_3d.js) <br>*[move → 3d/triangle/tri3_area.js]* | _3d suffix -> tri3_ prefix; bare-metric drops compute_; document UNSIGNED. |
416
+ | `compute_triangle_normal` | `tri3_compute_normal_v3_objects` | [3d/triangle/compute_triangle_normal.js](3d/triangle/compute_triangle_normal.js) <br>*[move → 3d/triangle/tri3_compute_normal_v3_objects.js]* | Object-arg wrapper over v3_compute_triangle_normal; tri3_ prefix; add result_offset. |
417
+ | `v3_compute_triangle_normal` | `tri3_compute_normal` | [3d/triangle/v3_compute_triangle_normal.js](3d/triangle/v3_compute_triangle_normal.js) <br>*[move → 3d/triangle/tri3_compute_normal.js]* | Canonical scalar core; move to tri3_ family (it produces a triangle normal, not a generic v3 op). |
418
+ | `aabb3_compute_from_triangle` | `aabb3_compute_from_triangle` | [3d/triangle/aabb3_compute_from_triangle.js](3d/triangle/aabb3_compute_from_triangle.js) <br>*[move → 3d/triangle/aabb3_compute_from_triangle.js]* | Conforms; listed as exemplar of indexed-vertex calling convention. |
419
+ | `triangle_intersects_clipping_volume` | `tri3_intersects_clipping_volume` | [3d/triangle/triangle_intersects_clipping_volume.js](3d/triangle/triangle_intersects_clipping_volume.js) <br>*[move → 3d/triangle/tri3_intersects_clipping_volume.js]* | tri3_ prefix. |
420
+ | `triangle_compute_plane_side` | `tri3_compute_plane_side` | [3d/triangle/triangle_compute_plane_side.js](3d/triangle/triangle_compute_plane_side.js) <br>*[move → 3d/triangle/tri3_compute_plane_side.js]* | tri3_ prefix; fix 'ave' typo. |
421
+ | `triangle3_incenter` | `tri3_incenter` | [3d/triangle/triangle3_incenter.js](3d/triangle/triangle3_incenter.js) <br>*[move → 3d/triangle/tri3_incenter.js]* | Standardize the spelled-out 'triangle3' -> tri3_ token used across the family. |
422
+ | `shape_mesh_from_geometry` | `shape3_mesh_from_geometry` | [3d/shape/shape_mesh_from_geometry.js](3d/shape/shape_mesh_from_geometry.js) <br>*[move → 3d/shape/shape3_mesh_from_geometry.js]* | Optional dimension token for the shape family; keep 'geometry' (neutral, indexed-buffer). |
423
+ | `shape3d_voxelize_to_grid` | `shape3_voxelize_to_grid` | [3d/shape/util/shape3d_voxelize_to_grid.js](3d/shape/util/shape3d_voxelize_to_grid.js) <br>*[move → 3d/shape/util/shape3_voxelize_to_grid.js]* | Use tri3_/aabb3_-style glued-prefix-digit token shape3_ (not shape3d_). |
424
+ | `spline_bezier2_2d` | `spline2_quadratic_bezier` | [2d/spline_bezier2_2d.js](2d/spline_bezier2_2d.js) <br>*[move → 2d/spline2_quadratic_bezier.js]* | Double dimension token (bezier2 + _2d) and clashing order with spline2_bezier; use spline2_ prefix + spell quadratic. |
425
+ | `normalize_angle_rad` | `normalize_angle_rad` | [normalize_angle_rad.js](normalize_angle_rad.js) <br>*[move → 1d/normalize_angle_rad.js]* | Name OK; relocate from geom root into a 1d/ (or math) subfolder for discoverability — the _rad unit token is fine. |
426
+
427
+ ### misleading-name-lies-about-behavior (26)
428
+
429
+ | old | → new | file | why |
430
+ |-----|-------|------|-----|
431
+ | `line2_distance_to_point_sqr` | `line2_compute_segment_point_distance_sqr` | [2d/line/line2_distance_to_point_sqr.js](2d/line/line2_distance_to_point_sqr.js) <br>*[move → 2d/line/line2_compute_segment_point_distance_sqr.js]* | FLAGSHIP: clamp01 proves it measures distance to a SEGMENT, not an infinite line. Mirror the correctly-named 3d sibling line3_compute_segment_point_distance_sqr. |
432
+ | `line_segment_intersection_fraction_2d` | `line2_segment_intersection_fraction_2d` | [2d/line/line_segment_intersection_fraction_2d.js](2d/line/line_segment_intersection_fraction_2d.js) <br>*[move → 2d/line/line2_segment_intersection_fraction_2d.js]* | First operand is an unbounded line, second a segment; encode both honestly (line2 + segment). |
433
+ | `line3_compute_nearest_point_to_point` | `line3_compute_segment_closest_point` | [3d/line/line3_compute_nearest_point_to_point.js](3d/line/line3_compute_nearest_point_to_point.js) <br>*[move → 3d/line/line3_compute_segment_closest_point.js]* | Delegates to the SEGMENT variant (clamp01) so 'line' lies; 'nearest'->'closest'; drop PointToPoint stutter. |
434
+ | `ray3_distance_to_point` | `ray3_compute_point_projection_t` | [3d/ray/ray3_distance_to_point.js](3d/ray/ray3_distance_to_point.js) <br>*[move → 3d/ray/ray3_compute_point_projection_t.js]* | Returns the projection parameter t (signed distance ALONG the ray), not perpendicular distance — name lies. |
435
+ | `ConicRay.angle (field)` | `ConicRay.halfAngle` | [ConicRay.js](ConicRay.js) <br>*[move → ConicRay.js]* | Field stores a half-angle; bare 'angle' under-specifies. |
436
+ | `v3_angle_atan2_between` | `v3_angle_stable` | [vec3/v3_angle_atan2_between.js](vec3/v3_angle_atan2_between.js) <br>*[move → vec3/v3_angle_stable.js]* | atan2 leaks implementation into the name; expose public meaning (numerically stable angle). |
437
+ | `v3_matrix4_rotate` | `v3_matrix4_rotate_unit` | [vec3/v3_matrix4_rotate.js](vec3/v3_matrix4_rotate.js) <br>*[move → vec3/v3_matrix4_rotate_unit.js]* | Always renormalizes output; name should signal unit-length result. |
438
+ | `Vector4.add3` | `Vector4.add` | [Vector4.js](Vector4.js) <br>*[move → Vector4.js]* | add3 confusingly reads as '3d add'; it is the element-wise add. Match Vector2/Vector3 add. |
439
+ | `m3_multiply_vec3` | `m3_scale_columns_by_vec3` | [mat3/m3_multiply_vec3.js](mat3/m3_multiply_vec3.js) <br>*[move → mat3/m3_scale_columns_by_vec3.js]* | Name LIES: it is not a matrix*vector product (would yield a vec3); it column-scales and writes a 3x3. |
440
+ | `m3_cm_invert` | `m3_invert` | [mat3/m3_cm_invert.js](mat3/m3_cm_invert.js) <br>*[move → mat3/m3_invert.js]* | Inversion is layout-agnostic; cm_ tag implies a non-existent rm_ counterpart. |
441
+ | `aabb2_intersects_point` | `aabb2_contains_point` | [2d/aabb/aabb2_intersects_point.js](2d/aabb/aabb2_intersects_point.js) <br>*[move → 2d/aabb/aabb2_contains_point.js]* | It is a containment test, not surface intersection; reconcile with AABB2.containsPoint and delegate. |
442
+ | `aabb3_project_to_2d (file aabb3_compute_projected_area.js)` | `aabb3_projected_area` | [3d/aabb/aabb3_compute_projected_area.js](3d/aabb/aabb3_compute_projected_area.js) <br>*[move → 3d/aabb/aabb3_projected_area.js]* | Name LIES (returns a scalar AREA, not a 2D box) AND mismatches filename; bare-metric drops compute_. |
443
+ | `aabb3_combined_surface_area` | `aabb3_union_half_surface_area` | [3d/aabb/aabb3_combined_surface_area.js](3d/aabb/aabb3_combined_surface_area.js) <br>*[move → 3d/aabb/aabb3_union_half_surface_area.js]* | Returns HALF surface area of the union (off by 2x vs full); name must say half. |
444
+ | `aabb3_box_surface_area_2` | `aabb3_half_surface_area` | [3d/aabb/aabb3_box_surface_area_2.js](3d/aabb/aabb3_box_surface_area_2.js) <br>*[move → 3d/aabb/aabb3_half_surface_area.js]* | Returns HALF area; '_2' is a meaningless disambiguator (no _1). |
445
+ | `Quaternion.__setFromEuler` | `(remove; typed per-order methods)` | [Quaternion.js](Quaternion.js) <br>*[move → Quaternion.js]* | String-order dispatcher violates typed-over-magic; also fix 'bust be' typo. Keep typed fromEulerAngles<ORDER>. |
446
+ | `Quaternion.process` | `Quaternion.watch` | [Quaternion.js](Quaternion.js) <br>*[move → Quaternion.js]* | Opaque name for 'invoke + subscribe onChanged'. |
447
+ | `sphere_matrix4_project (file sphere_matrix4_transform.js)` | `sphere_matrix4_transform` | [3d/sphere/sphere_matrix4_transform.js](3d/sphere/sphere_matrix4_transform.js) <br>*[move → 3d/sphere/sphere_matrix4_transform.js]* | Export name LIES ('project' but it transforms) AND mismatches filename; transform is correct. |
448
+ | `sphere_intersects_point` | `sphere_contains_point` | [3d/sphere/sphere_intersects_point.js](3d/sphere/sphere_intersects_point.js) <br>*[move → 3d/sphere/sphere_contains_point.js]* | Tests point-inside (containment), not surface intersection. |
449
+ | `orientation3_array` | `orient2d_indexed` | [2d/convex-hull/orientation3_array.js](2d/convex-hull/orientation3_array.js) <br>*[move → 2d/convex-hull/orient2d_indexed.js]* | 'orientation3' LIES about dimension (it is 2D; 3=points). Use orient2d + _indexed for index-into-flat-array inputs. |
450
+ | `plane3_compute_convex_3_plane_intersection` | `plane3_compute_3_plane_intersection` | [3d/plane/plane3_compute_convex_3_plane_intersection.js](3d/plane/plane3_compute_convex_3_plane_intersection.js) <br>*[move → 3d/plane/plane3_compute_3_plane_intersection.js]* | 'convex' lies (only non-degeneracy required). |
451
+ | `bt_mesh_compute_vertex_quadratics` | `bt_mesh_compute_vertex_quadrics` | [3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadratics.js](3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadratics.js) <br>*[move → 3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadrics.js]* | Returns Quadric3 (quadric error metric), not quadratics; align with class name Quadric3. |
452
+ | `bt_face_get_attached_faces / bt_face_get_neighbour_faces` | `bt_face_get_vertex_adjacent_faces / bt_face_get_edge_adjacent_faces` | [3d/topology/struct/binary/query/bt_face_get_attached_faces.js](3d/topology/struct/binary/query/bt_face_get_attached_faces.js) <br>*[move → 3d/topology/struct/binary/query/bt_face_get_vertex_adjacent_faces.js]* | attached(vertex-adj) vs neighbour(edge-adj) distinction must be in the name, not an easily-swapped noun. |
453
+ | `computeTopoMeshBoundiningBox` | `compute_topo_mesh_bounding_box` | [3d/topology/bounds/computeTopoMeshBoundiningBox.js](3d/topology/bounds/computeTopoMeshBoundiningBox.js) <br>*[move → 3d/topology/bounds/compute_topo_mesh_bounding_box.js]* | FIX typo 'Boundining'; camelCase->snake (topology compute layer). |
454
+ | `build_vertex_quadratics / deep_copy_vertex_quadratics / compute_edge_collapse_cost_quadratic` | `build_vertex_quadrics / deep_copy_vertex_quadrics / compute_edge_collapse_cost_quadric` | [3d/topology/simplify/quadratic/(various)](3d/topology/simplify/quadratic/(various)) <br>*[move → 3d/topology/simplify/quadric/(various)]* | Pervasive 'quadratics' misnomer for Quadric3; unify on 'quadric'. |
455
+ | `compute_tetrahedron_volume / compute_tetrahedron_quality` | `tetrahedral_mesh_compute_tet_volume / tetrahedral_mesh_compute_tet_quality` | [3d/tetrahedra/compute_tetrahedron_volume.js](3d/tetrahedra/compute_tetrahedron_volume.js) <br>*[move → 3d/tetrahedra/tetrahedral_mesh_compute_tet_volume.js]* | Resolve the compute_tetrahedron_X (mesh) vs tetrahedron_compute_X (indexed) token-order collision: mesh-forms join the tetrahedral_mesh_ family; indexed primitives keep tetrahedron_compute_*. Also compute_tetrahedron_volume returns SIGNED — say so. |
456
+ | `TopoMesh.setFacedUnindexed` | `TopoMesh.setFacesUnindexed` | [3d/topology/struct/TopoMesh.js](3d/topology/struct/TopoMesh.js) <br>*[move → 3d/topology/struct/TopoMesh.js]* | Typo 'Faced'->'Faces'. |
457
+
458
+ ### camelCase-legacy-islands (21)
459
+
460
+ | old | → new | file | why |
461
+ |-----|-------|------|-----|
462
+ | `eulerAnglesFromMatrix` | `m4_euler_angles` | [3d/mat4/eulerAnglesFromMatrix.js](3d/mat4/eulerAnglesFromMatrix.js) <br>*[move → 3d/mat4/m4_euler_angles.js]* | camelCase island -> snake m4_ prefix. |
463
+ | `quat3_createFromAxisAngle` | `quat3_from_axis_angle` | [3d/quaternion/quat3_createFromAxisAngle.js](3d/quaternion/quat3_createFromAxisAngle.js) <br>*[move → 3d/quaternion/quat3_from_axis_angle.js]* | camelCase-in-snake hybrid + 'create' lies (no alloc); move output to first (out,out_offset), take scalar axis. |
464
+ | `computeBoundingSphereOfSpheres` | `sphere_compute_bounding_of_spheres` | [packing/computeBoundingSphereOfSpheres.js](packing/computeBoundingSphereOfSpheres.js) <br>*[move → packing/sphere_compute_bounding_of_spheres.js]* | camelCase island -> snake; align with the of_2_spheres sibling; fix sqr_distance_to_center mislabel (holds linear distance). |
465
+ | `computeConePlaneSide` | `cone_compute_plane_side` | [3d/cone/computeConePlaneSide.js](3d/cone/computeConePlaneSide.js) <br>*[move → 3d/cone/cone_compute_plane_side.js]* | camelCase island -> snake cone_ prefix; fix mixed plane_normal_x/originX param casing. |
466
+ | `computeConeBoundingBox` | `cone_compute_bounding_box` | [3d/cone/computeConeBoundingBox.js](3d/cone/computeConeBoundingBox.js) <br>*[move → 3d/cone/cone_compute_bounding_box.js]* | camelCase island -> snake; align token order with circle3_compute_bounding_box. |
467
+ | `computeTriangleRayIntersection` | `tri3_ray_intersection` | [3d/triangle/computeTriangleRayIntersection.js](3d/triangle/computeTriangleRayIntersection.js) <br>*[move → 3d/triangle/tri3_ray_intersection.js]* | camelCase island -> snake tri3_; fix finate/triange typos. |
468
+ | `computeTriangleRayIntersectionBarycentric` | `tri3_ray_intersection_barycentric` | [3d/triangle/computeTriangleRayIntersectionBarycentric.js](3d/triangle/computeTriangleRayIntersectionBarycentric.js) <br>*[move → 3d/triangle/tri3_ray_intersection_barycentric.js]* | camelCase->snake tri3_; fix [t,u,v] doc/impl mismatch. |
469
+ | `computeTriangleRayIntersectionBarycentricEdge` | `tri3_ray_intersection_barycentric_edge` | [3d/triangle/computeTriangleRayIntersectionBarycentricEdge.js](3d/triangle/computeTriangleRayIntersectionBarycentricEdge.js) <br>*[move → 3d/triangle/tri3_ray_intersection_barycentric_edge.js]* | camelCase->snake tri3_. |
470
+ | `rayTriangleIntersection` | `tri3_ray_intersection_v3_objects` | [3d/triangle/rayTriangleIntersection.js](3d/triangle/rayTriangleIntersection.js) <br>*[move → 3d/triangle/tri3_ray_intersection_v3_objects.js]* | camelCase + reversed word order; snake tri3_; mark the Vector3-object wrapper. |
471
+ | `computeTriangleClosestPointToPointBarycentric` | `tri3_closest_point_barycentric` | [3d/triangle/computeTriangleClosestPointToPointBarycentric.js](3d/triangle/computeTriangleClosestPointToPointBarycentric.js) <br>*[move → 3d/triangle/tri3_closest_point_barycentric.js]* | camelCase->snake tri3_; drop PointToPoint stutter; keep 'closest'. |
472
+ | `frustum3_computeNearestPointToPoint` | `frustum3_compute_closest_point` | [3d/frustum/frustum3_computeNearestPointToPoint.js](3d/frustum/frustum3_computeNearestPointToPoint.js) <br>*[move → 3d/frustum/frustum3_compute_closest_point.js]* | Only camelCase export here -> snake; nearest->closest; drop PointToPoint; FIX inverted boolean return semantics. |
473
+ | `mortonEncode_LUT` | `v3_morton_encode_lut` | [3d/morton/mortonEncode_LUT.js](3d/morton/mortonEncode_LUT.js) <br>*[move → 3d/morton/v3_morton_encode_lut.js]* | camelHybrid -> snake v3_ prefix. |
474
+ | `mortonEncode_magicbits` | `v3_morton_encode_magicbits` | [3d/morton/mortonEncode_magicbits.js](3d/morton/mortonEncode_magicbits.js) <br>*[move → 3d/morton/v3_morton_encode_magicbits.js]* | camelHybrid -> snake v3_ prefix; v3_morton_encode default-alias becomes a thin re-export. |
475
+ | `randomPointInBox` | `random_point_in_box` | [random/randomPointInBox.js](random/randomPointInBox.js) <br>*[move → random/random_point_in_box.js]* | camelCase folder -> snake. (See open question on In/On token.) |
476
+ | `randomPointOnBox` | `random_point_on_box` | [random/randomPointOnBox.js](random/randomPointOnBox.js) <br>*[move → random/random_point_on_box.js]* | camelCase -> snake. |
477
+ | `randomPointInSphere / OnSphere / InCircle / InPoint` | `random_point_in_sphere (etc.)` | [random/randomPointInSphere.js](random/randomPointInSphere.js) <br>*[move → random/random_point_in_sphere.js]* | camelCase -> snake across the random/ family; rename destination_offset->result_offset in random_point_in_point. |
478
+ | `packMaxRectangles / packOneBox / findBestContainer / cutArea / removeRedundantBoxes / costBy*` | `pack_max_rectangles / pack_one_box / find_best_container / cut_area / remove_redundant_boxes / cost_by_*` | [packing/max-rect/packMaxRectangles.js](packing/max-rect/packMaxRectangles.js) <br>*[move → packing/max-rect/pack_max_rectangles.js]* | Entire camelCase folder -> snake. |
479
+ | `computeTopoMeshBoundingSphere / computeTopoMeshVertexDuplicates / computeTriangleClusterNormalBoundingCone` | `compute_topo_mesh_bounding_sphere / compute_topo_mesh_vertex_duplicates / compute_triangle_cluster_normal_bounding_cone` | [3d/topology/bounds/computeTopoMeshBoundingSphere.js](3d/topology/bounds/computeTopoMeshBoundingSphere.js) <br>*[move → 3d/topology/bounds/compute_topo_mesh_bounding_sphere.js]* | camelCase topology layer -> snake. |
480
+ | `simplifyTopoMesh / simplifyTopoMesh2` | `simplify_topo_mesh_quadric / simplify_topo_mesh_decimate` | [3d/topology/simplify/simplifyTopoMesh.js](3d/topology/simplify/simplifyTopoMesh.js) <br>*[move → 3d/topology/simplify/simplify_topo_mesh_quadric.js]* | camelCase->snake; numeric '2' suffix carries no semantics — name by algorithm; consolidate duplicate entry points. |
481
+ | `computeEdgeCollapseCost / collapseEdge / partialEdgeCollapse / EdgeCollapseCandidate` | `compute_edge_collapse_cost / collapse_edge / partial_edge_collapse / EdgeCollapseCandidate(class kept)` | [3d/topology/simplify/(various)](3d/topology/simplify/(various)) <br>*[move → 3d/topology/simplify/(various)]* | camelCase free fns -> snake; reconcile the duplicate cost functions (camel vs snake) into one. |
482
+ | `StaticR2Tree (mixed casing methods)` | `StaticRTree2D (snake_case methods)` | [2d/r-tree/StaticR2Tree.js](2d/r-tree/StaticR2Tree.js) <br>*[move → 2d/r-tree/StaticRTree2D.js]* | 'R2'->'2D' dimension token; unify mixed camel/snake methods onto snake (matches BVH2D/SpatialHashGrid). |
483
+
484
+ ### redundant-token-repetition (17)
485
+
486
+ | old | → new | file | why |
487
+ |-----|-------|------|-----|
488
+ | `line_segment_compute_line_segment_intersection_array_2d` | `segment2_segment_compute_intersection_array_2d` | [2d/line/line_segment_compute_line_segment_intersection_array_2d.js](2d/line/line_segment_compute_line_segment_intersection_array_2d.js) <br>*[move → 2d/line/segment2_segment_compute_intersection_array_2d.js]* | FLAGSHIP: 'line_segment' stuttered twice + verbose. One segment token per operand role; _array kept (it is the offset-addressed flat-array writer, the correct meaning). |
489
+ | `line_segment_compute_line_segment_intersection_2d` | `segment2_segment_compute_intersection_v2_2d` | [2d/line/line_segment_compute_line_segment_intersection_2d.js](2d/line/line_segment_compute_line_segment_intersection_2d.js) <br>*[move → 2d/line/segment2_segment_compute_intersection_v2_2d.js]* | Vector2-sink wrapper; de-stutter and mark the v2-object sink with _v2; move output to first (result,...) per convention. |
490
+ | `line_segment_compute_line_segment_intersection_vectors_2d` | `segment2_segment_compute_intersection_v2_objects_2d` | [2d/line/line_segment_compute_line_segment_intersection_vectors_2d.js](2d/line/line_segment_compute_line_segment_intersection_vectors_2d.js) <br>*[move → 2d/line/segment2_segment_compute_intersection_v2_objects_2d.js]* | De-stutter; clarify it takes Vector2 objects for both operands. |
491
+ | `v3_triple_cross_product` | `v3_triple_cross` | [vec3/v3_triple_cross_product.js](vec3/v3_triple_cross_product.js) <br>*[move → vec3/v3_triple_cross.js]* | Drop _product to match v3_cross / v3_cross_array. |
492
+ | `v3_angle_between` | `v3_angle` | [vec3/v3_angle_between.js](vec3/v3_angle_between.js) <br>*[move → vec3/v3_angle.js]* | Drop redundant infix 'between' (two operands implied). |
493
+ | `v3_angle_cos_between` | `v3_cos_angle` | [vec3/v3_angle_cos_between.js](vec3/v3_angle_cos_between.js) <br>*[move → vec3/v3_cos_angle.js]* | Drop 'between'; lead with the returned quantity (cos). |
494
+ | `Vector3.projectOntoVector3` | `Vector3.projectOnto` | [Vector3.js](Vector3.js) <br>*[move → Vector3.js]* | Redundant Vector3 token (class is the type). |
495
+ | `aabb2_array_combine` | `aabb2_union_array` | [2d/aabb/aabb2_array_combine.js](2d/aabb/aabb2_array_combine.js) <br>*[move → 2d/aabb/aabb2_union_array.js]* | Box-union has 3 names (combine/expandToFit/resizeToFit); standardize on union; suffix _array (offset operands). |
496
+ | `AABB2.overlapExists / expandToFit` | `AABB2.intersects / union` | [2d/aabb/AABB2.js](2d/aabb/AABB2.js) <br>*[move → 2d/aabb/AABB2.js]* | Align class with free-fn intersects + union vocabulary. |
497
+ | `aabb3_near_distance_to_intersection_ray_segment` | `aabb3_ray_segment_entry_distance` | [3d/aabb/aabb3_near_distance_to_intersection_ray_segment.js](3d/aabb/aabb3_near_distance_to_intersection_ray_segment.js) <br>*[move → 3d/aabb/aabb3_ray_segment_entry_distance.js]* | 'near_distance_to_intersection' verbose/redundant; entry distance IS the intersection distance. |
498
+ | `sphere_projected_sphere_radius_sqr` | `sphere_projected_radius_sqr` | [3d/sphere/sphere_projected_sphere_radius_sqr.js](3d/sphere/sphere_projected_sphere_radius_sqr.js) <br>*[move → 3d/sphere/sphere_projected_radius_sqr.js]* | Redundant 'sphere' repeated; also unify param order with sphere_project (sphere,matrix,focal_length). |
499
+ | `circle_compute_circle_intersection` | `circle_compute_intersection` | [2d/circle/circle_compute_circle_intersection.js](2d/circle/circle_compute_circle_intersection.js) <br>*[move → 2d/circle/circle_compute_intersection.js]* | Redundant circle repetition. |
500
+ | `plane3_compute_plane_intersection` | `plane3_compute_intersection_objects` | [3d/plane/plane3_compute_plane_intersection.js](3d/plane/plane3_compute_plane_intersection.js) <br>*[move → 3d/plane/plane3_compute_intersection_objects.js]* | Redundant 'plane' repetition; mark as the object-adapter (TODO says consolidate with plane3_intersect_plane); stop calling private __setFromRotationMatrix. |
501
+ | `hexahedron_from_aabb` | `frustum3_from_aabb` | [3d/frustum/hexahedron_from_aabb.js](3d/frustum/hexahedron_from_aabb.js) <br>*[move → 3d/frustum/frustum3_from_aabb.js]* | Same 6-plane layout as frustum family; unify the noun to frustum (drop hexahedron). |
502
+ | `frustum_matrix4_project / clipping_volume_matrix4_project` | `frustum3_matrix4_project / frustum3_matrix4_project_n` | [3d/frustum/frustum_matrix4_project.js](3d/frustum/frustum_matrix4_project.js) <br>*[move → 3d/frustum/frustum3_matrix4_project.js]* | Add dimension digit; unify noun (clipping_volume = n-plane frustum); standardize matrix-last param order. |
503
+ | `bt_faces_shared_loop` | `bt_face_get_shared_loop` | [3d/topology/struct/binary/query/bt_faces_shared_loop.js](3d/topology/struct/binary/query/bt_faces_shared_loop.js) <br>*[move → 3d/topology/struct/binary/query/bt_face_get_shared_loop.js]* | Singularize face token + match bt_face_get_* query family. |
504
+ | `tetrahedral_mesh_tet_get_neighbours` | `tetrahedral_mesh_get_neighbours` | [3d/tetrahedra/tetrahedral_mesh_tet_get_neighbours.js](3d/tetrahedra/tetrahedral_mesh_tet_get_neighbours.js) <br>*[move → 3d/tetrahedra/tetrahedral_mesh_get_neighbours.js]* | Redundant tet token (tetrahedral_mesh already implies tet); also move (out,out_offset) to front. |
505
+
506
+ ### array-token-overload (16)
507
+
508
+ | old | → new | file | why |
509
+ |-----|-------|------|-----|
510
+ | `line_segment_compute_line_segment_intersection_vectors_array_2d` | `segment2_segment_compute_intersection_to_new_array_2d` | [2d/line/line_segment_compute_line_segment_intersection_vectors_array_2d.js](2d/line/line_segment_compute_line_segment_intersection_vectors_array_2d.js) <br>*[move → 2d/line/segment2_segment_compute_intersection_to_new_array_2d.js]* | This one ALLOCATES and returns a new array — _array previously lied. Use _to_new_array to signal allocation, removing the contradictory _array meaning. |
511
+ | `v3_array_normalize` | `v3_normalize_array` | [vec3/v3_array_normalize.js](vec3/v3_array_normalize.js) <br>*[move → vec3/v3_normalize_array.js]* | Standardize _array as SUFFIX (offset operand) everywhere. |
512
+ | `v3_array_scale` | `v3_scale_array` | [vec3/v3_array_scale.js](vec3/v3_array_scale.js) <br>*[move → vec3/v3_scale_array.js]* | Suffix _array; also unify scale verb (drop multiply_scalar split). |
513
+ | `v3_array_copy` | `v3_copy_array` | [vec3/v3_array_copy.js](vec3/v3_array_copy.js) <br>*[move → vec3/v3_copy_array.js]* | Suffix _array; rename params target/source -> result/input. |
514
+ | `v3_array_centroid` | `v3_centroid_v3_buffer` | [vec3/v3_array_centroid.js](vec3/v3_array_centroid.js) <br>*[move → vec3/v3_centroid_v3_buffer.js]* | Here _array meant a BATCH of many vectors (loops count*3), a different meaning — use _v3_buffer; also return void to match siblings. |
515
+ | `v3_array_matrix4_rotate` | `v3_matrix4_rotate_array` | [vec3/v3_array_matrix4_rotate.js](vec3/v3_array_matrix4_rotate.js) <br>*[move → vec3/v3_matrix4_rotate_array.js]* | Suffix _array; align with v3_matrix4_multiply (which reads at offset without the token). |
516
+ | `v3_array_equals` | `v3_equals_array` | [vec3/v3_array_equals.js](vec3/v3_array_equals.js) <br>*[move → vec3/v3_equals_array.js]* | Suffix _array (offset operands). |
517
+ | `v3_array_displace_in_direction` | `v3_displace_in_direction_to_array` | [vec3/v3_array_displace_in_direction.js](vec3/v3_array_displace_in_direction.js) <br>*[move → vec3/v3_displace_in_direction_to_array.js]* | Inputs are SCALARS, only output is an array; the prefix array_ lied. _to_array marks the array output. |
518
+ | `v3_cross_array` | `v3_cross_array` | [vec3/v3_cross_array.js](vec3/v3_cross_array.js) <br>*[move → vec3/v3_cross_array.js]* | Already conforms (suffix _array, both operands at offsets) — kept; listed only as the canonical exemplar siblings should match. |
519
+ | `v3_dot_array_array` | `v3_dot_array` | [vec3/v3_dot_array_array.js](vec3/v3_dot_array_array.js) <br>*[move → vec3/v3_dot_array.js]* | Double _array_array banned; a single _array already implies both operands at offsets (matches v3_cross_array). |
520
+ | `v3_negate_array` | `v3_negate_array` | [vec3/v3_negate_array.js](vec3/v3_negate_array.js) <br>*[move → vec3/v3_negate_array.js]* | Already conforms (suffix _array). Listed as exemplar; no change. |
521
+ | `vector_scale_array` | `vector_scale_offset` | [vec/vector_scale_array.js](vec/vector_scale_array.js) <br>*[move → vec/vector_scale_offset.js]* | _array lies (it is the offset-taking scale primitive, no array-of-vectors); rename count param dimensions->n. |
522
+ | `sphere_array_intersects_point` | `sphere_packed_contains_point` | [3d/sphere/sphere_array_intersects_point.js](3d/sphere/sphere_array_intersects_point.js) <br>*[move → 3d/sphere/sphere_packed_contains_point.js]* | _array meant packed single sphere [cx,cy,cz,r] (not offset operand); containment fix too. |
523
+ | `sphere_array_intersects_ray` | `sphere_packed_intersects_ray` | [3d/sphere/sphere_array_intersects_ray.js](3d/sphere/sphere_array_intersects_ray.js) <br>*[move → 3d/sphere/sphere_packed_intersects_ray.js]* | _array=packed sphere; use _packed token. |
524
+ | `sphere_radius_sqr_from_v3_array_transformed` | `sphere_radius_sqr_from_v3_buffer_transformed` | [3d/sphere/sphere_radius_sqr_from_v3_array_transformed.js](3d/sphere/sphere_radius_sqr_from_v3_array_transformed.js) <br>*[move → 3d/sphere/sphere_radius_sqr_from_v3_buffer_transformed.js]* | _array here = batch of vec3 points; use _v3_buffer; fix JSDoc typos bonding/foe. |
525
+ | `removeRedundantBoxesArray` | `remove_redundant_boxes_from_array` | [packing/max-rect/removeRedundantBoxesArray.js](packing/max-rect/removeRedundantBoxesArray.js) <br>*[move → packing/max-rect/remove_redundant_boxes_from_array.js]* | camelCase->snake; '_Array' overload meant 'plain Array container' -> spell it _from_array. |
526
+
527
+ ### verb-prefix-inconsistency (14)
528
+
529
+ | old | → new | file | why |
530
+ |-----|-------|------|-----|
531
+ | `line3_closest_points_segment_segment` | `line3_compute_segment_segment_closest_points` | [3d/line/line3_closest_points_segment_segment.js](3d/line/line3_closest_points_segment_segment.js) <br>*[move → 3d/line/line3_compute_segment_segment_closest_points.js]* | Add compute_ verb to match line3_compute_* siblings; add result_offset; reorder operand tokens. |
532
+ | `v3_multiply_scalar` | `v3_scale` | [vec3/v3_multiply_scalar.js](vec3/v3_multiply_scalar.js) <br>*[move → vec3/v3_scale.js]* | Two verbs (multiply_scalar vs array_scale) for one op; standardize on scale (scalar-in) + v3_scale_array (offset-in). |
533
+ | `v3_compute_interior_angle` | `v3_interior_angle` | [vec3/v3_compute_interior_angle.js](vec3/v3_compute_interior_angle.js) <br>*[move → vec3/v3_interior_angle.js]* | Lone compute_ user and lone object-arg taker; drop compute_ (bare metric) and take scalar triples. |
534
+ | `m3_cm_from_translation` | `m3_cm_make_translation` | [mat3/m3_cm_from_translation.js](mat3/m3_cm_from_translation.js) <br>*[move → mat3/m3_cm_make_translation.js]* | Standardize translation-matrix builder verb on make_ (matches m4_make_translation). |
535
+ | `m4_compute_normal_matrix3` | `m4_normal_matrix3` | [3d/mat4/m4_compute_normal_matrix3.js](3d/mat4/m4_compute_normal_matrix3.js) <br>*[move → 3d/mat4/m4_normal_matrix3.js]* | Bare-metric: drop compute_ to match m4_rotation_translation etc. |
536
+ | `aabb2_compute_area` | `aabb2_area` | [2d/aabb/aabb2_compute_area.js](2d/aabb/aabb2_compute_area.js) <br>*[move → 2d/aabb/aabb2_area.js]* | Bare-metric: drop compute_ (consistent with aabb2_distance_to_point). |
537
+ | `aabb2_compute_center_from_multiple` | `aabb2_center_from_aabb2_buffer` | [2d/aabb/aabb2_compute_center_from_multiple.js](2d/aabb/aabb2_compute_center_from_multiple.js) <br>*[move → 2d/aabb/aabb2_center_from_aabb2_buffer.js]* | Drop compute_; clarify input is a batch; add result out-param to stop per-call allocation. |
538
+ | `aabb3_compute_surface_area` | `aabb3_surface_area` | [3d/aabb/aabb3_compute_surface_area.js](3d/aabb/aabb3_compute_surface_area.js) <br>*[move → 3d/aabb/aabb3_surface_area.js]* | Bare-metric drops compute_. |
539
+ | `aabb3_compute_half_surface_area` | `aabb3_half_surface_area_extents` | [3d/aabb/aabb3_compute_half_surface_area.js](3d/aabb/aabb3_compute_half_surface_area.js) <br>*[move → 3d/aabb/aabb3_half_surface_area_extents.js]* | Bare-metric drops compute_; note collision with the renamed single-box helper — keep the extents-primitive distinct (scalar x0..z1 in). |
540
+ | `Quaternion.setFromRotationMatrix` | `Quaternion.fromRotationMatrix` | [Quaternion.js](Quaternion.js) <br>*[move → Quaternion.js]* | Match the from* converter family (drop set prefix). |
541
+ | `is_point_within_planes` | `plane3_contains_point_within_set` | [3d/plane/is_point_within_planes.js](3d/plane/is_point_within_planes.js) <br>*[move → 3d/plane/plane3_contains_point_within_set.js]* | Add plane3_ prefix; remove contradictory @private on an export. |
542
+ | `fill_in_a_cavity` | `tetrahedral_mesh_fill_cavity` | [3d/topology/delaunay/fill_in_a_cavity.js](3d/topology/delaunay/fill_in_a_cavity.js) <br>*[move → 3d/topology/delaunay/tetrahedral_mesh_fill_cavity.js]* | Prose-style name with articles; use domain-token verb_noun. |
543
+ | `qt_match_data_by_circle` | `qt_collect_by_circle (merge w/ optional predicate)` | [2d/quad-tree/qt_match_data_by_circle.js](2d/quad-tree/qt_match_data_by_circle.js) <br>*[move → 2d/quad-tree/qt_collect_by_circle.js]* | match_=collect_+predicate; collapse the three-verb sprawl (collect_/match_/query_data_) onto one collect_ verb. |
544
+ | `make_justified_point_grid` | `aabb3_emit_point_grid` | [3d/util/make_justified_point_grid.js](3d/util/make_justified_point_grid.js) <br>*[move → 3d/util/aabb3_emit_point_grid.js]* | 'make_' verb is a lone outlier; it iterates over an AABB3 emitting points via callback — encode the type and the emit semantics. |
545
+
546
+ ### output-arg-placement-and-missing-offset (14)
547
+
548
+ | old | → new | file | why |
549
+ |-----|-------|------|-----|
550
+ | `ray3_array_compose` | `ray3_compose_array` | [3d/ray/ray3_array_compose.js](3d/ray/ray3_array_compose.js) <br>*[move → 3d/ray/ray3_compose_array.js]* | Suffix _array (offset convention); ADD missing output_offset param to match ray3 array family. |
551
+ | `v3_rigid_align_paired_unit_vectors (out_quaternion last)` | `v3_rigid_align_paired_unit_vectors` | [vec3/v3_rigid_align_paired_unit_vectors.js](vec3/v3_rigid_align_paired_unit_vectors.js) <br>*[move → vec3/v3_rigid_align_paired_unit_vectors.js]* | Name acceptable; move out_quaternion to FIRST param to match output-first rule. |
552
+ | `apply_mat4_transform_to_v3_array` | `m4_transform_v3_buffer` | [3d/mat4/apply_mat4_transform_to_v3_array.js](3d/mat4/apply_mat4_transform_to_v3_array.js) <br>*[move → 3d/mat4/m4_transform_v3_buffer.js]* | m4_ prefix; _v3_buffer = batch of vectors (distinct from offset-operand _array); move output to first. |
553
+ | `apply_mat4_transform_to_direction_v3_array` | `m4_transform_direction_v3_buffer` | [3d/mat4/apply_mat4_transform_to_direction_v3_array.js](3d/mat4/apply_mat4_transform_to_direction_v3_array.js) <br>*[move → 3d/mat4/m4_transform_direction_v3_buffer.js]* | Same as above; 'direction' kept (normalizes result). |
554
+ | `aabb2_from_v2_array` | `aabb2_from_v2_buffer` | [2d/aabb/aabb2_from_v2_array.js](2d/aabb/aabb2_from_v2_array.js) <br>*[move → 2d/aabb/aabb2_from_v2_buffer.js]* | Input is a batch of points (not offset operand); ADD missing result_offset (currently hardcodes 0). |
555
+ | `aabb3_expand_array` | `aabb3_expand_array` | [3d/aabb/aabb3_expand_array.js](3d/aabb/aabb3_expand_array.js) <br>*[move → 3d/aabb/aabb3_expand_array.js]* | Name OK; FIX output-arg placement (output is 2nd) to output-first; rename param distance->margin. |
556
+ | `quat3_integrate (param result_q, no offset)` | `quat3_integrate` | [3d/quaternion/quat3_integrate.js](3d/quaternion/quat3_integrate.js) <br>*[move → 3d/quaternion/quat3_integrate.js]* | Name OK; rename result_q->out and ADD out_offset to match quat3 family. |
557
+ | `polygon2_clip_axis_halfplane` | `polygon2_clip_axis_halfplane` | [2d/polygon/polygon2_clip_axis_halfplane.js](2d/polygon/polygon2_clip_axis_halfplane.js) <br>*[move → 2d/polygon/polygon2_clip_axis_halfplane.js]* | Name OK; FIX output-arg (points_out is 3rd) to output-first and add output_offset. |
558
+ | `slice_frustum_linear_to_points` | `frustum3_slice_linear_to_points` | [3d/frustum/slice_frustum_linear_to_points.js](3d/frustum/slice_frustum_linear_to_points.js) <br>*[move → 3d/frustum/frustum3_slice_linear_to_points.js]* | Verb-first -> noun-first frustum3_ family; FIX output-last to output-first. |
559
+ | `read_three_planes_to_array` | `frustum3_planes_to_flat_from_three` | [3d/frustum/read_three_planes_to_array.js](3d/frustum/read_three_planes_to_array.js) <br>*[move → 3d/frustum/frustum3_planes_to_flat_from_three.js]* | Output-last -> output-first; vendor token to adapter suffix; _array ambiguous (it is to-flat). |
560
+ | `octahedral_uv_to_direction / octahedral_direction_to_uv` | `octahedral_uv_to_direction / octahedral_direction_to_uv` | [3d/octahedra/octahedral_uv_to_direction.js](3d/octahedra/octahedral_uv_to_direction.js) <br>*[move → 3d/octahedra/octahedral_uv_to_direction.js]* | Names OK; align equirectangular_* to THIS output-first (out,out_offset,in,in_offset) shape (the equirect functions are the ones to change). |
561
+ | `equirectangular_uv_to_direction / equirectangular_direction_to_uv` | `equirectangular_uv_to_direction / equirectangular_direction_to_uv` | [3d/equirectangular/equirectangular_uv_to_direction.js](3d/equirectangular/equirectangular_uv_to_direction.js) <br>*[move → 3d/equirectangular/equirectangular_uv_to_direction.js]* | Names OK; FIX output placement to output-first to match octahedral_* siblings. |
562
+ | `gjk_epa_penetration (out, no offset)` | `gjk_epa_penetration` | [3d/gjk/gjk_epa_penetration.js](3d/gjk/gjk_epa_penetration.js) <br>*[move → 3d/gjk/gjk_epa_penetration.js]* | Name OK; add out_offset to match mpr/minkowski_support; reconcile MTV encoding with mpr. |
563
+ | `bvh2d_query_all_data_by_circle` | `bvh2d_query_all_data_by_circle` | [2d/bvh/bvh2d_query_all_data_by_circle.js](2d/bvh/bvh2d_query_all_data_by_circle.js) <br>*[move → 2d/bvh/bvh2d_query_all_data_by_circle.js]* | Name OK; reorder params to (result, result_offset, bvh, root, ...) to match shg_/qt_ query convention. |
564
+
565
+ ### abbreviation-vert-and-matrix-param (14)
566
+
567
+ | old | → new | file | why |
568
+ |-----|-------|------|-----|
569
+ | `v3_array_immediate_add` | `v3_add_array` | [vec3/v3_array_immediate_add.js](vec3/v3_array_immediate_add.js) <br>*[move → vec3/v3_add_array.js]* | 'immediate' is opaque; this is array(offset)+=array(offset). Mirror dot/cross array convention. |
570
+ | `v3_array_add_in_place` | `v3_add` | [vec3/v3_array_add_in_place.js](vec3/v3_array_add_in_place.js) <br>*[move → vec3/v3_add.js]* | 'in_place' redundant (every writer mutates); this is the scalar-source add primitive. |
571
+ | `v3_quat3_apply` | `v3_quaternion_apply` | [vec3/v3_quat3_apply.js](vec3/v3_quat3_apply.js) <br>*[move → vec3/v3_quaternion_apply.js]* | quat3 token misleads (3 reads as quat dim); use full 'quaternion' to match Quaternion class. |
572
+ | `v3_quat3_apply_inverse` | `v3_quaternion_apply_inverse` | [vec3/v3_quat3_apply_inverse.js](vec3/v3_quat3_apply_inverse.js) <br>*[move → vec3/v3_quaternion_apply_inverse.js]* | Same quat3 token fix. |
573
+ | `v3_matrix3_rotate (param mat3)` | `v3_matrix3_rotate` | [vec3/v3_matrix3_rotate.js](vec3/v3_matrix3_rotate.js) <br>*[move → vec3/v3_matrix3_rotate.js]* | Function name OK; rename matrix param mat3 -> m3 to match m4 convention. |
574
+ | `v4_multiply_mat4` | `v4_matrix4_multiply` | [vec4/v4_multiply_mat4.js](vec4/v4_multiply_mat4.js) <br>*[move → vec4/v4_matrix4_multiply.js]* | Align matrix token with v3_matrix4_multiply (m4 family) and reorder to noun-first. |
575
+ | `aabb3_intersects_line_segment (camelCase params)` | `aabb3_intersects_segment3` | [3d/aabb/aabb3_intersects_line_segment.js](3d/aabb/aabb3_intersects_line_segment.js) <br>*[move → 3d/aabb/aabb3_intersects_segment3.js]* | Two endpoints => segment; rename startX/endX -> start_x/end_x (snake). |
576
+ | `quat_encode_to_uint32` | `quat3_encode_to_uint32` | [3d/quaternion/quat_encode_to_uint32.js](3d/quaternion/quat_encode_to_uint32.js) <br>*[move → 3d/quaternion/quat3_encode_to_uint32.js]* | Unify type token on quat3_ (the family majority). |
577
+ | `quat_decode_from_uint32` | `quat3_decode_from_uint32` | [3d/quaternion/quat_decode_from_uint32.js](3d/quaternion/quat_decode_from_uint32.js) <br>*[move → 3d/quaternion/quat3_decode_from_uint32.js]* | Unify token quat3_; rename output/output_offset -> out/out_offset. |
578
+ | `sh3_rotate_bl` | `sh3_rotate` | [3d/sphere/harmonics/sh3_rotate_bl.js](3d/sphere/harmonics/sh3_rotate_bl.js) <br>*[move → 3d/sphere/harmonics/sh3_rotate.js]* | '_bl' (BakerLab) provenance token is opaque public surface; add (array,offset) params for parity. |
579
+ | `sh_compute_K` | `sh_normalization_factor` | [3d/sphere/harmonics/sh_compute_K.js](3d/sphere/harmonics/sh_compute_K.js) <br>*[move → 3d/sphere/harmonics/sh_normalization_factor.js]* | Capital K reads like a constant; verb+single-letter inconsistent with sh_index. |
580
+ | `tm_vert_kill / tm_kill_only_vert / tm_vert_splice / tm_vert_fuse_duplicate_edges` | `tm_vertex_kill / tm_vertex_kill_only / tm_vertex_splice / tm_vertex_fuse_duplicate_edges` | [3d/topology/(various)](3d/topology/(various)) <br>*[move → 3d/topology/(various)]* | Standardize vertex token to 'vertex'; element-first kill order (tm_vertex_kill_only) matches tm_vertex_kill. |
581
+ | `tm_kill_only_edge / tm_kill_only_face` | `tm_edge_kill_only / tm_face_kill_only` | [3d/topology/io/(various)](3d/topology/io/(various)) <br>*[move → 3d/topology/io/(various)]* | Element-first to match tm_edge_kill / tm_face_kill (verb-then-element was inverted). |
582
+ | `bt_vert_kill / bt_vert_fuse_duplicate_edges / bt_kill_only_vert / bt_merge_verts_by_distance` | `bt_vertex_kill / bt_vertex_fuse_duplicate_edges / bt_vertex_kill_only / bt_merge_vertices_by_distance` | [3d/topology/struct/binary/io/vertex/(various)](3d/topology/struct/binary/io/vertex/(various)) <br>*[move → 3d/topology/struct/binary/io/vertex/(various)]* | Unify vertex token to 'vertex' (matches BinaryTopology vertex_* accessors); element-first kill order. |
583
+
584
+ ### predicate-vs-producer-vs-degree (10)
585
+
586
+ | old | → new | file | why |
587
+ |-----|-------|------|-----|
588
+ | `line_segment_line_segment_intersection_exists_2d` | `segment2_intersects_segment2_2d` | [2d/line/line_segment_line_segment_intersection_exists_2d.js](2d/line/line_segment_line_segment_intersection_exists_2d.js) <br>*[move → 2d/line/segment2_intersects_segment2_2d.js]* | Boolean predicate -> intersects form; drop doubled token and _exists. |
589
+ | `intersect_ray_2d` | `ray2_ray2_compute_intersection_array_2d` | [2d/intersect_ray_2d.js](2d/intersect_ray_2d.js) <br>*[move → 2d/line/ray2_ray2_compute_intersection_array_2d.js]* | Verb-first name breaks noun/type-first rule; bare verb 'intersect' banned; move under 2d/line/; fix JSDoc 'coplanar' (a 3D term). |
590
+ | `aabb2_overlap_exists` | `aabb2_intersects_aabb2` | [2d/aabb/aabb2_overlap_exists.js](2d/aabb/aabb2_overlap_exists.js) <br>*[move → 2d/aabb/aabb2_intersects_aabb2.js]* | Standardize boolean box-box test on intersects_<other>. |
591
+ | `aabb2_compute_overlap` | `aabb2_compute_intersection` | [2d/aabb/aabb2_compute_overlap.js](2d/aabb/aabb2_compute_overlap.js) <br>*[move → 2d/aabb/aabb2_compute_intersection.js]* | It writes the overlap REGION (geometry producer) -> compute_*_intersection form; reserve overlap/intersects for the bool. |
592
+ | `Rectangle.intersects / Rectangle.overlaps` | `Rectangle.intersects (one method, documented closed-interval)` | [2d/Rectangle.js](2d/Rectangle.js) <br>*[move → 2d/Rectangle.js]* | Two methods read as synonyms but differ in boundary semantics; collapse to one with documented semantics (delegate to aabb2_intersects_aabb2). |
593
+ | `aabb3_intersects_frustum_degree` | `aabb3_classify_against_frustum` | [3d/aabb/aabb3_intersects_frustum_degree.js](3d/aabb/aabb3_intersects_frustum_degree.js) <br>*[move → 3d/aabb/aabb3_classify_against_frustum.js]* | Returns a 3-state degree, not a bool; intersects_ prefix lies about return shape. |
594
+ | `aabb3_array_intersects_frustum_degree` | `aabb3_classify_against_frustum_array` | [3d/aabb/aabb3_array_intersects_frustum_degree.js](3d/aabb/aabb3_array_intersects_frustum_degree.js) <br>*[move → 3d/aabb/aabb3_classify_against_frustum_array.js]* | Same degree-not-bool fix; suffix _array (offset aabb). |
595
+ | `aabb3_detailed_volume_intersection` | `aabb3_compute_clipping_volume_intersection` | [3d/aabb/aabb3_detailed_volume_intersection.js](3d/aabb/aabb3_detailed_volume_intersection.js) <br>*[move → 3d/aabb/aabb3_compute_clipping_volume_intersection.js]* | Producer named with bare noun 'intersection' among intersects predicates; also FIX JSDoc param order (plane_mask/planes swapped). |
596
+ | `plane3_intersect_plane` | `plane3_compute_intersection` | [3d/plane/plane3_intersect_plane.js](3d/plane/plane3_intersect_plane.js) <br>*[move → 3d/plane/plane3_compute_intersection.js]* | Bare verb 'intersect' banned; this is the canonical scalar producer. |
597
+ | `bt_query_edge_is_boundary` | `bt_edge_is_boundary` | [3d/topology/struct/binary/query/bt_query_edge_is_boundary.js](3d/topology/struct/binary/query/bt_query_edge_is_boundary.js) <br>*[move → 3d/topology/struct/binary/query/bt_edge_is_boundary.js]* | Lone bt_query_ prefix; sibling predicates (bt_edge_has_vertex, bt_face_is_degenerate) omit it. |
598
+
599
+ ### filename-export-mismatch-and-multi-export (10)
600
+
601
+ | old | → new | file | why |
602
+ |-----|-------|------|-----|
603
+ | `m3_make_rotation_TBN (file m3_make_rotation.js)` | `m3_make_rotation_TBN` | [mat3/m3_make_rotation.js](mat3/m3_make_rotation.js) <br>*[move → mat3/m3_make_rotation_TBN.js]* | Rename FILE to match export (one-file-one-export convention). |
604
+ | `aabb_build_frustum (file aabb3_build_frustum.js)` | `aabb3_build_frustum` | [3d/aabb/aabb3_build_frustum.js](3d/aabb/aabb3_build_frustum.js) <br>*[move → 3d/aabb/aabb3_build_frustum.js]* | Export missing the dimension digit; align with filename and aabb3_ family. |
605
+ | `aabb3_score_boxes_SAH_delta (not exported)` | `aabb3_score_boxes_sah_delta (ADD export)` | [3d/aabb/aabb3_score_boxes_SAH_delta.js](3d/aabb/aabb3_score_boxes_SAH_delta.js) <br>*[move → 3d/aabb/aabb3_score_boxes_sah_delta.js]* | Declared but never exported (dead public surface); export it and reconcile half-vs-full-area math. |
606
+ | `compute_legendre_polynomial (0-byte file)` | `(delete or implement as sh_legendre_polynomial)` | [3d/sphere/harmonics/compute_legendre_polynomial.js](3d/sphere/harmonics/compute_legendre_polynomial.js) <br>*[move → 3d/sphere/harmonics/sh_legendre_polynomial.js]* | Empty/dead file exporting nothing; third naming style. Delete or implement under sh_ band-generic prefix. |
607
+ | `validate (file aabb2_validate_packing.js, not exported)` | `aabb2_validate_packing (ADD export)` | [packing/max-rect/aabb2_validate_packing.js](packing/max-rect/aabb2_validate_packing.js) <br>*[move → packing/max-rect/aabb2_validate_packing.js]* | File promises a public aabb2_ validator; inner fn is unnamed-by-convention and unexported. |
608
+ | `encode_unit_to_hemioct (file encode_unit3_hemioct.js)` | `encode_unit_to_hemioct` | [3d/normal/hemioct/encode_unit3_hemioct.js](3d/normal/hemioct/encode_unit3_hemioct.js) <br>*[move → 3d/normal/hemioct/encode_unit_to_hemioct.js]* | Rename FILE to match export (one-file-one-export). |
609
+ | `encode_unit_to_azimuth / decode_azimuth_to_unit (folder lamber_azimuth, file transform.js)` | `encode_unit_to_azimuth / decode_azimuth_to_unit` | [3d/normal/lamber_azimuth/transform.js](3d/normal/lamber_azimuth/transform.js) <br>*[move → 3d/normal/lambert_azimuth/encode_unit_to_azimuth.js]* | Fix folder typo lamber->lambert; split the 2-export transform.js into per-export files. |
610
+ | `encode_unit_to_spheremap (file sphere_map_transform.js) + dead decode_spheremap_to_unit` | `encode_unit_to_spheremap / decode_spheremap_to_unit (ADD export, split files)` | [3d/normal/spherical/sphere_map_transform.js](3d/normal/spherical/sphere_map_transform.js) <br>*[move → 3d/normal/spherical/encode_unit_to_spheremap.js]* | File name mismatch; the decode companion is declared but NOT exported (asymmetric public surface) — export it. |
611
+ | `bt_mesh_face_poke (file bt_face_poke.js)` | `bt_face_poke` | [3d/topology/struct/binary/io/face/bt_face_poke.js](3d/topology/struct/binary/io/face/bt_face_poke.js) <br>*[move → 3d/topology/struct/binary/io/face/bt_face_poke.js]* | Wrong object token (single-face op, not bt_mesh_) AND export mismatches filename. |
612
+ | `bt_collect_boundary_segments / bt_point_distance_to_segments (in euclidean field file)` | `bt_collect_boundary_segments / segment3_point_distance_to_segments (split files)` | [3d/topology/struct/binary/query/bt_mesh_build_boundary_euclidean_distance_field.js](3d/topology/struct/binary/query/bt_mesh_build_boundary_euclidean_distance_field.js) <br>*[move → 3d/topology/struct/binary/query/bt_collect_boundary_segments.js]* | Multi-export file; the point-distance helper has no mesh handle and belongs in the segment/line geometry module, not bt_. |
613
+
614
+ ### correctness-bugs-surfaced-by-audit (8)
615
+
616
+ | old | → new | file | why |
617
+ |-----|-------|------|-----|
618
+ | `ray3_shift_origin_along_direction` | `ray3_shift_origin_along_direction_array` | [3d/ray/ray3_shift_origin_along_direction.js](3d/ray/ray3_shift_origin_along_direction.js) <br>*[move → 3d/ray/ray3_shift_origin_along_direction_array.js]* | FIX BUG: origin written at hardcoded offset 0 while direction at output_offset+3; honor output_offset throughout. Suffix _array for offset convention. |
619
+ | `Vector4.multiplyVector3` | `Vector4.multiply` | [Vector4.js](Vector4.js) <br>*[move → Vector4.js]* | Match Vector2/Vector3 multiply; also FIX missing 'return this' (breaks fluent contract). |
620
+ | `aabb3_transformed_compute_plane_side (plane_offset, box-first)` | `aabb3_transformed_compute_plane_side` | [3d/aabb/aabb3_transformed_compute_plane_side.js](3d/aabb/aabb3_transformed_compute_plane_side.js) <br>*[move → 3d/aabb/aabb3_transformed_compute_plane_side.js]* | FIX BUG (signed distance used as truthy bool) + rename plane_offset->plane_constant + make plane-first to match aabb3_compute_plane_side. |
621
+ | `circle_intersects_point` | `circle_contains_point` | [2d/circle/circle_intersects_point.js](2d/circle/circle_intersects_point.js) <br>*[move → 2d/circle/circle_contains_point.js]* | Containment, not intersection; ALSO FIX BUG v2_distance(cx,cx,...) ignoring cy. |
622
+ | `circle_compute_circle_penetration` | `circle_compute_penetration` | [2d/circle/circle_compute_circle_penetration.js](2d/circle/circle_compute_circle_penetration.js) <br>*[move → 2d/circle/circle_compute_penetration.js]* | Redundant circle repetition; ALSO FIX BUG dy = by - ax (should be by - ay). |
623
+ | `TransformedShape3D.isTransformedShape3D (on constructor)` | `TransformedShape3D.prototype.isTransformedShape3D` | [3d/shape/TransformedShape3D.js](3d/shape/TransformedShape3D.js) <br>*[move → 3d/shape/TransformedShape3D.js]* | Marker must be on the prototype like every sibling so instance-side dispatch works. |
624
+ | `triangle_encode_rasterized_depth + triangle_decode_depth (2 exports)` | `triangle_rasterized_depth_sample_index + tri_decode_rasterized_depth (split)` | [3d/tetrahedra/triangle/triangle_encode_rasterized_depth.js](3d/tetrahedra/triangle/triangle_encode_rasterized_depth.js) <br>*[move → 3d/tetrahedra/triangle/triangle_rasterized_depth_sample_index.js]* | 'encode' is misleading (returns a vertex index, not encoded depth); split the mismatched 2nd export (`triangle_decode_depth`) into its own file. (No correctness bug — the "dead return" claim was verified false.) |
625
+ | `compareEdges (not exported, v0 compared twice)` | `compare_edges (ADD export, FIX v1 bug)` | [3d/topology/compareEdges.js](3d/topology/compareEdges.js) <br>*[move → 3d/topology/compare_edges.js]* | Dead (unexported) AND buggy (compares a.v0,b.v0 twice, never v1); export and fix. |
626
+
627
+ ### param-name-vocabulary-drift (7)
628
+
629
+ | old | → new | file | why |
630
+ |-----|-------|------|-----|
631
+ | `vector_copy` | `vector_copy_offset` | [vec/vector_copy.js](vec/vector_copy.js) <br>*[move → vec/vector_copy_offset.js]* | Takes offsets but carried no _offset; align with vector_dot_offset family; rename param length->n. |
632
+ | `vector_dot_offset (params aOff/bOff)` | `vector_dot_offset` | [vec/vector_dot_offset.js](vec/vector_dot_offset.js) <br>*[move → vec/vector_dot_offset.js]* | Name OK; rename camelCase offsets aOff/bOff -> a_offset/b_offset (codebase is snake_case). |
633
+ | `vector_axpy_offset (params yOff/xOff)` | `vector_axpy_offset` | [vec/vector_axpy_offset.js](vec/vector_axpy_offset.js) <br>*[move → vec/vector_axpy_offset.js]* | Name OK; rename yOff/xOff -> y_offset/x_offset. |
634
+ | `m3_determinant (9 scalars)` | `m3_determinant` | [mat3/m3_determinant.js](mat3/m3_determinant.js) <br>*[move → mat3/m3_determinant.js]* | Name OK; change signature to take a 9-element array to match m2_determinant and the rest of mat3 (calling-convention consistency). |
635
+ | `aabb3_transform_oriented_inverse (out/world_aabb/pos_/rot_)` | `aabb3_transform_oriented_inverse` | [3d/aabb/aabb3_transform_oriented_inverse.js](3d/aabb/aabb3_transform_oriented_inverse.js) <br>*[move → 3d/aabb/aabb3_transform_oriented_inverse.js]* | Name OK; align with forward twin: same input form (scalars), result/result_offset names, qx..qw. |
636
+ | `convex_hull_monotone_2d` | `convex_hull_monotone_2d` | [2d/convex-hull/convex_hull_monotone_2d.js](2d/convex-hull/convex_hull_monotone_2d.js) <br>*[move → 2d/convex-hull/convex_hull_monotone_2d.js]* | Name OK; rename param input/points -> points uniformly across hull siblings. |
637
+ | `uv_map_square_to_circle (params x,y)` | `uv_map_square_to_circle` | [2d/uv_map_square_to_circle.js](2d/uv_map_square_to_circle.js) <br>*[move → 2d/uv_map_square_to_circle.js]* | Name OK; rename input params x,y -> u,v to match the inverse uv_map_circle_to_square. |
638
+
639
+ ### nearest-vs-closest-synonym (6)
640
+
641
+ | old | → new | file | why |
642
+ |-----|-------|------|-----|
643
+ | `line3_compute_segment_nearest_point_to_point_t` | `line3_compute_segment_closest_point_t` | [3d/line/line3_compute_segment_nearest_point_to_point_t.js](3d/line/line3_compute_segment_nearest_point_to_point_t.js) <br>*[move → 3d/line/line3_compute_segment_closest_point_t.js]* | nearest->closest; drop to_point stutter; keep _t (returns parameter). |
644
+ | `line3_compute_segment_nearest_point_to_aabb3_t` | `line3_compute_segment_closest_point_to_aabb3_t` | [3d/line/line3_compute_segment_nearest_point_to_aabb3_t.js](3d/line/line3_compute_segment_nearest_point_to_aabb3_t.js) <br>*[move → 3d/line/line3_compute_segment_closest_point_to_aabb3_t.js]* | nearest->closest for consistency. |
645
+ | `ray3_compute_nearest_point_to_point` | `ray3_compute_closest_point` | [3d/ray/ray3_compute_nearest_point_to_point.js](3d/ray/ray3_compute_nearest_point_to_point.js) <br>*[move → 3d/ray/ray3_compute_closest_point.js]* | nearest->closest; drop PointToPoint stutter; provide flat-array+offset sink (v3-object only as wrapper). |
646
+ | `AABB2.computeNearestPointToPoint` | `AABB2.computeClosestPoint` | [2d/aabb/AABB2.js](2d/aabb/AABB2.js) <br>*[move → 2d/aabb/AABB2.js]* | nearest->closest; drop PointToPoint stutter. |
647
+ | `aabb3_nearest_point_on_surface` | `aabb3_closest_point_on_surface` | [3d/aabb/aabb3_nearest_point_on_surface.js](3d/aabb/aabb3_nearest_point_on_surface.js) <br>*[move → 3d/aabb/aabb3_closest_point_on_surface.js]* | nearest->closest; add result_offset; rename r_x/r_y/r_z -> point_x/point_y/point_z. |
648
+ | `qt_query_data_nearest_to_point` | `qt_query_closest_to_point` | [2d/quad-tree/qt_query_data_nearest_to_point.js](2d/quad-tree/qt_query_data_nearest_to_point.js) <br>*[move → 2d/quad-tree/qt_query_closest_to_point.js]* | nearest->closest; drop redundant 'data'. |
649
+
650
+ ### out-param-and-return-shape-divergence (5)
651
+
652
+ | old | → new | file | why |
653
+ |-----|-------|------|-----|
654
+ | `Vector4.readFromArray / writeToArray / setFromArray` | `Vector4.fromArray / toArray` | [Vector4.js](Vector4.js) <br>*[move → Vector4.js]* | Standardize on fromArray/toArray like Vector2/Vector3; remove setFromArray duplicate and the define-then-clobber toArray trap. |
655
+ | `m4_multiply_alphatensor` | `m4_multiply_alphatensor (@deprecated)` | [3d/mat4/m4_multiply_alphatensor.js](3d/mat4/m4_multiply_alphatensor.js) <br>*[move → 3d/mat4/m4_multiply_alphatensor.js]* | Strictly slower duplicate of m4_multiply; mark experimental/deprecated and fix JSDoc params (a_in/b_in). |
656
+ | `box3_raycast vs aabb3_raycast` | `aabb3_raycast_hit_point` | [3d/aabb/aabb3_raycast.js](3d/aabb/aabb3_raycast.js) <br>*[move → 3d/aabb/aabb3_raycast_hit_point.js]* | Disambiguate the legacy bool+position+quantized-normal variant from the canonical distance+exact-normal box3_raycast; encode the contract in the name. |
657
+ | `sphere_raycast` | `sphere_raycast` | [3d/sphere/sphere_raycast.js](3d/sphere/sphere_raycast.js) <br>*[move → 3d/sphere/sphere_raycast.js]* | Keep 'raycast' as the documented distance+normal producer family (box3_raycast/capsule_raycast share it); no rename, listed to lock the family — but document it is the producer counterpart of sphere_intersects_ray. |
658
+ | `ConvexHullShape3D.recompute` | `ConvexHullShape3D.recompute_cached` | [3d/shape/ConvexHullShape3D.js](3d/shape/ConvexHullShape3D.js) <br>*[move → 3d/shape/ConvexHullShape3D.js]* | Match MeshShape3D.recompute_cached for the same derived-state refresh role. |
659
+
660
+ ### sqr-placement-and-companion-coverage (4)
661
+
662
+ | old | → new | file | why |
663
+ |-----|-------|------|-----|
664
+ | `Vector3.lengthSq` | `Vector3.lengthSqr` | [Vector3.js](Vector3.js) <br>*[move → Vector3.js]* | Trailing-_sqr spelling; drop the lengthSq alias. |
665
+ | `Vector3.distanceToSquared` | `Vector3.distanceSqrTo` | [Vector3.js](Vector3.js) <br>*[move → Vector3.js]* | Standardize on _sqr token (distanceSqrTo); drop distanceToSquared alias. |
666
+ | `aabb3_signed_distance_sqr_to_point` | `aabb3_signed_distance_sqr_to_point` | [3d/aabb/aabb3_signed_distance_sqr_to_point.js](3d/aabb/aabb3_signed_distance_sqr_to_point.js) <br>*[move → 3d/aabb/aabb3_signed_distance_sqr_to_point.js]* | Conforms (trailing _sqr); listed as exemplar — add missing aabb3_signed_distance_to_point companion. |
667
+ | `convex_hull_jarvis_2d` | `convex_hull_jarvis_2d` | [2d/convex-hull/convex_hull_jarvis_2d.js](2d/convex-hull/convex_hull_jarvis_2d.js) <br>*[move → 2d/convex-hull/convex_hull_jarvis_2d.js]* | Name OK; rename private dist2_array -> dist_sqr_indexed (2 means squared, banned). |
668
+
669
+ ### vendor-token-three-vs-threejs-vs-geometry (4)
670
+
671
+ | old | → new | file | why |
672
+ |-----|-------|------|-----|
673
+ | `Vector4.threeApplyMatrix4` | `(remove / @deprecated)` | [Vector4.js](Vector4.js) <br>*[move → Vector4.js]* | Vendor-coupled (three.js Matrix4); applyMatrix4 already takes a flat array. Confine vendor types to boundaries. |
674
+ | `aabb3_from_threejs_geometry` | `aabb3_from_three_geometry` | [3d/aabb/aabb3_from_threejs_geometry.js](3d/aabb/aabb3_from_threejs_geometry.js) <br>*[move → 3d/aabb/aabb3_from_three_geometry.js]* | Single vendor token 'three'. |
675
+ | `computeTriangleRayIntersectionBarycentricGeometry` | `tri3_ray_intersection_indexed` | [3d/triangle/computeTriangleRayIntersectionBarycentricGeometry.js](3d/triangle/computeTriangleRayIntersectionBarycentricGeometry.js) <br>*[move → 3d/triangle/tri3_ray_intersection_indexed.js]* | camelCase->snake; 'Geometry' vendor token -> 'indexed' (it takes indices+positions). |
676
+ | `plane3_three_compute_convex_3_plane_intersection` | `plane3_compute_3_plane_intersection_from_three` | [3d/plane/plane3_three_compute_convex_3_plane_intersection.js](3d/plane/plane3_three_compute_convex_3_plane_intersection.js) <br>*[move → 3d/plane/plane3_compute_3_plane_intersection_from_three.js]* | Move vendor token to a clear adapter suffix so 'three' doesn't collide with the count 3; drop 'convex'. |
677
+
678
+ ### casing-of-constants-and-acronyms (2)
679
+
680
+ | old | → new | file | why |
681
+ |-----|-------|------|-----|
682
+ | `aabb3_score_boxes_SAH` | `aabb3_score_boxes_sah` | [3d/aabb/aabb3_score_boxes_SAH.js](3d/aabb/aabb3_score_boxes_SAH.js) <br>*[move → 3d/aabb/aabb3_score_boxes_sah.js]* | Lowercase the embedded acronym to match snake convention; switch to inline export function. |
683
+ | `aabb3_corner_edge_mapping / aabb3_edge_corner_mapping / aabb3_edge_plane_mapping` | `AABB3_CORNER_EDGE_MAPPING (etc.)` | [3d/aabb/aabb3_corner_edge_mapping.js](3d/aabb/aabb3_corner_edge_mapping.js) <br>*[move → 3d/aabb/AABB3_CORNER_EDGE_MAPPING.js]* | Constant lookup tables -> constUpper, matching M4_IDENTITY. |
684
+