@buley/hexgrid-3d 3.1.0 → 3.2.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.
Files changed (208) hide show
  1. package/dist/HexGridEnhanced.d.ts +15 -0
  2. package/dist/HexGridEnhanced.d.ts.map +1 -0
  3. package/dist/HexGridEnhanced.js +1 -0
  4. package/dist/Snapshot.d.ts +594 -0
  5. package/dist/Snapshot.d.ts.map +1 -0
  6. package/dist/Snapshot.js +757 -0
  7. package/dist/adapters/DashAdapter.d.ts +18 -0
  8. package/dist/adapters/DashAdapter.d.ts.map +1 -0
  9. package/dist/adapters/DashAdapter.js +42 -0
  10. package/dist/adapters.d.ts +53 -0
  11. package/dist/adapters.d.ts.map +1 -0
  12. package/dist/adapters.js +14 -0
  13. package/dist/algorithms/AdvancedStatistics.d.ts +52 -0
  14. package/dist/algorithms/AdvancedStatistics.d.ts.map +1 -0
  15. package/dist/algorithms/AdvancedStatistics.js +307 -0
  16. package/dist/algorithms/BayesianStatistics.d.ts +86 -0
  17. package/dist/algorithms/BayesianStatistics.d.ts.map +1 -0
  18. package/dist/algorithms/BayesianStatistics.js +263 -0
  19. package/dist/algorithms/FlowField.d.ts +55 -0
  20. package/dist/algorithms/FlowField.d.ts.map +1 -0
  21. package/dist/algorithms/FlowField.js +80 -0
  22. package/dist/algorithms/FlowField3D.d.ts +166 -0
  23. package/dist/algorithms/FlowField3D.d.ts.map +1 -0
  24. package/dist/algorithms/FlowField3D.js +327 -0
  25. package/dist/algorithms/FluidEngineFactory.d.ts +15 -0
  26. package/dist/algorithms/FluidEngineFactory.d.ts.map +1 -0
  27. package/dist/algorithms/FluidEngineFactory.js +41 -0
  28. package/dist/algorithms/FluidSimulation.d.ts +41 -0
  29. package/dist/algorithms/FluidSimulation.d.ts.map +1 -0
  30. package/dist/algorithms/FluidSimulation.js +74 -0
  31. package/dist/algorithms/FluidSimulation3D.d.ts +137 -0
  32. package/dist/algorithms/FluidSimulation3D.d.ts.map +1 -0
  33. package/dist/algorithms/FluidSimulation3D.js +464 -0
  34. package/dist/algorithms/FluidSimulation3DGPU.d.ts +41 -0
  35. package/dist/algorithms/FluidSimulation3DGPU.d.ts.map +1 -0
  36. package/dist/algorithms/FluidSimulation3DGPU.js +328 -0
  37. package/dist/algorithms/FluidSimulationWebNN.d.ts +56 -0
  38. package/dist/algorithms/FluidSimulationWebNN.d.ts.map +1 -0
  39. package/dist/algorithms/FluidSimulationWebNN.js +84 -0
  40. package/dist/algorithms/GraphAlgorithms.d.ts +48 -0
  41. package/dist/algorithms/GraphAlgorithms.d.ts.map +1 -0
  42. package/dist/algorithms/GraphAlgorithms.js +122 -0
  43. package/dist/algorithms/OutlierDetection.d.ts +49 -0
  44. package/dist/algorithms/OutlierDetection.d.ts.map +1 -0
  45. package/dist/algorithms/OutlierDetection.js +284 -0
  46. package/dist/algorithms/ParticleSystem.d.ts +36 -0
  47. package/dist/algorithms/ParticleSystem.d.ts.map +1 -0
  48. package/dist/algorithms/ParticleSystem.js +59 -0
  49. package/dist/algorithms/ParticleSystem3D.d.ts +206 -0
  50. package/dist/algorithms/ParticleSystem3D.d.ts.map +1 -0
  51. package/dist/algorithms/ParticleSystem3D.js +371 -0
  52. package/dist/algorithms/index.d.ts +16 -0
  53. package/dist/algorithms/index.d.ts.map +1 -0
  54. package/{src/algorithms/index.ts → dist/algorithms/index.js} +0 -2
  55. package/dist/compat.d.ts +24 -0
  56. package/dist/compat.d.ts.map +1 -0
  57. package/dist/compat.js +88 -0
  58. package/dist/components/HexGrid.d.ts +5 -0
  59. package/dist/components/HexGrid.d.ts.map +1 -0
  60. package/dist/components/HexGrid.js +39 -0
  61. package/dist/components/NarrationOverlay.d.ts +16 -0
  62. package/dist/components/NarrationOverlay.d.ts.map +1 -0
  63. package/dist/components/NarrationOverlay.js +132 -0
  64. package/{src/components/index.ts → dist/components/index.d.ts} +1 -0
  65. package/dist/components/index.d.ts.map +1 -0
  66. package/dist/components/index.js +1 -0
  67. package/dist/features.d.ts +54 -0
  68. package/dist/features.d.ts.map +1 -0
  69. package/dist/features.js +74 -0
  70. package/dist/index.d.ts +12 -0
  71. package/dist/index.d.ts.map +1 -0
  72. package/{src/index.ts → dist/index.js} +0 -9
  73. package/dist/lib/narration.d.ts +12 -0
  74. package/dist/lib/narration.d.ts.map +1 -0
  75. package/dist/lib/narration.js +8 -0
  76. package/dist/lib/stats-tracker.d.ts +7 -0
  77. package/dist/lib/stats-tracker.d.ts.map +1 -0
  78. package/dist/lib/stats-tracker.js +22 -0
  79. package/dist/lib/theme-colors.d.ts +7 -0
  80. package/dist/lib/theme-colors.d.ts.map +1 -0
  81. package/dist/lib/theme-colors.js +10 -0
  82. package/dist/math/HexCoordinates.d.ts +140 -0
  83. package/dist/math/HexCoordinates.d.ts.map +1 -0
  84. package/dist/math/HexCoordinates.js +741 -0
  85. package/dist/math/Matrix4.d.ts +9 -0
  86. package/dist/math/Matrix4.d.ts.map +1 -0
  87. package/dist/math/Matrix4.js +19 -0
  88. package/dist/math/Quaternion.d.ts +11 -0
  89. package/dist/math/Quaternion.d.ts.map +1 -0
  90. package/dist/math/Quaternion.js +23 -0
  91. package/dist/math/SpatialIndex.d.ts +34 -0
  92. package/dist/math/SpatialIndex.d.ts.map +1 -0
  93. package/dist/math/SpatialIndex.js +75 -0
  94. package/dist/math/Vector3.d.ts +110 -0
  95. package/dist/math/Vector3.d.ts.map +1 -0
  96. package/dist/math/Vector3.js +426 -0
  97. package/dist/math/index.d.ts +11 -0
  98. package/dist/math/index.d.ts.map +1 -0
  99. package/{src/math/index.ts → dist/math/index.js} +0 -1
  100. package/dist/note-adapter.d.ts +44 -0
  101. package/dist/note-adapter.d.ts.map +1 -0
  102. package/dist/note-adapter.js +86 -0
  103. package/dist/ontology-adapter.d.ts +13 -0
  104. package/dist/ontology-adapter.d.ts.map +1 -0
  105. package/dist/ontology-adapter.js +65 -0
  106. package/dist/stores/index.d.ts +2 -0
  107. package/dist/stores/index.d.ts.map +1 -0
  108. package/dist/stores/uiStore.d.ts +18 -0
  109. package/dist/stores/uiStore.d.ts.map +1 -0
  110. package/dist/stores/uiStore.js +77 -0
  111. package/dist/types/index.d.ts +4 -0
  112. package/dist/types/index.d.ts.map +1 -0
  113. package/dist/types/index.js +1 -0
  114. package/dist/types.d.ts +126 -0
  115. package/dist/types.d.ts.map +1 -0
  116. package/dist/types.js +4 -0
  117. package/dist/utils/image-utils.d.ts +13 -0
  118. package/dist/utils/image-utils.d.ts.map +1 -0
  119. package/dist/utils/image-utils.js +23 -0
  120. package/dist/wasm/HexGridWasmWrapper.d.ts +131 -0
  121. package/dist/wasm/HexGridWasmWrapper.d.ts.map +1 -0
  122. package/dist/wasm/HexGridWasmWrapper.js +610 -0
  123. package/dist/wasm/index.d.ts +7 -0
  124. package/dist/wasm/index.d.ts.map +1 -0
  125. package/{src/wasm/index.ts → dist/wasm/index.js} +0 -1
  126. package/dist/webgpu/WebGPUContext.d.ts +20 -0
  127. package/dist/webgpu/WebGPUContext.d.ts.map +1 -0
  128. package/dist/webgpu/WebGPUContext.js +60 -0
  129. package/dist/webnn/WebNNContext.d.ts +38 -0
  130. package/dist/webnn/WebNNContext.d.ts.map +1 -0
  131. package/dist/webnn/WebNNContext.js +66 -0
  132. package/dist/workers/hexgrid-math.d.ts +79 -0
  133. package/dist/workers/hexgrid-math.d.ts.map +1 -0
  134. package/dist/workers/hexgrid-math.js +136 -0
  135. package/dist/workers/hexgrid-worker.worker.d.ts +35 -0
  136. package/dist/workers/hexgrid-worker.worker.d.ts.map +1 -0
  137. package/dist/workers/hexgrid-worker.worker.js +2014 -0
  138. package/package.json +20 -7
  139. package/.eslintrc.json +0 -28
  140. package/build_log.txt +0 -500
  141. package/build_src_log.txt +0 -8
  142. package/examples/basic-usage.tsx +0 -52
  143. package/public/hexgrid-worker.js +0 -2475
  144. package/rust/Cargo.toml +0 -41
  145. package/rust/src/lib.rs +0 -740
  146. package/rust/src/math.rs +0 -574
  147. package/rust/src/spatial.rs +0 -245
  148. package/rust/src/statistics.rs +0 -496
  149. package/site/.eslintrc.json +0 -3
  150. package/site/DEPLOYMENT.md +0 -196
  151. package/site/INDEX.md +0 -127
  152. package/site/QUICK_START.md +0 -86
  153. package/site/README.md +0 -85
  154. package/site/SITE_SUMMARY.md +0 -180
  155. package/site/next.config.js +0 -12
  156. package/site/package.json +0 -26
  157. package/site/src/app/docs/page.tsx +0 -272
  158. package/site/src/app/examples/page.tsx +0 -151
  159. package/site/src/app/globals.css +0 -160
  160. package/site/src/app/layout.tsx +0 -39
  161. package/site/src/app/page.tsx +0 -235
  162. package/site/tsconfig.json +0 -29
  163. package/site/vercel.json +0 -6
  164. package/src/HexGridEnhanced.ts +0 -16
  165. package/src/Snapshot.ts +0 -1607
  166. package/src/adapters/DashAdapter.ts +0 -57
  167. package/src/adapters.ts +0 -63
  168. package/src/algorithms/AdvancedStatistics.ts +0 -362
  169. package/src/algorithms/BayesianStatistics.ts +0 -348
  170. package/src/algorithms/FlowField.ts +0 -150
  171. package/src/algorithms/FlowField3D.ts +0 -573
  172. package/src/algorithms/FluidEngineFactory.ts +0 -44
  173. package/src/algorithms/FluidSimulation.ts +0 -115
  174. package/src/algorithms/FluidSimulation3D.ts +0 -664
  175. package/src/algorithms/FluidSimulation3DGPU.ts +0 -408
  176. package/src/algorithms/FluidSimulationWebNN.ts +0 -141
  177. package/src/algorithms/GraphAlgorithms.ts +0 -191
  178. package/src/algorithms/OutlierDetection.ts +0 -425
  179. package/src/algorithms/ParticleSystem.ts +0 -95
  180. package/src/algorithms/ParticleSystem3D.ts +0 -567
  181. package/src/compat.ts +0 -96
  182. package/src/components/HexGrid.tsx +0 -61
  183. package/src/components/NarrationOverlay.tsx +0 -309
  184. package/src/features.ts +0 -125
  185. package/src/lib/narration.ts +0 -17
  186. package/src/lib/stats-tracker.ts +0 -25
  187. package/src/lib/theme-colors.ts +0 -12
  188. package/src/math/HexCoordinates.ts +0 -863
  189. package/src/math/Matrix4.ts +0 -25
  190. package/src/math/Quaternion.ts +0 -37
  191. package/src/math/SpatialIndex.ts +0 -114
  192. package/src/math/Vector3.ts +0 -540
  193. package/src/note-adapter.ts +0 -132
  194. package/src/ontology-adapter.ts +0 -84
  195. package/src/stores/uiStore.ts +0 -85
  196. package/src/types/index.ts +0 -3
  197. package/src/types/shared-utils.d.ts +0 -10
  198. package/src/types/wgsl.d.ts +0 -4
  199. package/src/types.ts +0 -164
  200. package/src/utils/image-utils.ts +0 -28
  201. package/src/wasm/HexGridWasmWrapper.ts +0 -801
  202. package/src/webgpu/WebGPUContext.ts +0 -71
  203. package/src/webgpu/shaders/fluid_sim.wgsl +0 -140
  204. package/src/webnn/WebNNContext.ts +0 -99
  205. package/src/workers/hexgrid-math.ts +0 -182
  206. package/src/workers/hexgrid-worker.worker.ts +0 -2781
  207. package/tsconfig.json +0 -26
  208. /package/{src/stores/index.ts → dist/stores/index.js} +0 -0
