@woosh/meep-engine 2.110.8 → 2.110.10

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 (210) hide show
  1. package/build/bundle-worker-terrain.js +1 -1
  2. package/build/meep.cjs +116 -107
  3. package/build/meep.min.js +1 -1
  4. package/build/meep.module.js +116 -107
  5. package/editor/tools/v2/TransformControls.js +11 -6
  6. package/package.json +2 -1
  7. package/src/core/UUID.d.ts +3 -0
  8. package/src/core/UUID.d.ts.map +1 -1
  9. package/src/core/UUID.js +9 -7
  10. package/src/core/collection/array/arraySetDiff.d.ts.map +1 -1
  11. package/src/core/collection/array/arraySetDiff.js +0 -1
  12. package/src/core/collection/array/binarySearchHighIndex.d.ts.map +1 -1
  13. package/src/core/collection/array/binarySearchHighIndex.js +7 -1
  14. package/src/core/collection/array/computeHashArray.d.ts.map +1 -1
  15. package/src/core/collection/array/computeHashArray.js +3 -2
  16. package/src/core/collection/array/fastArrayEquals.d.ts +1 -0
  17. package/src/core/collection/array/fastArrayEquals.d.ts.map +1 -1
  18. package/src/core/collection/array/fastArrayEquals.js +1 -0
  19. package/src/core/collection/array/isArrayEqual.d.ts.map +1 -1
  20. package/src/core/collection/array/isArrayEqual.js +9 -12
  21. package/src/core/collection/array/isArrayEqual.spec.d.ts +2 -0
  22. package/src/core/collection/array/isArrayEqual.spec.d.ts.map +1 -0
  23. package/src/core/collection/array/isArrayEqual.spec.js +25 -0
  24. package/src/core/collection/array/typed/is_typed_array_equals.d.ts.map +1 -1
  25. package/src/core/collection/array/typed/is_typed_array_equals.js +1 -0
  26. package/src/core/function/makeSequenceLoop.d.ts.map +1 -0
  27. package/src/core/geom/2d/aabb/AABB2.d.ts.map +1 -1
  28. package/src/core/geom/2d/aabb/AABB2.js +27 -1
  29. package/src/core/geom/3d/shape/AbstractShape3D.d.ts.map +1 -1
  30. package/src/core/geom/3d/shape/AbstractShape3D.js +14 -0
  31. package/src/core/geom/3d/shape/PointShape3D.d.ts +9 -0
  32. package/src/core/geom/3d/shape/PointShape3D.d.ts.map +1 -0
  33. package/src/core/geom/3d/shape/PointShape3D.js +14 -0
  34. package/src/core/geom/3d/shape/TransformedShape3D.d.ts.map +1 -1
  35. package/src/core/geom/3d/shape/TransformedShape3D.js +26 -8
  36. package/src/core/geom/3d/shape/UnionShape3D.d.ts.map +1 -1
  37. package/src/core/geom/3d/shape/UnionShape3D.js +33 -4
  38. package/src/core/geom/3d/shape/UnitCubeShape3D.d.ts.map +1 -1
  39. package/src/core/geom/3d/shape/UnitCubeShape3D.js +13 -6
  40. package/src/core/geom/3d/shape/UnitSphereShape3D.d.ts.map +1 -1
  41. package/src/core/geom/3d/shape/UnitSphereShape3D.js +10 -0
  42. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts +15 -8
  43. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts.map +1 -1
  44. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.js +33 -9
  45. package/src/core/geom/3d/tetrahedra/delaunay/compute_delaunay_tetrahedral_mesh.d.ts +1 -1
  46. package/src/core/geom/3d/tetrahedra/delaunay/compute_delaunay_tetrahedral_mesh.d.ts.map +1 -1
  47. package/src/core/geom/3d/tetrahedra/delaunay/compute_delaunay_tetrahedral_mesh.js +7 -7
  48. package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.spec.d.ts +2 -0
  49. package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.spec.d.ts.map +1 -0
  50. package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.spec.js +61 -0
  51. package/src/core/geom/3d/tetrahedra/get_tetrahedron_volume.d.ts +9 -0
  52. package/src/core/geom/3d/tetrahedra/get_tetrahedron_volume.d.ts.map +1 -0
  53. package/src/core/geom/3d/tetrahedra/get_tetrahedron_volume.js +18 -0
  54. package/src/core/geom/3d/tetrahedra/is_tetrahedron_degenerate.d.ts +9 -0
  55. package/src/core/geom/3d/tetrahedra/is_tetrahedron_degenerate.d.ts.map +1 -0
  56. package/src/core/geom/3d/tetrahedra/is_tetrahedron_degenerate.js +21 -0
  57. package/src/core/geom/3d/tetrahedra/validate_tetrahedral_mesh.d.ts +2 -10
  58. package/src/core/geom/3d/tetrahedra/validate_tetrahedral_mesh.d.ts.map +1 -1
  59. package/src/core/geom/3d/tetrahedra/validate_tetrahedral_mesh.js +3 -40
  60. package/src/core/geom/3d/v3_compute_triangle_normal.js +1 -1
  61. package/src/core/geom/3d/v3_negate_array.d.ts +9 -0
  62. package/src/core/geom/3d/v3_negate_array.d.ts.map +1 -0
  63. package/src/core/geom/3d/v3_negate_array.js +16 -0
  64. package/src/core/geom/Quaternion.d.ts.map +1 -1
  65. package/src/core/geom/Quaternion.js +30 -77
  66. package/src/core/geom/Vector3.d.ts +4 -0
  67. package/src/core/geom/Vector3.js +4 -4
  68. package/src/core/geom/mat3/m3_cm_invert.d.ts +7 -0
  69. package/src/core/geom/mat3/m3_cm_invert.d.ts.map +1 -0
  70. package/src/core/geom/mat3/m3_cm_invert.js +45 -0
  71. package/src/core/geom/vec2/v2_matrix3_cm_multiply.d.ts +10 -0
  72. package/src/core/geom/vec2/v2_matrix3_cm_multiply.d.ts.map +1 -0
  73. package/src/core/geom/vec2/v2_matrix3_cm_multiply.js +20 -0
  74. package/src/core/geom/vec2/v2_matrix3_rm_multiply.d.ts +10 -0
  75. package/src/core/geom/vec2/v2_matrix3_rm_multiply.d.ts.map +1 -0
  76. package/src/core/geom/vec2/v2_matrix3_rm_multiply.js +21 -0
  77. package/src/core/geom/vec3/v3_cross_array.d.ts +11 -0
  78. package/src/core/geom/vec3/v3_cross_array.d.ts.map +1 -0
  79. package/src/core/geom/vec3/v3_cross_array.js +31 -0
  80. package/src/core/geom/vec3/v3_displace_in_direction.js +3 -2
  81. package/src/core/geom/vec3/v3_displace_in_direction_array.d.ts +12 -0
  82. package/src/core/geom/vec3/v3_displace_in_direction_array.d.ts.map +1 -0
  83. package/src/core/geom/vec3/v3_displace_in_direction_array.js +22 -0
  84. package/src/core/geom/vec3/v3_dot_array_array.d.ts.map +1 -1
  85. package/src/core/geom/vec3/v3_dot_array_array.js +4 -1
  86. package/src/core/geom/vec3/v3_normalize_array.d.ts +3 -3
  87. package/src/core/geom/vec3/v3_normalize_array.d.ts.map +1 -1
  88. package/src/core/geom/vec3/v3_normalize_array.js +3 -3
  89. package/src/core/math/copysign.d.ts +1 -1
  90. package/src/core/math/copysign.js +1 -1
  91. package/src/core/math/epsilonEquals.d.ts.map +1 -1
  92. package/src/core/math/epsilonEquals.js +3 -2
  93. package/src/core/math/linalg/README.md +1 -1
  94. package/src/core/math/random/randomGaussian.spec.js +1 -1
  95. package/src/core/math/spline/spline_hermite3.d.ts +1 -1
  96. package/src/core/math/spline/spline_hermite3.js +3 -2
  97. package/src/core/math/spline/spline_hermite3_to_bezier.d.ts +12 -0
  98. package/src/core/math/spline/spline_hermite3_to_bezier.d.ts.map +1 -0
  99. package/src/core/math/spline/spline_hermite3_to_bezier.js +24 -0
  100. package/src/core/process/delay.d.ts +6 -1
  101. package/src/core/process/delay.d.ts.map +1 -1
  102. package/src/core/process/delay.js +6 -1
  103. package/src/core/process/undo/Mark.d.ts +5 -5
  104. package/src/core/process/undo/Mark.d.ts.map +1 -1
  105. package/src/core/process/undo/Mark.js +6 -5
  106. package/src/core/process/worker/WorkerBuilder.d.ts +13 -2
  107. package/src/core/process/worker/WorkerBuilder.d.ts.map +1 -1
  108. package/src/core/process/worker/WorkerBuilder.js +8 -0
  109. package/src/core/process/worker/WorkerProxy.d.ts +16 -6
  110. package/src/core/process/worker/WorkerProxy.d.ts.map +1 -1
  111. package/src/core/process/worker/WorkerProxy.js +24 -5
  112. package/src/engine/EngineHarness.d.ts +7 -1
  113. package/src/engine/EngineHarness.d.ts.map +1 -1
  114. package/src/engine/EngineHarness.js +12 -1
  115. package/src/engine/animation/clip/AnimationTrack.d.ts.map +1 -1
  116. package/src/engine/animation/clip/AnimationTrack.js +4 -1
  117. package/src/engine/animation/clip/bind_property_writer.d.ts +2 -2
  118. package/src/engine/animation/clip/bind_property_writer.d.ts.map +1 -1
  119. package/src/engine/animation/clip/bind_property_writer.js +22 -13
  120. package/src/engine/animation/clip/curve_from_track_data.d.ts.map +1 -1
  121. package/src/engine/animation/clip/curve_from_track_data.js +9 -1
  122. package/src/engine/animation/clip/ecd_bind_animation_curve.d.ts.map +1 -1
  123. package/src/engine/animation/clip/ecd_bind_animation_curve.js +6 -5
  124. package/src/engine/animation/curve/AnimationCurve.d.ts +32 -0
  125. package/src/engine/animation/curve/AnimationCurve.d.ts.map +1 -1
  126. package/src/engine/animation/curve/AnimationCurve.js +94 -19
  127. package/src/engine/animation/curve/AnimationCurve.spec.js +67 -0
  128. package/src/engine/animation/curve/Keyframe.d.ts +24 -3
  129. package/src/engine/animation/curve/Keyframe.d.ts.map +1 -1
  130. package/src/engine/animation/curve/Keyframe.js +49 -3
  131. package/src/engine/animation/curve/Keyframe.spec.js +11 -0
  132. package/src/engine/animation/curve/animation_curve_compute_aabb.d.ts +7 -0
  133. package/src/engine/animation/curve/animation_curve_compute_aabb.d.ts.map +1 -0
  134. package/src/engine/animation/curve/{compute_curve_aabb.js → animation_curve_compute_aabb.js} +1 -1
  135. package/src/engine/animation/curve/animation_curve_optimize.d.ts +8 -0
  136. package/src/engine/animation/curve/animation_curve_optimize.d.ts.map +1 -0
  137. package/src/engine/animation/curve/animation_curve_optimize.js +89 -0
  138. package/src/engine/animation/curve/animation_curve_optimize.spec.d.ts +2 -0
  139. package/src/engine/animation/curve/animation_curve_optimize.spec.d.ts.map +1 -0
  140. package/src/engine/animation/curve/animation_curve_optimize.spec.js +50 -0
  141. package/src/engine/animation/curve/draw/build_curve_editor.d.ts.map +1 -1
  142. package/src/engine/animation/curve/draw/build_curve_editor.js +17 -11
  143. package/src/engine/animation/curve/evaluate_two_key_curve.d.ts +9 -0
  144. package/src/engine/animation/curve/evaluate_two_key_curve.d.ts.map +1 -0
  145. package/src/engine/animation/curve/evaluate_two_key_curve.js +23 -0
  146. package/src/engine/animation/curve/prototypeGLTF.js +14 -14
  147. package/src/engine/animation/curve/view/AnimationCurveView.d.ts +47 -0
  148. package/src/engine/animation/curve/view/AnimationCurveView.d.ts.map +1 -0
  149. package/src/engine/animation/curve/view/AnimationCurveView.js +343 -0
  150. package/src/engine/animation/curve/view/prototype.d.ts +2 -0
  151. package/src/engine/animation/curve/view/prototype.d.ts.map +1 -0
  152. package/src/engine/animation/curve/view/prototype.js +86 -0
  153. package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescription.d.ts +6 -1
  154. package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescription.d.ts.map +1 -1
  155. package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescription.js +11 -6
  156. package/src/engine/ecs/guid/{GUID.d.ts → UUID.d.ts} +27 -15
  157. package/src/engine/ecs/guid/UUID.d.ts.map +1 -0
  158. package/src/engine/ecs/guid/{GUID.js → UUID.js} +52 -17
  159. package/src/engine/ecs/guid/UUID.spec.d.ts +2 -0
  160. package/src/engine/ecs/guid/UUID.spec.d.ts.map +1 -0
  161. package/src/engine/ecs/guid/{GUID.spec.js → UUID.spec.js} +25 -12
  162. package/src/engine/ecs/guid/UUIDSerializationAdapter.d.ts +18 -0
  163. package/src/engine/ecs/guid/UUIDSerializationAdapter.d.ts.map +1 -0
  164. package/src/engine/ecs/guid/{GUIDSerializationAdapter.js → UUIDSerializationAdapter.js} +5 -5
  165. package/src/engine/ecs/guid/UUIDSerializationAdapter.spec.d.ts +2 -0
  166. package/src/engine/ecs/guid/UUIDSerializationAdapter.spec.d.ts.map +1 -0
  167. package/src/engine/ecs/guid/{GUIDSerializationAdapter.spec.js → UUIDSerializationAdapter.spec.js} +5 -5
  168. package/src/engine/ecs/ik/InverseKinematics.js +3 -3
  169. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.d.ts.map +1 -1
  170. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js +1 -140
  171. package/src/engine/input/ecs/systems/InputControllerSystem.js +1 -1
  172. package/src/engine/intelligence/blackboard/BlackboardDynamicStorageAdapter.d.ts +1 -1
  173. package/src/engine/intelligence/blackboard/BlackboardDynamicStorageAdapter.js +4 -4
  174. package/src/engine/physics/gjk/expanding_polytope_algorithm.d.ts +13 -0
  175. package/src/engine/physics/gjk/expanding_polytope_algorithm.d.ts.map +1 -0
  176. package/src/engine/physics/gjk/expanding_polytope_algorithm.js +395 -0
  177. package/src/engine/physics/gjk/expanding_polytope_algorithm.spec.d.ts +2 -0
  178. package/src/engine/physics/gjk/expanding_polytope_algorithm.spec.d.ts.map +1 -0
  179. package/src/engine/physics/gjk/expanding_polytope_algorithm.spec.js +46 -0
  180. package/src/engine/physics/inverse_kinematics/fabrik/fabrik3d_solve_primitive.d.ts +18 -0
  181. package/src/engine/physics/inverse_kinematics/fabrik/fabrik3d_solve_primitive.d.ts.map +1 -0
  182. package/src/engine/physics/inverse_kinematics/fabrik/fabrik3d_solve_primitive.js +277 -0
  183. package/src/engine/physics/inverse_kinematics/fabrik/fabrik3d_solve_primitive.spec.d.ts +2 -0
  184. package/src/engine/physics/inverse_kinematics/fabrik/fabrik3d_solve_primitive.spec.d.ts.map +1 -0
  185. package/src/engine/physics/inverse_kinematics/fabrik/fabrik3d_solve_primitive.spec.js +43 -0
  186. package/src/engine/physics/inverse_kinematics/fabrik/fabrik_solve.d.ts +12 -0
  187. package/src/engine/physics/inverse_kinematics/fabrik/fabrik_solve.d.ts.map +1 -0
  188. package/src/engine/physics/inverse_kinematics/fabrik/fabrik_solve.js +100 -0
  189. package/src/engine/physics/inverse_kinematics/fabrik/prototype.d.ts +2 -0
  190. package/src/engine/physics/inverse_kinematics/fabrik/prototype.d.ts.map +1 -0
  191. package/src/engine/physics/inverse_kinematics/fabrik/prototype.js +112 -0
  192. package/src/engine/physics/inverse_kinematics/two_joint_ik.d.ts +16 -0
  193. package/src/engine/physics/inverse_kinematics/two_joint_ik.d.ts.map +1 -0
  194. package/src/engine/physics/inverse_kinematics/two_joint_ik.js +127 -0
  195. package/src/view/elements/DropDownSelectionView.js +2 -2
  196. package/src/view/elements/tiles2d/Tile.d.ts +1 -1
  197. package/src/view/elements/tiles2d/Tile.d.ts.map +1 -1
  198. package/src/view/elements/tiles2d/Tile.js +3 -3
  199. package/src/core/math/makeSequenceLoop.d.ts.map +0 -1
  200. package/src/engine/animation/curve/compute_curve_aabb.d.ts +0 -7
  201. package/src/engine/animation/curve/compute_curve_aabb.d.ts.map +0 -1
  202. package/src/engine/ecs/guid/GUID.d.ts.map +0 -1
  203. package/src/engine/ecs/guid/GUID.spec.d.ts +0 -2
  204. package/src/engine/ecs/guid/GUID.spec.d.ts.map +0 -1
  205. package/src/engine/ecs/guid/GUIDSerializationAdapter.d.ts +0 -18
  206. package/src/engine/ecs/guid/GUIDSerializationAdapter.d.ts.map +0 -1
  207. package/src/engine/ecs/guid/GUIDSerializationAdapter.spec.d.ts +0 -2
  208. package/src/engine/ecs/guid/GUIDSerializationAdapter.spec.d.ts.map +0 -1
  209. /package/src/core/{math → function}/makeSequenceLoop.d.ts +0 -0
  210. /package/src/core/{math → function}/makeSequenceLoop.js +0 -0
