@thi.ng/matrices 2.2.11 → 2.2.13

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 (60) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +1 -1
  3. package/add.js +10 -13
  4. package/addn.js +10 -13
  5. package/alignment-quat.js +10 -16
  6. package/api.js +0 -1
  7. package/column.js +21 -13
  8. package/compile/emit.js +20 -3
  9. package/concat.js +4 -11
  10. package/conjugate.js +4 -1
  11. package/constants.js +35 -13
  12. package/determinant.js +51 -27
  13. package/diag.js +12 -11
  14. package/div.js +10 -13
  15. package/divn.js +10 -13
  16. package/fit.js +16 -24
  17. package/frustum.js +38 -28
  18. package/identity.js +12 -8
  19. package/invert.js +100 -45
  20. package/lookat.js +26 -15
  21. package/m22-m23.js +4 -8
  22. package/m23-m22.js +4 -8
  23. package/m23-m44.js +26 -16
  24. package/m33-m44.js +26 -16
  25. package/m44-m33.js +4 -11
  26. package/matn.js +10 -4
  27. package/matv.js +10 -36
  28. package/mixq.js +18 -28
  29. package/mul.js +10 -15
  30. package/mulm.js +67 -45
  31. package/muln.js +10 -13
  32. package/mulq.js +13 -12
  33. package/mulv.js +58 -77
  34. package/mulvm.js +16 -46
  35. package/normal-mat.js +10 -23
  36. package/orthagonal.js +17 -25
  37. package/ortho.js +26 -17
  38. package/outer-product.js +48 -10
  39. package/package.json +10 -8
  40. package/perspective.js +6 -13
  41. package/project.js +20 -51
  42. package/quat-axis-angle.js +13 -23
  43. package/quat-euler.js +16 -18
  44. package/quat-m33.js +29 -21
  45. package/quat-m44.js +36 -22
  46. package/rotation-around-axis.js +27 -32
  47. package/rotation.js +41 -79
  48. package/row.js +12 -13
  49. package/scale-center.js +16 -16
  50. package/scale.js +32 -42
  51. package/set.js +13 -6
  52. package/shear.js +35 -18
  53. package/skew.js +52 -17
  54. package/sub.js +10 -13
  55. package/subn.js +10 -13
  56. package/trace.js +4 -6
  57. package/transform.js +19 -23
  58. package/translation.js +6 -14
  59. package/transpose.js +26 -24
  60. package/viewport.js +9 -16
package/CHANGELOG.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Change Log
2
2
 
