linearly 0.1.0 → 0.3.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.
package/README.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # Lienarly
2
2
 
3
+ [![NPM Version](https://img.shields.io/npm/v/linearly.svg)](https://www.npmjs.com/package/linearly)
4
+ ![CI Test Result](https://github.com/baku89/linearly/actions/workflows/ci.yml/badge.svg)
5
+
3
6
  [glMatrix](https://github.com/toji/gl-matrix)-like library but using immutable data structure.
4
7
 
5
8
  ```js
@@ -16,3 +19,16 @@ const dir = vec3.normalize([2, 1, 3])
16
19
  let out = vec3.cross(dir, [0, 1, 0])
17
20
  out = vec3.scale(out, 3)
18
21
  ```
22
+
23
+ ## Development
24
+
25
+ ```
26
+ git clone https://github.com/baku89/lnearly
27
+ cd linearly
28
+ yarn install
29
+ yarn test --watch
30
+ ```
31
+
32
+ ## LICENSE
33
+
34
+ This repository is published under an MIT License. See the included [LICENSE file](./LICENSE).
package/lib/common.js CHANGED
@@ -1,16 +1,30 @@
1
1
  /**
2
2
  * Common utilities
3
3
  */
4
- // Configuration Constants
5
- export const EPSILON = 0.000001;
6
- /**
7
- * Symmetric round
8
- * see https://www.npmjs.com/package/round-half-up-symmetric#user-content-detailed-background
9
- */
10
- export function round(a) {
11
- if (a >= 0)
12
- return Math.round(a);
13
- return a % 0.5 === 0 ? Math.floor(a) : Math.round(a);
14
- }
15
- export const DEFAULT_ANGLE_ORDER = 'zyx';
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILDBCQUEwQjtBQUMxQixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFBO0FBRS9COzs7R0FHRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQUMsQ0FBUztJQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2hDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDckQsQ0FBQztBQUlELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFlLEtBQUssQ0FBQSJ9
4
+ (function (factory) {
5
+ if (typeof module === "object" && typeof module.exports === "object") {
6
+ var v = factory(require, exports);
7
+ if (v !== undefined) module.exports = v;
8
+ }
9
+ else if (typeof define === "function" && define.amd) {
10
+ define(["require", "exports"], factory);
11
+ }
12
+ })(function (require, exports) {
13
+ "use strict";
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.DEFAULT_ANGLE_ORDER = exports.round = exports.EPSILON = void 0;
16
+ // Configuration Constants
17
+ exports.EPSILON = 0.000001;
18
+ /**
19
+ * Symmetric round
20
+ * see https://www.npmjs.com/package/round-half-up-symmetric#user-content-detailed-background
21
+ */
22
+ function round(a) {
23
+ if (a >= 0)
24
+ return Math.round(a);
25
+ return a % 0.5 === 0 ? Math.floor(a) : Math.round(a);
26
+ }
27
+ exports.round = round;
28
+ exports.DEFAULT_ANGLE_ORDER = 'zyx';
29
+ });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRzs7Ozs7Ozs7Ozs7OztJQUVILDBCQUEwQjtJQUNiLFFBQUEsT0FBTyxHQUFHLFFBQVEsQ0FBQTtJQUUvQjs7O09BR0c7SUFDSCxTQUFnQixLQUFLLENBQUMsQ0FBUztRQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2hDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDckQsQ0FBQztJQUhELHNCQUdDO0lBSVksUUFBQSxtQkFBbUIsR0FBZSxLQUFLLENBQUEifQ==
package/lib/index.js CHANGED
@@ -1,9 +1,45 @@
1
- export * as vec2 from './vec2';
2
- export * as vec3 from './vec3';
3
- export * as vec4 from './vec4';
4
- export * as mat2 from './mat2';
5
- export * as mat2d from './mat2d';
6
- export * as mat3 from './mat3';
7
- export * as mat4 from './mat4';
8
- export * as quat from './quat';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxRQUFRLENBQUE7QUFHOUIsT0FBTyxLQUFLLElBQUksTUFBTSxRQUFRLENBQUE7QUFHOUIsT0FBTyxLQUFLLElBQUksTUFBTSxRQUFRLENBQUE7QUFHOUIsT0FBTyxLQUFLLElBQUksTUFBTSxRQUFRLENBQUE7QUFHOUIsT0FBTyxLQUFLLEtBQUssTUFBTSxTQUFTLENBQUE7QUFHaEMsT0FBTyxLQUFLLElBQUksTUFBTSxRQUFRLENBQUE7QUFHOUIsT0FBTyxLQUFLLElBQUksTUFBTSxRQUFRLENBQUE7QUFHOUIsT0FBTyxLQUFLLElBQUksTUFBTSxRQUFRLENBQUEifQ==
1
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
2
+ if (k2 === undefined) k2 = k;
3
+ var desc = Object.getOwnPropertyDescriptor(m, k);
4
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
5
+ desc = { enumerable: true, get: function() { return m[k]; } };
6
+ }
7
+ Object.defineProperty(o, k2, desc);
8
+ }) : (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ o[k2] = m[k];
11
+ }));
12
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
13
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
14
+ }) : function(o, v) {
15
+ o["default"] = v;
16
+ });
17
+ var __importStar = (this && this.__importStar) || function (mod) {
18
+ if (mod && mod.__esModule) return mod;
19
+ var result = {};
20
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
21
+ __setModuleDefault(result, mod);
22
+ return result;
23
+ };
24
+ (function (factory) {
25
+ if (typeof module === "object" && typeof module.exports === "object") {
26
+ var v = factory(require, exports);
27
+ if (v !== undefined) module.exports = v;
28
+ }
29
+ else if (typeof define === "function" && define.amd) {
30
+ define(["require", "exports", "./vec2", "./vec3", "./vec4", "./mat2", "./mat2d", "./mat3", "./mat4", "./quat"], factory);
31
+ }
32
+ })(function (require, exports) {
33
+ "use strict";
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ exports.quat = exports.mat4 = exports.mat3 = exports.mat2d = exports.mat2 = exports.vec4 = exports.vec3 = exports.vec2 = void 0;
36
+ exports.vec2 = __importStar(require("./vec2"));
37
+ exports.vec3 = __importStar(require("./vec3"));
38
+ exports.vec4 = __importStar(require("./vec4"));
39
+ exports.mat2 = __importStar(require("./mat2"));
40
+ exports.mat2d = __importStar(require("./mat2d"));
41
+ exports.mat3 = __importStar(require("./mat3"));
42
+ exports.mat4 = __importStar(require("./mat4"));
43
+ exports.quat = __importStar(require("./quat"));
44
+ });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQSwrQ0FBOEI7SUFHOUIsK0NBQThCO0lBRzlCLCtDQUE4QjtJQUc5QiwrQ0FBOEI7SUFHOUIsaURBQWdDO0lBR2hDLCtDQUE4QjtJQUc5QiwrQ0FBOEI7SUFHOUIsK0NBQThCIn0=
package/lib/mat2.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { Vec2 } from './vec2';
2
2
  export type Mat2 = readonly [number, number, number, number];
