linearly 0.2.0 → 0.4.1

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 (78) hide show
  1. package/README.md +16 -0
  2. package/lib/{common.d.ts → cjs/common.d.ts} +1 -0
  3. package/lib/cjs/common.d.ts.map +1 -0
  4. package/lib/cjs/common.js +20 -0
  5. package/lib/{index.d.ts → cjs/index.d.ts} +1 -0
  6. package/lib/cjs/index.d.ts.map +1 -0
  7. package/lib/cjs/index.js +35 -0
  8. package/lib/{mat2.d.ts → cjs/mat2.d.ts} +12 -0
  9. package/lib/cjs/mat2.d.ts.map +1 -0
  10. package/lib/cjs/mat2.js +224 -0
  11. package/lib/{mat2d.d.ts → cjs/mat2d.d.ts} +13 -1
  12. package/lib/cjs/mat2d.d.ts.map +1 -0
  13. package/lib/cjs/mat2d.js +291 -0
  14. package/lib/{mat3.d.ts → cjs/mat3.d.ts} +2 -0
  15. package/lib/cjs/mat3.d.ts.map +1 -0
  16. package/lib/cjs/mat3.js +450 -0
  17. package/lib/{mat4.d.ts → cjs/mat4.d.ts} +5 -3
  18. package/lib/cjs/mat4.d.ts.map +1 -0
  19. package/lib/cjs/mat4.js +1250 -0
  20. package/lib/{quat.d.ts → cjs/quat.d.ts} +3 -1
  21. package/lib/cjs/quat.d.ts.map +1 -0
  22. package/lib/cjs/quat.js +504 -0
  23. package/lib/{vec2.d.ts → cjs/vec2.d.ts} +2 -0
  24. package/lib/cjs/vec2.d.ts.map +1 -0
  25. package/lib/cjs/vec2.js +205 -0
  26. package/lib/{vec3.d.ts → cjs/vec3.d.ts} +3 -1
  27. package/lib/cjs/vec3.d.ts.map +1 -0
  28. package/lib/cjs/vec3.js +409 -0
  29. package/lib/{vec4.d.ts → cjs/vec4.d.ts} +2 -0
  30. package/lib/cjs/vec4.d.ts.map +1 -0
  31. package/lib/cjs/vec4.js +319 -0
  32. package/lib/esm/common.d.ts +12 -0
  33. package/lib/esm/common.d.ts.map +1 -0
  34. package/lib/esm/common.js +16 -0
  35. package/lib/esm/index.d.ts +17 -0
  36. package/lib/esm/index.d.ts.map +1 -0
  37. package/lib/esm/index.js +9 -0
  38. package/lib/esm/mat2.d.ts +91 -0
  39. package/lib/esm/mat2.d.ts.map +1 -0
  40. package/lib/esm/mat2.js +179 -0
  41. package/lib/esm/mat2d.d.ts +102 -0
  42. package/lib/esm/mat2d.d.ts.map +1 -0
  43. package/lib/esm/mat2d.js +246 -0
  44. package/lib/esm/mat3.d.ts +120 -0
  45. package/lib/esm/mat3.d.ts.map +1 -0
  46. package/lib/esm/mat3.js +400 -0
  47. package/lib/esm/mat4.d.ts +313 -0
  48. package/lib/esm/mat4.d.ts.map +1 -0
  49. package/lib/esm/mat4.js +1183 -0
  50. package/lib/esm/quat.d.ts +220 -0
  51. package/lib/esm/quat.d.ts.map +1 -0
  52. package/lib/esm/quat.js +458 -0
  53. package/lib/esm/vec2.d.ts +66 -0
  54. package/lib/esm/vec2.d.ts.map +1 -0
  55. package/lib/esm/vec2.js +149 -0
  56. package/lib/esm/vec3.d.ts +167 -0
  57. package/lib/esm/vec3.d.ts.map +1 -0
  58. package/lib/esm/vec3.js +348 -0
  59. package/lib/esm/vec4.d.ts +116 -0
  60. package/lib/esm/vec4.d.ts.map +1 -0
  61. package/lib/esm/vec4.js +266 -0
  62. package/package.json +6 -4
  63. package/lib/common.js +0 -30
  64. package/lib/index.js +0 -45
  65. package/lib/mat2.js +0 -208
  66. package/lib/mat2d.js +0 -291
  67. package/lib/mat2d.test.d.ts +0 -1
  68. package/lib/mat2d.test.js +0 -123
  69. package/lib/mat3.js +0 -450
  70. package/lib/mat4.js +0 -1252
  71. package/lib/quat.js +0 -514
  72. package/lib/vec2.js +0 -211
  73. package/lib/vec2.test.d.ts +0 -1
  74. package/lib/vec2.test.js +0 -143
  75. package/lib/vec3.js +0 -408
  76. package/lib/vec3.test.d.ts +0 -1
  77. package/lib/vec3.test.js +0 -143
  78. package/lib/vec4.js +0 -316
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).
@@ -9,3 +9,4 @@ export declare const EPSILON = 0.000001;
9
9
  export declare function round(a: number): number;
