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.
- package/README.md +16 -0
- package/lib/{common.d.ts → cjs/common.d.ts} +1 -0
- package/lib/cjs/common.d.ts.map +1 -0
- package/lib/cjs/common.js +20 -0
- package/lib/{index.d.ts → cjs/index.d.ts} +1 -0
- package/lib/cjs/index.d.ts.map +1 -0
- package/lib/cjs/index.js +35 -0
- package/lib/{mat2.d.ts → cjs/mat2.d.ts} +12 -0
- package/lib/cjs/mat2.d.ts.map +1 -0
- package/lib/cjs/mat2.js +224 -0
- package/lib/{mat2d.d.ts → cjs/mat2d.d.ts} +13 -1
- package/lib/cjs/mat2d.d.ts.map +1 -0
- package/lib/cjs/mat2d.js +291 -0
- package/lib/{mat3.d.ts → cjs/mat3.d.ts} +2 -0
- package/lib/cjs/mat3.d.ts.map +1 -0
- package/lib/cjs/mat3.js +450 -0
- package/lib/{mat4.d.ts → cjs/mat4.d.ts} +5 -3
- package/lib/cjs/mat4.d.ts.map +1 -0
- package/lib/cjs/mat4.js +1250 -0
- package/lib/{quat.d.ts → cjs/quat.d.ts} +3 -1
- package/lib/cjs/quat.d.ts.map +1 -0
- package/lib/cjs/quat.js +504 -0
- package/lib/{vec2.d.ts → cjs/vec2.d.ts} +2 -0
- package/lib/cjs/vec2.d.ts.map +1 -0
- package/lib/cjs/vec2.js +205 -0
- package/lib/{vec3.d.ts → cjs/vec3.d.ts} +3 -1
- package/lib/cjs/vec3.d.ts.map +1 -0
- package/lib/cjs/vec3.js +409 -0
- package/lib/{vec4.d.ts → cjs/vec4.d.ts} +2 -0
- package/lib/cjs/vec4.d.ts.map +1 -0
- package/lib/cjs/vec4.js +319 -0
- package/lib/esm/common.d.ts +12 -0
- package/lib/esm/common.d.ts.map +1 -0
- package/lib/esm/common.js +16 -0
- package/lib/esm/index.d.ts +17 -0
- package/lib/esm/index.d.ts.map +1 -0
- package/lib/esm/index.js +9 -0
- package/lib/esm/mat2.d.ts +91 -0
- package/lib/esm/mat2.d.ts.map +1 -0
- package/lib/esm/mat2.js +179 -0
- package/lib/esm/mat2d.d.ts +102 -0
- package/lib/esm/mat2d.d.ts.map +1 -0
- package/lib/esm/mat2d.js +246 -0
- package/lib/esm/mat3.d.ts +120 -0
- package/lib/esm/mat3.d.ts.map +1 -0
- package/lib/esm/mat3.js +400 -0
- package/lib/esm/mat4.d.ts +313 -0
- package/lib/esm/mat4.d.ts.map +1 -0
- package/lib/esm/mat4.js +1183 -0
- package/lib/esm/quat.d.ts +220 -0
- package/lib/esm/quat.d.ts.map +1 -0
- package/lib/esm/quat.js +458 -0
- package/lib/esm/vec2.d.ts +66 -0
- package/lib/esm/vec2.d.ts.map +1 -0
- package/lib/esm/vec2.js +149 -0
- package/lib/esm/vec3.d.ts +167 -0
- package/lib/esm/vec3.d.ts.map +1 -0
- package/lib/esm/vec3.js +348 -0
- package/lib/esm/vec4.d.ts +116 -0
- package/lib/esm/vec4.d.ts.map +1 -0
- package/lib/esm/vec4.js +266 -0
- package/package.json +6 -4
- package/lib/common.js +0 -30
- package/lib/index.js +0 -45
- package/lib/mat2.js +0 -208
- package/lib/mat2d.js +0 -291
- package/lib/mat2d.test.d.ts +0 -1
- package/lib/mat2d.test.js +0 -123
- package/lib/mat3.js +0 -450
- package/lib/mat4.js +0 -1252
- package/lib/quat.js +0 -514
- package/lib/vec2.js +0 -211
- package/lib/vec2.test.d.ts +0 -1
- package/lib/vec2.test.js +0 -143
- package/lib/vec3.js +0 -408
- package/lib/vec3.test.d.ts +0 -1
- package/lib/vec3.test.js +0 -143
- package/lib/vec4.js +0 -316
package/README.md
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Lienarly
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/linearly)
|
|
4
|
+

|
|
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).
|
|
@@ -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==
|
|
@@ -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"}
|
package/lib/cjs/index.js
ADDED
|
@@ -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"}
|
package/lib/cjs/mat2.js
ADDED
|
@@ -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"}
|