linearly 0.20.2 → 0.20.3

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/vec2.js ADDED
@@ -0,0 +1,211 @@
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.equals = exports.exactEquals = exports.angle = exports.rotate = exports.transformMat3 = exports.transformMat2d = exports.transformMat2 = exports.lerp = exports.cross = exports.dot = exports.normalize = exports.inverse = exports.negate = exports.squaredLength = exports.length = exports.squaredDistance = exports.distance = exports.scaleAndAdd = exports.scale = exports.round = exports.clamp = exports.max = exports.min = exports.floor = exports.ceil = exports.divide = exports.multiply = exports.subtract = exports.add = exports.one = exports.zero = void 0;
36
+ const Common = __importStar(require("./common"));
37
+ exports.zero = Object.freeze([0, 0]);
38
+ exports.one = Object.freeze([1, 1]);
39
+ function add(a, b) {
40
+ return [a[0] + b[0], a[1] + b[1]];
41
+ }
42
+ exports.add = add;
43
+ function subtract(a, b) {
44
+ return [a[0] - b[0], a[1] - b[1]];
45
+ }
46
+ exports.subtract = subtract;
47
+ function multiply(a, b) {
48
+ return [a[0] * b[0], a[1] * b[1]];
49
+ }
50
+ exports.multiply = multiply;
51
+ function divide(a, b) {
52
+ return [a[0] / b[0], a[1] / b[1]];
53
+ }
54
+ exports.divide = divide;
55
+ function ceil(a) {
56
+ return [Math.ceil(a[0]), Math.ceil(a[1])];
57
+ }
58
+ exports.ceil = ceil;
59
+ function floor(a) {
60
+ return [Math.floor(a[0]), Math.floor(a[1])];
61
+ }
62
+ exports.floor = floor;
63
+ function min(a, b) {
64
+ return [Math.min(a[0], b[0]), Math.min(a[1], b[1])];
65
+ }
66
+ exports.min = min;
67
+ function max(a, b) {
68
+ return [Math.max(a[0], b[0]), Math.max(a[1], b[1])];
69
+ }
70
+ exports.max = max;
71
+ /**
72
+ * Constrain a value to lie between two further values
73
+ */
74
+ function clamp(a, min, max) {
75
+ return [
76
+ Math.min(Math.max(a[0], min[0]), max[0]),
77
+ Math.min(Math.max(a[1], min[1]), max[1]),
78
+ ];
79
+ }
80
+ exports.clamp = clamp;
81
+ /**
82
+ * symmetric round the components of a vec2
83
+ */
84
+ function round(a) {
85
+ return [Common.round(a[0]), Common.round(a[1])];
86
+ }
87
+ exports.round = round;
88
+ function scale(a, s) {
89
+ return [a[0] * s, a[1] * s];
90
+ }
91
+ exports.scale = scale;
92
+ /**
93
+ * Adds two vec2's after scaling the second operand by a scalar value
94
+ */
95
+ function scaleAndAdd(a, b, scale) {
96
+ return [a[0] + b[0] * scale, a[1] + b[1] * scale];
97
+ }
98
+ exports.scaleAndAdd = scaleAndAdd;
99
+ function distance(a, b) {
100
+ const x = b[0] - a[0], y = b[1] - a[1];
101
+ return Math.sqrt(x * x + y * y);
102
+ }
103
+ exports.distance = distance;
104
+ function squaredDistance(a, b) {
105
+ const x = b[0] - a[0], y = b[1] - a[1];
106
+ return x * x + y * y;
107
+ }
108
+ exports.squaredDistance = squaredDistance;
109
+ function length(v) {
110
+ return Math.sqrt(v[0] ** 2 + v[1] ** 2);
111
+ }
112
+ exports.length = length;
113
+ function squaredLength(v) {
114
+ return v[0] ** 2 + v[1] ** 2;
115
+ }
116
+ exports.squaredLength = squaredLength;
117
+ function negate(v) {
118
+ return [-v[0], -v[1]];
119
+ }
120
+ exports.negate = negate;
121
+ function inverse(v) {
122
+ return [1 / v[0], 1 / v[1]];
123
+ }
124
+ exports.inverse = inverse;
125
+ function normalize(v) {
126
+ const hyp = v[0] ** 2 + v[1] ** 2;
127
+ const len = hyp === 0 ? 0 : 1 / Math.sqrt(hyp);
128
+ return [v[0] * len, v[1] * len];
129
+ }
130
+ exports.normalize = normalize;
131
+ function dot(a, b) {
132
+ return a[0] * b[0] + a[1] * b[1];
133
+ }
134
+ exports.dot = dot;
135
+ function cross(a, b) {
136
+ const z = a[0] * b[1] - a[1] * b[0];
137
+ return [0, 0, z];
138
+ }
139
+ exports.cross = cross;
140
+ /**
141
+ * Performs a linear interpolation between two Vec2's
142
+ */
143
+ function lerp(a, b, t) {
144
+ const [ax, ay] = a;
145
+ return [ax + t * (b[0] - ax), ay + t * (b[1] - ay)];
146
+ }
147
+ exports.lerp = lerp;
148
+ function transformMat2(a, m) {
149
+ const [x, y] = a;
150
+ return [m[0] * x + m[2] * y, m[1] * x + m[3] * y];
151
+ }
152
+ exports.transformMat2 = transformMat2;
153
+ function transformMat2d(a, m) {
154
+ const [x, y] = a;
155
+ return [m[0] * x + m[2] * y + m[4], m[1] * x + m[3] * y + m[5]];
156
+ }
157
+ exports.transformMat2d = transformMat2d;
158
+ /**
159
+ * Transforms the vec2 with a mat3
160
+ * 3rd vector component is implicitly '1'
161
+ */
162
+ function transformMat3(a, m) {
163
+ const [x, y] = a;
164
+ return [m[0] * x + m[3] * y + m[6], m[1] * x + m[4] * y + m[7]];
165
+ }
166
+ exports.transformMat3 = transformMat3;
167
+ /**
168
+ * Rotate a 2D vector
169
+ */
170
+ function rotate(a, origin, rad) {
171
+ // Translate point to the origin
172
+ const p0 = a[0] - origin[0], p1 = a[1] - origin[1], sinC = Math.sin(rad), cosC = Math.cos(rad);
173
+ // Perform rotation and translate to correct position
174
+ return [p0 * cosC - p1 * sinC + origin[0], p0 * sinC + p1 * cosC + origin[1]];
175
+ }
176
+ exports.rotate = rotate;
177
+ /**
178
+ * Get the angle between two 2D vectors
179
+ */
180
+ function angle(a, b) {
181
+ const [x1, y1] = a;
182
+ const [x2, y2] = b;
183
+ // mag is the product of the magnitudes of a and b
184
+ const mag = Math.sqrt((x1 * x1 + y1 * y1) * (x2 * x2 + y2 * y2));
185
+ // mag &&.. short circuits if mag == 0
186
+ const cosine = mag && (x1 * x2 + y1 * y2) / mag;
187
+ // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1
188
+ return Math.acos(Math.min(Math.max(cosine, -1), 1));
189
+ }
190
+ exports.angle = angle;
191
+ /**
192
+ * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)
193
+ */
194
+ function exactEquals(a, b) {
195
+ return a[0] === b[0] && a[1] === b[1];
196
+ }
197
+ exports.exactEquals = exactEquals;
198
+ /**
199
+ * Returns whether or not the vectors have approximately the same elements in the same position.
200
+ */
201
+ function equals(a, b) {
202
+ const [a0, a1] = a;
203
+ const [b0, b1] = b;
204
+ return (Math.abs(a0 - b0) <=
205
+ Common.EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) &&
206
+ Math.abs(a1 - b1) <=
207
+ Common.EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)));
208
+ }
209
+ exports.equals = equals;
210
+ });
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVjMi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZWMyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsaURBQWtDO0lBUXJCLFFBQUEsSUFBSSxHQUFTLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUVsQyxRQUFBLEdBQUcsR0FBUyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFOUMsU0FBZ0IsR0FBRyxDQUFDLENBQU8sRUFBRSxDQUFPO1FBQ25DLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRkQsa0JBRUM7SUFFRCxTQUFnQixRQUFRLENBQUMsQ0FBTyxFQUFFLENBQU87UUFDeEMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFGRCw0QkFFQztJQUVELFNBQWdCLFFBQVEsQ0FBQyxDQUFPLEVBQUUsQ0FBTztRQUN4QyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUZELDRCQUVDO0lBRUQsU0FBZ0IsTUFBTSxDQUFDLENBQU8sRUFBRSxDQUFPO1FBQ3RDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FB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
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,143 @@
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", "./vec2"], factory);
31
+ }
32
+ })(function (require, exports) {
33
+ "use strict";
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ const common_1 = require("./common");
36
+ const vec2 = __importStar(require("./vec2"));
37
+ function areVec2Equal(a, b) {
38
+ if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length) {
39
+ return undefined;
40
+ }
41
+ for (let i = 0; i < a.length; i++) {
42
+ const nearlyEqual = Math.abs(a[i] - b[i]) <=
43
+ common_1.EPSILON * Math.max(1, Math.abs(a[i]), Math.abs(b[i]));
44
+ if (!nearlyEqual) {
45
+ return undefined;
46
+ }
47
+ }
48
+ return true;
49
+ }
50
+ ;
51
+ expect.addEqualityTesters([areVec2Equal]);
52
+ // https://github.com/stackgl/gl-vec2/blob/master/test/index.js
53
+ test('add', () => {
54
+ expect(vec2.add([0, 1], [2, 3])).toStrictEqual([2, 4]);
55
+ });
56
+ test('ceil', () => {
57
+ expect(vec2.ceil([5.2, 6.5])).toStrictEqual([6, 7]);
58
+ });
59
+ test('cross', () => {
60
+ expect(vec2.cross([3, 4], [5, 6])).toStrictEqual([0, 0, -2]);
61
+ });
62
+ test('distance', () => {
63
+ expect(vec2.distance([1, 2], [4, 6])).toEqual(5);
64
+ });
65
+ test('divide', () => {
66
+ expect(vec2.divide([8, 4], [2, 1])).toEqual([4, 4]);
67
+ });
68
+ test('dot', () => {
69
+ expect(vec2.dot([3, 4], [5, 6])).toEqual(39);
70
+ });
71
+ test('equals', () => {
72
+ expect(vec2.equals([3 + common_1.EPSILON, 5 - common_1.EPSILON], [3, 5])).toBe(true);
73
+ expect(vec2.equals([3 + common_1.EPSILON * 10, 5 - common_1.EPSILON], [3, 5])).toBe(false);
74
+ expect(vec2.equals([3 + common_1.EPSILON, 5 - common_1.EPSILON * 10], [3, 5])).toBe(false);
75
+ });
76
+ test('exactEquals', () => {
77
+ expect(vec2.exactEquals([3, 5], [3, 5])).toBe(true);
78
+ expect(vec2.exactEquals([3 + common_1.EPSILON, 5], [3, 5])).toBe(false);
79
+ expect(vec2.exactEquals([3, 5 - common_1.EPSILON], [3, 5])).toBe(false);
80
+ });
81
+ test('floor', () => {
82
+ expect(vec2.floor([5.2, 6.6])).toEqual([5, 6]);
83
+ });
84
+ test('inverse', () => {
85
+ expect(vec2.inverse([2, 4])).toEqual([0.5, 0.25]);
86
+ });
87
+ test('length', () => {
88
+ expect(vec2.length([3, 4])).toEqual(5);
89
+ });
90
+ test('lerp', () => {
91
+ expect(vec2.lerp([3, 4], [5, 6], 0.25)).toEqual([3.5, 4.5]);
92
+ });
93
+ test('max', () => {
94
+ expect(vec2.max([3, 7], [5, 6])).toEqual([5, 7]);
95
+ });
96
+ test('min', () => {
97
+ expect(vec2.min([3, 7], [5, 6])).toEqual([3, 6]);
98
+ });
99
+ test('clamp', () => {
100
+ expect(vec2.clamp([3, 7], [4, 4], [5, 6])).toEqual([4, 6]);
101
+ });
102
+ test('multiply', () => {
103
+ expect(vec2.multiply([3, 4], [5, 6])).toEqual([15, 24]);
104
+ });
105
+ test('negate', () => {
106
+ expect(vec2.negate([3, 4])).toEqual([-3, -4]);
107
+ });
108
+ test('normalize', () => {
109
+ expect(vec2.normalize([3, 4])).toEqual([3 / 5, 4 / 5]);
110
+ expect(vec2.normalize([0, 0])).toEqual([0, 0]);
111
+ });
112
+ test('rotate', () => {
113
+ expect(vec2.rotate([1, 2], [0, 0], Math.PI)).toEqual([-1, -2]);
114
+ });
115
+ test('round', () => {
116
+ expect(vec2.round([5.2, 6.6])).toEqual([5, 7]);
117
+ });
118
+ test('scale', () => {
119
+ expect(vec2.scale([3, 4], 2)).toEqual([6, 8]);
120
+ });
121
+ test('scaleAndAdd', () => {
122
+ expect(vec2.scaleAndAdd([3, 4], [5, 6], 2)).toEqual([13, 16]);
123
+ });
124
+ test('squaredDistance', () => {
125
+ expect(vec2.squaredDistance([3, 4], [5, 6])).toEqual(8);
126
+ });
127
+ test('squaredLength', () => {
128
+ expect(vec2.squaredLength([3, 4])).toEqual(25);
129
+ });
130
+ test('subtract', () => {
131
+ expect(vec2.subtract([3, 4], [5, 6])).toEqual([-2, -2]);
132
+ });
133
+ test('transformMat2', () => {
134
+ expect(vec2.transformMat2([3, 4], [5, 6, 7, 8])).toEqual([43, 50]);
135
+ });
136
+ test('transformMat2d', () => {
137
+ expect(vec2.transformMat2d([3, 4], [5, 6, 7, 8, 9, 10])).toEqual([52, 60]);
138
+ });
139
+ test('transformMat3', () => {
140
+ expect(vec2.transformMat3([3, 4], [5, 6, 0, 8, 9, 0, 11, 12, 0])).toStrictEqual([58, 66]);
141
+ });
142
+ });
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVjMi50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3ZlYzIudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUEscUNBQWdDO0lBQ2hDLDZDQUE4QjtJQUU5QixTQUFTLFlBQVksQ0FBQyxDQUFVLEVBQUUsQ0FBVTtRQUMzQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFO1lBQ3BFLE9BQU8sU0FBUyxDQUFBO1NBQ2hCO1FBRUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbEMsTUFBTSxXQUFXLEdBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckIsZ0JBQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUV0RCxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNqQixPQUFPLFNBQVMsQ0FBQTthQUNoQjtTQUNEO1FBQ0QsT0FBTyxJQUFJLENBQUE7SUFDWixDQUFDO0lBRUQsQ0FBQztJQUFDLE1BQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUE7SUFFbkQsK0RBQStEO0lBRS9ELElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFO1FBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN2RCxDQUFDLENBQUMsQ0FBQTtJQUVGLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1FBQ2pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNwRCxDQUFDLENBQUMsQ0FBQTtJQUVGLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO1FBQ2xCLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUM3RCxDQUFDLENBQUMsQ0FBQTtJQUVGLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFO1FBQ3JCLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDakQsQ0FBQyxDQUFDLENBQUE7SUFFRixJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtRQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMs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LENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQzVELENBQUMsQ0FBQyxDQUFBO0lBRUYsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUU7UUFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pELENBQUMsQ0FBQyxDQUFBO0lBRUYsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUU7UUFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pELENBQUMsQ0FBQyxDQUFBO0lBRUYsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDbEIsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzNELENBQUMsQ0FBQyxDQUFBO0lBRUYsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUU7UUFDckIsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxD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
package/lib/vec3.d.ts ADDED
@@ -0,0 +1,165 @@
1
+ export type Vec3 = readonly [number, number, number];
2
+ import { Mat3 } from './mat3';
3
+ import { Mat4 } from './mat4';
4
+ import { Quat } from './quat';
5
+ export declare const zero: Vec3;
6
+ export declare const one: Vec3;
7
+ /**
8
+ * Adds two vec3's
9
+ */
10
+ export declare function add(a: Vec3, b: Vec3): Vec3;
11
+ /**
12
+ * Subtracts vector b from vector a
13
+ */
14
+ export declare function subtract(a: Vec3, b: Vec3): Vec3;
15
+ /**
16
+ * Multiplies two vec3's
17
+ */
18
+ export declare function multiply(a: Vec3, b: Vec3): Vec3;
19
+ /**
20
+ * Divides two vec3's
21
+ */
22
+ export declare function divide(a: Vec3, b: Vec3): Vec3;
23
+ /**
24
+ * Math.ceil the components of a vec3
25
+ */
26
+ export declare function ceil(a: Vec3): Vec3;
27
+ /**
28
+ * Math.floor the components of a vec3
29
+ */
30
+ export declare function floor(a: Vec3): Vec3;
31
+ /**
32
+ * Returns the minimum of two vec3's
33
+ */
34
+ export declare function min(a: Vec3, b: Vec3): Vec3;
35
+ /**
36
+ * Returns the maximum of two vec3's
37
+ */
38
+ export declare function max(a: Vec3, b: Vec3): Vec3;
39
+ /**
40
+ * Constrain a value to lie between two further values
41
+ */
42
+ export declare function clamp(a: Vec3, min: Vec3, max: Vec3): Vec3;
43
+ /**
44
+ * symmetric round the components of a vec3
45
+ */
46
+ export declare function round(a: Vec3): Vec3;
47
+ /**
48
+ * Scales a vec3 by a scalar number
49
+ */
50
+ export declare function scale(a: Vec3, s: number): Vec3;
51
+ /**
52
+ * Adds two vec3's after scaling the second operand by a scalar value
53
+ */
54
+ export declare function scaleAndAdd(a: Vec3, b: Vec3, scale: number): Vec3;
55
+ /**
56
+ * Calculates the euclidian distance between two vec3's
57
+ */
58
+ export declare function distance(a: Vec3, b: Vec3): number;
59
+ /**
60
+ * Calculates the squared euclidian distance between two vec3's
61
+ */
62
+ export declare function squaredDistance(a: Vec3, b: Vec3): number;
63
+ /**
64
+ * Calculates the length of a vec3
65
+ */
66
+ export declare function length(a: Vec3): number;
67
+ /**
68
+ * Calculates the squared length of a vec3
69
+ */
70
+ export declare function squaredLength(a: Vec3): number;
71
+ /**
72
+ * Negates the components of a vec3
73
+ */
74
+ export declare function negate(a: Vec3): Vec3;
75
+ /**
76
+ * Returns the inverse of the components of a vec3
77
+ */
78
+ export declare function inverse(a: Vec3): Vec3;
79
+ /**
80
+ * Normalize a vec3
81
+ */
82
+ export declare function normalize(a: Vec3): Vec3;
83
+ /**
84
+ * Calculates the dot product of two vec3's
85
+ */
86
+ export declare function dot(a: Vec3, b: Vec3): number;
87
+ /**
88
+ * Computes the cross product of two vec3's
89
+ */
90
+ export declare function cross(a: Vec3, b: Vec3): Vec3;
91
+ /**
92
+ * Performs a linear interpolation between two vec3's
93
+ */
94
+ export declare function lerp(a: Vec3, b: Vec3, t: number): Vec3;
95
+ /**
96
+ * Performs a spherical linear interpolation between two vec3's
97
+ */
98
+ export declare function slerp(a: Vec3, b: Vec3, t: number): Vec3;
99
+ /**
100
+ * Performs a hermite interpolation with two control points
101
+ *
102
+ * @param a the first operand
103
+ * @param b the second operand
104
+ * @param c the third operand
105
+ * @param d the fourth operand
106
+ * @param t interpolation amount, in the range [0-1], between the two inputs
107
+ */
108
+ export declare function hermite(a: Vec3, b: Vec3, c: Vec3, d: Vec3, t: number): Vec3;
109
+ /**
110
+ * Performs a bezier interpolation with two control points
111
+ */
112
+ export declare function bezier(a: Vec3, b: Vec3, c: Vec3, d: Vec3, t: number): Vec3;
113
+ /**
114
+ * Transforms the vec3 with a mat4.
115
+ * 4th vector component is implicitly '1'
116
+ */
117
+ export declare function transformMat4(a: Vec3, m: Mat4): Vec3;
118
+ /**
119
+ * Transforms the vec3 with a mat3.
120
+ */
121
+ export declare function transformMat3(a: Vec3, m: Mat3): Vec3;
122
+ /**
123
+ * Transforms the vec3 with a quat
124
+ * Can also be used for dual quaternions. (Multiply it with the real part)
125
+ *
126
+ * @param a the vector to transform
127
+ * @param q quaternion to transform with
128
+ */
129
+ export declare function transformQuat(a: Vec3, q: Quat): Vec3;
130
+ /**
131
+ * Rotate a 3D vector around the x-axis
132
+ * @param a The vec3 point to rotate
133
+ * @param b The origin of the rotation
134
+ * @param rad The angle of rotation in radians
135
+ */
136
+ export declare function rotateX(a: Vec3, b: Vec3, rad: number): Vec3;
137
+ /**
138
+ * Rotate a 3D vector around the y-axis
139
+ * @param a The vec3 point to rotate
140
+ * @param origin The origin of the rotation
141
+ * @param rad The angle of rotation in radians
142
+ */
143
+ export declare function rotateY(a: Vec3, origin: Vec3, rad: number): Vec3;
144
+ /**
145
+ * Rotate a 3D vector around the z-axis
146
+ * @param a The vec3 point to rotate
147
+ * @param b The origin of the rotation
148
+ * @param rad The angle of rotation in radians
149
+ */
150
+ export declare function rotateZ(a: Vec3, b: Vec3, rad: number): Vec3;
151
+ /**
152
+ * Get the angle between two 3D vectors
153
+ * @param a The first operand
154
+ * @param b The second operand
155
+ * @returns The angle in radians
156
+ */
157
+ export declare function angle(a: Vec3, b: Vec3): number;
158
+ /**
159
+ * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)
160
+ */
161
+ export declare function exactEquals(a: Vec3, b: Vec3): boolean;
162
+ /**
163
+ * Returns whether or not the vectors have approximately the same elements in the same position.
164
+ */
165
+ export declare function equals(a: Vec3, b: Vec3): boolean;