@minecraft/math 2.2.10 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api-report/math.api.md +127 -0
- package/dist/minecraft-math.d.ts +1034 -431
- package/dist/minecraft-math.js +833 -6
- package/dist/minecraft-math.js.map +3 -3
- package/lib/__mocks__/minecraft-server.js +17 -0
- package/lib/__mocks__/minecraft-server.js.map +1 -0
- package/lib/src/aabb/coreHelpers.js +282 -0
- package/lib/src/aabb/coreHelpers.js.map +1 -0
- package/lib/src/aabb/coreHelpers.test.js +227 -0
- package/lib/src/aabb/coreHelpers.test.js.map +1 -0
- package/lib/src/aabb/index.js +4 -0
- package/lib/src/aabb/index.js.map +1 -0
- package/lib/src/general/clamp.js.map +1 -0
- package/lib/src/general/index.js.map +1 -0
- package/lib/{index.js → src/index.js} +1 -0
- package/lib/src/index.js.map +1 -0
- package/lib/src/index.test.js.map +1 -0
- package/lib/{vector3 → src/vector3}/coreHelpers.js +294 -2
- package/lib/src/vector3/coreHelpers.js.map +1 -0
- package/lib/src/vector3/coreHelpers.test.js +578 -0
- package/lib/src/vector3/coreHelpers.test.js.map +1 -0
- package/lib/src/vector3/index.js.map +1 -0
- package/lib/src/vector3/vectorWrapper.js +509 -0
- package/lib/src/vector3/vectorWrapper.js.map +1 -0
- package/lib/src/vector3/vectorWrapper.test.js +575 -0
- package/lib/src/vector3/vectorWrapper.test.js.map +1 -0
- package/lib/types/math-beta.d.ts +1034 -431
- package/lib/types/math-public.d.ts +1034 -431
- package/lib/types/math.d.ts +1034 -431
- package/package.json +1 -1
- package/lib/general/clamp.js.map +0 -1
- package/lib/general/index.js.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/index.test.js.map +0 -1
- package/lib/vector3/coreHelpers.js.map +0 -1
- package/lib/vector3/coreHelpers.test.js +0 -264
- package/lib/vector3/coreHelpers.test.js.map +0 -1
- package/lib/vector3/index.js.map +0 -1
- package/lib/vector3/vectorWrapper.js +0 -230
- package/lib/vector3/vectorWrapper.js.map +0 -1
- package/lib/vector3/vectorWrapper.test.js +0 -228
- package/lib/vector3/vectorWrapper.test.js.map +0 -1
- /package/lib/{general → src/general}/clamp.js +0 -0
- /package/lib/{general → src/general}/index.js +0 -0
- /package/lib/{index.test.js → src/index.test.js} +0 -0
- /package/lib/{vector3 → src/vector3}/index.js +0 -0
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
4
|
+
import { createMockServerBindings } from '../../__mocks__/minecraft-server.js';
|
|
5
|
+
vi.mock('@minecraft/server', () => createMockServerBindings());
|
|
6
|
+
import { VECTOR3_FORWARD, VECTOR3_NEGATIVE_ONE, VECTOR3_ONE, VECTOR3_ZERO, Vector3Utils, } from '../vector3/coreHelpers.js';
|
|
7
|
+
import { AABBInvalidExtentError, AABBUtils } from './coreHelpers.js';
|
|
8
|
+
describe('AABB factories', () => {
|
|
9
|
+
it('successfully throws error when created from identical corner points', () => {
|
|
10
|
+
expect(() => AABBUtils.createFromCornerPoints(VECTOR3_ZERO, VECTOR3_ZERO)).toThrow(new AABBInvalidExtentError(VECTOR3_ZERO));
|
|
11
|
+
});
|
|
12
|
+
it('successfully reports expected AABB when corner point A is less than B', () => {
|
|
13
|
+
const aabb = AABBUtils.createFromCornerPoints(VECTOR3_ZERO, VECTOR3_ONE);
|
|
14
|
+
const expectedCenter = { x: 0.5, y: 0.5, z: 0.5 };
|
|
15
|
+
const expectedextent = { x: 0.5, y: 0.5, z: 0.5 };
|
|
16
|
+
expect(AABBUtils.isValid(aabb)).toBe(true);
|
|
17
|
+
expect(Vector3Utils.equals(aabb.center, expectedCenter)).toBe(true);
|
|
18
|
+
expect(Vector3Utils.equals(aabb.extent, expectedextent)).toBe(true);
|
|
19
|
+
});
|
|
20
|
+
it('successfully reports expected AABB when corner point B is less than A', () => {
|
|
21
|
+
const aabb = AABBUtils.createFromCornerPoints(VECTOR3_ONE, VECTOR3_ZERO);
|
|
22
|
+
const expectedCenter = { x: 0.5, y: 0.5, z: 0.5 };
|
|
23
|
+
const expectedextent = { x: 0.5, y: 0.5, z: 0.5 };
|
|
24
|
+
expect(AABBUtils.isValid(aabb)).toBe(true);
|
|
25
|
+
expect(Vector3Utils.equals(aabb.center, expectedCenter)).toBe(true);
|
|
26
|
+
expect(Vector3Utils.equals(aabb.extent, expectedextent)).toBe(true);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
describe('AABB operations', () => {
|
|
30
|
+
const validAABB = { center: VECTOR3_ZERO, extent: VECTOR3_ONE };
|
|
31
|
+
const invalidAABB = { center: VECTOR3_ZERO, extent: VECTOR3_ZERO };
|
|
32
|
+
const negativeExtentAABB = { center: VECTOR3_ZERO, extent: VECTOR3_NEGATIVE_ONE };
|
|
33
|
+
it('successfully reports zero extent AABB as invalid', () => {
|
|
34
|
+
expect(AABBUtils.isValid(invalidAABB)).toBe(false);
|
|
35
|
+
});
|
|
36
|
+
it('successfully reports negative extent AABB as invalid', () => {
|
|
37
|
+
expect(AABBUtils.isValid(negativeExtentAABB)).toBe(false);
|
|
38
|
+
});
|
|
39
|
+
it('successfully reports non-zero extent AABB as valid', () => {
|
|
40
|
+
expect(AABBUtils.isValid(validAABB)).toBe(true);
|
|
41
|
+
});
|
|
42
|
+
it('successfully compares AABBs with different centers as not equal', () => {
|
|
43
|
+
const firstAABB = { center: VECTOR3_ZERO, extent: VECTOR3_ONE };
|
|
44
|
+
const secondAABB = { center: VECTOR3_ONE, extent: VECTOR3_ONE };
|
|
45
|
+
expect(AABBUtils.equals(firstAABB, secondAABB)).toBe(false);
|
|
46
|
+
});
|
|
47
|
+
it('successfully compares AABBs with different extent as not equal', () => {
|
|
48
|
+
const firstAABB = { center: VECTOR3_ZERO, extent: VECTOR3_ONE };
|
|
49
|
+
const secondAABB = { center: VECTOR3_ZERO, extent: { x: 2.0, y: 2.0, z: 2.0 } };
|
|
50
|
+
expect(AABBUtils.equals(firstAABB, secondAABB)).toBe(false);
|
|
51
|
+
});
|
|
52
|
+
it('successfully compares AABBs with different center and extent as not equal', () => {
|
|
53
|
+
const firstAABB = { center: VECTOR3_ONE, extent: VECTOR3_ONE };
|
|
54
|
+
const secondAABB = { center: VECTOR3_ZERO, extent: { x: 2.0, y: 2.0, z: 2.0 } };
|
|
55
|
+
expect(AABBUtils.equals(firstAABB, secondAABB)).toBe(false);
|
|
56
|
+
});
|
|
57
|
+
it('successfully compares AABBs with same center and extent as equal', () => {
|
|
58
|
+
const firstAABB = { center: VECTOR3_ONE, extent: VECTOR3_ONE };
|
|
59
|
+
const secondAABB = { center: VECTOR3_ONE, extent: VECTOR3_ONE };
|
|
60
|
+
expect(AABBUtils.equals(firstAABB, secondAABB)).toBe(true);
|
|
61
|
+
});
|
|
62
|
+
it('successfully throws error when calling equals with an invalid AABB as the first param', () => {
|
|
63
|
+
expect(() => AABBUtils.equals(invalidAABB, validAABB)).toThrow(new AABBInvalidExtentError(VECTOR3_ZERO));
|
|
64
|
+
});
|
|
65
|
+
it('successfully throws error when calling equals with an invalid AABB as the second param', () => {
|
|
66
|
+
expect(() => AABBUtils.equals(validAABB, invalidAABB)).toThrow(new AABBInvalidExtentError(VECTOR3_ZERO));
|
|
67
|
+
});
|
|
68
|
+
it('successfully returns expected min Vector3', () => {
|
|
69
|
+
const aabb = { center: VECTOR3_ZERO, extent: VECTOR3_ONE };
|
|
70
|
+
const min = AABBUtils.getMin(aabb);
|
|
71
|
+
expect(Vector3Utils.equals(min, { x: -1.0, y: -1.0, z: -1.0 })).toBe(true);
|
|
72
|
+
});
|
|
73
|
+
it('successfully throws error when calling getMin with an invalid AABB', () => {
|
|
74
|
+
expect(() => AABBUtils.getMin(invalidAABB)).toThrow(new AABBInvalidExtentError(VECTOR3_ZERO));
|
|
75
|
+
});
|
|
76
|
+
it('successfully returns expected max Vector3', () => {
|
|
77
|
+
const aabb = { center: VECTOR3_ZERO, extent: VECTOR3_ONE };
|
|
78
|
+
const max = AABBUtils.getMax(aabb);
|
|
79
|
+
expect(Vector3Utils.equals(max, { x: 1.0, y: 1.0, z: 1.0 })).toBe(true);
|
|
80
|
+
});
|
|
81
|
+
it('successfully throws error when calling getMax with an invalid AABB', () => {
|
|
82
|
+
expect(() => AABBUtils.getMax(invalidAABB)).toThrow(new AABBInvalidExtentError(VECTOR3_ZERO));
|
|
83
|
+
});
|
|
84
|
+
it('successfully returns expected span Vector3', () => {
|
|
85
|
+
const aabb = { center: VECTOR3_ZERO, extent: VECTOR3_ONE };
|
|
86
|
+
const span = AABBUtils.getSpan(aabb);
|
|
87
|
+
expect(Vector3Utils.equals(span, { x: 2.0, y: 2.0, z: 2.0 })).toBe(true);
|
|
88
|
+
});
|
|
89
|
+
it('successfully throws error when calling getSpan with an invalid AABB', () => {
|
|
90
|
+
expect(() => AABBUtils.getSpan(invalidAABB)).toThrow(new AABBInvalidExtentError(VECTOR3_ZERO));
|
|
91
|
+
});
|
|
92
|
+
it('successfully translates AABB center not changing extent', () => {
|
|
93
|
+
const aabb = { center: VECTOR3_ZERO, extent: VECTOR3_ONE };
|
|
94
|
+
const translatedAABB = AABBUtils.translate(aabb, VECTOR3_FORWARD);
|
|
95
|
+
expect(Vector3Utils.equals(translatedAABB.center, { x: 0.0, y: 0.0, z: 1.0 })).toBe(true);
|
|
96
|
+
expect(Vector3Utils.equals(translatedAABB.extent, VECTOR3_ONE)).toBe(true);
|
|
97
|
+
});
|
|
98
|
+
it('successfully throws error when calling translate with an invalid AABB', () => {
|
|
99
|
+
expect(() => AABBUtils.translate(invalidAABB, VECTOR3_ONE)).toThrow(new AABBInvalidExtentError(VECTOR3_ZERO));
|
|
100
|
+
});
|
|
101
|
+
it('successfully dilates AABB extent growing with positive components not changing center', () => {
|
|
102
|
+
const aabb = { center: VECTOR3_ZERO, extent: VECTOR3_ONE };
|
|
103
|
+
const dilatedAABB = AABBUtils.dilate(aabb, VECTOR3_ONE);
|
|
104
|
+
expect(Vector3Utils.equals(dilatedAABB.center, VECTOR3_ZERO)).toBe(true);
|
|
105
|
+
expect(Vector3Utils.equals(dilatedAABB.extent, { x: 2.0, y: 2.0, z: 2.0 })).toBe(true);
|
|
106
|
+
});
|
|
107
|
+
it('successfully dilates AABB extent shrinking with negative components within current extent not changing center', () => {
|
|
108
|
+
const aabb = { center: VECTOR3_ZERO, extent: { x: 2.0, y: 2.0, z: 2.0 } };
|
|
109
|
+
const dilatedAABB = AABBUtils.dilate(aabb, VECTOR3_NEGATIVE_ONE);
|
|
110
|
+
expect(Vector3Utils.equals(dilatedAABB.center, VECTOR3_ZERO)).toBe(true);
|
|
111
|
+
expect(Vector3Utils.equals(dilatedAABB.extent, { x: 1.0, y: 1.0, z: 1.0 })).toBe(true);
|
|
112
|
+
});
|
|
113
|
+
it('successfully dilates AABB extent clamping with negative components exceeding current extent not changing center', () => {
|
|
114
|
+
const epsilon = AABBUtils.EPSILON;
|
|
115
|
+
const epsilonVec = { x: epsilon, y: epsilon, z: epsilon };
|
|
116
|
+
const aabb = { center: VECTOR3_ZERO, extent: VECTOR3_ONE };
|
|
117
|
+
const dilatedAABB = AABBUtils.dilate(aabb, { x: -2.0, y: -2.0, z: -2.0 });
|
|
118
|
+
expect(Vector3Utils.equals(dilatedAABB.center, VECTOR3_ZERO)).toBe(true);
|
|
119
|
+
expect(Vector3Utils.equals(dilatedAABB.extent, epsilonVec)).toBe(true);
|
|
120
|
+
});
|
|
121
|
+
it('successfully throws error when calling dilate with an invalid AABB', () => {
|
|
122
|
+
expect(() => AABBUtils.dilate(invalidAABB, VECTOR3_ONE)).toThrow(new AABBInvalidExtentError(VECTOR3_ZERO));
|
|
123
|
+
});
|
|
124
|
+
it('successfully expands AABB with other AABB', () => {
|
|
125
|
+
const firstAABB = { center: VECTOR3_ZERO, extent: VECTOR3_ONE };
|
|
126
|
+
const secondAABB = { center: VECTOR3_ONE, extent: VECTOR3_ONE };
|
|
127
|
+
const expandedAABB = AABBUtils.expand(firstAABB, secondAABB);
|
|
128
|
+
expect(Vector3Utils.equals(expandedAABB.center, { x: 0.5, y: 0.5, z: 0.5 })).toBe(true);
|
|
129
|
+
expect(Vector3Utils.equals(expandedAABB.extent, { x: 1.5, y: 1.5, z: 1.5 })).toBe(true);
|
|
130
|
+
});
|
|
131
|
+
it('successfully throws error when calling expand with an invalid AABB as the first parameter', () => {
|
|
132
|
+
expect(() => AABBUtils.expand(invalidAABB, validAABB)).toThrow(new AABBInvalidExtentError(VECTOR3_ZERO));
|
|
133
|
+
});
|
|
134
|
+
it('successfully throws error when calling expand with an invalid AABB as the second parameter', () => {
|
|
135
|
+
expect(() => AABBUtils.expand(validAABB, invalidAABB)).toThrow(new AABBInvalidExtentError(VECTOR3_ZERO));
|
|
136
|
+
});
|
|
137
|
+
it('successfully reports non-overlapping AABBs as not intersecting', () => {
|
|
138
|
+
const firstAABB = { center: VECTOR3_ZERO, extent: VECTOR3_ONE };
|
|
139
|
+
const secondAABB = { center: { x: 2.0, y: 2.0, z: 2.0 }, extent: { x: 0.5, y: 0.5, z: 0.5 } };
|
|
140
|
+
expect(AABBUtils.intersects(firstAABB, secondAABB)).toBe(false);
|
|
141
|
+
});
|
|
142
|
+
it('successfully reports overlapping AABBs as intersecting', () => {
|
|
143
|
+
const firstAABB = { center: VECTOR3_ZERO, extent: VECTOR3_ONE };
|
|
144
|
+
const secondAABB = { center: VECTOR3_ONE, extent: { x: 0.5, y: 0.5, z: 0.5 } };
|
|
145
|
+
expect(AABBUtils.intersects(firstAABB, secondAABB)).toBe(true);
|
|
146
|
+
});
|
|
147
|
+
it('successfully throws error when calling intersect with an invalid AABB as the first parameter', () => {
|
|
148
|
+
expect(() => AABBUtils.intersects(invalidAABB, validAABB)).toThrow(new AABBInvalidExtentError(VECTOR3_ZERO));
|
|
149
|
+
});
|
|
150
|
+
it('successfully throws error when calling intersect with an invalid AABB as the second parameter', () => {
|
|
151
|
+
expect(() => AABBUtils.intersects(validAABB, invalidAABB)).toThrow(new AABBInvalidExtentError(VECTOR3_ZERO));
|
|
152
|
+
});
|
|
153
|
+
it('successfully reports Vector3 outside AABB as not inside', () => {
|
|
154
|
+
const aabb = { center: VECTOR3_ZERO, extent: VECTOR3_ONE };
|
|
155
|
+
const location = { x: 1.1, y: 1.0, z: 1.0 };
|
|
156
|
+
expect(AABBUtils.isInside(aabb, location)).toBe(false);
|
|
157
|
+
});
|
|
158
|
+
it('successfully reports Vector3 inside of AABB as inside', () => {
|
|
159
|
+
const aabb = { center: VECTOR3_ZERO, extent: VECTOR3_ONE };
|
|
160
|
+
const location = { x: 1.0, y: 1.0, z: 1.0 };
|
|
161
|
+
expect(AABBUtils.isInside(aabb, location)).toBe(true);
|
|
162
|
+
});
|
|
163
|
+
it('successfully throws error when calling isInside with an invalid AABB', () => {
|
|
164
|
+
expect(() => AABBUtils.isInside(invalidAABB, VECTOR3_ONE)).toThrow(new AABBInvalidExtentError(VECTOR3_ZERO));
|
|
165
|
+
});
|
|
166
|
+
it('successfully reports correct intersecting AABB for overlapping AABBs', () => {
|
|
167
|
+
const firstAABB = { center: VECTOR3_ZERO, extent: VECTOR3_ONE };
|
|
168
|
+
const secondAABB = { center: VECTOR3_ONE, extent: { x: 0.5, y: 0.5, z: 0.5 } };
|
|
169
|
+
const intersection = AABBUtils.getIntersection(firstAABB, secondAABB);
|
|
170
|
+
expect(intersection).toBeDefined();
|
|
171
|
+
if (intersection !== undefined) {
|
|
172
|
+
expect(Vector3Utils.equals(intersection.center, { x: 0.75, y: 0.75, z: 0.75 })).toBe(true);
|
|
173
|
+
expect(Vector3Utils.equals(intersection.extent, { x: 0.25, y: 0.25, z: 0.25 })).toBe(true);
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
it('successfully reports undefined AABB for non-overlapping AABBs', () => {
|
|
177
|
+
const firstAABB = { center: VECTOR3_ZERO, extent: VECTOR3_ONE };
|
|
178
|
+
const secondAABB = { center: { x: 2.0, y: 2.0, z: 2.0 }, extent: { x: 0.5, y: 0.5, z: 0.5 } };
|
|
179
|
+
const intersection = AABBUtils.getIntersection(firstAABB, secondAABB);
|
|
180
|
+
expect(intersection).toBeUndefined();
|
|
181
|
+
});
|
|
182
|
+
it('successfully throws error when calling getIntersection with an invalid AABB as the first parameter', () => {
|
|
183
|
+
expect(() => AABBUtils.getIntersection(invalidAABB, validAABB)).toThrow(new AABBInvalidExtentError(VECTOR3_ZERO));
|
|
184
|
+
});
|
|
185
|
+
it('successfully throws error when calling getIntersection with an invalid AABB as the second parameter', () => {
|
|
186
|
+
expect(() => AABBUtils.getIntersection(validAABB, invalidAABB)).toThrow(new AABBInvalidExtentError(VECTOR3_ZERO));
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
describe('AABB BlockVolume operations', () => {
|
|
190
|
+
it('successfully creates a 2x2x2 BlockVolume when AABB extent is {1,1,1} around center {0,0,0}', () => {
|
|
191
|
+
const aabb = { center: VECTOR3_ZERO, extent: VECTOR3_ONE };
|
|
192
|
+
const blockVolume = AABBUtils.getBlockVolume(aabb);
|
|
193
|
+
expect(blockVolume.from).toEqual({ x: -1.0, y: -1.0, z: -1.0 });
|
|
194
|
+
expect(blockVolume.to).toEqual({ x: 1.0, y: 1.0, z: 1.0 });
|
|
195
|
+
});
|
|
196
|
+
it('successfully creates a 2x2x2 BlockVolume when AABB extent is {0.5,0.5,0.5} around center {0,0,0}', () => {
|
|
197
|
+
const aabb = { center: VECTOR3_ZERO, extent: { x: 0.5, y: 0.5, z: 0.5 } };
|
|
198
|
+
const blockVolume = AABBUtils.getBlockVolume(aabb);
|
|
199
|
+
expect(blockVolume.from).toEqual({ x: -1.0, y: -1.0, z: -1.0 });
|
|
200
|
+
expect(blockVolume.to).toEqual({ x: 1.0, y: 1.0, z: 1.0 });
|
|
201
|
+
});
|
|
202
|
+
it('successfully creates a 1x1x1 BlockVolume when AABB center and extent are {0.5,0.5,0.5}', () => {
|
|
203
|
+
const aabb = { center: { x: 0.5, y: 0.5, z: 0.5 }, extent: { x: 0.5, y: 0.5, z: 0.5 } };
|
|
204
|
+
const blockVolume = AABBUtils.getBlockVolume(aabb);
|
|
205
|
+
expect(blockVolume.from).toEqual({ x: 0.0, y: 0.0, z: 0.0 });
|
|
206
|
+
expect(blockVolume.to).toEqual({ x: 1.0, y: 1.0, z: 1.0 });
|
|
207
|
+
});
|
|
208
|
+
it('successfully creates a 1x1x1 BlockVolume when AABB extent is {0.5,0.5,0.5} around center {-0.5,-0.5,-0.5}', () => {
|
|
209
|
+
const aabb = { center: { x: -0.5, y: -0.5, z: -0.5 }, extent: { x: 0.5, y: 0.5, z: 0.5 } };
|
|
210
|
+
const blockVolume = AABBUtils.getBlockVolume(aabb);
|
|
211
|
+
expect(blockVolume.from).toEqual({ x: -1.0, y: -1.0, z: -1.0 });
|
|
212
|
+
expect(blockVolume.to).toEqual({ x: -0.0, y: -0.0, z: -0.0 });
|
|
213
|
+
});
|
|
214
|
+
it('successfully creates a 1x1x1 BlockVolume when AABB extent are {0.5,0.5,0.5} plus epsilon around {0.5,0.5,0.5}', () => {
|
|
215
|
+
const aabb = { center: { x: 0.5, y: 0.5, z: 0.5 }, extent: { x: 0.50001, y: 0.50001, z: 0.50001 } };
|
|
216
|
+
const blockVolume = AABBUtils.getBlockVolume(aabb);
|
|
217
|
+
expect(blockVolume.from).toEqual({ x: 0.0, y: 0.0, z: 0.0 });
|
|
218
|
+
expect(blockVolume.to).toEqual({ x: 1.0, y: 1.0, z: 1.0 });
|
|
219
|
+
});
|
|
220
|
+
it('successfully creates a 3x3x3 BlockVolume when AABB extent are {0.5,0.5,0.5} plus more than epsilon around {0.5,0.5,0.5}', () => {
|
|
221
|
+
const aabb = { center: { x: 0.5, y: 0.5, z: 0.5 }, extent: { x: 0.50002, y: 0.50002, z: 0.50002 } };
|
|
222
|
+
const blockVolume = AABBUtils.getBlockVolume(aabb);
|
|
223
|
+
expect(blockVolume.from).toEqual({ x: -1.0, y: -1.0, z: -1.0 });
|
|
224
|
+
expect(blockVolume.to).toEqual({ x: 2.0, y: 2.0, z: 2.0 });
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
//# sourceMappingURL=coreHelpers.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coreHelpers.test.js","sourceRoot":"","sources":["../../../src/aabb/coreHelpers.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/aabb/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clamp.js","sourceRoot":"","sources":["../../../src/general/clamp.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,GAAW,EAAE,GAAW;IAC7D,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/general/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/index.test.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IAClB,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;QACnB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -87,6 +87,30 @@ export class Vector3Utils {
|
|
|
87
87
|
static floor(v) {
|
|
88
88
|
return { x: Math.floor(v.x), y: Math.floor(v.y), z: Math.floor(v.z) };
|
|
89
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* ceil
|
|
92
|
+
*
|
|
93
|
+
* Ceil the components of a vector to produce a new vector
|
|
94
|
+
*/
|
|
95
|
+
static ceil(v) {
|
|
96
|
+
return { x: Math.ceil(v.x), y: Math.ceil(v.y), z: Math.ceil(v.z) };
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* min
|
|
100
|
+
*
|
|
101
|
+
* Min the components of two vectors to produce a new vector
|
|
102
|
+
*/
|
|
103
|
+
static min(a, b) {
|
|
104
|
+
return { x: Math.min(a.x, b.x), y: Math.min(a.y, b.y), z: Math.min(a.z, b.z) };
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* max
|
|
108
|
+
*
|
|
109
|
+
* Max the components of two vectors to produce a new vector
|
|
110
|
+
*/
|
|
111
|
+
static max(a, b) {
|
|
112
|
+
return { x: Math.max(a.x, b.x), y: Math.max(a.y, b.y), z: Math.max(a.z, b.z) };
|
|
113
|
+
}
|
|
90
114
|
/**
|
|
91
115
|
* toString
|
|
92
116
|
*
|
|
@@ -197,6 +221,78 @@ export class Vector3Utils {
|
|
|
197
221
|
* @public
|
|
198
222
|
*/
|
|
199
223
|
export class Vector2Utils {
|
|
224
|
+
/**
|
|
225
|
+
* equals
|
|
226
|
+
*
|
|
227
|
+
* Check the equality of two vectors
|
|
228
|
+
*/
|
|
229
|
+
static equals(v1, v2) {
|
|
230
|
+
return v1.x === v2.x && v1.y === v2.y;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* add
|
|
234
|
+
*
|
|
235
|
+
* Add two vectors to produce a new vector
|
|
236
|
+
*/
|
|
237
|
+
static add(v1, v2) {
|
|
238
|
+
return { x: v1.x + (v2.x ?? 0), y: v1.y + (v2.y ?? 0) };
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* subtract
|
|
242
|
+
*
|
|
243
|
+
* Subtract two vectors to produce a new vector (v1-v2)
|
|
244
|
+
*/
|
|
245
|
+
static subtract(v1, v2) {
|
|
246
|
+
return { x: v1.x - (v2.x ?? 0), y: v1.y - (v2.y ?? 0) };
|
|
247
|
+
}
|
|
248
|
+
/** scale
|
|
249
|
+
*
|
|
250
|
+
* Multiple all entries in a vector by a single scalar value producing a new vector
|
|
251
|
+
*/
|
|
252
|
+
static scale(v1, scale) {
|
|
253
|
+
return { x: v1.x * scale, y: v1.y * scale };
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* dot
|
|
257
|
+
*
|
|
258
|
+
* Calculate the dot product of two vectors
|
|
259
|
+
*/
|
|
260
|
+
static dot(a, b) {
|
|
261
|
+
return a.x * b.x + a.y * b.y;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* magnitude
|
|
265
|
+
*
|
|
266
|
+
* The magnitude of a vector
|
|
267
|
+
*/
|
|
268
|
+
static magnitude(v) {
|
|
269
|
+
return Math.sqrt(v.x ** 2 + v.y ** 2);
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* distance
|
|
273
|
+
*
|
|
274
|
+
* Calculate the distance between two vectors
|
|
275
|
+
*/
|
|
276
|
+
static distance(a, b) {
|
|
277
|
+
return Vector2Utils.magnitude(Vector2Utils.subtract(a, b));
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* normalize
|
|
281
|
+
*
|
|
282
|
+
* Takes a vector 3 and normalizes it to a unit vector
|
|
283
|
+
*/
|
|
284
|
+
static normalize(v) {
|
|
285
|
+
const mag = Vector2Utils.magnitude(v);
|
|
286
|
+
return { x: v.x / mag, y: v.y / mag };
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* floor
|
|
290
|
+
*
|
|
291
|
+
* Floor the components of a vector to produce a new vector
|
|
292
|
+
*/
|
|
293
|
+
static floor(v) {
|
|
294
|
+
return { x: Math.floor(v.x), y: Math.floor(v.y) };
|
|
295
|
+
}
|
|
200
296
|
/**
|
|
201
297
|
* toString
|
|
202
298
|
*
|
|
@@ -210,10 +306,10 @@ export class Vector2Utils {
|
|
|
210
306
|
/**
|
|
211
307
|
* fromString
|
|
212
308
|
*
|
|
213
|
-
* Gets a Vector2 from the string representation produced by {@link
|
|
309
|
+
* Gets a Vector2 from the string representation produced by {@link Vector2Utils.toString}. If any numeric value is not a number
|
|
214
310
|
* or the format is invalid, undefined is returned.
|
|
215
311
|
* @param str - The string to parse
|
|
216
|
-
* @param delimiter - The delimiter used to separate the components. Defaults to the same as the default for {@link
|
|
312
|
+
* @param delimiter - The delimiter used to separate the components. Defaults to the same as the default for {@link Vector2Utils.toString}
|
|
217
313
|
*/
|
|
218
314
|
static fromString(str, delimiter = ',') {
|
|
219
315
|
const parts = str.split(delimiter);
|
|
@@ -226,6 +322,194 @@ export class Vector2Utils {
|
|
|
226
322
|
}
|
|
227
323
|
return { x: output[0], y: output[1] };
|
|
228
324
|
}
|
|
325
|
+
/**
|
|
326
|
+
* clamp
|
|
327
|
+
*
|
|
328
|
+
* Clamps the components of a vector to limits to produce a new vector
|
|
329
|
+
*/
|
|
330
|
+
static clamp(v, limits) {
|
|
331
|
+
return {
|
|
332
|
+
x: clampNumber(v.x, limits?.min?.x ?? Number.MIN_SAFE_INTEGER, limits?.max?.x ?? Number.MAX_SAFE_INTEGER),
|
|
333
|
+
y: clampNumber(v.y, limits?.min?.y ?? Number.MIN_SAFE_INTEGER, limits?.max?.y ?? Number.MAX_SAFE_INTEGER),
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* lerp
|
|
338
|
+
*
|
|
339
|
+
* Constructs a new vector using linear interpolation on each component from two vectors.
|
|
340
|
+
*/
|
|
341
|
+
static lerp(a, b, t) {
|
|
342
|
+
return { x: a.x + (b.x - a.x) * t, y: a.y + (b.y - a.y) * t };
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* slerp
|
|
346
|
+
*
|
|
347
|
+
* Constructs a new vector using spherical linear interpolation on each component from two vectors.
|
|
348
|
+
*/
|
|
349
|
+
static slerp(a, b, t) {
|
|
350
|
+
const theta = Math.acos(Vector2Utils.dot(a, b));
|
|
351
|
+
const sinTheta = Math.sin(theta);
|
|
352
|
+
const ta = Math.sin((1.0 - t) * theta) / sinTheta;
|
|
353
|
+
const tb = Math.sin(t * theta) / sinTheta;
|
|
354
|
+
return Vector2Utils.add(Vector2Utils.scale(a, ta), Vector2Utils.scale(b, tb));
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* multiply
|
|
358
|
+
*
|
|
359
|
+
* Element-wise multiplication of two vectors together.
|
|
360
|
+
* Not to be confused with {@link Vector2Utils.dot} product
|
|
361
|
+
*/
|
|
362
|
+
static multiply(a, b) {
|
|
363
|
+
return { x: a.x * b.x, y: a.y * b.y };
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Utilities operating on VectorXZ objects. All methods are static and do not modify the input objects.
|
|
368
|
+
*
|
|
369
|
+
* @public
|
|
370
|
+
*/
|
|
371
|
+
export class VectorXZUtils {
|
|
372
|
+
/**
|
|
373
|
+
* equals
|
|
374
|
+
*
|
|
375
|
+
* Check the equality of two vectors
|
|
376
|
+
*/
|
|
377
|
+
static equals(v1, v2) {
|
|
378
|
+
return v1.x === v2.x && v1.z === v2.z;
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* add
|
|
382
|
+
*
|
|
383
|
+
* Add two vectors to produce a new vector
|
|
384
|
+
*/
|
|
385
|
+
static add(v1, v2) {
|
|
386
|
+
return { x: v1.x + (v2.x ?? 0), z: v1.z + (v2.z ?? 0) };
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* subtract
|
|
390
|
+
*
|
|
391
|
+
* Subtract two vectors to produce a new vector (v1-v2)
|
|
392
|
+
*/
|
|
393
|
+
static subtract(v1, v2) {
|
|
394
|
+
return { x: v1.x - (v2.x ?? 0), z: v1.z - (v2.z ?? 0) };
|
|
395
|
+
}
|
|
396
|
+
/** scale
|
|
397
|
+
*
|
|
398
|
+
* Multiple all entries in a vector by a single scalar value producing a new vector
|
|
399
|
+
*/
|
|
400
|
+
static scale(v1, scale) {
|
|
401
|
+
return { x: v1.x * scale, z: v1.z * scale };
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* dot
|
|
405
|
+
*
|
|
406
|
+
* Calculate the dot product of two vectors
|
|
407
|
+
*/
|
|
408
|
+
static dot(a, b) {
|
|
409
|
+
return a.x * b.x + a.z * b.z;
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* magnitude
|
|
413
|
+
*
|
|
414
|
+
* The magnitude of a vector
|
|
415
|
+
*/
|
|
416
|
+
static magnitude(v) {
|
|
417
|
+
return Math.sqrt(v.x ** 2 + v.z ** 2);
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* distance
|
|
421
|
+
*
|
|
422
|
+
* Calculate the distance between two vectors
|
|
423
|
+
*/
|
|
424
|
+
static distance(a, b) {
|
|
425
|
+
return VectorXZUtils.magnitude(VectorXZUtils.subtract(a, b));
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* normalize
|
|
429
|
+
*
|
|
430
|
+
* Takes a vector 3 and normalizes it to a unit vector
|
|
431
|
+
*/
|
|
432
|
+
static normalize(v) {
|
|
433
|
+
const mag = VectorXZUtils.magnitude(v);
|
|
434
|
+
return { x: v.x / mag, z: v.z / mag };
|
|
435
|
+
}
|
|
436
|
+
/**
|
|
437
|
+
* floor
|
|
438
|
+
*
|
|
439
|
+
* Floor the components of a vector to produce a new vector
|
|
440
|
+
*/
|
|
441
|
+
static floor(v) {
|
|
442
|
+
return { x: Math.floor(v.x), z: Math.floor(v.z) };
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* toString
|
|
446
|
+
*
|
|
447
|
+
* Create a string representation of a vectorxz
|
|
448
|
+
*/
|
|
449
|
+
static toString(v, options) {
|
|
450
|
+
const decimals = options?.decimals ?? 2;
|
|
451
|
+
const str = [v.x.toFixed(decimals), v.z.toFixed(decimals)];
|
|
452
|
+
return str.join(options?.delimiter ?? ', ');
|
|
453
|
+
}
|
|
454
|
+
/**
|
|
455
|
+
* fromString
|
|
456
|
+
*
|
|
457
|
+
* Gets a VectorXZ from the string representation produced by {@link VectorXZUtils.toString}. If any numeric value is not a number
|
|
458
|
+
* or the format is invalid, undefined is returned.
|
|
459
|
+
* @param str - The string to parse
|
|
460
|
+
* @param delimiter - The delimiter used to separate the components. Defaults to the same as the default for {@link VectorXZUtils.toString}
|
|
461
|
+
*/
|
|
462
|
+
static fromString(str, delimiter = ',') {
|
|
463
|
+
const parts = str.split(delimiter);
|
|
464
|
+
if (parts.length !== 2) {
|
|
465
|
+
return undefined;
|
|
466
|
+
}
|
|
467
|
+
const output = parts.map(part => parseFloat(part));
|
|
468
|
+
if (output.some(part => isNaN(part))) {
|
|
469
|
+
return undefined;
|
|
470
|
+
}
|
|
471
|
+
return { x: output[0], z: output[1] };
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
474
|
+
* clamp
|
|
475
|
+
*
|
|
476
|
+
* Clamps the components of a vector to limits to produce a new vector
|
|
477
|
+
*/
|
|
478
|
+
static clamp(v, limits) {
|
|
479
|
+
return {
|
|
480
|
+
x: clampNumber(v.x, limits?.min?.x ?? Number.MIN_SAFE_INTEGER, limits?.max?.x ?? Number.MAX_SAFE_INTEGER),
|
|
481
|
+
z: clampNumber(v.z, limits?.min?.z ?? Number.MIN_SAFE_INTEGER, limits?.max?.z ?? Number.MAX_SAFE_INTEGER),
|
|
482
|
+
};
|
|
483
|
+
}
|
|
484
|
+
/**
|
|
485
|
+
* lerp
|
|
486
|
+
*
|
|
487
|
+
* Constructs a new vector using linear interpolation on each component from two vectors.
|
|
488
|
+
*/
|
|
489
|
+
static lerp(a, b, t) {
|
|
490
|
+
return { x: a.x + (b.x - a.x) * t, z: a.z + (b.z - a.z) * t };
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
* slerp
|
|
494
|
+
*
|
|
495
|
+
* Constructs a new vector using spherical linear interpolation on each component from two vectors.
|
|
496
|
+
*/
|
|
497
|
+
static slerp(a, b, t) {
|
|
498
|
+
const theta = Math.acos(VectorXZUtils.dot(a, b));
|
|
499
|
+
const sinTheta = Math.sin(theta);
|
|
500
|
+
const ta = Math.sin((1.0 - t) * theta) / sinTheta;
|
|
501
|
+
const tb = Math.sin(t * theta) / sinTheta;
|
|
502
|
+
return VectorXZUtils.add(VectorXZUtils.scale(a, ta), VectorXZUtils.scale(b, tb));
|
|
503
|
+
}
|
|
504
|
+
/**
|
|
505
|
+
* multiply
|
|
506
|
+
*
|
|
507
|
+
* Element-wise multiplication of two vectors together.
|
|
508
|
+
* Not to be confused with {@link VectorXZUtils.dot} product
|
|
509
|
+
*/
|
|
510
|
+
static multiply(a, b) {
|
|
511
|
+
return { x: a.x * b.x, z: a.z * b.z };
|
|
512
|
+
}
|
|
229
513
|
}
|
|
230
514
|
/**
|
|
231
515
|
* up
|
|
@@ -351,4 +635,12 @@ export const VECTOR3_NEGATIVE_ONE = { x: -1, y: -1, z: -1 };
|
|
|
351
635
|
* @public
|
|
352
636
|
*/
|
|
353
637
|
export const VECTOR2_ZERO = { x: 0, y: 0 };
|
|
638
|
+
/**
|
|
639
|
+
* zero
|
|
640
|
+
*
|
|
641
|
+
* A vector representing the value of 0 in all directions (0,0)
|
|
642
|
+
*
|
|
643
|
+
* @public
|
|
644
|
+
*/
|
|
645
|
+
export const VECTORXZ_ZERO = { x: 0, z: 0 };
|
|
354
646
|
//# sourceMappingURL=coreHelpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coreHelpers.js","sourceRoot":"","sources":["../../../src/vector3/coreHelpers.ts"],"names":[],"mappings":"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"}
|