10
10
  export type AngleOrder = 'xyz' | 'xzy' | 'yxz' | 'yzx' | 'zxy' | 'zyx';
11
11
  export declare const DEFAULT_ANGLE_ORDER: AngleOrder;
12
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/common.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,OAAO,WAAW,CAAA;AAE/B;;;GAGG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,UAG9B;AAED,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAA;AAEtE,eAAO,MAAM,mBAAmB,EAAE,UAAkB,CAAA"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ /**
3
+ * Common utilities
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DEFAULT_ANGLE_ORDER = exports.round = exports.EPSILON = void 0;
7
+ // Configuration Constants
8
+ exports.EPSILON = 0.000001;
9
+ /**
10
+ * Symmetric round
11
+ * see https://www.npmjs.com/package/round-half-up-symmetric#user-content-detailed-background
12
+ */
13
+ function round(a) {
14
+ if (a >= 0)
15
+ return Math.round(a);
16
+ return a % 0.5 === 0 ? Math.floor(a) : Math.round(a);
17
+ }
18
+ exports.round = round;
19
+ exports.DEFAULT_ANGLE_ORDER = 'zyx';
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQUVILDBCQUEwQjtBQUNiLFFBQUEsT0FBTyxHQUFHLFFBQVEsQ0FBQTtBQUUvQjs7O0dBR0c7QUFDSCxTQUFnQixLQUFLLENBQUMsQ0FBUztJQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2hDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDckQsQ0FBQztBQUhELHNCQUdDO0FBSVksUUFBQSxtQkFBbUIsR0FBZSxLQUFLLENBQUEifQ==
@@ -14,3 +14,4 @@ export * as mat4 from './mat4';
14
14
  export type { Mat4 } from './mat4';
15
15
  export * as quat from './quat';
16
16
  export type { Quat } from './quat';
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAA;AAC9B,YAAY,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAA;AAEhC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAA;AAC9B,YAAY,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAA;AAEhC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAA;AAC9B,YAAY,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAA;AAEhC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAA;AAC9B,YAAY,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAA;AAEhC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAChC,YAAY,EAAC,KAAK,EAAC,MAAM,SAAS,CAAA;AAElC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAA;AAC9B,YAAY,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAA;AAEhC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAA;AAC9B,YAAY,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAA;AAEhC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAA;AAC9B,YAAY,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAA"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.quat = exports.mat4 = exports.mat3 = exports.mat2d = exports.mat2 = exports.vec4 = exports.vec3 = exports.vec2 = void 0;
27
+ exports.vec2 = __importStar(require("./vec2"));
28
+ exports.vec3 = __importStar(require("./vec3"));
29
+ exports.vec4 = __importStar(require("./vec4"));
30
+ exports.mat2 = __importStar(require("./mat2"));
31
+ exports.mat2d = __importStar(require("./mat2d"));
32
+ exports.mat3 = __importStar(require("./mat3"));
33
+ exports.mat4 = __importStar(require("./mat4"));
34
+ exports.quat = __importStar(require("./quat"));
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBOEI7QUFHOUIsK0NBQThCO0FBRzlCLCtDQUE4QjtBQUc5QiwrQ0FBOEI7QUFHOUIsaURBQWdDO0FBR2hDLCtDQUE4QjtBQUc5QiwrQ0FBOEI7QUFHOUIsK0NBQThCIn0=
@@ -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
  */
