linearly 0.8.2 → 0.9.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/lib/index.js ADDED
@@ -0,0 +1,45 @@
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 ADDED
@@ -0,0 +1,79 @@
1
+ import { Vec2 } from './vec2';
2
+ export type Mat2 = readonly [number, number, number, number];
3
+ /**
4
+ * The identity matrix of mat2
5
+ *
6
+ */
7
+ export declare const identity: Mat2;
8
+ export declare const zero: Mat2;
9
+ /**
10
+ * Transpose the values of a mat2
11
+ */
12
+ export declare function transpose(a: Mat2): Mat2;
13
+ /**
14
+ * Inverts a mat2
15
+ */
16
+ export declare function invert(a: Mat2): Mat2 | null;
17
+ /**
18
+ * Calculates the adjugate of a mat2
19
+ */
20
+ export declare function adjoint(a: Mat2): Mat2;
21
+ /**
22
+ * Calculates the determinant of a mat2
23
+ * @returns determinant of a
24
+ */
25
+ export declare function determinant(a: Mat2): number;
26
+ /**
27
+ * Multiplies two mat2's
28
+ */
29
+ export declare function multiply(a: Mat2, b: Mat2): Mat2;
30
+ /**
31
+ * Rotates a mat2 by the given angle
32
+ *
33
+ * @param a the matrix to rotate
34
+ * @param rad the angle to rotate the matrix by
35
+ */
36
+ export declare function rotate(a: Mat2, rad: number): Mat2;
37
+ /**
38
+ * Scales the mat2 by the dimensions in the given vec2
39
+ **/
40
+ export declare function scale(a: Mat2, v: Vec2): Mat2;
41
+ /**
42
+ * Creates a matrix from a given angle
43
+ */
44
+ export declare function fromRotation(rad: number): Mat2;
45
+ /**
46
+ * Creates a matrix from a vector scaling
47
+ */
48
+ export declare function fromScaling(v: Vec2): Mat2;
49
+ /**
50
+ * Returns Frobenius norm of a mat2
51
+ */
52
+ export declare function frob(a: Mat2): number;
53
+ /**
54
+ * Adds two mat2's
55
+ */
56
+ export declare function add(a: Mat2, b: Mat2): Mat2;
57
+ /**
58
+ * Subtracts matrix b from matrix a
59
+ */
60
+ export declare function subtract(a: Mat2, b: Mat2): Mat2;
61
+ /**
62
+ * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)
63
+ */
64
+ export declare function exactEquals(a: Mat2, b: Mat2): boolean;
65
+ /**
66
+ * Returns whether or not the matrices have approximately the same elements in the same position.
67
+ */
68
+ export declare function equals(a: Mat2, b: Mat2): boolean;
69
+ /**
70
+ * Multiply each element of the matrix by a scalar.
71
+ *
72
+ * @param a the matrix to scale
73
+ * @param s amount to scale the matrix's elements by
74
+ */
75
+ export declare function multiplyScalar(a: Mat2, s: number): Mat2;
76
+ /**
77
+ * Adds two mat2's after multiplying each element of the second operand by a scalar value.
78
+ */
79
+ export declare function multiplyScalarAndAdd(a: Mat2, b: Mat2, scale: number): Mat2;
package/lib/mat2.js ADDED
@@ -0,0 +1,208 @@
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.fromScaling = exports.fromRotation = exports.scale = exports.rotate = exports.multiply = exports.determinant = exports.adjoint = exports.invert = exports.transpose = exports.zero = exports.identity = void 0;
36
+ const Common = __importStar(require("./common"));
37
+ /**
38
+ * The identity matrix of mat2
39
+ *
40
+ */
41
+ exports.identity = Object.freeze([1, 0, 0, 1]);
42
+ exports.zero = Object.freeze([0, 0, 0, 0]);
43
+ /**
44
+ * Transpose the values of a mat2
45
+ */
46
+ function transpose(a) {
47
+ // prettier-ignore
48
+ return [
49
+ a[0], a[2],
50
+ a[1], a[3],
51
+ ];
52
+ }
53
+ exports.transpose = transpose;
54
+ /**
55
+ * Inverts a mat2
56
+ */
57
+ function invert(a) {
58
+ const [a0, a1, a2, a3] = a;
59
+ // Calculate the determinant
60
+ const det = a0 * a3 - a2 * a1;
61
+ if (!det) {
62
+ return null;
63
+ }
64
+ const detinv = 1 / det;
65
+ // prettier-ignore
66
+ return [
67
+ a3 * detinv, -a1 * detinv,
68
+ -a2 * detinv, a0 * detinv
69
+ ];
70
+ }
71
+ exports.invert = invert;
72
+ /**
73
+ * Calculates the adjugate of a mat2
74
+ */
75
+ function adjoint(a) {
76
+ // Caching this value is necessary if out == a
77
+ const a0 = a[0];
78
+ return [a[3], -a[1], -a[2], a0];
79
+ }
80
+ exports.adjoint = adjoint;
81
+ /**
82
+ * Calculates the determinant of a mat2
83
+ * @returns determinant of a
84
+ */
85
+ function determinant(a) {
86
+ return a[0] * a[3] - a[2] * a[1];
87
+ }
88
+ exports.determinant = determinant;
89
+ /**
90
+ * Multiplies two mat2's
91
+ */
92
+ function multiply(a, b) {
93
+ const [a0, a1, a2, a3] = a;
94
+ const [b0, b1, b2, b3] = b;
95
+ return [
96
+ a0 * b0 + a2 * b1,
97
+ a1 * b0 + a3 * b1,
98
+ a0 * b2 + a2 * b3,
99
+ a1 * b2 + a3 * b3,
100
+ ];
101
+ }
102
+ exports.multiply = multiply;
103
+ /**
104
+ * Rotates a mat2 by the given angle
105
+ *
106
+ * @param a the matrix to rotate
107
+ * @param rad the angle to rotate the matrix by
108
+ */
109
+ function rotate(a, rad) {
110
+ const [a0, a1, a2, a3] = a;
111
+ const s = Math.sin(rad);
112
+ const c = Math.cos(rad);
113
+ return [a0 * c + a2 * s, a1 * c + a3 * s, a0 * -s + a2 * c, a1 * -s + a3 * c];
114
+ }
115
+ exports.rotate = rotate;
116
+ /**
117
+ * Scales the mat2 by the dimensions in the given vec2
118
+ **/
119
+ function scale(a, v) {
120
+ const [a0, a1, a2, a3] = a;
121
+ const [v0, v1] = v;
122
+ return [a0 * v0, a1 * v0, a2 * v1, a3 * v1];
123
+ }
124
+ exports.scale = scale;
125
+ /**
126
+ * Creates a matrix from a given angle
127
+ */
128
+ function fromRotation(rad) {
129
+ const s = Math.sin(rad);
130
+ const c = Math.cos(rad);
131
+ return [c, s, -s, c];
132
+ }
133
+ exports.fromRotation = fromRotation;
134
+ /**
135
+ * Creates a matrix from a vector scaling
136
+ */
137
+ function fromScaling(v) {
138
+ return [v[0], 0, 0, v[1]];
139
+ }
140
+ exports.fromScaling = fromScaling;
141
+ /**
142
+ * Returns Frobenius norm of a mat2
143
+ */
144
+ function frob(a) {
145
+ return Math.sqrt(a[0] * a[0] + a[1] * a[1] + a[2] * a[2] + a[3] * a[3]);
146
+ }
147
+ exports.frob = frob;
148
+ /**
149
+ * Adds two mat2's
150
+ */
151
+ function add(a, b) {
152
+ return [a[0] + b[0], a[1] + b[1], a[2] + b[2], a[3] + b[3]];
153
+ }
154
+ exports.add = add;
155
+ /**
156
+ * Subtracts matrix b from matrix a
157
+ */
158
+ function subtract(a, b) {
159
+ return [a[0] - b[0], a[1] - b[1], a[2] - b[2], a[3] - b[3]];
160
+ }
161
+ exports.subtract = subtract;
162
+ /**
163
+ * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)
164
+ */
165
+ function exactEquals(a, b) {
166
+ return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];
167
+ }
168
+ exports.exactEquals = exactEquals;
169
+ /**
170
+ * Returns whether or not the matrices have approximately the same elements in the same position.
171
+ */
172
+ function equals(a, b) {
173
+ const [a0, a1, a2, a3] = a;
174
+ const [b0, b1, b2, b3] = b;
175
+ return (Math.abs(a0 - b0) <=
176
+ Common.EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) &&
177
+ Math.abs(a1 - b1) <=
178
+ Common.EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) &&
179
+ Math.abs(a2 - b2) <=
180
+ Common.EPSILON * Math.max(1, Math.abs(a2), Math.abs(b2)) &&
181
+ Math.abs(a3 - b3) <=
182
+ Common.EPSILON * Math.max(1, Math.abs(a3), Math.abs(b3)));
183
+ }
184
+ exports.equals = equals;
185
+ /**
186
+ * Multiply each element of the matrix by a scalar.
187
+ *
188
+ * @param a the matrix to scale
189
+ * @param s amount to scale the matrix's elements by
190
+ */
191
+ function multiplyScalar(a, s) {
192
+ return [a[0] * s, a[1] * s, a[2] * s, a[3] * s];
193
+ }
194
+ exports.multiplyScalar = multiplyScalar;
195
+ /**
196
+ * Adds two mat2's after multiplying each element of the second operand by a scalar value.
197
+ */
198
+ function multiplyScalarAndAdd(a, b, scale) {
199
+ return [
200
+ a[0] + b[0] * scale,
201
+ a[1] + b[1] * scale,
202
+ a[2] + b[2] * scale,
203
+ a[3] + b[3] * scale,
204
+ ];
205
+ }
206
+ exports.multiplyScalarAndAdd = multiplyScalarAndAdd;
207
+ });
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Mi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXQyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsaURBQWtDO0lBS2xDOzs7T0FHRztJQUNVLFFBQUEsUUFBUSxHQUFTLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRTVDLFFBQUEsSUFBSSxHQUFTLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRXJEOztPQUVHO0lBQ0gsU0FBZ0IsU0FBUyxDQUFDLENBQU87UUFDaEMsa0JBQWtCO1FBQ2xCLE9BQU87WUFDTixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNWLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ1YsQ0FBQTtJQUNGLENBQUM7SUFORCw4QkFNQztJQUVEOztPQUVHO0lBQ0gsU0FBZ0IsTUFBTSxDQUFDLENBQU87UUFDN0IsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUUxQiw0QkFBNEI7UUFDNUIsTUFBTSxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFBO1FBRTdCLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDVCxPQUFPLElBQUksQ0FBQTtTQUNYO1FBQ0QsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtRQUV0QixrQkFBa0I7UUFDbEIsT0FBTztZQUNKLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsTUFBTTtZQUMxQixDQUFDLEVBQUUs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
package/lib/mat2d.d.ts ADDED
@@ -0,0 +1,90 @@
1
+ import { Vec2 } from './vec2';
2
+ export type Mat2d = readonly [number, number, number, number, number, number];
3
+ /**
4
+ * 2x3 Matrix
5
+ * @module mat2d
6
+ * @description
7
+ * A mat2d contains six elements defined as:
8
+ * <pre>
9
+ * [a, b,
10
+ * c, d,
11
+ * tx, ty]
12
+ * </pre>
13
+ * This is a short form for the 3x3 matrix:
14
+ * <pre>
15
+ * [a, b, 0,
16
+ * c, d, 0,
17
+ * tx, ty, 1]
18
+ * </pre>
19
+ * The last column is ignored so the array is shorter and operations are faster.
20
+ */
21
+ /**
22
+ * The identity matrix of mat2d
23
+ */
24
+ export declare const identity: readonly number[];
25
+ export declare const zero: Mat2d;
26
+ /**
27
+ * Inverts a mat2d
28
+ */
29
+ export declare function invert(a: Mat2d): Mat2d | null;
30
+ /**
31
+ * Calculates the determinant of a mat2d
32
+ */
33
+ export declare function determinant(a: Mat2d): number;
34
+ /**
35
+ * Multiplies two mat2d's
36
+ */
37
+ export declare function multiply(a: Mat2d, b: Mat2d): Mat2d;
38
+ /**
39
+ * Rotates a mat2d by the given angle
40
+ */
41
+ export declare function rotate(a: Mat2d, rad: number): Mat2d;
42
+ /**
43
+ * Scales the mat2d by the dimensions in the given vec2
44
+ **/
45
+ export declare function scale(a: Mat2d, v: Vec2): Mat2d;
46
+ /**
47
+ * Translates the mat2d by the dimensions in the given vec2
48
+ **/
49
+ export declare function translate(m: Mat2d, v: Vec2): Mat2d;
50
+ /**
51
+ * Creates a matrix from a given angle
52
+ * This is equivalent to (but much faster than):
53
+ */
54
+ export declare function fromRotation(rad: number): Mat2d;
55
+ /**
56
+ * Creates a matrix from a vector scaling
57
+ */
58
+ export declare function fromScaling(v: Vec2): Mat2d;
59
+ /**
60
+ * Creates a matrix from a vector translation
61
+ */
62
+ export declare function fromTranslation(v: Vec2): Mat2d;
63
+ /**
64
+ * Returns Frobenius norm of a mat2d
65
+ */
66
+ export declare function frob(a: Mat2d): number;
67
+ /**
68
+ * Adds two mat2d's
69
+ */
70
+ export declare function add(a: Mat2d, b: Mat2d): Mat2d;
71
+ /**
72
+ * Subtracts matrix b from matrix a
73
+ */
74
+ export declare function subtract(a: Mat2d, b: Mat2d): Mat2d;
75
+ /**
76
+ * Multiply each element of the matrix by a scalar.
77
+ */
78
+ export declare function multiplyScalar(a: Mat2d, s: number): Mat2d;
79
+ /**
80
+ * Adds two mat2d's after multiplying each element of the second operand by a scalar value.
81
+ */
82
+ export declare function multiplyScalarAndAdd(a: Mat2d, b: Mat2d, scale: number): Mat2d;
83
+ /**
84
+ * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)
85
+ */
86
+ export declare function exactEquals(a: Mat2d, b: Mat2d): boolean;
87
+ /**
88
+ * Returns whether or not the matrices have approximately the same elements in the same position.
89
+ */
90
+ export declare function equals(a: Mat2d, b: Mat2d): boolean;