3
+ export declare function of(m00: number, m01: number, m10: number, m11: number): Mat2;
3
4
  /**
4
5
  * The identity matrix of mat2
5
6
  *
@@ -38,6 +39,11 @@ export declare function rotate(a: Mat2, rad: number): Mat2;
38
39
  * Scales the mat2 by the dimensions in the given vec2
39
40
  **/
40
41
  export declare function scale(a: Mat2, v: Vec2): Mat2;
42
+ /**
43
+ * Apply skew to the mat2d by the given angles
44
+ * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skew
45
+ */
46
+ export declare function skew(m: Mat2, ax: number, ay: number): Mat2;
41
47
  /**
42
48
  * Creates a matrix from a given angle
43
49
  */
@@ -46,6 +52,11 @@ export declare function fromRotation(rad: number): Mat2;
46
52
  * Creates a matrix from a vector scaling
47
53
  */
48
54
  export declare function fromScaling(v: Vec2): Mat2;
55
+ /**
56
+ * Creates a matrix from a vector skew
57
+ * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skew
58
+ */
59
+ export declare function fromSkew(ax: number, ay: number): Mat2;
49
60
  /**
50
61
  * Returns Frobenius norm of a mat2
51
62
  */
package/lib/mat2.js CHANGED
@@ -1,156 +1,234 @@
1
- import * as Common from './common';
2
- /**
3
- * The identity matrix of mat2
4
- *
5
- */
6
- export const identity = Object.freeze([1, 0, 0, 1]);
7
- export const zero = Object.freeze([0, 0, 0, 0]);
8
- /**
9
- * Transpose the values of a mat2
10
- */
11
- export function transpose(a) {
12
- // prettier-ignore
13
- return [
14
- a[0], a[2],
15
- a[1], a[3],
16
- ];
17
- }
18
- /**
19
- * Inverts a mat2
20
- */
21
- export function invert(a) {
22
- const [a0, a1, a2, a3] = a;
23
- // Calculate the determinant
24
- const det = a0 * a3 - a2 * a1;
25
- if (!det) {
26
- return null;
27
- }
28
- const detinv = 1 / det;
29
- // prettier-ignore
30
- return [
31
- a3 * detinv, -a1 * detinv,
32
- -a2 * detinv, a0 * detinv
33
- ];
34
- }
35
- /**
36
- * Calculates the adjugate of a mat2
37
- */
38
- export function adjoint(a) {
39
- // Caching this value is necessary if out == a
40
- const a0 = a[0];
41
- return [a[3], -a[1], -a[2], a0];
42
- }
43
- /**
44
- * Calculates the determinant of a mat2
45
- * @returns determinant of a
46
- */
47
- export function determinant(a) {
48
- return a[0] * a[3] - a[2] * a[1];
49
- }
50
- /**
51
- * Multiplies two mat2's
52
- */
53
- export function multiply(a, b) {
54
- const [a0, a1, a2, a3] = a;
55
- const [b0, b1, b2, b3] = b;
56
- return [
57
- a0 * b0 + a2 * b1,
58
- a1 * b0 + a3 * b1,
59
- a0 * b2 + a2 * b3,
60
- a1 * b2 + a3 * b3,
61
- ];
62
- }
63
- /**
64
- * Rotates a mat2 by the given angle
65
- *
66
- * @param a the matrix to rotate
67
- * @param rad the angle to rotate the matrix by
68
- */
69
- export function rotate(a, rad) {
70
- const [a0, a1, a2, a3] = a;
71
- const s = Math.sin(rad);
72
- const c = Math.cos(rad);
73
- return [a0 * c + a2 * s, a1 * c + a3 * s, a0 * -s + a2 * c, a1 * -s + a3 * c];
74
- }
75
- /**
76
- * Scales the mat2 by the dimensions in the given vec2
77
- **/
78
- export function scale(a, v) {
79
- const [a0, a1, a2, a3] = a;
80
- const [v0, v1] = v;
81
- return [a0 * v0, a1 * v0, a2 * v1, a3 * v1];
82
- }
83
- /**
84
- * Creates a matrix from a given angle
85
- */
86
- export function fromRotation(rad) {
87
- const s = Math.sin(rad);
88
- const c = Math.cos(rad);
89
- return [c, s, -s, c];
90
- }
91
- /**
92
- * Creates a matrix from a vector scaling
93
- */
94
- export function fromScaling(v) {
95
- return [v[0], 0, 0, v[1]];
96
- }
97
- /**
98
- * Returns Frobenius norm of a mat2
99
- */
100
- export function frob(a) {
101
- return Math.sqrt(a[0] * a[0] + a[1] * a[1] + a[2] * a[2] + a[3] * a[3]);
102
- }
103
- /**
104
- * Adds two mat2's
105
- */
106
- export function add(a, b) {
107
- return [a[0] + b[0], a[1] + b[1], a[2] + b[2], a[3] + b[3]];
108
- }
109
- /**
110
- * Subtracts matrix b from matrix a
111
- */
112
- export function subtract(a, b) {
113
- return [a[0] - b[0], a[1] - b[1], a[2] - b[2], a[3] - b[3]];
114
- }
115
- /**
116
- * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)
117
- */
118
- export function exactEquals(a, b) {
119
- return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];
120
- }
121
- /**
122
- * Returns whether or not the matrices have approximately the same elements in the same position.
123
- */
124
- export function equals(a, b) {
125
- const [a0, a1, a2, a3] = a;
126
- const [b0, b1, b2, b3] = b;
127
- return (Math.abs(a0 - b0) <=
128
- Common.EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) &&
129
- Math.abs(a1 - b1) <=
130
- Common.EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) &&
131
- Math.abs(a2 - b2) <=
132
- Common.EPSILON * Math.max(1, Math.abs(a2), Math.abs(b2)) &&
133
- Math.abs(a3 - b3) <=
134
- Common.EPSILON * Math.max(1, Math.abs(a3), Math.abs(b3)));
135
- }
136
- /**
137
- * Multiply each element of the matrix by a scalar.
138
- *
139
- * @param a the matrix to scale
140
- * @param s amount to scale the matrix's elements by
141
- */
142
- export function multiplyScalar(a, s) {
143
- return [a[0] * s, a[1] * s, a[2] * s, a[3] * s];
144
- }
145
- /**
146
- * Adds two mat2's after multiplying each element of the second operand by a scalar value.
147
- */
148
- export function multiplyScalarAndAdd(a, b, scale) {
149
- return [
150
- a[0] + b[0] * scale,
151
- a[1] + b[1] * scale,
152
- a[2] + b[2] * scale,
153
- a[3] + b[3] * scale,
154
- ];
155
- }
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Mi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXQyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE1BQU0sVUFBVSxDQUFBO0FBS2xDOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBUyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUV6RCxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQVMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFFckQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLENBQU87SUFDaEMsa0JBQWtCO0lBQ2xCLE9BQU87UUFDTixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNWLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ1YsQ0FBQTtBQUNGLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxNQUFNLENBQUMsQ0FBTztJQUM3QixNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRTFCLDRCQUE0QjtJQUM1QixNQUFNLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUE7SUFFN0IsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNULE9BQU8sSUFBSSxDQUFBO0tBQ1g7SUFDRCxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFBO0lBRXRCLGtCQUFrQjtJQUNsQixPQUFPO1FBQ0osRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxNQUFNO1FBQzFCLENBQUMs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QUNILE1BQU0sVUFBVSxXQUFXLENBQUMsQ0FBTztJQUNsQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDMUIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLElBQUksQ0FBQyxDQUFPO0lBQzNCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDeEUsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFPLEVBQUUsQ0FBTztJQUNuQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQzVELENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQUMsQ0FBTyxFQUFFLENBQU87SUFDeEMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxD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
1
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
2
+ if (k2 === undefined) k2 = k;
3
+ var desc = Object.getOwnPropertyDescriptor(m, k);
4
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
5
+ desc = { enumerable: true, get: function() { return m[k]; } };
6
+ }
7
+ Object.defineProperty(o, k2, desc);
8
+ }) : (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ o[k2] = m[k];
11
+ }));
12
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
13
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
14
+ }) : function(o, v) {
15
+ o["default"] = v;
16
+ });
17
+ var __importStar = (this && this.__importStar) || function (mod) {
18
+ if (mod && mod.__esModule) return mod;
19
+ var result = {};
20
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
21
+ __setModuleDefault(result, mod);
22
+ return result;
23
+ };
24
+ (function (factory) {
25
+ if (typeof module === "object" && typeof module.exports === "object") {
26
+ var v = factory(require, exports);
27
+ if (v !== undefined) module.exports = v;
28
+ }
29
+ else if (typeof define === "function" && define.amd) {
30
+ define(["require", "exports", "./common"], factory);
31
+ }
32
+ })(function (require, exports) {
33
+ "use strict";
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ exports.multiplyScalarAndAdd = exports.multiplyScalar = exports.equals = exports.exactEquals = exports.subtract = exports.add = exports.frob = exports.fromSkew = exports.fromScaling = exports.fromRotation = exports.skew = exports.scale = exports.rotate = exports.multiply = exports.determinant = exports.adjoint = exports.invert = exports.transpose = exports.zero = exports.identity = exports.of = void 0;
36
+ const Common = __importStar(require("./common"));
37
+ function of(m00, m01, m10, m11) {
38
+ return [m00, m01, m10, m11];
39
+ }
40
+ exports.of = of;
41
+ /**
42
+ * The identity matrix of mat2
43
+ *
44
+ */
45
+ exports.identity = Object.freeze([1, 0, 0, 1]);
46
+ exports.zero = Object.freeze([0, 0, 0, 0]);
47
+ /**
48
+ * Transpose the values of a mat2
49
+ */
50
+ function transpose(a) {
51
+ // prettier-ignore
52
+ return [
53
+ a[0], a[2],
54
+ a[1], a[3],
55
+ ];
56
+ }
57
+ exports.transpose = transpose;
58
+ /**
59
+ * Inverts a mat2
60
+ */
61
+ function invert(a) {
62
+ const [a0, a1, a2, a3] = a;
63
+ // Calculate the determinant
64
+ const det = a0 * a3 - a2 * a1;
65
+ if (!det) {
66
+ return null;
67
+ }
68
+ const detinv = 1 / det;
69
+ // prettier-ignore
70
+ return [
71
+ a3 * detinv, -a1 * detinv,
72
+ -a2 * detinv, a0 * detinv
73
+ ];
74
+ }
75
+ exports.invert = invert;
76
+ /**
77
+ * Calculates the adjugate of a mat2
78
+ */
79
+ function adjoint(a) {
80
+ // Caching this value is necessary if out == a
81
+ const a0 = a[0];
82
+ return [a[3], -a[1], -a[2], a0];
83
+ }
84
+ exports.adjoint = adjoint;
85
+ /**
86
+ * Calculates the determinant of a mat2
87
+ * @returns determinant of a
88
+ */
89
+ function determinant(a) {
90
+ return a[0] * a[3] - a[2] * a[1];
91
+ }
92
+ exports.determinant = determinant;
93
+ /**
94
+ * Multiplies two mat2's
95
+ */
96
+ function multiply(a, b) {
97
+ const [a0, a1, a2, a3] = a;
98
+ const [b0, b1, b2, b3] = b;
99
+ return [
100
+ a0 * b0 + a2 * b1,
101
+ a1 * b0 + a3 * b1,
102
+ a0 * b2 + a2 * b3,
103
+ a1 * b2 + a3 * b3,
104
+ ];
105
+ }
106
+ exports.multiply = multiply;
107
+ /**
108
+ * Rotates a mat2 by the given angle
109
+ *
110
+ * @param a the matrix to rotate
111
+ * @param rad the angle to rotate the matrix by
112
+ */
113
+ function rotate(a, rad) {
114
+ const [a0, a1, a2, a3] = a;
115
+ const s = Math.sin(rad);
116
+ const c = Math.cos(rad);
117
+ return [a0 * c + a2 * s, a1 * c + a3 * s, a0 * -s + a2 * c, a1 * -s + a3 * c];
118
+ }
119
+ exports.rotate = rotate;
120
+ /**
121
+ * Scales the mat2 by the dimensions in the given vec2
122
+ **/
123
+ function scale(a, v) {
124
+ const [a0, a1, a2, a3] = a;
125
+ const [v0, v1] = v;
126
+ return [a0 * v0, a1 * v0, a2 * v1, a3 * v1];
127
+ }
128
+ exports.scale = scale;
129
+ /**
130
+ * Apply skew to the mat2d by the given angles
131
+ * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skew
132
+ */
133
+ function skew(m, ax, ay) {
134
+ return multiply(m, fromSkew(ax, ay));
135
+ }
136
+ exports.skew = skew;
137
+ /**
138
+ * Creates a matrix from a given angle
139
+ */
140
+ function fromRotation(rad) {
141
+ const s = Math.sin(rad);
142
+ const c = Math.cos(rad);
143
+ return [c, s, -s, c];
144
+ }
145
+ exports.fromRotation = fromRotation;
146
+ /**
147
+ * Creates a matrix from a vector scaling
148
+ */
149
+ function fromScaling(v) {
150
+ return [v[0], 0, 0, v[1]];
151
+ }
152
+ exports.fromScaling = fromScaling;
153
+ /**
154
+ * Creates a matrix from a vector skew
155
+ * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skew
156
+ */
157
+ function fromSkew(ax, ay) {
158
+ const x = Math.tan(ax);
159
+ const y = Math.tan(ay);
160
+ // prettier-ignore
161
+ return [
162
+ 1, y,
163
+ x, 1,
164
+ ];
165
+ }
166
+ exports.fromSkew = fromSkew;
167
+ /**
168
+ * Returns Frobenius norm of a mat2
169
+ */
170
+ function frob(a) {
171
+ return Math.sqrt(a[0] * a[0] + a[1] * a[1] + a[2] * a[2] + a[3] * a[3]);
172
+ }
173
+ exports.frob = frob;
174
+ /**
175
+ * Adds two mat2's
176
+ */
177
+ function add(a, b) {
178
+ return [a[0] + b[0], a[1] + b[1], a[2] + b[2], a[3] + b[3]];
179
+ }
180
+ exports.add = add;
181
+ /**
182
+ * Subtracts matrix b from matrix a
183
+ */
184
+ function subtract(a, b) {
185
+ return [a[0] - b[0], a[1] - b[1], a[2] - b[2], a[3] - b[3]];
186
+ }
187
+ exports.subtract = subtract;
188
+ /**
189
+ * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)
190
+ */
191
+ function exactEquals(a, b) {
192
+ return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];
193
+ }
194
+ exports.exactEquals = exactEquals;
195
+ /**
196
+ * Returns whether or not the matrices have approximately the same elements in the same position.
197
+ */
198
+ function equals(a, b) {
199
+ const [a0, a1, a2, a3] = a;
200
+ const [b0, b1, b2, b3] = b;
201
+ return (Math.abs(a0 - b0) <=
202
+ Common.EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) &&
203
+ Math.abs(a1 - b1) <=
204
+ Common.EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) &&
205
+ Math.abs(a2 - b2) <=
206
+ Common.EPSILON * Math.max(1, Math.abs(a2), Math.abs(b2)) &&
207
+ Math.abs(a3 - b3) <=
208
+ Common.EPSILON * Math.max(1, Math.abs(a3), Math.abs(b3)));
209
+ }
210
+ exports.equals = equals;
211
+ /**
212
+ * Multiply each element of the matrix by a scalar.
213
+ *
214
+ * @param a the matrix to scale
215
+ * @param s amount to scale the matrix's elements by
216
+ */
217
+ function multiplyScalar(a, s) {
218
+ return [a[0] * s, a[1] * s, a[2] * s, a[3] * s];
219
+ }
220
+ exports.multiplyScalar = multiplyScalar;
221
+ /**
222
+ * Adds two mat2's after multiplying each element of the second operand by a scalar value.
223
+ */
224
+ function multiplyScalarAndAdd(a, b, scale) {
225
+ return [
226
+ a[0] + b[0] * scale,
227
+ a[1] + b[1] * scale,
228
+ a[2] + b[2] * scale,
229
+ a[3] + b[3] * scale,
230
+ ];
231
+ }
232
+ exports.multiplyScalarAndAdd = multiplyScalarAndAdd;
233
+ });
234
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Mi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXQyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsaURBQWtDO0lBS2xDLFNBQWdCLEVBQUUsQ0FBQyxHQUFXLEVBQUUsR0FBVyxFQUFFLEdBQVcsRUFBRSxHQUFXO1FBQ3BFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUM1QixDQUFDO0lBRkQsZ0JBRUM7SUFFRDs7O09BR0c7SUFDVSxRQUFBLFFBQVEsR0FBUyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUU1QyxRQUFBLElBQUksR0FBUyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUVyRDs7T0FFRztJQUNILFNBQWdCLFNBQVMsQ0FBQyxDQUFPO1FBQ2hDLGtCQUFrQjtRQUNsQixPQUFPO1lBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDVixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNWLENBQUE7SUFDRixDQUFDO0lBTkQsOEJBTUM7SUFFRDs7T0FFRztJQUNILFNBQWdCLE1BQU0sQ0FBQyxDQUFPO1FBQzdCLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUE7UUFFMUIsNEJBQTRCO1FBQzVCLE1BQU0sR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQTtRQUU3QixJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1QsT0FBTyxJ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
package/lib/mat2d.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import { Vec2 } from './vec2';
2
- export type Mat2d = readonly [number, number, number, number, number, number];
3
2
  /**
4
3
  * 2x3 Matrix
5
4
  * @module mat2d
@@ -18,6 +17,8 @@ export type Mat2d = readonly [number, number, number, number, number, number];
18
17
  * </pre>
19
18
  * The last column is ignored so the array is shorter and operations are faster.
20
19
  */