@@ -77,3 +88,4 @@ export declare function multiplyScalar(a: Mat2, s: number): Mat2;
77
88
  * Adds two mat2's after multiplying each element of the second operand by a scalar value.
78
89
  */
79
90
  export declare function multiplyScalarAndAdd(a: Mat2, b: Mat2, scale: number): Mat2;
91
+ //# sourceMappingURL=mat2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mat2.d.ts","sourceRoot":"","sources":["../../src/mat2.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAA;AAE3B,MAAM,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAE5D,wBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAE3E;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,IAAkC,CAAA;AAEzD,eAAO,MAAM,IAAI,EAAE,IAAkC,CAAA;AAErD;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAMvC;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAgB3C;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAIrC;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,UAElC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAU/C;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAMjD;AAED;;IAEI;AACJ,wBAAgB,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAK5C;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAE1D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAI9C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAEzC;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CASrD;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,IAAI,UAE3B;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAE1C;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAE/C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,WAE3C;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,WAatC;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAEvD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAO1E"}
@@ -0,0 +1,224 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ 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;
27
+ const Common = __importStar(require("./common"));
28
+ function of(m00, m01, m10, m11) {
29
+ return [m00, m01, m10, m11];
30
+ }
31
+ exports.of = of;
32
+ /**
33
+ * The identity matrix of mat2
34
+ *
35
+ */
36
+ exports.identity = Object.freeze([1, 0, 0, 1]);
37
+ exports.zero = Object.freeze([0, 0, 0, 0]);
38
+ /**
39
+ * Transpose the values of a mat2
40
+ */
41
+ function transpose(a) {
42
+ // prettier-ignore
43
+ return [
44
+ a[0], a[2],
45
+ a[1], a[3],
46
+ ];
47
+ }
48
+ exports.transpose = transpose;
49
+ /**
50
+ * Inverts a mat2
51
+ */
52
+ function invert(a) {
53
+ const [a0, a1, a2, a3] = a;
54
+ // Calculate the determinant
55
+ const det = a0 * a3 - a2 * a1;
56
+ if (!det) {
57
+ return null;
58
+ }
59
+ const detinv = 1 / det;
60
+ // prettier-ignore
61
+ return [
62
+ a3 * detinv, -a1 * detinv,
63
+ -a2 * detinv, a0 * detinv
64
+ ];
65
+ }
66
+ exports.invert = invert;
67
+ /**
68
+ * Calculates the adjugate of a mat2
69
+ */
70
+ function adjoint(a) {
71
+ // Caching this value is necessary if out == a
72
+ const a0 = a[0];
73
+ return [a[3], -a[1], -a[2], a0];
74
+ }
75
+ exports.adjoint = adjoint;
76
+ /**
77
+ * Calculates the determinant of a mat2
78
+ * @returns determinant of a
79
+ */
80
+ function determinant(a) {
81
+ return a[0] * a[3] - a[2] * a[1];
82
+ }
83
+ exports.determinant = determinant;
84
+ /**
85
+ * Multiplies two mat2's
86
+ */
87
+ function multiply(a, b) {
88
+ const [a0, a1, a2, a3] = a;
89
+ const [b0, b1, b2, b3] = b;
90
+ return [
91
+ a0 * b0 + a2 * b1,
92
+ a1 * b0 + a3 * b1,
93
+ a0 * b2 + a2 * b3,
94
+ a1 * b2 + a3 * b3,
95
+ ];
96
+ }
97
+ exports.multiply = multiply;
98
+ /**
99
+ * Rotates a mat2 by the given angle
100
+ *
101
+ * @param a the matrix to rotate
102
+ * @param rad the angle to rotate the matrix by
103
+ */
104
+ function rotate(a, rad) {
105
+ const [a0, a1, a2, a3] = a;
106
+ const s = Math.sin(rad);
107
+ const c = Math.cos(rad);
108
+ return [a0 * c + a2 * s, a1 * c + a3 * s, a0 * -s + a2 * c, a1 * -s + a3 * c];
109
+ }
110
+ exports.rotate = rotate;
111
+ /**
112
+ * Scales the mat2 by the dimensions in the given vec2
113
+ **/
114
+ function scale(a, v) {
115
+ const [a0, a1, a2, a3] = a;
116
+ const [v0, v1] = v;
117
+ return [a0 * v0, a1 * v0, a2 * v1, a3 * v1];
118
+ }
119
+ exports.scale = scale;
120
+ /**
121
+ * Apply skew to the mat2d by the given angles
122
+ * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skew
123
+ */
124
+ function skew(m, ax, ay) {
125
+ return multiply(m, fromSkew(ax, ay));
126
+ }
127
+ exports.skew = skew;
128
+ /**
129
+ * Creates a matrix from a given angle
130
+ */
131
+ function fromRotation(rad) {
132
+ const s = Math.sin(rad);
133
+ const c = Math.cos(rad);
134
+ return [c, s, -s, c];
135
+ }
136
+ exports.fromRotation = fromRotation;
137
+ /**
138
+ * Creates a matrix from a vector scaling
139
+ */
140
+ function fromScaling(v) {
141
+ return [v[0], 0, 0, v[1]];
142
+ }
143
+ exports.fromScaling = fromScaling;
144
+ /**
145
+ * Creates a matrix from a vector skew
146
+ * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skew
147
+ */
148
+ function fromSkew(ax, ay) {
149
+ const x = Math.tan(ax);
150
+ const y = Math.tan(ay);
151
+ // prettier-ignore
152
+ return [
153
+ 1, y,
154
+ x, 1,
155
+ ];
156
+ }
157
+ exports.fromSkew = fromSkew;
158
+ /**
159
+ * Returns Frobenius norm of a mat2
160
+ */
161
+ function frob(a) {
162
+ return Math.sqrt(a[0] * a[0] + a[1] * a[1] + a[2] * a[2] + a[3] * a[3]);
163
+ }
164
+ exports.frob = frob;
165
+ /**
166
+ * Adds two mat2's
167
+ */
168
+ function add(a, b) {
169
+ return [a[0] + b[0], a[1] + b[1], a[2] + b[2], a[3] + b[3]];
170
+ }
171
+ exports.add = add;
172
+ /**
173
+ * Subtracts matrix b from matrix a
174
+ */
175
+ function subtract(a, b) {
176
+ return [a[0] - b[0], a[1] - b[1], a[2] - b[2], a[3] - b[3]];
177
+ }
178
+ exports.subtract = subtract;
179
+ /**
180
+ * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)
181
+ */
182
+ function exactEquals(a, b) {
183
+ return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];
184
+ }
185
+ exports.exactEquals = exactEquals;
186
+ /**
187
+ * Returns whether or not the matrices have approximately the same elements in the same position.
188
+ */
189
+ function equals(a, b) {
190
+ const [a0, a1, a2, a3] = a;
191
+ const [b0, b1, b2, b3] = b;
192
+ return (Math.abs(a0 - b0) <=
193
+ Common.EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) &&
194
+ Math.abs(a1 - b1) <=
195
+ Common.EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) &&
196
+ Math.abs(a2 - b2) <=
197
+ Common.EPSILON * Math.max(1, Math.abs(a2), Math.abs(b2)) &&
198
+ Math.abs(a3 - b3) <=
199
+ Common.EPSILON * Math.max(1, Math.abs(a3), Math.abs(b3)));
200
+ }
201
+ exports.equals = equals;
202
+ /**
203
+ * Multiply each element of the matrix by a scalar.
204
+ *
205
+ * @param a the matrix to scale
206
+ * @param s amount to scale the matrix's elements by
207
+ */
208
+ function multiplyScalar(a, s) {
209
+ return [a[0] * s, a[1] * s, a[2] * s, a[3] * s];
210
+ }
211
+ exports.multiplyScalar = multiplyScalar;
212
+ /**
213
+ * Adds two mat2's after multiplying each element of the second operand by a scalar value.
214
+ */
215
+ function multiplyScalarAndAdd(a, b, scale) {
216
+ return [
217
+ a[0] + b[0] * scale,
218
+ a[1] + b[1] * scale,
219
+ a[2] + b[2] * scale,
220
+ a[3] + b[3] * scale,
221
+ ];
222
+ }
223
+ exports.multiplyScalarAndAdd = multiplyScalarAndAdd;
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Mi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXQyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQWtDO0FBS2xDLFNBQWdCLEVBQUUsQ0FBQyxHQUFXLEVBQUUsR0FBVyxFQUFFLEdBQVcsRUFBRSxHQUFXO0lBQ3BFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUM1QixDQUFDO0FBRkQsZ0JBRUM7QUFFRDs7O0dBR0c7QUFDVSxRQUFBLFFBQVEsR0FBUyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUU1QyxRQUFBLElBQUksR0FBUyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUVyRDs7R0FFRztBQUNILFNBQWdCLFNBQVMsQ0FBQyxDQUFPO0lBQ2hDLGtCQUFrQjtJQUNsQixPQUFPO1FBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDVixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNWLENBQUE7QUFDRixDQUFDO0FBTkQsOEJBTUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLE1BQU0sQ0FBQyxDQUFPO0lBQzdCLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUE7SUFFMUIsNEJBQTRCO0lBQzVCLE1BQU0sR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQTtJQUU3QixJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1QsT0FBTyxJQUFJLENB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
@@ -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
  */