@@ -1,15 +1,15 @@
1
1
  //
2
2
 
3
+ import { assert } from "../../../../assert.js";
4
+ import { BitSet } from "../../../../binary/BitSet.js";
3
5
  import { compute_bounding_simplex_3d } from "../compute_bounding_simplex_3d.js";
4
6
  import { TetrahedralMesh } from "../TetrahedralMesh.js";
7
+ import { Cavity } from "./Cavity.js";
8
+ import { fill_in_a_cavity } from "./fill_in_a_cavity.js";
9
+ import { tetrahedral_mesh_compute_cavity } from "./tetrahedral_mesh_compute_cavity.js";
5
10
  import {
6
11
  tetrahedral_mesh_walk_towards_containing_tetrahedron
7
12
  } from "./tetrahedral_mesh_walk_towards_containing_tetrahedron.js";
8
- import { Cavity } from "./Cavity.js";
9
- import { tetrahedral_mesh_compute_cavity } from "./tetrahedral_mesh_compute_cavity.js";
10
- import { fill_in_a_cavity } from "./fill_in_a_cavity.js";
11
- import { BitSet } from "../../../../binary/BitSet.js";
12
- import { assert } from "../../../../assert.js";
13
13
 
14
14
 
15
15
  /**
@@ -18,7 +18,7 @@ import { assert } from "../../../../assert.js";
18
18
  * @param {TetrahedralMesh} mesh
19
19
  * @param {number[]} input serialized set of 3d points (x,y,z)
20
20
  * @param {number} [n] number of points in the input
21
- * @returns {boolean}
21
+ * @returns {boolean} whether mesh was created or not. Returns false on failure
22
22
  */