3
- - **Last updated**: 2023-12-03T12:13:31Z
3
+ - **Last updated**: 2023-12-11T10:07:09Z
4
4
  - **Generator**: [thi.ng/monopub](https://thi.ng/monopub)
5
5
 
6
6
  All notable changes to this project will be documented in this file.
package/README.md CHANGED
@@ -82,7 +82,7 @@ For Node.js REPL:
82
82
  const matrices = await import("@thi.ng/matrices");
83
83
  ```
84
84
 
85
- Package sizes (brotli'd, pre-treeshake): ESM: 5.11 KB
85
+ Package sizes (brotli'd, pre-treeshake): ESM: 5.07 KB
86
86
 
87
87
  ## Dependencies
88
88
 
package/add.js CHANGED
@@ -1,15 +1,12 @@
1
1
  import { add as _add, add4 } from "@thi.ng/vectors/add";
2
2
  import { defMath } from "./compile/emit.js";
3
- /**
4
- * Componentwise matrix addition. If `out` is not given, writes result
5
- * in `a`. Both input matrices MUST be of same size.
6
- *
7
- * out = a + b
8
- *
9
- * @param out -
10
- * @param a -
11
- * @param b -
12
- */
13
- export const add = _add;
14
- export const add22 = add4;
15
- export const [add23, add33, add44] = defMath(add, "+");
3
+ const add = _add;
4
+ const add22 = add4;
5
+ const [add23, add33, add44] = defMath(add, "+");
6
+ export {
7
+ add,
8
+ add22,
9
+ add23,
10
+ add33,
11
+ add44
12
+ };
package/addn.js CHANGED
@@ -1,15 +1,12 @@
1
1
  import { addN as _addN, addN4 } from "@thi.ng/vectors/addn";
2
2
  import { defMathN } from "./compile/emit.js";
3
- /**
4
- * Adds single scalar componentwise to matrix. If `out` is not given,
5
- * writes result in `mat`.
6
- *
7
- * out = mat + n
8
- *
9
- * @param out -
10
- * @param mat -
11
- * @param n -
12
- */
13
- export const addN = _addN;
14
- export const addN22 = addN4;
15
- export const [addN23, addN33, addN44] = defMathN(addN, "+");
3
+ const addN = _addN;
4
+ const addN22 = addN4;
5
+ const [addN23, addN33, addN44] = defMathN(addN, "+");
6
+ export {
7
+ addN,
8
+ addN22,
9
+ addN23,
10
+ addN33,
11
+ addN44
12
+ };
package/alignment-quat.js CHANGED
@@ -3,20 +3,14 @@ import { dot3 } from "@thi.ng/vectors/dot";
3
3
  import { mag } from "@thi.ng/vectors/mag";
4
4
  import { normalize3 } from "@thi.ng/vectors/normalize";
5
5
  import { quatFromAxisAngle } from "./quat-axis-angle.js";
6
- /**
7
- * Returns quaternion describing the rotation from direction vector
8
- * `from` -> `to`. If `normalize` is true (default), first normalizes
9
- * the vectors (not modifying original).
10
- *
11
- * @param from -
12
- * @param to -
13
- * @param normalize -
14
- */
15
- export const alignmentQuat = (from, to, normalize = true) => {
16
- if (normalize) {
17
- from = normalize3([], from);
18
- to = normalize3([], to);
19
- }
20
- const axis = cross3([], from, to);
21
- return quatFromAxisAngle(axis, Math.atan2(mag(axis), dot3(from, to)));
6
+ const alignmentQuat = (from, to, normalize = true) => {
7
+ if (normalize) {
8
+ from = normalize3([], from);
9
+ to = normalize3([], to);
10
+ }
11
+ const axis = cross3([], from, to);
12
+ return quatFromAxisAngle(axis, Math.atan2(mag(axis), dot3(from, to)));
13
+ };
14
+ export {
15
+ alignmentQuat
22
16
  };
package/api.js CHANGED
@@ -1 +0,0 @@
1
- export {};
package/column.js CHANGED
@@ -1,15 +1,23 @@
1
1
  import { setS2, setS3, setS4 } from "@thi.ng/vectors/sets";
2
2
  import { vop } from "@thi.ng/vectors/vop";
3
- /**
4
- * Extracts column vector from given matrix and writes result to `out`.
5
- * If `out` is null, creates new vector.
6
- *
7
- * @param out -
8
- * @param mat -
9
- * @param column -
10
- */
11
- export const column = vop(1);
12
- export const column22 = column.add(4, (out, m, n) => setS2(out, m, 0, n * 2));
13
- export const column23 = column.add(6, column22);
14
- export const column33 = column.add(9, (out, m, n) => setS3(out, m, 0, n * 3));
15
- export const column44 = column.add(16, (out, m, n) => setS4(out, m, 0, n * 4));
3
+ const column = vop(1);
4
+ const column22 = column.add(
5
+ 4,
6
+ (out, m, n) => setS2(out, m, 0, n * 2)
7
+ );
8
+ const column23 = column.add(6, column22);
9
+ const column33 = column.add(
10
+ 9,
11
+ (out, m, n) => setS3(out, m, 0, n * 3)
12
+ );
13
+ const column44 = column.add(
14
+ 16,
15
+ (out, m, n) => setS4(out, m, 0, n * 4)
16
+ );
17
+ export {
18
+ column,
19
+ column22,
20
+ column23,
21
+ column33,
22
+ column44
23
+ };
package/compile/emit.js CHANGED
@@ -1,5 +1,22 @@
1
1
  import { compile } from "@thi.ng/vectors/compile/emit";
2
- import { ARGS_VN, ARGS_VV, DEFAULT_OUT, MATH, MATH_N, } from "@thi.ng/vectors/compile/templates";
2
+ import {
3
+ ARGS_VN,
4
+ ARGS_VV,
5
+ DEFAULT_OUT,
6
+ MATH,
7
+ MATH_N
8
+ } from "@thi.ng/vectors/compile/templates";
3
9
  const DEFAULT_SIZES = [6, 9, 16];
4
- export const defMath = (fn, op, sizes = DEFAULT_SIZES) => sizes.map((n) => fn.add(n, compile(n, MATH(op), ARGS_VV, undefined, "o", "", DEFAULT_OUT)));
5
- export const defMathN = (fn, op, sizes = DEFAULT_SIZES) => sizes.map((n) => fn.add(n, compile(n, MATH_N(op), ARGS_VN, "o,a", "o", "", DEFAULT_OUT)));
10
+ const defMath = (fn, op, sizes = DEFAULT_SIZES) => sizes.map(
11
+ (n) => fn.add(
12
+ n,
13
+ compile(n, MATH(op), ARGS_VV, void 0, "o", "", DEFAULT_OUT)
14
+ )
15
+ );
16
+ const defMathN = (fn, op, sizes = DEFAULT_SIZES) => sizes.map(
17
+ (n) => fn.add(n, compile(n, MATH_N(op), ARGS_VN, "o,a", "o", "", DEFAULT_OUT))
18
+ );
19
+ export {
20
+ defMath,
21
+ defMathN
22
+ };
package/concat.js CHANGED
@@ -1,12 +1,5 @@
1
1
  import { mulM } from "./mulm.js";
2
- /**
3
- * Concatenates / multiplies given matrices in left-to-right order. A
4
- * minimum of 2 input matrices must be given. If `out` is null, writes
5
- * result into `a`.
6
- *
7
- * @param out -
8
- * @param a -
9
- * @param b -
10
- * @param xs -
11
- */
12
- export const concat = (out, a, b, ...xs) => xs.reduce((acc, x) => mulM(acc, acc, x), mulM(out, a, b));
2
+ const concat = (out, a, b, ...xs) => xs.reduce((acc, x) => mulM(acc, acc, x), mulM(out, a, b));
3
+ export {
4
+ concat
5
+ };
package/conjugate.js CHANGED
@@ -1,2 +1,5 @@
1
1
  import { setC4 } from "@thi.ng/vectors/setc";
2
- export const conjugateQ = (out, a) => setC4(out || a, -a[0], -a[1], -a[2], a[3]);
2
+ const conjugateQ = (out, a) => setC4(out || a, -a[0], -a[1], -a[2], a[3]);
3
+ export {
4
+ conjugateQ
5
+ };
package/constants.js CHANGED
@@ -1,15 +1,37 @@
1
- export const IDENT22 = Object.freeze([1, 0, 0, 1]);
2
- export const IDENT23 = Object.freeze([1, 0, 0, 1, 0, 0]);
3
- //prettier-ignore
4
- export const IDENT33 = Object.freeze([
5
- 1, 0, 0,
6
- 0, 1, 0,
7
- 0, 0, 1
1
+ const IDENT22 = Object.freeze([1, 0, 0, 1]);
2
+ const IDENT23 = Object.freeze([1, 0, 0, 1, 0, 0]);
3
+ const IDENT33 = Object.freeze([
4
+ 1,
5
+ 0,
6
+ 0,
7
+ 0,
8
+ 1,
9
+ 0,
10
+ 0,
11
+ 0,
12
+ 1
8
13
  ]);
9
- //prettier-ignore
10
- export const IDENT44 = Object.freeze([
11
- 1, 0, 0, 0,
12
- 0, 1, 0, 0,
13
- 0, 0, 1, 0,
14
- 0, 0, 0, 1
14
+ const IDENT44 = Object.freeze([
15
+ 1,
16
+ 0,
17
+ 0,
18
+ 0,
19
+ 0,
20
+ 1,
21
+ 0,
22
+ 0,
23
+ 0,
24
+ 0,
25
+ 1,
26
+ 0,
27
+ 0,
28
+ 0,
29
+ 0,
30
+ 1
15
31
  ]);
32
+ export {
33
+ IDENT22,
34
+ IDENT23,
35
+ IDENT33,
36
+ IDENT44
37
+ };
package/determinant.js CHANGED
@@ -1,32 +1,56 @@
1
1
  import { dotC4, dotC6 } from "@thi.ng/vectors/dotc";
2
2
  const dp4 = dotC4;
3
3
  const dp6 = dotC6;
4
- export const det22 = (m) => dp4(m[0], m[3], -m[1], m[2]);
5
- export const det23 = det22;
6
- export const det33 = (m) => {
7
- const [m00, m01, m02, m10, m11, m12, m20, m21, m22] = m;
8
- const d01 = dp4(m22, m11, -m12, m21);
9
- const d11 = dp4(m12, m20, -m22, m10);
10
- const d21 = dp4(m21, m10, -m11, m20);
11
- return dp6(m00, d01, m01, d11, m02, d21);
4
+ const det22 = (m) => dp4(m[0], m[3], -m[1], m[2]);
5
+ const det23 = det22;
6
+ const det33 = (m) => {
7
+ const [m00, m01, m02, m10, m11, m12, m20, m21, m22] = m;
8
+ const d01 = dp4(m22, m11, -m12, m21);
9
+ const d11 = dp4(m12, m20, -m22, m10);
10
+ const d21 = dp4(m21, m10, -m11, m20);
11
+ return dp6(m00, d01, m01, d11, m02, d21);
12
12
  };
13
- export const detCoeffs44 = (m) => {
14
- const [m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33,] = m;
15
- return [
16
- dp4(m00, m11, -m01, m10),
17
- dp4(m00, m12, -m02, m10),
18
- dp4(m00, m13, -m03, m10),
19
- dp4(m01, m12, -m02, m11),
20
- dp4(m01, m13, -m03, m11),
21
- dp4(m02, m13, -m03, m12),
22
- dp4(m20, m31, -m21, m30),
23
- dp4(m20, m32, -m22, m30),
24
- dp4(m20, m33, -m23, m30),
25
- dp4(m21, m32, -m22, m31),
26
- dp4(m21, m33, -m23, m31),
27
- dp4(m22, m33, -m23, m32),
28
- ];
13
+ const detCoeffs44 = (m) => {
14
+ const [
15
+ m00,
16
+ m01,
17
+ m02,
18
+ m03,
19
+ m10,
20
+ m11,
21
+ m12,
22
+ m13,
23
+ m20,
24
+ m21,
25
+ m22,
26
+ m23,
27
+ m30,
28
+ m31,
29
+ m32,
30
+ m33
31
+ ] = m;
32
+ return [
33
+ dp4(m00, m11, -m01, m10),
34
+ dp4(m00, m12, -m02, m10),
35
+ dp4(m00, m13, -m03, m10),
36
+ dp4(m01, m12, -m02, m11),
37
+ dp4(m01, m13, -m03, m11),
38
+ dp4(m02, m13, -m03, m12),
39
+ dp4(m20, m31, -m21, m30),
40
+ dp4(m20, m32, -m22, m30),
41
+ dp4(m20, m33, -m23, m30),
42
+ dp4(m21, m32, -m22, m31),
43
+ dp4(m21, m33, -m23, m31),
44
+ dp4(m22, m33, -m23, m32)
45
+ ];
46
+ };
47
+ const det44FromCoeffs = (d) => dp6(d[0], d[11], -d[1], d[10], d[2], d[9]) + dp6(d[3], d[8], -d[4], d[7], d[5], d[6]);
48
+ const det44 = (m) => det44FromCoeffs(detCoeffs44(m));
49
+ export {
50
+ det22,
51
+ det23,
52
+ det33,
53
+ det44,
54
+ det44FromCoeffs,
55
+ detCoeffs44
29
56
  };
30
- export const det44FromCoeffs = (d) => dp6(d[0], d[11], -d[1], d[10], d[2], d[9]) +
31
- dp6(d[3], d[8], -d[4], d[7], d[5], d[6]);
32
- export const det44 = (m) => det44FromCoeffs(detCoeffs44(m));
package/diag.js CHANGED
@@ -1,13 +1,14 @@
1
1
  import { setS2, setS3, setS4 } from "@thi.ng/vectors/sets";
2
2
  import { vop } from "@thi.ng/vectors/vop";
3
- /**
4
- * Extracts matrix diagonal into `out`.
5
- *
6
- * @param out -
7
- * @param mat -
8
- */
9
- export const diag = vop(1);
10
- export const diag22 = diag.add(4, (out, m) => setS2(out, m, 0, 0, 1, 3));
11
- export const diag23 = diag.add(6, diag22);
12
- export const diag33 = diag.add(9, (out, m) => setS3(out, m, 0, 0, 1, 4));
13
- export const diag44 = diag.add(16, (out, m) => setS4(out, m, 0, 0, 1, 5));
3
+ const diag = vop(1);
4
+ const diag22 = diag.add(4, (out, m) => setS2(out, m, 0, 0, 1, 3));
5
+ const diag23 = diag.add(6, diag22);
6
+ const diag33 = diag.add(9, (out, m) => setS3(out, m, 0, 0, 1, 4));
7
+ const diag44 = diag.add(16, (out, m) => setS4(out, m, 0, 0, 1, 5));
8
+ export {
9
+ diag,
10
+ diag22,
11
+ diag23,
12
+ diag33,
13
+ diag44
14
+ };
package/div.js CHANGED
@@ -1,15 +1,12 @@
1
1
  import { div as _div, div4 } from "@thi.ng/vectors/div";
2
2
  import { defMath } from "./compile/emit.js";
3
- /**
4
- * Componentwise matrix division. If `out` is not given, writes result
5
- * in `a`. Both input matrices MUST be of same size.
6
- *
7
- * out = a / b
8
- *
9
- * @param out -
10
- * @param a -
11
- * @param b -
12
- */
13
- export const div = _div;
14
- export const div22 = div4;
15
- export const [div23, div33, div44] = defMath(div, "/");
3
+ const div = _div;
4
+ const div22 = div4;
5
+ const [div23, div33, div44] = defMath(div, "/");
6
+ export {
7
+ div,
8
+ div22,
9
+ div23,
10
+ div33,
11
+ div44
12
+ };
package/divn.js CHANGED
@@ -1,15 +1,12 @@
1
1
  import { divN as _divN, divN4 } from "@thi.ng/vectors/divn";
2
2
  import { defMathN } from "./compile/emit.js";
3
- /**
4
- * Componentwise matrix division by single scalar. If `out` is not
5
- * given, writes result in `mat`.
6
- *
7
- * out = mat / n
8
- *
9
- * @param out -
10
- * @param mat -
11
- * @param n -
12
- */
13
- export const divN = _divN;
14
- export const divN22 = divN4;
15
- export const [divN23, divN33, divN44] = defMathN(divN, "/");
3
+ const divN = _divN;
4
+ const divN22 = divN4;
5
+ const [divN23, divN33, divN44] = defMathN(divN, "/");
6
+ export {
7
+ divN,
8
+ divN22,
9
+ divN23,
10
+ divN33,
11
+ divN44
12
+ };
package/fit.js CHANGED
@@ -4,27 +4,19 @@ import { safeDiv2, safeDiv3 } from "@thi.ng/vectors/safe-div";
4
4
  import { concat } from "./concat.js";
5
5
  import { scale23, scale44 } from "./scale.js";
6
6
  import { translation23, translation44 } from "./translation.js";
7
- /**
8
- * Creates a 2x3 matrix which maps coordinates from a 2D source rect (defined by
9
- * `srcPos` and `srcSize`) to a destination rect (`destPos` & `destSize`).
10
- * Writes result matrix to `out` or creates new matrix if `out` is null.
11
- *
12
- * @param out
13
- * @param srcPos
14
- * @param srcSize
15
- * @param destPos
16
- * @param destSize
17
- */
18
- export const fit23 = (out, srcPos, srcSize, destPos, destSize) => concat(out, translation23(null, maddN2([], destSize, 0.5, destPos)), scale23(null, safeDiv2([], destSize, srcSize)), translation23(null, mulN2(null, maddN2([], srcSize, 0.5, srcPos), -1)));
19
- /**
20
- * Creates a 4x4 matrix which maps coordinates from a 3D source AABB (defined by
21
- * `srcPos` and `srcSize`) to a destination AABB (`destPos` & `destSize`).
22
- * Writes result matrix to `out` or creates new matrix if `out` is null.
23
- *
24
- * @param out
25
- * @param srcPos
26
- * @param srcSize
27
- * @param destPos
28
- * @param destSize
29
- */
30
- export const fit44 = (out, srcPos, srcSize, destPos, destSize) => concat(out, translation44(null, maddN3([], destSize, 0.5, destPos)), scale44(null, safeDiv3([], destSize, srcSize)), translation44(null, mulN3(null, maddN3([], srcSize, 0.5, srcPos), -1)));
7
+ const fit23 = (out, srcPos, srcSize, destPos, destSize) => concat(
8
+ out,
9
+ translation23(null, maddN2([], destSize, 0.5, destPos)),
10
+ scale23(null, safeDiv2([], destSize, srcSize)),
11
+ translation23(null, mulN2(null, maddN2([], srcSize, 0.5, srcPos), -1))
12
+ );
13
+ const fit44 = (out, srcPos, srcSize, destPos, destSize) => concat(
14
+ out,
15
+ translation44(null, maddN3([], destSize, 0.5, destPos)),
16
+ scale44(null, safeDiv3([], destSize, srcSize)),
17
+ translation44(null, mulN3(null, maddN3([], srcSize, 0.5, srcPos), -1))
18
+ );
19
+ export {
20
+ fit23,
21
+ fit44
22
+ };
package/frustum.js CHANGED
@@ -1,32 +1,42 @@
1
1
  import { DEG2RAD } from "@thi.ng/math/api";
2
2
  import { setC } from "@thi.ng/vectors/setc";
3
- /**
4
- * Constructs a 4x4 matrix representing the given view frustum. Creates
5
- * new matrix if `out` is `null`.
6
- *
7
- * @param out -
8
- * @param left -
9
- * @param right -
10
- * @param bottom -
11
- * @param top -
12
- * @param near -
13
- * @param far -
14
- */
15
- export const frustum = (out, left, right, bottom, top, near, far) => {
16
- const dx = 1 / (right - left);
17
- const dy = 1 / (top - bottom);
18
- const dz = 1 / (far - near);
19
- return setC(out || [], near * 2 * dx, 0, 0, 0, 0, near * 2 * dy, 0, 0, (right + left) * dx, (top + bottom) * dy, -(far + near) * dz, -1, 0, 0, -(far * near * 2) * dz, 0);
3
+ const frustum = (out, left, right, bottom, top, near, far) => {
4
+ const dx = 1 / (right - left);
5
+ const dy = 1 / (top - bottom);
6
+ const dz = 1 / (far - near);
7
+ return setC(
8
+ out || [],
9
+ near * 2 * dx,
10
+ 0,
11
+ 0,
12
+ 0,
13
+ 0,
14
+ near * 2 * dy,
15
+ 0,
16
+ 0,
17
+ (right + left) * dx,
18
+ (top + bottom) * dy,
19
+ -(far + near) * dz,
20
+ -1,
21
+ 0,
22
+ 0,
23
+ -(far * near * 2) * dz,
24
+ 0
25
+ );
20
26
  };
21
- export const frustumBounds = (fovy, aspect, near, far) => {
22
- const top = near * Math.tan((fovy * DEG2RAD) / 2);
23
- const right = top * aspect;
24
- return {
25
- left: -right,
26
- right,
27
- bottom: -top,
28
- top,
29
- near,
30
- far,
31
- };
27
+ const frustumBounds = (fovy, aspect, near, far) => {
28
+ const top = near * Math.tan(fovy * DEG2RAD / 2);
29
+ const right = top * aspect;
30
+ return {
31
+ left: -right,
32
+ right,
33
+ bottom: -top,
34
+ top,
35
+ near,
36
+ far
37
+ };
38
+ };
39
+ export {
40
+ frustum,
41
+ frustumBounds
32
42
  };
package/identity.js CHANGED
@@ -1,11 +1,15 @@
1
1
  import { vop } from "@thi.ng/vectors/vop";
2
2
  import { IDENT22, IDENT23, IDENT33, IDENT44 } from "./constants.js";
3
3
  import { set } from "./set.js";
4
- /**
5
- * Writes identity matrix into given matrix.
6
- */
7
- export const identity = vop();
8
- export const identity22 = identity.add(4, (m) => set(m, IDENT22));
9
- export const identity23 = identity.add(6, (m) => set(m, IDENT23));
10
- export const identity33 = identity.add(9, (m) => set(m, IDENT33));
11
- export const identity44 = identity.add(16, (m) => set(m, IDENT44));
4
+ const identity = vop();
5
+ const identity22 = identity.add(4, (m) => set(m, IDENT22));
6
+ const identity23 = identity.add(6, (m) => set(m, IDENT23));
7
+ const identity33 = identity.add(9, (m) => set(m, IDENT33));
8
+ const identity44 = identity.add(16, (m) => set(m, IDENT44));
9
+ export {
10
+ identity,
11
+ identity22,
12
+ identity23,
13
+ identity33,
14
+ identity44
15
+ };