@@ -1,245 +0,0 @@
1
- //! Spatial indexing structures for fast queries
2
-
3
- use std::collections::HashMap;
4
-
5
- /// KD-Tree for 2D points
6
- pub struct KDTree {
7
- nodes: Vec<KDNode>,
8
- dimension: usize,
9
- }
10
-
11
- struct KDNode {
12
- point: [f32; 2],
13
- data_index: usize,
14
- left: Option<usize>,
15
- right: Option<usize>,
16
- }
17
-
18
- impl KDTree {
19
- pub fn new() -> Self {
20
- Self {
21
- nodes: Vec::new(),
22
- dimension: 2,
23
- }
24
- }
25
-
26
- pub fn build(points: &[(f32, f32, usize)]) -> Self {
27
- let mut tree = Self::new();
28
- if points.is_empty() {
29
- return tree;
30
- }
31
-
32
- let mut indices: Vec<usize> = (0..points.len()).collect();
33
- tree.build_recursive(&mut indices, points, 0);
34
- tree
35
- }
36
-
37
- fn build_recursive(
38
- &mut self,
39
- indices: &mut [usize],
40
- points: &[(f32, f32, usize)],
41
- depth: usize,
42
- ) -> Option<usize> {
43
- if indices.is_empty() {
44
- return None;
45
- }
46
-
47
- let axis = depth % self.dimension;
48
-
49
- // Sort by axis
50
- indices.sort_by(|&a, &b| {
51
- let va = if axis == 0 { points[a].0 } else { points[a].1 };
52
- let vb = if axis == 0 { points[b].0 } else { points[b].1 };
53
- va.partial_cmp(&vb).unwrap_or(std::cmp::Ordering::Equal)
54
- });
55
-
56
- let mid = indices.len() / 2;
57
- let point_idx = indices[mid];
58
- let point = points[point_idx];
59
-
60
- let node_idx = self.nodes.len();
61
- self.nodes.push(KDNode {
62
- point: [point.0, point.1],
63
- data_index: point.2,
64
- left: None,
65
- right: None,
66
- });
67
-
68
- let (left, right) = indices.split_at_mut(mid);
69
- let right = &mut right[1..]; // Skip median
70
-
71
- let left_child = self.build_recursive(left, points, depth + 1);
72
- let right_child = self.build_recursive(right, points, depth + 1);
73
-
74
- self.nodes[node_idx].left = left_child;
75
- self.nodes[node_idx].right = right_child;
76
-
77
- Some(node_idx)
78
- }
79
-
80
- /// Find k nearest neighbors
81
- pub fn k_nearest(&self, query: (f32, f32), k: usize) -> Vec<(usize, f32)> {
82
- if self.nodes.is_empty() {
83
- return Vec::new();
84
- }
85
-
86
- let mut best = Vec::with_capacity(k);
87
- self.k_nearest_recursive(0, [query.0, query.1], k, 0, &mut best);
88
- best.sort_by(|a, b| a.1.partial_cmp(&b.1).unwrap_or(std::cmp::Ordering::Equal));
89
- best
90
- }
91
-
92
- fn k_nearest_recursive(
93
- &self,
94
- node_idx: usize,
95
- query: [f32; 2],
96
- k: usize,
97
- depth: usize,
98
- best: &mut Vec<(usize, f32)>,
99
- ) {
100
- let node = &self.nodes[node_idx];
101
- let axis = depth % self.dimension;
102
-
103
- let dx = query[0] - node.point[0];
104
- let dy = query[1] - node.point[1];
105
- let dist_sq = dx * dx + dy * dy;
106
- let dist = dist_sq.sqrt();
107
-
108
- // Check if this node is a candidate
109
- if best.len() < k {
110
- best.push((node.data_index, dist));
111
- } else if dist < best.last().unwrap().1 {
112
- best.pop();
113
- best.push((node.data_index, dist));
114
- best.sort_by(|a, b| a.1.partial_cmp(&b.1).unwrap_or(std::cmp::Ordering::Equal));
115
- }
116
-
117
- // Determine which side to search first
118
- let diff = query[axis] - node.point[axis];
119
- let (first, second) = if diff < 0.0 {
120
- (node.left, node.right)
121
- } else {
122
- (node.right, node.left)
123
- };
124
-
125
- // Search first side
126
- if let Some(child) = first {
127
- self.k_nearest_recursive(child, query, k, depth + 1, best);
128
- }
129
-
130
- // Check if we need to search the other side
131
- let worst_dist = if best.len() < k {
132
- f32::MAX
133
- } else {
134
- best.last().unwrap().1
135
- };
136
-
137
- if diff.abs() < worst_dist {
138
- if let Some(child) = second {
139
- self.k_nearest_recursive(child, query, k, depth + 1, best);
140
- }
141
- }
142
- }
143
-
144
- /// Range query - find all points within radius
145
- pub fn range_query(&self, center: (f32, f32), radius: f32) -> Vec<usize> {
146
- if self.nodes.is_empty() {
147
- return Vec::new();
148
- }
149
-
150
- let mut results = Vec::new();
151
- self.range_query_recursive(0, [center.0, center.1], radius, 0, &mut results);
152
- results
153
- }
154
-
155
- fn range_query_recursive(
156
- &self,
157
- node_idx: usize,
158
- center: [f32; 2],
159
- radius: f32,
160
- depth: usize,
161
- results: &mut Vec<usize>,
162
- ) {
163
- let node = &self.nodes[node_idx];
164
- let axis = depth % self.dimension;
165
-
166
- // Check if this point is within radius
167
- let dx = center[0] - node.point[0];
168
- let dy = center[1] - node.point[1];
169
- let dist_sq = dx * dx + dy * dy;
170
-
171
- if dist_sq <= radius * radius {
172
- results.push(node.data_index);
173
- }
174
-
175
- // Check which children to search
176
- let diff = center[axis] - node.point[axis];
177
-
178
- // Search side containing query point
179
- if diff < radius {
180
- if let Some(child) = node.left {
181
- self.range_query_recursive(child, center, radius, depth + 1, results);
182
- }
183
- }
184
- if diff > -radius {
185
- if let Some(child) = node.right {
186
- self.range_query_recursive(child, center, radius, depth + 1, results);
187
- }
188
- }
189
- }
190
- }
191
-
192
- /// Spatial hash grid for O(1) average case queries
193
- pub struct SpatialHashGrid {
194
- cell_size: f32,
195
- inv_cell_size: f32,
196
- cells: HashMap<(i32, i32), Vec<usize>>,
197
- }
198
-
199
- impl SpatialHashGrid {
200
- pub fn new(cell_size: f32) -> Self {
201
- Self {
202
- cell_size,
203
- inv_cell_size: 1.0 / cell_size,
204
- cells: HashMap::new(),
205
- }
206
- }
207
-
208
- fn cell_key(&self, x: f32, y: f32) -> (i32, i32) {
209
- (
210
- (x * self.inv_cell_size).floor() as i32,
211
- (y * self.inv_cell_size).floor() as i32,
212
- )
213
- }
214
-
215
- pub fn insert(&mut self, x: f32, y: f32, index: usize) {
216
- let key = self.cell_key(x, y);
217
- self.cells.entry(key).or_insert_with(Vec::new).push(index);
218
- }
219
-
220
- pub fn query_radius(&self, x: f32, y: f32, radius: f32) -> Vec<usize> {
221
- let mut results = Vec::new();
222
- let cells_to_check = (radius * self.inv_cell_size).ceil() as i32 + 1;
223
- let center_key = self.cell_key(x, y);
224
-
225
- for dy in -cells_to_check..=cells_to_check {
226
- for dx in -cells_to_check..=cells_to_check {
227
- let key = (center_key.0 + dx, center_key.1 + dy);
228
- if let Some(indices) = self.cells.get(&key) {
229
- results.extend(indices.iter().copied());
230
- }
231
- }
232
- }
233
-
234
- results
235
- }
236
-
237
- pub fn query_cell(&self, x: f32, y: f32) -> Option<&Vec<usize>> {
238
- let key = self.cell_key(x, y);
239
- self.cells.get(&key)
240
- }
241
-
242
- pub fn clear(&mut self) {
243
- self.cells.clear();
244
- }
245
- }