@thi.ng/matrices 2.2.12 → 2.2.14
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.
- package/CHANGELOG.md +1 -1
- package/README.md +1 -1
- package/add.js +10 -13
- package/addn.js +10 -13
- package/alignment-quat.js +10 -16
- package/api.js +0 -1
- package/column.js +21 -13
- package/compile/emit.js +20 -3
- package/concat.js +4 -11
- package/conjugate.js +4 -1
- package/constants.js +35 -13
- package/determinant.js +51 -27
- package/diag.js +12 -11
- package/div.js +10 -13
- package/divn.js +10 -13
- package/fit.js +16 -24
- package/frustum.js +38 -28
- package/identity.js +12 -8
- package/invert.js +100 -45
- package/lookat.js +26 -15
- package/m22-m23.js +4 -8
- package/m23-m22.js +4 -8
- package/m23-m44.js +26 -16
- package/m33-m44.js +26 -16
- package/m44-m33.js +4 -11
- package/matn.js +10 -4
- package/matv.js +10 -36
- package/mixq.js +18 -28
- package/mul.js +10 -15
- package/mulm.js +67 -45
- package/muln.js +10 -13
- package/mulq.js +13 -12
- package/mulv.js +58 -77
- package/mulvm.js +16 -46
- package/normal-mat.js +10 -23
- package/orthagonal.js +17 -25
- package/ortho.js +26 -17
- package/outer-product.js +48 -10
- package/package.json +10 -7
- package/perspective.js +6 -13
- package/project.js +20 -51
- package/quat-axis-angle.js +13 -23
- package/quat-euler.js +16 -18
- package/quat-m33.js +29 -21
- package/quat-m44.js +36 -22
- package/rotation-around-axis.js +27 -32
- package/rotation.js +41 -79
- package/row.js +12 -13
- package/scale-center.js +16 -16
- package/scale.js +32 -42
- package/set.js +13 -6
- package/shear.js +35 -18
- package/skew.js +52 -17
- package/sub.js +10 -13
- package/subn.js +10 -13
- package/trace.js +4 -6
- package/transform.js +19 -23
- package/translation.js +6 -14
- package/transpose.js +26 -24
- package/viewport.js +9 -16
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
*
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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 {
|
|
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
|
-
|
|
5
|
-
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
package/constants.js
CHANGED
|
@@ -1,15 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
*
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export
|
|
10
|
-
|
|
11
|
-
|
|
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
|
+
};
|