@buley/hexgrid-3d 3.1.0 → 3.2.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/dist/HexGridEnhanced.d.ts +15 -0
- package/dist/HexGridEnhanced.d.ts.map +1 -0
- package/dist/HexGridEnhanced.js +1 -0
- package/dist/Snapshot.d.ts +594 -0
- package/dist/Snapshot.d.ts.map +1 -0
- package/dist/Snapshot.js +757 -0
- package/dist/adapters/DashAdapter.d.ts +18 -0
- package/dist/adapters/DashAdapter.d.ts.map +1 -0
- package/dist/adapters/DashAdapter.js +42 -0
- package/dist/adapters.d.ts +53 -0
- package/dist/adapters.d.ts.map +1 -0
- package/dist/adapters.js +14 -0
- package/dist/algorithms/AdvancedStatistics.d.ts +52 -0
- package/dist/algorithms/AdvancedStatistics.d.ts.map +1 -0
- package/dist/algorithms/AdvancedStatistics.js +307 -0
- package/dist/algorithms/BayesianStatistics.d.ts +86 -0
- package/dist/algorithms/BayesianStatistics.d.ts.map +1 -0
- package/dist/algorithms/BayesianStatistics.js +263 -0
- package/dist/algorithms/FlowField.d.ts +55 -0
- package/dist/algorithms/FlowField.d.ts.map +1 -0
- package/dist/algorithms/FlowField.js +80 -0
- package/dist/algorithms/FlowField3D.d.ts +166 -0
- package/dist/algorithms/FlowField3D.d.ts.map +1 -0
- package/dist/algorithms/FlowField3D.js +327 -0
- package/dist/algorithms/FluidEngineFactory.d.ts +15 -0
- package/dist/algorithms/FluidEngineFactory.d.ts.map +1 -0
- package/dist/algorithms/FluidEngineFactory.js +41 -0
- package/dist/algorithms/FluidSimulation.d.ts +41 -0
- package/dist/algorithms/FluidSimulation.d.ts.map +1 -0
- package/dist/algorithms/FluidSimulation.js +74 -0
- package/dist/algorithms/FluidSimulation3D.d.ts +137 -0
- package/dist/algorithms/FluidSimulation3D.d.ts.map +1 -0
- package/dist/algorithms/FluidSimulation3D.js +464 -0
- package/dist/algorithms/FluidSimulation3DGPU.d.ts +41 -0
- package/dist/algorithms/FluidSimulation3DGPU.d.ts.map +1 -0
- package/dist/algorithms/FluidSimulation3DGPU.js +468 -0
- package/dist/algorithms/FluidSimulationWebNN.d.ts +56 -0
- package/dist/algorithms/FluidSimulationWebNN.d.ts.map +1 -0
- package/dist/algorithms/FluidSimulationWebNN.js +84 -0
- package/dist/algorithms/GraphAlgorithms.d.ts +48 -0
- package/dist/algorithms/GraphAlgorithms.d.ts.map +1 -0
- package/dist/algorithms/GraphAlgorithms.js +122 -0
- package/dist/algorithms/OutlierDetection.d.ts +49 -0
- package/dist/algorithms/OutlierDetection.d.ts.map +1 -0
- package/dist/algorithms/OutlierDetection.js +284 -0
- package/dist/algorithms/ParticleSystem.d.ts +36 -0
- package/dist/algorithms/ParticleSystem.d.ts.map +1 -0
- package/dist/algorithms/ParticleSystem.js +59 -0
- package/dist/algorithms/ParticleSystem3D.d.ts +206 -0
- package/dist/algorithms/ParticleSystem3D.d.ts.map +1 -0
- package/dist/algorithms/ParticleSystem3D.js +371 -0
- package/dist/algorithms/index.d.ts +19 -0
- package/dist/algorithms/index.d.ts.map +1 -0
- package/{src/algorithms/index.ts → dist/algorithms/index.js} +4 -2
- package/dist/compat.d.ts +24 -0
- package/dist/compat.d.ts.map +1 -0
- package/dist/compat.js +88 -0
- package/dist/components/HexGrid.d.ts +5 -0
- package/dist/components/HexGrid.d.ts.map +1 -0
- package/dist/components/HexGrid.js +39 -0
- package/dist/components/NarrationOverlay.d.ts +16 -0
- package/dist/components/NarrationOverlay.d.ts.map +1 -0
- package/dist/components/NarrationOverlay.js +132 -0
- package/{src/components/index.ts → dist/components/index.d.ts} +1 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +1 -0
- package/dist/features.d.ts +54 -0
- package/dist/features.d.ts.map +1 -0
- package/dist/features.js +74 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/{src/index.ts → dist/index.js} +0 -9
- package/dist/lib/narration.d.ts +12 -0
- package/dist/lib/narration.d.ts.map +1 -0
- package/dist/lib/narration.js +8 -0
- package/dist/lib/stats-tracker.d.ts +7 -0
- package/dist/lib/stats-tracker.d.ts.map +1 -0
- package/dist/lib/stats-tracker.js +22 -0
- package/dist/lib/theme-colors.d.ts +7 -0
- package/dist/lib/theme-colors.d.ts.map +1 -0
- package/dist/lib/theme-colors.js +10 -0
- package/dist/math/HexCoordinates.d.ts +140 -0
- package/dist/math/HexCoordinates.d.ts.map +1 -0
- package/dist/math/HexCoordinates.js +741 -0
- package/dist/math/Matrix4.d.ts +9 -0
- package/dist/math/Matrix4.d.ts.map +1 -0
- package/dist/math/Matrix4.js +19 -0
- package/dist/math/Quaternion.d.ts +11 -0
- package/dist/math/Quaternion.d.ts.map +1 -0
- package/dist/math/Quaternion.js +23 -0
- package/dist/math/SpatialIndex.d.ts +34 -0
- package/dist/math/SpatialIndex.d.ts.map +1 -0
- package/dist/math/SpatialIndex.js +75 -0
- package/dist/math/Vector3.d.ts +110 -0
- package/dist/math/Vector3.d.ts.map +1 -0
- package/dist/math/Vector3.js +426 -0
- package/dist/math/index.d.ts +11 -0
- package/dist/math/index.d.ts.map +1 -0
- package/{src/math/index.ts → dist/math/index.js} +0 -1
- package/dist/note-adapter.d.ts +44 -0
- package/dist/note-adapter.d.ts.map +1 -0
- package/dist/note-adapter.js +86 -0
- package/dist/ontology-adapter.d.ts +13 -0
- package/dist/ontology-adapter.d.ts.map +1 -0
- package/dist/ontology-adapter.js +65 -0
- package/dist/stores/index.d.ts +2 -0
- package/dist/stores/index.d.ts.map +1 -0
- package/dist/stores/uiStore.d.ts +18 -0
- package/dist/stores/uiStore.d.ts.map +1 -0
- package/dist/stores/uiStore.js +77 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +1 -0
- package/dist/types.d.ts +126 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/utils/image-utils.d.ts +13 -0
- package/dist/utils/image-utils.d.ts.map +1 -0
- package/dist/utils/image-utils.js +23 -0
- package/dist/wasm/HexGridWasmWrapper.d.ts +131 -0
- package/dist/wasm/HexGridWasmWrapper.d.ts.map +1 -0
- package/dist/wasm/HexGridWasmWrapper.js +610 -0
- package/dist/wasm/index.d.ts +7 -0
- package/dist/wasm/index.d.ts.map +1 -0
- package/{src/wasm/index.ts → dist/wasm/index.js} +0 -1
- package/dist/webgpu/WebGPUContext.d.ts +20 -0
- package/dist/webgpu/WebGPUContext.d.ts.map +1 -0
- package/dist/webgpu/WebGPUContext.js +60 -0
- package/dist/webnn/WebNNContext.d.ts +38 -0
- package/dist/webnn/WebNNContext.d.ts.map +1 -0
- package/dist/webnn/WebNNContext.js +66 -0
- package/dist/workers/hexgrid-math.d.ts +79 -0
- package/dist/workers/hexgrid-math.d.ts.map +1 -0
- package/dist/workers/hexgrid-math.js +136 -0
- package/dist/workers/hexgrid-worker.worker.d.ts +35 -0
- package/dist/workers/hexgrid-worker.worker.d.ts.map +1 -0
- package/dist/workers/hexgrid-worker.worker.js +2014 -0
- package/package.json +24 -7
- package/.eslintrc.json +0 -28
- package/build_log.txt +0 -500
- package/build_src_log.txt +0 -8
- package/examples/basic-usage.tsx +0 -52
- package/public/hexgrid-worker.js +0 -2475
- package/rust/Cargo.toml +0 -41
- package/rust/src/lib.rs +0 -740
- package/rust/src/math.rs +0 -574
- package/rust/src/spatial.rs +0 -245
- package/rust/src/statistics.rs +0 -496
- package/site/.eslintrc.json +0 -3
- package/site/DEPLOYMENT.md +0 -196
- package/site/INDEX.md +0 -127
- package/site/QUICK_START.md +0 -86
- package/site/README.md +0 -85
- package/site/SITE_SUMMARY.md +0 -180
- package/site/next.config.js +0 -12
- package/site/package.json +0 -26
- package/site/src/app/docs/page.tsx +0 -272
- package/site/src/app/examples/page.tsx +0 -151
- package/site/src/app/globals.css +0 -160
- package/site/src/app/layout.tsx +0 -39
- package/site/src/app/page.tsx +0 -235
- package/site/tsconfig.json +0 -29
- package/site/vercel.json +0 -6
- package/src/HexGridEnhanced.ts +0 -16
- package/src/Snapshot.ts +0 -1607
- package/src/adapters/DashAdapter.ts +0 -57
- package/src/adapters.ts +0 -63
- package/src/algorithms/AdvancedStatistics.ts +0 -362
- package/src/algorithms/BayesianStatistics.ts +0 -348
- package/src/algorithms/FlowField.ts +0 -150
- package/src/algorithms/FlowField3D.ts +0 -573
- package/src/algorithms/FluidEngineFactory.ts +0 -44
- package/src/algorithms/FluidSimulation.ts +0 -115
- package/src/algorithms/FluidSimulation3D.ts +0 -664
- package/src/algorithms/FluidSimulation3DGPU.ts +0 -408
- package/src/algorithms/FluidSimulationWebNN.ts +0 -141
- package/src/algorithms/GraphAlgorithms.ts +0 -191
- package/src/algorithms/OutlierDetection.ts +0 -425
- package/src/algorithms/ParticleSystem.ts +0 -95
- package/src/algorithms/ParticleSystem3D.ts +0 -567
- package/src/compat.ts +0 -96
- package/src/components/HexGrid.tsx +0 -61
- package/src/components/NarrationOverlay.tsx +0 -309
- package/src/features.ts +0 -125
- package/src/lib/narration.ts +0 -17
- package/src/lib/stats-tracker.ts +0 -25
- package/src/lib/theme-colors.ts +0 -12
- package/src/math/HexCoordinates.ts +0 -863
- package/src/math/Matrix4.ts +0 -25
- package/src/math/Quaternion.ts +0 -37
- package/src/math/SpatialIndex.ts +0 -114
- package/src/math/Vector3.ts +0 -540
- package/src/note-adapter.ts +0 -132
- package/src/ontology-adapter.ts +0 -84
- package/src/stores/uiStore.ts +0 -85
- package/src/types/index.ts +0 -3
- package/src/types/shared-utils.d.ts +0 -10
- package/src/types/wgsl.d.ts +0 -4
- package/src/types.ts +0 -164
- package/src/utils/image-utils.ts +0 -28
- package/src/wasm/HexGridWasmWrapper.ts +0 -801
- package/src/webgpu/WebGPUContext.ts +0 -71
- package/src/webgpu/shaders/fluid_sim.wgsl +0 -140
- package/src/webnn/WebNNContext.ts +0 -99
- package/src/workers/hexgrid-math.ts +0 -182
- package/src/workers/hexgrid-worker.worker.ts +0 -2781
- package/tsconfig.json +0 -26
- /package/{src/stores/index.ts → dist/stores/index.js} +0 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Vector3 } from './Vector3';
|
|
2
|
+
export declare class Matrix4 {
|
|
3
|
+
private elements;
|
|
4
|
+
constructor(elements?: number[]);
|
|
5
|
+
static identity(): Matrix4;
|
|
6
|
+
static translation(x: number, y: number, z: number): Matrix4;
|
|
7
|
+
transformPoint(point: Vector3): Vector3;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=Matrix4.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Matrix4.d.ts","sourceRoot":"","sources":["../../src/math/Matrix4.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAW;gBAEf,QAAQ,CAAC,EAAE,MAAM,EAAE;IAI/B,MAAM,CAAC,QAAQ,IAAI,OAAO;IAI1B,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAI5D,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;CAOxC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Vector3 } from './Vector3';
|
|
2
|
+
export class Matrix4 {
|
|
3
|
+
constructor(elements) {
|
|
4
|
+
this.elements = elements ?? Matrix4.identity().elements;
|
|
5
|
+
}
|
|
6
|
+
static identity() {
|
|
7
|
+
return new Matrix4([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
|
|
8
|
+
}
|
|
9
|
+
static translation(x, y, z) {
|
|
10
|
+
return new Matrix4([1, 0, 0, x, 0, 1, 0, y, 0, 0, 1, z, 0, 0, 0, 1]);
|
|
11
|
+
}
|
|
12
|
+
transformPoint(point) {
|
|
13
|
+
const e = this.elements;
|
|
14
|
+
const x = point.x * e[0] + point.y * e[1] + point.z * e[2] + e[3];
|
|
15
|
+
const y = point.x * e[4] + point.y * e[5] + point.z * e[6] + e[7];
|
|
16
|
+
const z = point.x * e[8] + point.y * e[9] + point.z * e[10] + e[11];
|
|
17
|
+
return new Vector3(x, y, z);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Vector3 } from './Vector3';
|
|
2
|
+
export declare class Quaternion {
|
|
3
|
+
x: number;
|
|
4
|
+
y: number;
|
|
5
|
+
z: number;
|
|
6
|
+
w: number;
|
|
7
|
+
constructor(x?: number, y?: number, z?: number, w?: number);
|
|
8
|
+
static identity(): Quaternion;
|
|
9
|
+
rotateVector(vector: Vector3): Vector3;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=Quaternion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Quaternion.d.ts","sourceRoot":"","sources":["../../src/math/Quaternion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,UAAU;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;gBAEE,CAAC,GAAE,MAAU,EAAE,CAAC,GAAE,MAAU,EAAE,CAAC,GAAE,MAAU,EAAE,CAAC,GAAE,MAAU;IAOtE,MAAM,CAAC,QAAQ,IAAI,UAAU;IAI7B,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;CAiBvC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Vector3 } from './Vector3';
|
|
2
|
+
export class Quaternion {
|
|
3
|
+
constructor(x = 0, y = 0, z = 0, w = 1) {
|
|
4
|
+
this.x = x;
|
|
5
|
+
this.y = y;
|
|
6
|
+
this.z = z;
|
|
7
|
+
this.w = w;
|
|
8
|
+
}
|
|
9
|
+
static identity() {
|
|
10
|
+
return new Quaternion(0, 0, 0, 1);
|
|
11
|
+
}
|
|
12
|
+
rotateVector(vector) {
|
|
13
|
+
const qx = this.x;
|
|
14
|
+
const qy = this.y;
|
|
15
|
+
const qz = this.z;
|
|
16
|
+
const qw = this.w;
|
|
17
|
+
const ix = qw * vector.x + qy * vector.z - qz * vector.y;
|
|
18
|
+
const iy = qw * vector.y + qz * vector.x - qx * vector.z;
|
|
19
|
+
const iz = qw * vector.z + qx * vector.y - qy * vector.x;
|
|
20
|
+
const iw = -qx * vector.x - qy * vector.y - qz * vector.z;
|
|
21
|
+
return new Vector3(ix * qw + iw * -qx + iy * -qz - iz * -qy, iy * qw + iw * -qy + iz * -qx - ix * -qz, iz * qw + iw * -qz + ix * -qy - iy * -qx);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Vector2 } from './Vector3';
|
|
2
|
+
type Point = [number, number];
|
|
3
|
+
export interface KDTreeResult<T> {
|
|
4
|
+
data: T;
|
|
5
|
+
distance: number;
|
|
6
|
+
}
|
|
7
|
+
export declare class KDTree<T> {
|
|
8
|
+
private points;
|
|
9
|
+
private data;
|
|
10
|
+
private constructor();
|
|
11
|
+
static build<T>(points: Point[], data: T[], _dimensions: number): KDTree<T>;
|
|
12
|
+
kNearest(target: Point, k: number): Array<KDTreeResult<T>>;
|
|
13
|
+
rangeQuery(target: Point, radius: number): Array<KDTreeResult<T>>;
|
|
14
|
+
private static distance;
|
|
15
|
+
}
|
|
16
|
+
export interface SpatialHashEntry<T> {
|
|
17
|
+
data: T;
|
|
18
|
+
position: Point;
|
|
19
|
+
}
|
|
20
|
+
export declare class SpatialHashGrid<T> {
|
|
21
|
+
private cellSize;
|
|
22
|
+
private grid;
|
|
23
|
+
constructor(cellSize: number, _dimensions: number);
|
|
24
|
+
insert(position: Point, data: T): void;
|
|
25
|
+
query(position: Point, radius: number): Array<SpatialHashEntry<T>>;
|
|
26
|
+
private keyFor;
|
|
27
|
+
private nearbyKeys;
|
|
28
|
+
}
|
|
29
|
+
export interface SpatialNode {
|
|
30
|
+
position: Vector2;
|
|
31
|
+
data: unknown;
|
|
32
|
+
}
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=SpatialIndex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpatialIndex.d.ts","sourceRoot":"","sources":["../../src/math/SpatialIndex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,KAAK,KAAK,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9B,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,MAAM,CAAC,CAAC;IACnB,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,IAAI,CAAM;IAElB,OAAO;IAKP,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;IAI3E,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAS1D,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IASjE,OAAO,CAAC,MAAM,CAAC,QAAQ;CAKxB;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,EAAE,KAAK,CAAC;CACjB;AAED,qBAAa,eAAe,CAAC,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,IAAI,CAAiD;gBAEjD,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAIjD,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI;IAOtC,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAqBlE,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,UAAU;CAcnB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;CACf"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
export class KDTree {
|
|
2
|
+
constructor(points, data) {
|
|
3
|
+
this.points = points;
|
|
4
|
+
this.data = data;
|
|
5
|
+
}
|
|
6
|
+
static build(points, data, _dimensions) {
|
|
7
|
+
return new KDTree(points, data);
|
|
8
|
+
}
|
|
9
|
+
kNearest(target, k) {
|
|
10
|
+
const results = this.points.map((point, index) => ({
|
|
11
|
+
data: this.data[index],
|
|
12
|
+
distance: KDTree.distance(point, target),
|
|
13
|
+
}));
|
|
14
|
+
return results.sort((a, b) => a.distance - b.distance).slice(0, k);
|
|
15
|
+
}
|
|
16
|
+
rangeQuery(target, radius) {
|
|
17
|
+
return this.points
|
|
18
|
+
.map((point, index) => ({
|
|
19
|
+
data: this.data[index],
|
|
20
|
+
distance: KDTree.distance(point, target),
|
|
21
|
+
}))
|
|
22
|
+
.filter((result) => result.distance <= radius);
|
|
23
|
+
}
|
|
24
|
+
static distance(a, b) {
|
|
25
|
+
const dx = a[0] - b[0];
|
|
26
|
+
const dy = a[1] - b[1];
|
|
27
|
+
return Math.sqrt(dx * dx + dy * dy);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export class SpatialHashGrid {
|
|
31
|
+
constructor(cellSize, _dimensions) {
|
|
32
|
+
this.grid = new Map();
|
|
33
|
+
this.cellSize = cellSize;
|
|
34
|
+
}
|
|
35
|
+
insert(position, data) {
|
|
36
|
+
const key = this.keyFor(position);
|
|
37
|
+
const bucket = this.grid.get(key) ?? [];
|
|
38
|
+
bucket.push({ data, position });
|
|
39
|
+
this.grid.set(key, bucket);
|
|
40
|
+
}
|
|
41
|
+
query(position, radius) {
|
|
42
|
+
const cellsToCheck = this.nearbyKeys(position, radius);
|
|
43
|
+
const results = [];
|
|
44
|
+
for (const key of cellsToCheck) {
|
|
45
|
+
const bucket = this.grid.get(key);
|
|
46
|
+
if (!bucket)
|
|
47
|
+
continue;
|
|
48
|
+
for (const entry of bucket) {
|
|
49
|
+
const distance = Math.hypot(entry.position[0] - position[0], entry.position[1] - position[1]);
|
|
50
|
+
if (distance <= radius) {
|
|
51
|
+
results.push(entry);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return results;
|
|
56
|
+
}
|
|
57
|
+
keyFor(position) {
|
|
58
|
+
const x = Math.floor(position[0] / this.cellSize);
|
|
59
|
+
const y = Math.floor(position[1] / this.cellSize);
|
|
60
|
+
return `${x},${y}`;
|
|
61
|
+
}
|
|
62
|
+
nearbyKeys(position, radius) {
|
|
63
|
+
const minX = Math.floor((position[0] - radius) / this.cellSize);
|
|
64
|
+
const maxX = Math.floor((position[0] + radius) / this.cellSize);
|
|
65
|
+
const minY = Math.floor((position[1] - radius) / this.cellSize);
|
|
66
|
+
const maxY = Math.floor((position[1] + radius) / this.cellSize);
|
|
67
|
+
const keys = [];
|
|
68
|
+
for (let x = minX; x <= maxX; x++) {
|
|
69
|
+
for (let y = minY; y <= maxY; y++) {
|
|
70
|
+
keys.push(`${x},${y}`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return keys;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
export declare class Vector2 {
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
constructor(x?: number, y?: number);
|
|
5
|
+
static zero(): Vector2;
|
|
6
|
+
static one(): Vector2;
|
|
7
|
+
static fromAngle(angle: number, length?: number): Vector2;
|
|
8
|
+
clone(): Vector2;
|
|
9
|
+
add(other: Vector2): Vector2;
|
|
10
|
+
subtract(other: Vector2): Vector2;
|
|
11
|
+
scale(factor: number): Vector2;
|
|
12
|
+
dot(other: Vector2): number;
|
|
13
|
+
cross(other: Vector2): number;
|
|
14
|
+
magnitude(): number;
|
|
15
|
+
magnitudeSquared(): number;
|
|
16
|
+
normalize(): Vector2;
|
|
17
|
+
distanceTo(other: Vector2): number;
|
|
18
|
+
angle(): number;
|
|
19
|
+
angleTo(other: Vector2): number;
|
|
20
|
+
rotate(angle: number): Vector2;
|
|
21
|
+
perpendicular(): Vector2;
|
|
22
|
+
lerp(other: Vector2, t: number): Vector2;
|
|
23
|
+
toArray(): [number, number];
|
|
24
|
+
toVector3(z?: number): Vector3;
|
|
25
|
+
equals(other: Vector2, epsilon?: number): boolean;
|
|
26
|
+
toString(): string;
|
|
27
|
+
}
|
|
28
|
+
export declare class Vector3 {
|
|
29
|
+
x: number;
|
|
30
|
+
y: number;
|
|
31
|
+
z: number;
|
|
32
|
+
constructor(x?: number, y?: number, z?: number);
|
|
33
|
+
static zero(): Vector3;
|
|
34
|
+
static one(): Vector3;
|
|
35
|
+
static up(): Vector3;
|
|
36
|
+
static down(): Vector3;
|
|
37
|
+
static right(): Vector3;
|
|
38
|
+
static left(): Vector3;
|
|
39
|
+
static forward(): Vector3;
|
|
40
|
+
static back(): Vector3;
|
|
41
|
+
static fromArray(arr: number[]): Vector3;
|
|
42
|
+
static fromSpherical(phi: number, theta: number, radius: number): Vector3;
|
|
43
|
+
static fromLatLng(latitude: number, longitude: number, radius?: number): Vector3;
|
|
44
|
+
static random(): Vector3;
|
|
45
|
+
static randomInSphere(radius: number): Vector3;
|
|
46
|
+
static catmullRom(p0: Vector3, p1: Vector3, p2: Vector3, p3: Vector3, t: number): Vector3;
|
|
47
|
+
static bezier(points: Vector3[], t: number): Vector3;
|
|
48
|
+
clone(): Vector3;
|
|
49
|
+
add(other: Vector3): Vector3;
|
|
50
|
+
subtract(other: Vector3): Vector3;
|
|
51
|
+
scale(factor: number): Vector3;
|
|
52
|
+
multiply(other: Vector3): Vector3;
|
|
53
|
+
divide(other: Vector3): Vector3;
|
|
54
|
+
negate(): Vector3;
|
|
55
|
+
set(x: number, y: number, z: number): this;
|
|
56
|
+
copy(other: Vector3): this;
|
|
57
|
+
addInPlace(other: Vector3): this;
|
|
58
|
+
subtractInPlace(other: Vector3): this;
|
|
59
|
+
scaleInPlace(factor: number): this;
|
|
60
|
+
normalizeInPlace(): this;
|
|
61
|
+
dot(other: Vector3): number;
|
|
62
|
+
cross(other: Vector3): Vector3;
|
|
63
|
+
tripleProduct(b: Vector3, c: Vector3): number;
|
|
64
|
+
length(): number;
|
|
65
|
+
magnitude(): number;
|
|
66
|
+
magnitudeSquared(): number;
|
|
67
|
+
normalize(): Vector3;
|
|
68
|
+
distanceTo(other: Vector3): number;
|
|
69
|
+
distanceSquaredTo(other: Vector3): number;
|
|
70
|
+
lerp(other: Vector3, t: number): Vector3;
|
|
71
|
+
slerp(other: Vector3, t: number): Vector3;
|
|
72
|
+
nlerp(other: Vector3, t: number): Vector3;
|
|
73
|
+
hermite(t1: Vector3, p2: Vector3, t2: Vector3, t: number): Vector3;
|
|
74
|
+
toArray(): [number, number, number];
|
|
75
|
+
toFloat32Array(): Float32Array;
|
|
76
|
+
equals(other: Vector3, epsilon?: number): boolean;
|
|
77
|
+
isZero(): boolean;
|
|
78
|
+
abs(): Vector3;
|
|
79
|
+
floor(): Vector3;
|
|
80
|
+
ceil(): Vector3;
|
|
81
|
+
round(): Vector3;
|
|
82
|
+
min(other: Vector3): Vector3;
|
|
83
|
+
max(other: Vector3): Vector3;
|
|
84
|
+
clamp(min: Vector3, max: Vector3): Vector3;
|
|
85
|
+
clampMagnitude(max: number): Vector3;
|
|
86
|
+
setMagnitude(len: number): Vector3;
|
|
87
|
+
reflect(normal: Vector3): Vector3;
|
|
88
|
+
angleTo(other: Vector3): number;
|
|
89
|
+
signedAngleTo(other: Vector3, axis: Vector3): number;
|
|
90
|
+
toSpherical(): {
|
|
91
|
+
radius: number;
|
|
92
|
+
theta: number;
|
|
93
|
+
phi: number;
|
|
94
|
+
};
|
|
95
|
+
toLatLng(): {
|
|
96
|
+
lat: number;
|
|
97
|
+
lng: number;
|
|
98
|
+
};
|
|
99
|
+
greatCircleDistanceTo(other: Vector3): number;
|
|
100
|
+
greatCircleLerp(other: Vector3, t: number): Vector3;
|
|
101
|
+
rotateAround(axis: Vector3, angle: number): Vector3;
|
|
102
|
+
rotateX(angle: number): Vector3;
|
|
103
|
+
rotateY(angle: number): Vector3;
|
|
104
|
+
rotateZ(angle: number): Vector3;
|
|
105
|
+
projectOnto(other: Vector3): Vector3;
|
|
106
|
+
projectOntoPlane(normal: Vector3): Vector3;
|
|
107
|
+
refract(normal: Vector3, eta: number): Vector3;
|
|
108
|
+
toString(): string;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=Vector3.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Vector3.d.ts","sourceRoot":"","sources":["../../src/math/Vector3.ts"],"names":[],"mappings":"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"}
|