23
23
  export function compute_delaunay_tetrahedral_mesh(mesh, input, n = input.length / 3) {
24
24
  assert.notNull(mesh, 'mesh');
@@ -43,7 +43,7 @@ export function compute_delaunay_tetrahedral_mesh(mesh, input, n = input.length
43
43
 
44
44
  // start with a fairly low capacity for best-case scenario, rely on internal resizing after that
45
45
 
46
- mesh.growCapacity(n + 1);
46
+ mesh.ensureCapacity(n + 1);
47
47
 
48
48
  const CAVITY = new Cavity();
49
49
 
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tetrahedral_mesh_build_from_grid.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tetrahedral_mesh_build_from_grid.spec.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.spec.js"],"names":[],"mappings":""}
@@ -0,0 +1,61 @@
1
+ import { AABB3 } from "../../aabb/AABB3.js";
2
+ import { get_tetrahedron_volume } from "../get_tetrahedron_volume.js";
3
+ import { TetrahedralMesh } from "../TetrahedralMesh.js";
4
+ import { validate_tetrahedral_mesh } from "../validate_tetrahedral_mesh.js";
5
+ import { tetrahedral_mesh_build_from_grid } from "./tetrahedral_mesh_build_from_grid.js";
6
+
7
+ test("Single cube", () => {
8
+
9
+ const mesh = new TetrahedralMesh();
10
+
11
+ /**
12
+ *
13
+ * @type {number[]}
14
+ */
15
+ const points = [];
16
+
17
+ tetrahedral_mesh_build_from_grid(
18
+ mesh,
19
+ points,
20
+ new AABB3(0, 0, 0, 1, 1, 1),
21
+ 2, 2, 2
22
+ );
23
+
24
+ // number of points
25
+ expect(points.length).toBe(8 * 3);
26
+
27
+ expect(mesh.count).toBeGreaterThanOrEqual(5);
28
+ expect(mesh.count).toBeLessThanOrEqual(6);
29
+
30
+ // mesh should only reference created points
31
+ const tetrahedrons = mesh.getLive();
32
+
33
+ for (let i = 0; i < tetrahedrons.length; i++) {
34
+ const tet_index = tetrahedrons[i];
35
+
36
+ for (let vertex_index = 0; vertex_index < 4; vertex_index++) {
37
+
38
+ const vert = mesh.getVertexIndex(tet_index, vertex_index);
39
+
40
+ expect(vert).toBeGreaterThanOrEqual(0);
41
+ expect(vert).toBeLessThan(8);
42
+ }
43
+
44
+ // tetrahedrons should have positive volume
45
+ const volume = get_tetrahedron_volume(mesh, points, tet_index);
46
+
47
+ expect(volume).toBeGreaterThan(0);
48
+ }
49
+
50
+ // do full validation
51
+ const problems = [];
52
+
53
+ const is_valid = validate_tetrahedral_mesh(mesh, points, (problem) => problems.push(problem));
54
+
55
+ if (!is_valid) {
56
+ console.error(problems.join('\n'));
57
+ }
58
+
59
+ expect(is_valid).toBe(true);
60
+
61
+ });
@@ -0,0 +1,9 @@
1
+ /**
2
+ *
3
+ * @param {TetrahedralMesh} mesh
4
+ * @param {ArrayLike<number>|number[]} points
5
+ * @param {number} tet_index
6
+ * @return {number}
7
+ */
8
+ export function get_tetrahedron_volume(mesh: TetrahedralMesh, points: ArrayLike<number> | number[], tet_index: number): number;
9
+ //# sourceMappingURL=get_tetrahedron_volume.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get_tetrahedron_volume.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/tetrahedra/get_tetrahedron_volume.js"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,sEAJW,UAAU,MAAM,CAAC,GAAC,MAAM,EAAE,aAC1B,MAAM,GACL,MAAM,CAUjB"}
@@ -0,0 +1,18 @@
1
+ import { tetrahedron_compute_signed_volume } from "./tetrahedron_compute_signed_volume.js";
2
+
3
+ /**
4
+ *
5
+ * @param {TetrahedralMesh} mesh
6
+ * @param {ArrayLike<number>|number[]} points
7
+ * @param {number} tet_index
8
+ * @return {number}
9
+ */
10
+ export function get_tetrahedron_volume(mesh, points, tet_index) {
11
+
12
+ const a = mesh.getVertexIndex(tet_index, 0);
13
+ const b = mesh.getVertexIndex(tet_index, 1);
14
+ const c = mesh.getVertexIndex(tet_index, 2);
15
+ const d = mesh.getVertexIndex(tet_index, 3);
16
+
17
+ return tetrahedron_compute_signed_volume(points, a, b, c, d);
18
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Vertices must be unique inside a single tetrahedron, that is - no repetitions are allowed
3
+ * If vertices are repeated - volume will be 0 and tetrahedron will be degenerate
4
+ * @param {TetrahedralMesh} mesh
5
+ * @param {number} tet
6
+ * @returns {boolean}
7
+ */
8
+ export function is_tetrahedron_degenerate(mesh: TetrahedralMesh, tet: number): boolean;
9
+ //# sourceMappingURL=is_tetrahedron_degenerate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is_tetrahedron_degenerate.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/tetrahedra/is_tetrahedron_degenerate.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,sEAHW,MAAM,GACJ,OAAO,CAenB"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Vertices must be unique inside a single tetrahedron, that is - no repetitions are allowed
3
+ * If vertices are repeated - volume will be 0 and tetrahedron will be degenerate
4
+ * @param {TetrahedralMesh} mesh
5
+ * @param {number} tet
6
+ * @returns {boolean}
7
+ */
8
+ export function is_tetrahedron_degenerate(mesh, tet) {
9
+
10
+ for (let i0 = 0; i0 < 4; i0++) {
11
+ const v0 = mesh.getVertexIndex(tet, i0);
12
+ for (let i1 = i0 + 1; i1 < 4; i1++) {
13
+ if (v0 === mesh.getVertexIndex(tet, i1)) {
14
+ // identical vertices
15
+ return true;
16
+ }
17
+ }
18
+ }
19
+
20
+ return false;
21
+ }
@@ -1,11 +1,3 @@
1
- /**
2
- *
3
- * @param {TetrahedralMesh} mesh
4
- * @param {ArrayLike<number>|number[]} points
5
- * @param {number} tet
6
- * @return {number}
7
- */
8
- export function get_tetrahedron_volume(mesh: TetrahedralMesh, points: ArrayLike<number> | number[], tet: number): number;
9
1
  /**
10
2
  *
11
3
  * @param {TetrahedralMesh} mesh
@@ -25,10 +17,10 @@ export function validate_tetrahedron_neighbourhood(mesh: TetrahedralMesh, tet: n
25
17
  /**
26
18
  *
27
19
  * @param {TetrahedralMesh} mesh
28
- * @param {ArrayLike<number>} points
20
+ * @param {ArrayLike<number>|number[]|Float32Array} points
29
21
  * @param {function(problem:string):*} [consumer]
30
22
  * @returns {boolean}
31
23
  */
32
- export function validate_tetrahedral_mesh(mesh: TetrahedralMesh, points: ArrayLike<number>, consumer?: typeof noop): boolean;
24
+ export function validate_tetrahedral_mesh(mesh: TetrahedralMesh, points: ArrayLike<number> | number[] | Float32Array, consumer?: typeof noop): boolean;
33
25
  import { noop } from "../../../function/noop.js";
34
26
  //# sourceMappingURL=validate_tetrahedral_mesh.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate_tetrahedral_mesh.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/tetrahedra/validate_tetrahedral_mesh.js"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,sEAJW,UAAU,MAAM,CAAC,GAAC,MAAM,EAAE,OAC1B,MAAM,GACL,MAAM,CAUjB;AAED;;;;;;;GAOG;AACH,+DALW,MAAM,gBACN,MAAM,mBACG,MAAM,WACd,OAAO,CA6DlB;AAGD;;;;;GAKG;AACH,+EAHW,MAAM,mCAehB;AAuBD;;;;;;GAMG;AACH,yEAJW,UAAU,MAAM,CAAC,2BAEf,OAAO,CA4BnB;qBArKoB,2BAA2B"}
1
+ {"version":3,"file":"validate_tetrahedral_mesh.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/tetrahedra/validate_tetrahedral_mesh.js"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,+DALW,MAAM,gBACN,MAAM,mBACG,MAAM,WACd,OAAO,CA6DlB;AAGD;;;;;GAKG;AACH,+EAHW,MAAM,mCAehB;AAED;;;;;;GAMG;AACH,yEAJW,UAAU,MAAM,CAAC,GAAC,MAAM,EAAE,GAAC,YAAY,2BAErC,OAAO,CA4BnB;qBAhIoB,2BAA2B"}
@@ -1,23 +1,7 @@
1
1
  import { noop } from "../../../function/noop.js";
2
+ import { get_tetrahedron_volume } from "./get_tetrahedron_volume.js";
3
+ import { is_tetrahedron_degenerate } from "./is_tetrahedron_degenerate.js";
2
4
  import { INVALID_NEIGHBOUR } from "./TetrahedralMesh.js";
3
- import { tetrahedron_compute_signed_volume } from "./tetrahedron_compute_signed_volume.js";
4
-
5
- /**
6
- *
7
- * @param {TetrahedralMesh} mesh
8
- * @param {ArrayLike<number>|number[]} points
9
- * @param {number} tet
10
- * @return {number}
11
- */
12
- export function get_tetrahedron_volume(mesh, points, tet) {
13
-
14
- const a = mesh.getVertexIndex(tet, 0);
15
- const b = mesh.getVertexIndex(tet, 1);
16
- const c = mesh.getVertexIndex(tet, 2);
17
- const d = mesh.getVertexIndex(tet, 3);
18
-
19
- return tetrahedron_compute_signed_volume(points, a, b, c, d);
20
- }
21
5
 
22
6
  /**
23
7
  *
@@ -112,28 +96,7 @@ export function validate_tetrahedron_neighbourhood(mesh, tet, consumer = noop) {
112
96
  /**
113
97
  *
114
98
  * @param {TetrahedralMesh} mesh
115
- * @param {number} tet
116
- * @returns {boolean}
117
- */
118
- function is_tetrahedron_degenerate(mesh, tet) {
119
-
120
- for (let i0 = 0; i0 < 4; i0++) {
121
- const v0 = mesh.getVertexIndex(tet, i0);
122
- for (let i1 = i0 + 1; i1 < 4; i1++) {
123
- if (v0 === mesh.getVertexIndex(tet, i1)) {
124
- // identical vertices
125
- return true;
126
- }
127
- }
128
- }
129
-
130
- return false;
131
- }
132
-
133
- /**
134
- *
135
- * @param {TetrahedralMesh} mesh
136
- * @param {ArrayLike<number>} points
99
+ * @param {ArrayLike<number>|number[]|Float32Array} points
137
100
  * @param {function(problem:string):*} [consumer]
138
101
  * @returns {boolean}
139
102
  */
@@ -54,4 +54,4 @@ export function v3_compute_triangle_normal(
54
54
  result[result_offset] = x;
55
55
  result[result_offset + 1] = y;
56
56
  result[result_offset + 2] = z;
57
- }
57
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ *
3
+ * @param {number[]|Float32Array} result
4
+ * @param {number} result_offset
5
+ * @param {number[]|Float32Array} input
6
+ * @param {number} input_offset
7
+ */
8
+ export function v3_negate_array(result: number[] | Float32Array, result_offset: number, input: number[] | Float32Array, input_offset: number): void;
9
+ //# sourceMappingURL=v3_negate_array.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v3_negate_array.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/3d/v3_negate_array.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wCALW,MAAM,EAAE,GAAC,YAAY,iBACrB,MAAM,SACN,MAAM,EAAE,GAAC,YAAY,gBACrB,MAAM,QAUhB"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ *
3
+ * @param {number[]|Float32Array} result
4
+ * @param {number} result_offset
5
+ * @param {number[]|Float32Array} input
6
+ * @param {number} input_offset
7
+ */
8
+ export function v3_negate_array(result, result_offset, input, input_offset) {
9
+ const x = input[input_offset];
10
+ const y = input[input_offset + 1];
11
+ const z = input[input_offset + 2];
12
+
13
+ result[result_offset] = -x;
14
+ result[result_offset + 1] = -y;
15
+ result[result_offset + 2] = -z;
16
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"Quaternion.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Quaternion.js"],"names":[],"mappings":";AAsBA;IA+2CI;;;;OAIG;IACH,kCAFa,UAAU,CAQtB;IAED;;;;;;OAMG;IACH,0BALW,MAAM,KACN,MAAM,KACN,MAAM,GACJ,UAAU,CAQtB;IAED;;;;;;OAMG;IACH,6BALW,UAAU,QACV,UAAU,MACV,UAAU,aACV,MAAM,QAkBhB;IAj6CD;;;;;;;OAOG;IACH,gBANW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,EA+BhB;IA1BG;;;OAGG;IACH,GAFU,MAAM,CAEN;IACV;;;OAGG;IACH,GAFU,MAAM,CAEN;IACV;;;OAGG;IACH,GAFU,MAAM,CAEN;IACV;;;OAGG;IACH,GAFU,MAAM,CAEN;IAEV;;;OAGG;IACH,oBAFU,OAAO,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAEnD;IAqBjC,mBAEC;IAlBD,gBAEC;IAkBD,mBAEC;IAlBD,gBAEC;IAkBD,mBAEC;IAlBD,gBAEC;IAkBD,mBAEC;IAlBD,gBAEC;IA+BD;;;;;;;;OAQG;IACH,kBAPW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,QAiDhB;IAED;;;;;OAKG;IACH,uBAJW,OAAO,QACP,OAAO,QAMjB;IAED;;;;OAIG;IACH,WAHW,UAAU,GACT,MAAM,CAQjB;IAED;;;OAGG;IACH,mBAFW,UAAU,QAKpB;IAED;;OAEG;IACH,eAqBC;IAED;;;;OAIG;IACH,eAHW,UAAU,GACT,MAAM,CAoBjB;IAED;;;;OAIG;IACH,oBAHW,OAAO,SACP,MAAM,QAIhB;IAED;;;;;;OAMG;IACH,mBALW,MAAM,MACN,MAAM,MACN,MAAM,SACN,MAAM,QAwBhB;IAED;;;;;OAKG;IACH,2BAJW,OAAO,SACP,UAAU,SACV,UAAU,QA+BpB;IAED;;;;OAIG;IACH,wBAHW,OAAO,GACL,MAAM,CAYlB;IAED;;;;OAIG;IACH,kBAHW,OAAO,GACL,MAAM,CAkBlB;IAED,kBAWC;IAED;;;;OAIG;IACH,oBAHW,MAAM,GACL,UAAU,CASrB;IAED;;OAEG;IACH,gBAFW,UAAU,QAIpB;IAED;;;;OAIG;IACH,2BAHW,UAAU,UACV,UAAU,QAcpB;IAED;;;;;;;;;;;OAWG;IACH,yBAVW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACL,UAAU,CAYrB;IAED;;;OAGG;IACH,UAFY,MAAM,CASjB;IAED;;;;OAIG;IACH,qBAHW,UAAU,aACV,MAAM,QAIhB;IAED;;;;;OAKG;IACH,eAJW,OAAO,UACP,OAAO,OACP,OAAO,QAUjB;IAED;;;OAGG;IACH,wBAFsB,MAAM,QAM3B;IAED;;;;;;;OAOG;IACH,kBANW,MAAM,KACN,MAAM,KACN,MAAM,mBAEJ,UAAU,CAmCtB;IAED;;;;OAIG;IACH,yBAFW,OAAO,QA4BjB;IAED;;;OAGG;IACH,yBAFW,OAAO,QA2BjB;IAED;;;OAGG;IACH,yBAFW,OAAO,QA0BjB;IAED;;;;;;OAMG;IACH,mBAJW,MAAM,KACN,MAAM,KACN,MAAM,QAIhB;IAED;;;;;;;;OAQG;IACH,sBAJW,MAAM,KACN,MAAM,KACN,MAAM,QAqBhB;IAED;;;;;;;;OAQG;IACH,sBAJW,MAAM,KACN,MAAM,KACN,MAAM,QAqBhB;IAED;;;;;;;;OAQG;IACH,sBAJW,MAAM,KACN,MAAM,KACN,MAAM,QAqBhB;IAED;;;;;;;;OAQG;IACH,sBAJW,MAAM,KACN,MAAM,KACN,MAAM,QAqBhB;IAED;;;;;;;;OAQG;IACH,sBAJW,MAAM,KACN,MAAM,KACN,MAAM,QAqBhB;IAED;;;;;;;;OAQG;IACH,sBAJW,MAAM,KACN,MAAM,KACN,MAAM,QAqBhB;IAED;;;;OAIG;IACH,yBAHW,OAAO,MACP,OAAO,QA+CjB;IAED;;;;;OAKG;IACH,sBAHW,OAAO,MACP,OAAO,QAiEjB;IAED;;;OAGG;IACH,wCASC;IAED;;;;;;;;;;;;;;OAcG;IACH,6BAXW,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,GACJ,UAAU,CA4EtB;IAED;;;;OAIG;IACH,YAHW,UAAU,KACV,MAAM,QAMhB;IAED;;;;;OAKG;IACH,uBAJW,UAAU,UACV,UAAU,KACV,MAAM,QAgBhB;IAED;;;;;OAKG;IACH,uBAJW,UAAU,MACV,UAAU,KACV,MAAM,QAiDhB;IAGD;;;;OAIG;IACH,aAHW,UAAU,KACV,MAAM,QAIhB;IAED;;;OAGG;IACH,iCAIC;IAED;;;;OAIG;IACH,YAHW,UAAU,GACR,UAAU,CAItB;IAED;;;OAGG;IACH,SAFa,UAAU,CAQtB;IAED;;;;;;;OAOG;IACH,OANW,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,GACJ,UAAU,CA+BtB;IAED;;;OAGG;IACH,aAFa,UAAU,CAItB;IAED;;;;;MAOC;IAED,yBAEC;IAED;;;OAGG;IACH,2CAKC;IAED;;;OAGG;IACH,6CAOC;IAED;;;OAGG;IACH,kDAKC;IAED;;;OAGG;IACH,oDAOC;IAED;;;;OAIG;IACH,wBAFW,MAAM,QAIhB;IAED;;;;OAIG;IACH,kBAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,qBAHW,MAAM,EAAE,WACR,MAAM,QAShB;IAED;;;;OAIG;IACH,oBAHW,MAAM,EAAE,WACR,MAAM,QAOhB;IAED,oBAEC;IAED;;;;OAIG;IACH,cAHW,UAAU,GACR,OAAO,CAQnB;IAED;;;OAGG;IACH,QAFa,MAAM,CAQlB;IAED;;;;;OAKG;IACH,qBAJW,UAAU,cACV,MAAM,GACL,OAAO,CAIlB;IAED;;;;;;;;;OASG;IACH,uBAKC;IAED;;;;OAIG;IACH,sBAHsB,MAAM,GAChB,UAAU,CAkBrB;IAED,mBAEC;IAwDL,mBAjKe,MAAM,EAAE,WACR,MAAM,UAgKS;IAC9B,iBApJe,MAAM,EAAE,WACR,MAAM,UAmJO;IA71CxB;;OAEG;IACH,sDAOC;CAg1CJ;;kBAOS,UAAU;;mBA/7CD,4BAA4B;oBAW3B,cAAc"}
1
+ {"version":3,"file":"Quaternion.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Quaternion.js"],"names":[],"mappings":"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"}
@@ -13,9 +13,9 @@ import { v4_length } from "./vec4/v4_length.js";
13
13
  import Vector3 from "./Vector3.js";
14
14
 
15
15
 
16
- const forward = new Vector3();
17
- const up = new Vector3();
18
- const right = new Vector3();
16
+ const scratch_v3_a = new Vector3();
17
+ const scratch_v3_b = new Vector3();
18
+ const scratch_v3_c = new Vector3();
19
19
 
20
20
  const sin = Math.sin;
21
21
  const cos = Math.cos;
@@ -116,12 +116,12 @@ class Quaternion {
116
116
  * @param {number} uz up vector
117
117
  */
118
118
  _lookRotation(fx, fy, fz, ux, uy, uz) {
119
- forward.set(fx, fy, fz);
120
- forward.normalize();
119
+ scratch_v3_a.set(fx, fy, fz);
120
+ scratch_v3_a.normalize();
121
121
 
122
- right._crossVectors(ux, uy, uz, forward.x, forward.y, forward.z);
122
+ scratch_v3_c._crossVectors(ux, uy, uz, scratch_v3_a.x, scratch_v3_a.y, scratch_v3_a.z);
123
123
 
124
- if (right.lengthSq() === 0) {
124
+ if (scratch_v3_c.lengthSq() === 0) {
125
125
  // up and forward are parallel
126
126
 
127
127
  /*
@@ -130,32 +130,32 @@ class Quaternion {
130
130
  */
131
131
 
132
132
  if (Math.abs(uz) === 1) {
133
- forward.x += 0.001;
133
+ scratch_v3_a.x += 0.001;
134
134
  } else {
135
- forward.z += 0.001;
135
+ scratch_v3_a.z += 0.001;
136
136
  }
137
137
 
138
- forward.normalize();
139
- right._crossVectors(ux, uy, uz, forward.x, forward.y, forward.z);
138
+ scratch_v3_a.normalize();
139
+ scratch_v3_c._crossVectors(ux, uy, uz, scratch_v3_a.x, scratch_v3_a.y, scratch_v3_a.z);
140
140
 
141
141
  }
142
142
 
143
- right.normalize();
143
+ scratch_v3_c.normalize();
144
144
 
145
- up.crossVectors(forward, right);
145
+ scratch_v3_b.crossVectors(scratch_v3_a, scratch_v3_c);
146
146
 
147
147
  // construct partial transform matrix
148
- const m00 = right.x;
149
- const m10 = right.y;
150
- const m20 = right.z;
148
+ const m00 = scratch_v3_c.x;
149
+ const m10 = scratch_v3_c.y;
150
+ const m20 = scratch_v3_c.z;
151
151
 
152
- const m01 = up.x;
153
- const m11 = up.y;
154
- const m21 = up.z;
152
+ const m01 = scratch_v3_b.x;
153
+ const m11 = scratch_v3_b.y;
154
+ const m21 = scratch_v3_b.z;
155
155
 
156
- const m02 = forward.x;
157
- const m12 = forward.y;
158
- const m22 = forward.z;
156
+ const m02 = scratch_v3_a.x;
157
+ const m12 = scratch_v3_a.y;
158
+ const m22 = scratch_v3_a.z;
159
159
 
160
160
  this.__setFromRotationMatrix(
161
161
  m00, m01, m02,
@@ -189,7 +189,7 @@ class Quaternion {
189
189
  }
190
190
 
191
191
  /**
192
- *
192
+ * Makes this quaternion into an inverse of the other
193
193
  * @param {Quaternion} other
194
194
  */
195
195
  copyInverse(other) {
@@ -209,7 +209,7 @@ class Quaternion {
209
209
  const length_sqr = x * x + y * y + z * z + w * w;
210
210
 
211
211
  if (length_sqr === 0) {
212
- this.set(0, 0, 0, 0);
212
+ this.set(0, 0, 0, 1);
213
213
  return;
214
214
  }
215
215
 
@@ -265,6 +265,11 @@ class Quaternion {
265
265
  * @param {number} angle
266
266
  */
267
267
  _fromAxisAngle(ax, ay, az, angle) {
268
+ assert.isNumber(ax, 'ax');
269
+ assert.isNumber(ay, 'ay');
270
+ assert.isNumber(az, 'az');
271
+ assert.isNumber(angle, 'angle');
272
+
268
273
  const halfAngle = angle * 0.5;
269
274
 
270
275
  const sinA2 = sin(halfAngle);
@@ -303,7 +308,7 @@ class Quaternion {
303
308
  // perform projection of rotation onto axis
304
309
  const d = v3_dot(x, y, z, axis.x, axis.y, axis.z);
305
310
 
306
- const mag2 = (axis.x * axis.x + axis.y * axis.y + axis.z * axis.z);
311
+ const mag2 = axis.x * axis.x + axis.y * axis.y + axis.z * axis.z;
307
312
 
308
313
  const m = d / mag2;
309
314
 
@@ -818,58 +823,6 @@ class Quaternion {
818
823
  this.set(_x, _y, _z, _w);
819
824
  }
820
825
 
821
- /**
822
- * Based on blog post: http://lolengine.net/blog/2013/09/18/beautiful-maths-quaternion-from-vectors
823
- * @param {Vector3} from
824
- * @param {Vector3} to
825
- */
826
- fromNonUnitVectors(from, to) {
827
- //quat quat::fromtwovectors(vec3 u, vec3 v)
828
- // {
829
- // vec3 w = cross(u, v);
830
- // quat q = quat(dot(u, v), w.x, w.y, w.z);
831
- // q.w += length(q);
832
- // return normalize(q);
833
- // }
834
-
835
- const ax = from.x;
836
- const ay = from.y;
837
- const az = from.z;
838
-
839
- const bx = to.x;
840
- const by = to.y;
841
- const bz = to.z;
842
-
843
- //compute cross product
844
- const crossX = ay * bz - az * by;
845
- const crossY = az * bx - ax * bz;
846
- const crossZ = ax * by - ay * bx;
847
-
848
- const uv_dot = v3_dot(ax, ay, az, bx, by, bz);
849
-
850
-
851
- const qX = crossX;
852
- const qY = crossY;
853
- const qZ = crossZ;
854
- const qW = uv_dot;
855
-
856
- const p0 = qX * qX + qY * qY + qZ * qZ;
857
-
858
- const l0 = Math.sqrt(p0 + qW * qW);
859
-
860
- const qW_1 = qW + l0;
861
-
862
- //normalize result
863
- const l1 = 1 / Math.sqrt(p0 + qW_1 * qW_1);
864
-
865
- const x = qX * l1;
866
- const y = qY * l1;
867
- const z = qZ * l1;
868
- const w = qW * l1;
869
-
870
- this.set(x, y, z, w);
871
- }
872
-
873
826
  /**
874
827
  * NOTE: Vectors need to be normalized
875
828
  * Based on blog post: http://lolengine.net/blog/2013/09/18/beautiful-maths-quaternion-from-vectors
@@ -112,6 +112,10 @@ export default class Vector3 implements Vector3Like {
112
112
 
113
113
  writeToArray(array: number[] | ArrayLike<number>, offset?: number): void
114
114
 
115
+ toArray(array: number[] | ArrayLike<number>, offset?: number): void
116
+
117
+ fromArray(array: number[] | ArrayLike<number>, offset?: number): void
118
+
115
119
  asArray(): number[]
116
120
 
117
121
  static distance(a: Vector3Like, b: Vector3Like): number
@@ -505,10 +505,10 @@ class Vector3 {
505
505
 
506
506
  // calculate quat * vector
507
507
 
508
- var ix = qw * x + qy * z - qz * y;
509
- var iy = qw * y + qz * x - qx * z;
510
- var iz = qw * z + qx * y - qy * x;
511
- var iw = -qx * x - qy * y - qz * z;
508
+ const ix = qw * x + qy * z - qz * y;
509
+ const iy = qw * y + qz * x - qx * z;
510
+ const iz = qw * z + qx * y - qy * x;
511
+ const iw = -qx * x - qy * y - qz * z;
512
512
 
513
513
  // calculate result * inverse quat
514
514
 
@@ -0,0 +1,7 @@
1
+ /**
2
+ *
3
+ * @param {Float32Array} out
4
+ * @param {Float32Array} a
5
+ */
6
+ export function m3_cm_invert(out: Float32Array, a: Float32Array): boolean;
7
+ //# sourceMappingURL=m3_cm_invert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"m3_cm_invert.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/mat3/m3_cm_invert.js"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,kCAHW,YAAY,KACZ,YAAY,WAyCtB"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ *
3
+ * @param {Float32Array} out
4
+ * @param {Float32Array} a
5
+ */
6
+ export function m3_cm_invert(out, a) {
7
+ // adapted from gl-matrix
8
+
9
+ const a00 = a[0],
10
+ a01 = a[1],
11
+ a02 = a[2];
12
+
13
+ const a10 = a[3],
14
+ a11 = a[4],
15
+ a12 = a[5];
16
+
17
+ const a20 = a[6],
18
+ a21 = a[7],
19
+ a22 = a[8];
20
+
21
+ const b01 = a22 * a11 - a12 * a21;
22
+ const b11 = -a22 * a10 + a12 * a20;
23
+ const b21 = a21 * a10 - a11 * a20;
24
+
25
+ // Calculate the determinant
26
+ let det = a00 * b01 + a01 * b11 + a02 * b21;
27
+
28
+ if (!det) {
29
+ return false;
30
+ }
31
+
32
+ det = 1.0 / det;
33
+
34
+ out[0] = b01 * det;
35
+ out[1] = (-a22 * a01 + a02 * a21) * det;
36
+ out[2] = (a12 * a01 - a02 * a11) * det;
37
+ out[3] = b11 * det;
38
+ out[4] = (a22 * a00 - a02 * a20) * det;
39
+ out[5] = (-a12 * a00 + a02 * a10) * det;
40
+ out[6] = b21 * det;
41
+ out[7] = (-a21 * a00 + a01 * a20) * det;
42
+ out[8] = (a11 * a00 - a01 * a10) * det;
43
+
44
+ return true;
45
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Column-major ( OpenGL style) matrix multiplication
3
+ * @param {Float32Array|number[]} out
4
+ * @param {number} out_offset
5
+ * @param {number} x
6
+ * @param {number} y
7
+ * @param {Float32Array|number[]} m3
8
+ */
9
+ export function v2_matrix3_cm_multiply(out: Float32Array | number[], out_offset: number, x: number, y: number, m3: Float32Array | number[]): void;
10
+ //# sourceMappingURL=v2_matrix3_cm_multiply.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v2_matrix3_cm_multiply.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec2/v2_matrix3_cm_multiply.js"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,4CANW,YAAY,GAAC,MAAM,EAAE,cACrB,MAAM,KACN,MAAM,KACN,MAAM,MACN,YAAY,GAAC,MAAM,EAAE,QAa/B"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Column-major ( OpenGL style) matrix multiplication
3
+ * @param {Float32Array|number[]} out
4
+ * @param {number} out_offset
5
+ * @param {number} x
6
+ * @param {number} y
7
+ * @param {Float32Array|number[]} m3
8
+ */
9
+ export function v2_matrix3_cm_multiply(
10
+ out, out_offset,
11
+ x, y,
12
+ m3
13
+ ) {
14
+
15
+ const tx = m3[0] * x + m3[1] * y + m3[2];
16
+ const ty = m3[3] * x + m3[4] * y + m3[5];
17
+
18
+ out[out_offset] = tx;
19
+ out[out_offset + 1] = ty;
20
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Row-major ( OpenGL style) matrix multiplication
3
+ * @param {Float32Array|number[]} out
4
+ * @param {number} out_offset
5
+ * @param {number} x
6
+ * @param {number} y
7
+ * @param {Float32Array|number[]} m3
8
+ */
9
+ export function v2_matrix3_rm_multiply(out: Float32Array | number[], out_offset: number, x: number, y: number, m3: Float32Array | number[]): void;
10
+ //# sourceMappingURL=v2_matrix3_rm_multiply.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v2_matrix3_rm_multiply.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec2/v2_matrix3_rm_multiply.js"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,4CANW,YAAY,GAAC,MAAM,EAAE,cACrB,MAAM,KACN,MAAM,KACN,MAAM,MACN,YAAY,GAAC,MAAM,EAAE,QAa/B"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Row-major ( OpenGL style) matrix multiplication
3
+ * @param {Float32Array|number[]} out
4
+ * @param {number} out_offset
5
+ * @param {number} x
6
+ * @param {number} y
7
+ * @param {Float32Array|number[]} m3
8
+ */
9
+ export function v2_matrix3_rm_multiply(
10
+ out, out_offset,
11
+ x, y,
12
+ m3
13
+ ) {
14
+
15
+ const tx = m3[0] * x + m3[3] * y + m3[6];
16
+ const ty = m3[1] * x + m3[4] * y + m3[7];
17
+
18
+ out[out_offset] = tx;
19
+ out[out_offset + 1] = ty;
20
+ }
21
+