20
+ export type Mat2d = readonly [number, number, number, number, number, number];
21
+ export declare function of(a: number, b: number, c: number, d: number, tx: number, ty: number): Mat2d;
21
22
  /**
22
23
  * The identity matrix of mat2d
23
24
  */
@@ -47,6 +48,11 @@ export declare function scale(a: Mat2d, v: Vec2): Mat2d;
47
48
  * Translates the mat2d by the dimensions in the given vec2
48
49
  **/
49
50
  export declare function translate(m: Mat2d, v: Vec2): Mat2d;
51
+ /**
52
+ * Apply skew to the mat2d by the given angles
53
+ * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skew
54
+ */
55
+ export declare function skew(m: Mat2d, ax: number, ay: number): Mat2d;
50
56
  /**
51
57
  * Creates a matrix from a given angle
52
58
  * This is equivalent to (but much faster than):
@@ -60,6 +66,11 @@ export declare function fromScaling(v: Vec2): Mat2d;
60
66
  * Creates a matrix from a vector translation
61
67
  */
62
68
  export declare function fromTranslation(v: Vec2): Mat2d;
69
+ /**
70
+ * Creates a matrix from a vector skew
71
+ * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skew
72
+ */
73
+ export declare function fromSkew(ax: number, ay: number): Mat2d;
63
74
  /**
64
75
  * Returns Frobenius norm of a mat2d
65
76
  */