@@ -88,3 +99,4 @@ export declare function exactEquals(a: Mat2d, b: Mat2d): boolean;
88
99
  * Returns whether or not the matrices have approximately the same elements in the same position.
89
100
  */
90
101
  export declare function equals(a: Mat2d, b: Mat2d): boolean;
102
+ //# sourceMappingURL=mat2d.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mat2d.d.ts","sourceRoot":"","sources":["../../src/mat2d.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAA;AAE3B;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAG7E,wBAAgB,EAAE,CACjB,CAAC,EAAE,MAAM,EAAG,CAAC,EAAE,MAAM,EACrB,CAAC,EAAE,MAAM,EAAG,CAAC,EAAE,MAAM,EACrB,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GACpB,KAAK,CAEP;AAED;;GAEG;AAEH,eAAO,MAAM,QAAQ,mBAInB,CAAA;AAEF,eAAO,MAAM,IAAI,EAAE,KAAyC,CAAA;AAE5D;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAmB7C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,UAEnC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAYlD;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,CAWnD;AAED;;IAEI;AACJ,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,GAAG,KAAK,CAU9C;AAED;;IAEI;AACJ,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,GAAG,KAAK,CAUlD;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,KAAK,CAE5D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAU/C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,CAS1C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,CAS9C;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,KAAK,CAUtD;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,UAU5B;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAS7C;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CASlD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,CAOzD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAS7E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,WAS7C;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,WAiBxC"}