@woosh/meep-engine 2.107.0 → 2.108.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 (231) hide show
  1. package/build/bundle-worker-image-decoder.js +1 -1
  2. package/build/meep.cjs +78 -46
  3. package/build/meep.min.js +1 -1
  4. package/build/meep.module.js +78 -47
  5. package/package.json +1 -1
  6. package/src/core/binary/int32_to_binary_string.d.ts +3 -2
  7. package/src/core/binary/int32_to_binary_string.d.ts.map +1 -1
  8. package/src/core/binary/int32_to_binary_string.js +18 -14
  9. package/src/core/binary/split_by_3.spec.d.ts +2 -0
  10. package/src/core/binary/split_by_3.spec.d.ts.map +1 -0
  11. package/src/core/binary/split_by_3.spec.js +22 -0
  12. package/src/core/binary/to_half_float_uint16.d.ts.map +1 -1
  13. package/src/core/binary/to_half_float_uint16.js +7 -5
  14. package/src/core/collection/array/isArrayEqualStrict.d.ts.map +1 -1
  15. package/src/core/collection/array/isArrayEqualStrict.js +2 -2
  16. package/src/core/color/Color.d.ts.map +1 -1
  17. package/src/core/color/Color.js +7 -2
  18. package/src/core/color/hsv/rgb2hsv.d.ts +3 -3
  19. package/src/core/color/hsv/rgb2hsv.d.ts.map +1 -1
  20. package/src/core/color/hsv/rgb2hsv.js +11 -18
  21. package/src/core/color/rgb_to_luminance.d.ts +9 -0
  22. package/src/core/color/rgb_to_luminance.d.ts.map +1 -0
  23. package/src/core/color/rgb_to_luminance.js +10 -0
  24. package/src/core/geom/3d/sphere/harmonics/README.md +16 -2
  25. package/src/core/geom/3d/sphere/harmonics/SH3_COEFFICIENTS.d.ts +6 -0
  26. package/src/core/geom/3d/sphere/harmonics/SH3_COEFFICIENTS.d.ts.map +1 -0
  27. package/src/core/geom/3d/sphere/harmonics/SH3_COEFFICIENTS.js +15 -0
  28. package/src/core/geom/3d/sphere/harmonics/sh3_basis_at.d.ts.map +1 -1
  29. package/src/core/geom/3d/sphere/harmonics/sh3_basis_at.js +21 -9
  30. package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.d.ts +3 -3
  31. package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.d.ts.map +1 -1
  32. package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.js +35 -206
  33. package/src/core/geom/3d/sphere/harmonics/sh3_rotate.d.ts +8 -0
  34. package/src/core/geom/3d/sphere/harmonics/sh3_rotate.d.ts.map +1 -0
  35. package/src/core/geom/3d/sphere/harmonics/sh3_rotate.js +29 -0
  36. package/src/core/geom/3d/sphere/harmonics/sh3_sample_by_direction.js +10 -10
  37. package/src/core/geom/3d/sphere/harmonics/sh_index.d.ts +8 -0
  38. package/src/core/geom/3d/sphere/harmonics/sh_index.d.ts.map +1 -0
  39. package/src/core/geom/3d/sphere/harmonics/sh_index.js +9 -0
  40. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band1.d.ts +8 -0
  41. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band1.d.ts.map +1 -0
  42. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band1.js +44 -0
  43. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band2.d.ts +8 -0
  44. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band2.d.ts.map +1 -0
  45. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band2.js +86 -0
  46. package/src/core/geom/3d/sphere/in_sphere3d_robust.d.ts.map +1 -1
  47. package/src/core/geom/3d/sphere/in_sphere3d_robust.js +2 -1
  48. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts +20 -1
  49. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts.map +1 -1
  50. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.js +53 -7
  51. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.spec.js +2 -2
  52. package/src/core/geom/3d/tetrahedra/build_tetrahedral_mesh_buffer_geometry.d.ts +1 -1
  53. package/src/core/geom/3d/tetrahedra/build_tetrahedral_mesh_buffer_geometry.d.ts.map +1 -1
  54. package/src/core/geom/3d/tetrahedra/build_tetrahedral_mesh_buffer_geometry.js +12 -7
  55. package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.d.ts +13 -0
  56. package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.d.ts.map +1 -0
  57. package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.js +135 -0
  58. package/src/core/geom/3d/tetrahedra/prototypeTetrahedraBuilder.js +38 -24
  59. package/src/core/geom/3d/tetrahedra/{compute_circumsphere.d.ts → tetrahedron_compute_circumsphere.d.ts} +3 -5
  60. package/src/core/geom/3d/tetrahedra/tetrahedron_compute_circumsphere.d.ts.map +1 -0
  61. package/src/core/geom/3d/tetrahedra/{compute_circumsphere.js → tetrahedron_compute_circumsphere.js} +2 -4
  62. package/src/core/geom/3d/tetrahedra/tetrahedron_compute_signed_volume.d.ts.map +1 -1
  63. package/src/core/geom/3d/tetrahedra/tetrahedron_compute_signed_volume.js +3 -1
  64. package/src/core/geom/Vector3.d.ts.map +1 -1
  65. package/src/core/geom/Vector3.js +1 -0
  66. package/src/core/geom/mat3/m3_multiply_vec3.d.ts +8 -0
  67. package/src/core/geom/mat3/m3_multiply_vec3.d.ts.map +1 -0
  68. package/src/core/geom/mat3/m3_multiply_vec3.js +21 -0
  69. package/src/core/geom/vec2/v2_cross_product.d.ts +15 -0
  70. package/src/core/geom/vec2/v2_cross_product.d.ts.map +1 -0
  71. package/src/core/geom/vec2/v2_cross_product.js +21 -0
  72. package/src/core/geom/vec3/v3_slerp.d.ts +1 -0
  73. package/src/core/geom/vec3/v3_slerp.d.ts.map +1 -1
  74. package/src/core/geom/vec3/v3_slerp.js +1 -0
  75. package/src/core/graph/MultiNode.d.ts +1 -1
  76. package/src/core/graph/MultiNode.js +1 -1
  77. package/src/core/graph/WeightedEdge.d.ts +6 -4
  78. package/src/core/graph/WeightedEdge.d.ts.map +1 -1
  79. package/src/core/graph/WeightedEdge.js +3 -0
  80. package/src/core/graph/coloring/colorizeGraph.js +19 -19
  81. package/src/core/graph/convert_graph_to_dot_string.d.ts +1 -1
  82. package/src/core/graph/convert_graph_to_dot_string.d.ts.map +1 -1
  83. package/src/core/graph/convert_graph_to_dot_string.js +10 -6
  84. package/src/core/graph/graph_compute_adjacency_matrix.d.ts +9 -0
  85. package/src/core/graph/graph_compute_adjacency_matrix.d.ts.map +1 -0
  86. package/src/core/graph/{graph_adjacency_matrix.js → graph_compute_adjacency_matrix.js} +1 -2
  87. package/src/core/graph/graph_compute_degree_matrix.d.ts +10 -0
  88. package/src/core/graph/graph_compute_degree_matrix.d.ts.map +1 -0
  89. package/src/core/graph/graph_compute_degree_matrix.js +23 -0
  90. package/src/core/graph/graph_compute_distance_matrix.d.ts +13 -0
  91. package/src/core/graph/graph_compute_distance_matrix.d.ts.map +1 -0
  92. package/src/core/graph/graph_compute_distance_matrix.js +103 -0
  93. package/src/core/graph/{graph_laplacian_matrix.d.ts → graph_compute_laplacian_matrix.d.ts} +2 -2
  94. package/src/core/graph/graph_compute_laplacian_matrix.d.ts.map +1 -0
  95. package/src/core/graph/{graph_laplacian_matrix.js → graph_compute_laplacian_matrix.js} +6 -6
  96. package/src/core/graph/graph_k_means_cluster.d.ts.map +1 -1
  97. package/src/core/graph/graph_k_means_cluster.js +4 -119
  98. package/src/core/graph/{coarsen_graph.d.ts → mn_graph_coarsen.d.ts} +2 -2
  99. package/src/core/graph/mn_graph_coarsen.d.ts.map +1 -0
  100. package/src/core/graph/{coarsen_graph.js → mn_graph_coarsen.js} +1 -1
  101. package/src/core/graph/mn_graph_coarsen.spec.d.ts +2 -0
  102. package/src/core/graph/mn_graph_coarsen.spec.d.ts.map +1 -0
  103. package/src/core/graph/{coarsen_graph.spec.js → mn_graph_coarsen.spec.js} +4 -4
  104. package/src/core/graph/mn_graph_collapse_weighted_edge.d.ts +1 -0
  105. package/src/core/graph/mn_graph_collapse_weighted_edge.d.ts.map +1 -1
  106. package/src/core/graph/mn_graph_collapse_weighted_edge.js +7 -1
  107. package/src/core/math/physics/brdf/brdf_burley.d.ts.map +1 -1
  108. package/src/core/math/physics/brdf/brdf_burley.js +9 -1
  109. package/src/core/math/physics/brdf/{D_GGX.d.ts → diffuse_GGX.d.ts} +2 -2
  110. package/src/core/math/physics/brdf/diffuse_GGX.d.ts.map +1 -0
  111. package/src/core/math/physics/brdf/{D_GGX.js → diffuse_GGX.js} +1 -1
  112. package/src/core/math/physics/brdf/fresnel_Schlick.d.ts +3 -0
  113. package/src/core/math/physics/brdf/fresnel_Schlick.d.ts.map +1 -0
  114. package/src/core/math/physics/brdf/fresnel_Schlick.js +3 -0
  115. package/src/core/math/physics/brdf/fresnel_Schlick_optimized.d.ts +9 -0
  116. package/src/core/math/physics/brdf/fresnel_Schlick_optimized.d.ts.map +1 -0
  117. package/src/core/math/physics/brdf/fresnel_Schlick_optimized.js +12 -0
  118. package/src/core/math/physics/brdf/fresnel_Schlick_original.d.ts +9 -0
  119. package/src/core/math/physics/brdf/fresnel_Schlick_original.d.ts.map +1 -0
  120. package/src/core/math/physics/brdf/fresnel_Schlick_original.js +10 -0
  121. package/src/core/math/physics/bsdf/bsdf_schlick.d.ts.map +1 -1
  122. package/src/core/math/physics/bsdf/bsdf_schlick.js +3 -11
  123. package/src/core/math/physics/ior_to_reflectivity.d.ts +7 -0
  124. package/src/core/math/physics/ior_to_reflectivity.d.ts.map +1 -0
  125. package/src/core/math/physics/ior_to_reflectivity.js +9 -0
  126. package/src/core/math/physics/pdf/README.md +1 -0
  127. package/src/core/math/physics/pdf/pdf_GGX.d.ts +16 -0
  128. package/src/core/math/physics/pdf/pdf_GGX.d.ts.map +1 -0
  129. package/src/core/math/physics/pdf/pdf_GGX.js +25 -0
  130. package/src/core/math/physics/reflectivity_to_ior.d.ts +7 -0
  131. package/src/core/math/physics/reflectivity_to_ior.d.ts.map +1 -0
  132. package/src/core/math/physics/reflectivity_to_ior.js +8 -0
  133. package/src/engine/EngineHarness.d.ts +10 -1
  134. package/src/engine/EngineHarness.d.ts.map +1 -1
  135. package/src/engine/EngineHarness.js +16 -11
  136. package/src/engine/asset/loaders/image/png/PNGReader.d.ts +25 -11
  137. package/src/engine/asset/loaders/image/png/PNGReader.d.ts.map +1 -1
  138. package/src/engine/asset/loaders/image/png/PNGReader.js +38 -24
  139. package/src/engine/asset/loaders/material/TextureAttachmensByMaterialType.js +2 -0
  140. package/src/engine/graphics/GraphicsEngine.js +1 -1
  141. package/src/engine/graphics/ecs/light/LightSystem.d.ts.map +1 -1
  142. package/src/engine/graphics/ecs/light/LightSystem.js +2 -3
  143. package/src/engine/graphics/ecs/light/binding/three/ThreeLightBinding.d.ts +6 -0
  144. package/src/engine/graphics/ecs/light/binding/three/ThreeLightBinding.d.ts.map +1 -1
  145. package/src/engine/graphics/ecs/light/binding/three/ThreeLightBinding.js +22 -11
  146. package/src/engine/graphics/render/forward_plus/model/DirectionalLight.d.ts.map +1 -1
  147. package/src/engine/graphics/render/forward_plus/model/DirectionalLight.js +25 -25
  148. package/src/engine/graphics/sh3/fromCubeRenderTarget.d.ts +9 -0
  149. package/src/engine/graphics/sh3/fromCubeRenderTarget.d.ts.map +1 -0
  150. package/src/engine/graphics/sh3/fromCubeRenderTarget.js +145 -0
  151. package/src/engine/graphics/sh3/gi/tetrahedral_mesh_to_texture.d.ts +8 -0
  152. package/src/engine/graphics/sh3/gi/tetrahedral_mesh_to_texture.d.ts.map +1 -0
  153. package/src/engine/graphics/sh3/gi/tetrahedral_mesh_to_texture.js +51 -0
  154. package/src/engine/graphics/sh3/{LightProbeVolume.d.ts → lpv/LightProbeVolume.d.ts} +18 -7
  155. package/src/engine/graphics/sh3/lpv/LightProbeVolume.d.ts.map +1 -0
  156. package/src/engine/graphics/sh3/lpv/LightProbeVolume.js +340 -0
  157. package/src/engine/graphics/sh3/lpv/LightProbeVolumeSerializationAdapter.d.ts +18 -0
  158. package/src/engine/graphics/sh3/lpv/LightProbeVolumeSerializationAdapter.d.ts.map +1 -0
  159. package/src/engine/graphics/sh3/lpv/LightProbeVolumeSerializationAdapter.js +44 -0
  160. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts +12 -0
  161. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts.map +1 -0
  162. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.js +123 -0
  163. package/src/engine/graphics/sh3/lpv/ProbeRenderer.d.ts +29 -0
  164. package/src/engine/graphics/sh3/lpv/ProbeRenderer.d.ts.map +1 -0
  165. package/src/engine/graphics/sh3/lpv/ProbeRenderer.js +35 -0
  166. package/src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.d.ts +27 -0
  167. package/src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.d.ts.map +1 -0
  168. package/src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.js +158 -0
  169. package/src/engine/graphics/sh3/lpv/build_probes_for_scene.d.ts +11 -0
  170. package/src/engine/graphics/sh3/lpv/build_probes_for_scene.d.ts.map +1 -0
  171. package/src/engine/graphics/sh3/lpv/build_probes_for_scene.js +127 -0
  172. package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.d.ts +12 -0
  173. package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.d.ts.map +1 -0
  174. package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.js +89 -0
  175. package/src/engine/graphics/sh3/path_tracer/PathTracedScene.d.ts +90 -0
  176. package/src/engine/graphics/sh3/path_tracer/PathTracedScene.d.ts.map +1 -0
  177. package/src/engine/graphics/sh3/path_tracer/PathTracedScene.js +352 -0
  178. package/src/engine/graphics/sh3/path_tracer/PathTracer.d.ts +5 -91
  179. package/src/engine/graphics/sh3/path_tracer/PathTracer.d.ts.map +1 -1
  180. package/src/engine/graphics/sh3/path_tracer/PathTracer.js +41 -477
  181. package/src/engine/graphics/sh3/path_tracer/make_one_vector3.d.ts +1 -0
  182. package/src/engine/graphics/sh3/path_tracer/make_one_vector3.d.ts.map +1 -1
  183. package/src/engine/graphics/sh3/path_tracer/make_one_vector3.js +6 -3
  184. package/src/engine/graphics/sh3/path_tracer/prototypePathTracer.js +26 -58
  185. package/src/engine/graphics/sh3/path_tracer/random_in_hemisphere.d.ts.map +1 -1
  186. package/src/engine/graphics/sh3/path_tracer/random_in_hemisphere.js +7 -1
  187. package/src/engine/graphics/sh3/path_tracer/sample_triangle_attribute.d.ts +2 -2
  188. package/src/engine/graphics/sh3/path_tracer/sample_triangle_attribute.d.ts.map +1 -1
  189. package/src/engine/graphics/sh3/path_tracer/sample_triangle_attribute.js +1 -1
  190. package/src/engine/graphics/sh3/path_tracer/texture/SoftwareTextureCache.d.ts +3 -0
  191. package/src/engine/graphics/sh3/path_tracer/texture/SoftwareTextureCache.d.ts.map +1 -0
  192. package/src/engine/graphics/sh3/path_tracer/texture/SoftwareTextureCache.js +3 -0
  193. package/src/engine/graphics/sh3/path_tracer/texture/apply_texture_clamping_to_coordinate.d.ts.map +1 -0
  194. package/src/engine/graphics/sh3/path_tracer/{apply_texture_clamping_to_coordinate.js → texture/apply_texture_clamping_to_coordinate.js} +2 -2
  195. package/src/engine/graphics/sh3/path_tracer/texture/sample_material.d.ts +11 -0
  196. package/src/engine/graphics/sh3/path_tracer/texture/sample_material.d.ts.map +1 -0
  197. package/src/engine/graphics/sh3/path_tracer/texture/sample_material.js +86 -0
  198. package/src/engine/graphics/sh3/path_tracer/texture/sample_texture.d.ts +10 -0
  199. package/src/engine/graphics/sh3/path_tracer/texture/sample_texture.d.ts.map +1 -0
  200. package/src/engine/graphics/sh3/path_tracer/texture/sample_texture.js +56 -0
  201. package/src/engine/graphics/sh3/prototypeSH3Probe.js +87 -195
  202. package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.d.ts +5 -5
  203. package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.d.ts.map +1 -1
  204. package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.js +8 -8
  205. package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.d.ts +13 -0
  206. package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.d.ts.map +1 -0
  207. package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.js +54 -0
  208. package/src/engine/graphics/texture/AttributeDataTexture.d.ts +2 -2
  209. package/src/engine/graphics/texture/AttributeDataTexture.d.ts.map +1 -1
  210. package/src/engine/graphics/texture/AttributeDataTexture.js +11 -11
  211. package/src/engine/input/ecs/systems/InputControllerSystem.js +1 -1
  212. package/src/view/elements/ColorPickerView.d.ts.map +1 -1
  213. package/src/view/elements/ColorPickerView.js +7 -7
  214. package/src/core/geom/3d/tetrahedra/compute_circumsphere.d.ts.map +0 -1
  215. package/src/core/graph/coarsen_graph.d.ts.map +0 -1
  216. package/src/core/graph/coarsen_graph.spec.d.ts +0 -2
  217. package/src/core/graph/coarsen_graph.spec.d.ts.map +0 -1
  218. package/src/core/graph/graph_adjacency_matrix.d.ts +0 -9
  219. package/src/core/graph/graph_adjacency_matrix.d.ts.map +0 -1
  220. package/src/core/graph/graph_degree_matrix.d.ts +0 -9
  221. package/src/core/graph/graph_degree_matrix.d.ts.map +0 -1
  222. package/src/core/graph/graph_degree_matrix.js +0 -18
  223. package/src/core/graph/graph_laplacian_matrix.d.ts.map +0 -1
  224. package/src/core/math/physics/brdf/D_GGX.d.ts.map +0 -1
  225. package/src/engine/graphics/sh3/LightProbeVolume.d.ts.map +0 -1
  226. package/src/engine/graphics/sh3/LightProbeVolume.js +0 -609
  227. package/src/engine/graphics/sh3/path_tracer/apply_texture_clamping_to_coordinate.d.ts.map +0 -1
  228. package/src/engine/graphics/sh3/visualise_probe.d.ts +0 -12
  229. package/src/engine/graphics/sh3/visualise_probe.d.ts.map +0 -1
  230. package/src/engine/graphics/sh3/visualise_probe.js +0 -40
  231. /package/src/engine/graphics/sh3/path_tracer/{apply_texture_clamping_to_coordinate.d.ts → texture/apply_texture_clamping_to_coordinate.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Vector3.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Vector3.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Vector3.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Vector3.js"],"names":[],"mappings":"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"}
@@ -598,6 +598,7 @@ class Vector3 {
598
598
  const y = this.y;
599
599
  const z = this.z;
600
600
 
601
+ // This is just 3x3 matrix multiplication
601
602
  const _x = m4[0] * x + m4[4] * y + m4[8] * z;
602
603
  const _y = m4[1] * x + m4[5] * y + m4[9] * z;
603
604
  const _z = m4[2] * x + m4[6] * y + m4[10] * z;
@@ -0,0 +1,8 @@
1
+ /**
2
+ *
3
+ * @param {mat3} out
4
+ * @param {mat3} a
5
+ * @param {vec3} v
6
+ */
7
+ export function m3_multiply_vec3(out: mat3, a: mat3, v: vec3): void;
8
+ //# sourceMappingURL=m3_multiply_vec3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"m3_multiply_vec3.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/mat3/m3_multiply_vec3.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,oEAcC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ *
3
+ * @param {mat3} out
4
+ * @param {mat3} a
5
+ * @param {vec3} v
6
+ */
7
+ export function m3_multiply_vec3(out, a, v) {
8
+ const x = v[0];
9
+ const y = v[1];
10
+ const z = v[2];
11
+
12
+ out[0] = x * a[0];
13
+ out[1] = x * a[1];
14
+ out[2] = x * a[2];
15
+ out[3] = y * a[3];
16
+ out[4] = y * a[4];
17
+ out[5] = y * a[5];
18
+ out[6] = z * a[6];
19
+ out[7] = z * a[7];
20
+ out[8] = z * a[8];
21
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Not really a cross-product, since that doesn't exist in 2d.
3
+ * We imagine Z to be 0, and essentially do a 3d vector cross product
4
+ * Also known as "perpendicular dot product"
5
+ * Also known as "exterior product"
6
+ * Also known as "determinant"
7
+ * Also known as "wedge product"
8
+ * @param {number} x0
9
+ * @param {number} y0
10
+ * @param {number} x1
11
+ * @param {number} y1
12
+ * @return {number}
13
+ */
14
+ export function v2_cross_product(x0: number, y0: number, x1: number, y1: number): number;
15
+ //# sourceMappingURL=v2_cross_product.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v2_cross_product.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec2/v2_cross_product.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,qCANW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACL,MAAM,CASjB"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Not really a cross-product, since that doesn't exist in 2d.
3
+ * We imagine Z to be 0, and essentially do a 3d vector cross product
4
+ * Also known as "perpendicular dot product"
5
+ * Also known as "exterior product"
6
+ * Also known as "determinant"
7
+ * Also known as "wedge product"
8
+ * @param {number} x0
9
+ * @param {number} y0
10
+ * @param {number} x1
11
+ * @param {number} y1
12
+ * @return {number}
13
+ */
14
+ export function v2_cross_product(
15
+ x0, y0,
16
+ x1, y1
17
+ ) {
18
+
19
+ return x0 * y1 - y0 * x1;
20
+
21
+ }
@@ -1,5 +1,6 @@
1
1
  /**
2
2
  * Spherical linear interpolation
3
+ * NOTE: vectors are assumed to be normalized
3
4
  * @see https://en.wikipedia.org/wiki/Slerp
4
5
  * @param {Vector3} result
5
6
  * @param {number} a_x
@@ -1 +1 @@
1
- {"version":3,"file":"v3_slerp.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec3/v3_slerp.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;GAWG;AACH,+CARW,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,YACN,MAAM,QAkChB"}
1
+ {"version":3,"file":"v3_slerp.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec3/v3_slerp.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;GAYG;AACH,+CARW,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,YACN,MAAM,QAkChB"}
@@ -3,6 +3,7 @@ import { v3_lerp } from "./v3_lerp.js";
3
3
 
4
4
  /**
5
5
  * Spherical linear interpolation
6
+ * NOTE: vectors are assumed to be normalized
6
7
  * @see https://en.wikipedia.org/wiki/Slerp
7
8
  * @param {Vector3} result
8
9
  * @param {number} a_x
@@ -15,7 +15,7 @@ export class MultiNode<T> {
15
15
  */
16
16
  source_nodes: T[];
17
17
  /**
18
- *
18
+ * Absorb nodes from another node
19
19
  * @param {MultiNode<T>} other
20
20
  */
21
21
  add(other: MultiNode<T>): void;
@@ -10,7 +10,7 @@ export class MultiNode {
10
10
  source_nodes = [];
11
11
 
12
12
  /**
13
- *
13
+ * Absorb nodes from another node
14
14
  * @param {MultiNode<T>} other
15
15
  */
16
16
  add(other) {
@@ -1,17 +1,19 @@
1
- export class WeightedEdge extends Edge<any> {
1
+ /**
2
+ * @template T
3
+ */
4
+ export class WeightedEdge<T> extends Edge<any> {
2
5
  /**
3
6
  *
4
7
  * @param {WeightedEdge} e
5
8
  * @returns {number}
6
9
  */
7
- static extractWeight(e: WeightedEdge): number;
10
+ static extractWeight(e: WeightedEdge<any>): number;
8
11
  /**
9
12
  *
10
13
  * @param {WeightedEdge} e
11
14
  * @returns {number}
12
15
  */
13
- static extractNegativeWeight(e: WeightedEdge): number;
14
- constructor(a: N, b: N);
16
+ static extractNegativeWeight(e: WeightedEdge<any>): number;
15
17
  /**
16
18
  *
17
19
  * @type {number}
@@ -1 +1 @@
1
- {"version":3,"file":"WeightedEdge.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/WeightedEdge.js"],"names":[],"mappings":"AAEA;IAOI;;;;OAIG;IACH,wBAHW,YAAY,GACV,MAAM,CAIlB;IAED;;;;OAIG;IACH,gCAHW,YAAY,GACV,MAAM,CAIlB;IAbe,wBAeyO;IAxBzP;;;OAGG;IACH,QAFU,MAAM,CAEL;CAmBd;qBA1BoB,WAAW"}
1
+ {"version":3,"file":"WeightedEdge.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/WeightedEdge.js"],"names":[],"mappings":"AAEA;;GAEG;AACH;IAOI;;;;OAIG;IACH,4CAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,oDAFa,MAAM,CAIlB;IAtBD;;;OAGG;IACH,QAFU,MAAM,CAEL;CAmBd;qBA7BoB,WAAW"}
@@ -1,5 +1,8 @@
1
1
  import { Edge } from "./Edge.js";
2
2
 
3
+ /**
4
+ * @template T
5
+ */
3
6
  export class WeightedEdge extends Edge {
4
7
  /**
5
8
  *
@@ -97,7 +97,7 @@ function updateNN(NN, a, vertexCount, colors, colorNumber) {
97
97
 
98
98
  const columnAddress = i * vertexCount;
99
99
 
100
- for (var j = 0; j < NN.length; j++) {
100
+ for (let j = 0; j < NN.length; j++) {
101
101
 
102
102
 
103
103
  while (a[columnAddress + NN[j]] === 1) {
@@ -121,25 +121,25 @@ function updateNN(NN, a, vertexCount, colors, colorNumber) {
121
121
  * @return {number[]}
122
122
  */
123
123
  function findSuitableY(vertexCount, a, NN, color, colorNumber) {
124
- var temp, tmp_y, y = 0;
124
+ let temp, tmp_y, y = 0;
125
125
 
126
- var scanned = [];
126
+ const scanned = [];
127
127
 
128
128
  let VerticesInCommon = 0;
129
129
 
130
- for (var i = 0; i < NN.length; i++) {
130
+ for (let i = 0; i < NN.length; i++) {
131
131
  tmp_y = NN[i];
132
132
  temp = 0;
133
133
 
134
- for (var f = 0; f < vertexCount; f++) {
134
+ for (let f = 0; f < vertexCount; f++) {
135
135
  scanned[f] = 0;
136
136
  }
137
137
 
138
- for (var x = 0; x < vertexCount; x++) {
138
+ for (let x = 0; x < vertexCount; x++) {
139
139
 
140
140
  if (color[x] === colorNumber) {
141
141
 
142
- for (var k = 0; k < vertexCount; k++) {
142
+ for (let k = 0; k < vertexCount; k++) {
143
143
 
144
144
  if (color[k] === 0 && scanned[k] === 0) {
145
145
 
@@ -174,12 +174,12 @@ function findSuitableY(vertexCount, a, NN, color, colorNumber) {
174
174
  */
175
175
  function computeMaxDegreeInNN(NN, colors, degree) {
176
176
 
177
- var max = -1;
178
- var max_i, i;
177
+ let max = -1;
178
+ let max_i, i;
179
179
 
180
180
  const l = NN.length;
181
181
 
182
- for (var k = 0; k < l; k++) {
182
+ for (let k = 0; k < l; k++) {
183
183
  i = NN[k];
184
184
 
185
185
  if ((colors[i] === 0) && (degree[i] > max)) {
@@ -201,15 +201,15 @@ function computeMaxDegreeInNN(NN, colors, degree) {
201
201
  function colorizing(a, vertexCount) {
202
202
  const NN = [];
203
203
 
204
- var colors = [];
205
- var degrees = [];
204
+ const colors = [];
205
+ const degrees = [];
206
206
 
207
- for (var i = 0; i < vertexCount; i++) {
207
+ for (let i = 0; i < vertexCount; i++) {
208
208
 
209
209
  colors[i] = 0;
210
210
  degrees[i] = 0;
211
211
 
212
- for (var j = 0; j < vertexCount; j++) {
212
+ for (let j = 0; j < vertexCount; j++) {
213
213
  const address = i * vertexCount + j;
214
214
 
215
215
  if (a[address] === 1) {
@@ -220,11 +220,11 @@ function colorizing(a, vertexCount) {
220
220
 
221
221
  }
222
222
 
223
- var x, y;
224
- var result;
225
- var colorNumber = 0;
226
- var VerticesInCommon = 0;
227
- var unprocessed = vertexCount;
223
+ let x, y;
224
+ let result;
225
+ let colorNumber = 0;
226
+ let VerticesInCommon = 0;
227
+ let unprocessed = vertexCount;
228
228
 
229
229
  while (unprocessed > 0) {
230
230
  x = computeMaxDegreeVertex(vertexCount, colors, degrees);
@@ -1,6 +1,6 @@
1
1
  /**
2
- * @template Node
3
2
  * Build a Graphviz DOT representation of the graph
3
+ * @template Node
4
4
  * @param {Graph<Node>} graph
5
5
  * @param {function(Node):string} nodeToDot
6
6
  * @returns {string}
@@ -1 +1 @@
1
- {"version":3,"file":"convert_graph_to_dot_string.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/convert_graph_to_dot_string.js"],"names":[],"mappings":"AAQA;;;;;;GAMG;AACH,0FAFa,MAAM,CAgElB"}
1
+ {"version":3,"file":"convert_graph_to_dot_string.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/convert_graph_to_dot_string.js"],"names":[],"mappings":"AAYA;;;;;;GAMG;AACH,0FAFa,MAAM,CAgElB"}
@@ -1,22 +1,26 @@
1
1
  import LineBuilder from "../codegen/LineBuilder.js";
2
2
  import { EdgeDirectionType } from "./Edge.js";
3
3
 
4
-
5
- function defaultNodeToDot(node){
4
+ /**
5
+ * @template T
6
+ * @param {T} node
7
+ * @return {string}
8
+ */
9
+ function defaultNodeToDot(node) {
6
10
  return `[label="${node.toString()}"]`;
7
11
  }
8
12
 
9
13
  /**
10
- * @template Node
11
14
  * Build a Graphviz DOT representation of the graph
15
+ * @template Node
12
16
  * @param {Graph<Node>} graph
13
17
  * @param {function(Node):string} nodeToDot
14
18
  * @returns {string}
15
19
  */
16
20
  export function convert_graph_to_dot_string({
17
- graph,
18
- nodeToDot=defaultNodeToDot
19
- }) {
21
+ graph,
22
+ nodeToDot = defaultNodeToDot
23
+ }) {
20
24
  const lb = new LineBuilder();
21
25
 
22
26
  lb.add('strict digraph Graph {');
@@ -0,0 +1,9 @@
1
+ /**
2
+ * NOTE: does not clear matrix before writing adjacency
3
+ * @template T
4
+ * @param {Graph<T>} graph
5
+ * @param {SquareMatrix} result
6
+ * @param {Map<T,number>} node_indices
7
+ */
8
+ export function graph_compute_adjacency_matrix<T>(graph: Graph<T>, result: SquareMatrix, node_indices: Map<T, number>): void;
9
+ //# sourceMappingURL=graph_compute_adjacency_matrix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph_compute_adjacency_matrix.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/graph_compute_adjacency_matrix.js"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,6HAUC"}
@@ -1,4 +1,3 @@
1
- //
2
1
 
3
2
 
4
3
  /**
@@ -8,7 +7,7 @@
8
7
  * @param {SquareMatrix} result
9
8
  * @param {Map<T,number>} node_indices
10
9
  */
11
- export function graph_adjacency_matrix(graph, result, node_indices) {
10
+ export function graph_compute_adjacency_matrix(graph, result, node_indices) {
12
11
  const edges = graph.getEdges();
13
12
 
14
13
  for (const edge of edges) {
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Builds a matrix with node cardinality for each Node, that is, number of edges attached to each Node
3
+ * NOTE: does not clear matrix before writing
4
+ * @template T
5
+ * @param {Graph<T>} graph
6
+ * @param {SquareMatrix} result Where to store the result
7
+ * @param {Map<T,number>} node_indices de-referencing dictionary from Node to unsigned integer index
8
+ */
9
+ export function graph_compute_degree_matrix<T>(graph: Graph<T>, result: SquareMatrix, node_indices: Map<T, number>): void;
10
+ //# sourceMappingURL=graph_compute_degree_matrix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph_compute_degree_matrix.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/graph_compute_degree_matrix.js"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,0HAYC"}
@@ -0,0 +1,23 @@
1
+ import { assert } from "../assert.js";
2
+
3
+ /**
4
+ * Builds a matrix with node cardinality for each Node, that is, number of edges attached to each Node
5
+ * NOTE: does not clear matrix before writing
6
+ * @template T
7
+ * @param {Graph<T>} graph
8
+ * @param {SquareMatrix} result Where to store the result
9
+ * @param {Map<T,number>} node_indices de-referencing dictionary from Node to unsigned integer index
10
+ */
11
+ export function graph_compute_degree_matrix(graph, result, node_indices) {
12
+ const nodes = graph.getNodes();
13
+
14
+ for (const node of nodes) {
15
+ const node_index = node_indices.get(node);
16
+
17
+ assert.isNonNegativeInteger(node_index, 'index');
18
+
19
+ const degree = graph.getNodeDegree(node);
20
+
21
+ result.setCellValue(node_index, node_index, degree);
22
+ }
23
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Produce a distance matrix from an input graph, tracing distances from each node to every node specified in target vector
3
+ * @see "A Fast Algorithm to Find All-Pairs Shortest Paths in Complex Networks" by Wei Peng et Al. 2012
4
+ * @template T
5
+ * @param {Graph<T>} graph
6
+ * @param {T[]} node_array graph nodes as an array
7
+ * @param {number[]} targets node indices, distances to which need to be calculated
8
+ * @param {Map<T, number>} node_index_map
9
+ * @returns {SquareMatrix}
10
+ */
11
+ export function graph_compute_distance_matrix<T>(graph: Graph<T>, node_array: T[], targets: number[], node_index_map: Map<T, number>): SquareMatrix;
12
+ import { SquareMatrix } from "./SquareMatrix.js";
13
+ //# sourceMappingURL=graph_compute_distance_matrix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph_compute_distance_matrix.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/graph_compute_distance_matrix.js"],"names":[],"mappings":"AAKA;;;;;;;;;GASG;AACH,4FAJW,MAAM,EAAE,mCAEN,YAAY,CAyFxB;6BAnG4B,mBAAmB"}
@@ -0,0 +1,103 @@
1
+ import { BitSet } from "../binary/BitSet.js";
2
+ import { BinaryDataType } from "../binary/type/BinaryDataType.js";
3
+ import FastBinaryHeap from "../collection/heap/FastBinaryHeap.js";
4
+ import { SquareMatrix } from "./SquareMatrix.js";
5
+
6
+ /**
7
+ * Produce a distance matrix from an input graph, tracing distances from each node to every node specified in target vector
8
+ * @see "A Fast Algorithm to Find All-Pairs Shortest Paths in Complex Networks" by Wei Peng et Al. 2012
9
+ * @template T
10
+ * @param {Graph<T>} graph
11
+ * @param {T[]} node_array graph nodes as an array
12
+ * @param {number[]} targets node indices, distances to which need to be calculated
13
+ * @param {Map<T, number>} node_index_map
14
+ * @returns {SquareMatrix}
15
+ */
16
+ export function graph_compute_distance_matrix(graph, node_array, targets, node_index_map) {
17
+ const node_count = node_array.length;
18
+
19
+ const m_distances = new SquareMatrix(node_count, BinaryDataType.Float32);
20
+
21
+ const flags = BitSet.fixedSize(node_count);
22
+
23
+ // initialize distances
24
+ m_distances.fill(Number.POSITIVE_INFINITY);
25
+
26
+ let source_node;
27
+
28
+ /**
29
+ *
30
+ * @param {number} other_node
31
+ * @returns {number}
32
+ */
33
+ function score(other_node) {
34
+ return m_distances.getCellValue(source_node, other_node);
35
+ }
36
+
37
+ for (let i = 0; i < targets.length; i++) {
38
+ source_node = targets[i];
39
+
40
+ // distance to self is always 0
41
+ m_distances.setCellValue(source_node, source_node, 0);
42
+
43
+ const heap = new FastBinaryHeap(score);
44
+ heap.push(source_node);
45
+
46
+ while (!heap.isEmpty()) {
47
+ const t = heap.pop();
48
+
49
+ const distance_to_this_node = m_distances.getCellValue(source_node, t);
50
+ if (flags.get(t)) {
51
+ // already visited
52
+ for (let v = 0; v < node_count; v++) {
53
+ const shortcut_distance = distance_to_this_node + m_distances.getCellValue(t, v);
54
+
55
+ if (shortcut_distance < m_distances.getCellValue(source_node, v)) {
56
+ m_distances.setCellValue(source_node, v, shortcut_distance)
57
+ }
58
+
59
+ }
60
+ } else {
61
+ // not visited yet
62
+ const t_node = node_array[t];
63
+
64
+ const t_node_container = graph.getNodeContainer(t_node);
65
+
66
+ const node_edges = t_node_container.getEdges();
67
+ const node_edge_count = node_edges.length;
68
+
69
+ for (let i1 = 0; i1 < node_edge_count; i1++) {
70
+
71
+ /**
72
+ *
73
+ * @type {WeightedEdge<N>}
74
+ */
75
+ const node_edge = node_edges[i1];
76
+
77
+ const neighbour_node = node_edge.other(t_node);
78
+
79
+ const neighbour_node_index = node_index_map.get(neighbour_node);
80
+
81
+ if (neighbour_node_index === -1) {
82
+ // not in the input set
83
+ continue;
84
+ }
85
+
86
+ const transition_cost = node_edge.weight + 1e-5;
87
+
88
+ const distance_to_neighbour = distance_to_this_node + transition_cost;
89
+
90
+ if (distance_to_neighbour < m_distances.getCellValue(source_node, neighbour_node_index)) {
91
+ m_distances.setCellValue(source_node, neighbour_node_index, distance_to_neighbour);
92
+
93
+ heap.push(neighbour_node_index);
94
+ }
95
+ }
96
+ }
97
+ }
98
+
99
+ flags.set(source_node, true);
100
+ }
101
+
102
+ return m_distances;
103
+ }
@@ -6,6 +6,6 @@
6
6
  * @param {SquareMatrix} result
7
7
  * @param {Map<T,number>} node_indices
8
8
  */
9
- export function graph_laplacian_matrix<T>(graph: Graph<T>, result: SquareMatrix, node_indices: Map<T, number>): void;
9
+ export function graph_compute_laplacian_matrix<T>(graph: Graph<T>, result: SquareMatrix, node_indices: Map<T, number>): void;
10
10
  import { SquareMatrix } from "./SquareMatrix.js";
11
- //# sourceMappingURL=graph_laplacian_matrix.d.ts.map
11
+ //# sourceMappingURL=graph_compute_laplacian_matrix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph_compute_laplacian_matrix.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/graph_compute_laplacian_matrix.js"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,2EAHW,YAAY,sCAWtB;6BAlB4B,mBAAmB"}
@@ -1,7 +1,7 @@
1
- import { graph_degree_matrix } from "./graph_degree_matrix.js";
2
- import { SquareMatrix } from "./SquareMatrix.js";
3
1
  import { BinaryDataType } from "../binary/type/BinaryDataType.js";
4
- import { graph_adjacency_matrix } from "./graph_adjacency_matrix.js";
2
+ import { graph_compute_adjacency_matrix } from "./graph_compute_adjacency_matrix.js";
3
+ import { graph_compute_degree_matrix } from "./graph_compute_degree_matrix.js";
4
+ import { SquareMatrix } from "./SquareMatrix.js";
5
5
 
6
6
  /**
7
7
  * Laplacian matrix (graph Laplacian)
@@ -11,12 +11,12 @@ import { graph_adjacency_matrix } from "./graph_adjacency_matrix.js";
11
11
  * @param {SquareMatrix} result
12
12
  * @param {Map<T,number>} node_indices
13
13
  */
14
- export function graph_laplacian_matrix(graph, result, node_indices) {
14
+ export function graph_compute_laplacian_matrix(graph, result, node_indices) {
15
15
  const degree = new SquareMatrix(result.size, BinaryDataType.Uint8);
16
16
  const adjacency = new SquareMatrix(result.size, BinaryDataType.Uint8);
17
17
 
18
- graph_degree_matrix(graph, degree, node_indices);
19
- graph_adjacency_matrix(graph, adjacency, node_indices);
18
+ graph_compute_degree_matrix(graph, degree, node_indices);
19
+ graph_compute_adjacency_matrix(graph, adjacency, node_indices);
20
20
 
21
21
  result.subtractMatrices(degree, adjacency);
22
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"graph_k_means_cluster.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/graph_k_means_cluster.js"],"names":[],"mappings":"AAyHA;;;;;;;;GAQG;AACH,2DARW,cAAc,KACd,MAAM,eACN,MAAM,4BACN,MAAM,EAAE,GAAC,UAAU,GAAC,WAAW,GAAC,WAAW,kBAC3C,OAAO,MAAM,CAAC,+BAEZ,MAAM,EAAE,EAAE,CA2EtB;AAED;;;;;;;GAOG;AACH,6DAJW,MAAM,eACN,MAAM,GACJ,MAAM,EAAE,EAAE,CA0BtB"}
1
+ {"version":3,"file":"graph_k_means_cluster.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/graph_k_means_cluster.js"],"names":[],"mappings":"AAMA;;;;;;;;GAQG;AACH,2DARW,cAAc,KACd,MAAM,eACN,MAAM,4BACN,MAAM,EAAE,GAAC,UAAU,GAAC,WAAW,GAAC,WAAW,kBAC3C,OAAO,MAAM,CAAC,+BAEZ,MAAM,EAAE,EAAE,CA2EtB;AAED;;;;;;;GAOG;AACH,6DAJW,MAAM,eACN,MAAM,GACJ,MAAM,EAAE,EAAE,CA0BtB"}