gps-plus-slam-app-framework 1.11.0 → 1.14.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 (248) hide show
  1. package/README.md +13 -14
  2. package/dist/{app-selectors-DG0ZqaeI.d.ts → app-selectors-DBUgwomp.d.ts} +1 -1
  3. package/dist/ar/ar-crash-isolation.d.ts +1 -1
  4. package/dist/ar/bresenham3d.d.ts +1 -1
  5. package/dist/ar/camera-blit-capture.d.ts +1 -1
  6. package/dist/ar/capability-checker.d.ts +1 -1
  7. package/dist/ar/capture-failure-tracker.d.ts +1 -1
  8. package/dist/ar/capture-motion-gate.d.ts +1 -1
  9. package/dist/ar/chromium-camera-access-workaround.d.ts +1 -1
  10. package/dist/ar/depth-grid-lookup.d.ts +1 -1
  11. package/dist/ar/depth-occluder.d.ts +1 -1
  12. package/dist/ar/depth-sampler.d.ts +3 -3
  13. package/dist/ar/depth-sampler.js +28 -1
  14. package/dist/ar/depth-unprojection.d.ts +1 -1
  15. package/dist/ar/enable-gps-ar.d.ts +1 -1
  16. package/dist/ar/enable-gps-ar.js +20 -5
  17. package/dist/ar/frame-loop.d.ts +1 -1
  18. package/dist/ar/hit-test-reticle-driver.d.ts +2 -0
  19. package/dist/ar/hit-test-reticle-driver.js +122 -0
  20. package/dist/ar/image-capture.d.ts +1 -1
  21. package/dist/ar/image-capture.js +1 -1
  22. package/dist/ar/image-quality.d.ts +1 -1
  23. package/dist/ar/index.d.ts +35 -34
  24. package/dist/ar/index.js +5 -4
  25. package/dist/ar/occlusion-mesh-worker.d.ts +2 -2
  26. package/dist/ar/occlusion-mesh-worker.js +6 -4
  27. package/dist/ar/occupancy-grid.d.ts +2 -2
  28. package/dist/ar/occupancy-grid.js +191 -11
  29. package/dist/ar/occupancy-mesher.d.ts +1 -1
  30. package/dist/ar/occupancy-mesher.js +1 -636
  31. package/dist/ar/qr/index.d.ts +10 -10
  32. package/dist/ar/qr/planar-pnp.d.ts +1 -1
  33. package/dist/ar/qr/qr-debug-view.d.ts +1 -1
  34. package/dist/ar/qr/qr-derived-pose.d.ts +1 -1
  35. package/dist/ar/qr/qr-detection-controller.d.ts +1 -1
  36. package/dist/ar/qr/qr-frontend.d.ts +1 -1
  37. package/dist/ar/qr/qr-pose.d.ts +1 -1
  38. package/dist/ar/qr/qr-size-depth-context.d.ts +2 -2
  39. package/dist/ar/qr/qr-size-measurer.d.ts +1 -1
  40. package/dist/ar/replay-scene.d.ts +1 -1
  41. package/dist/ar/replay-scene.js +1 -1
  42. package/dist/ar/scene-node-names.d.ts +1 -1
  43. package/dist/ar/webxr-nue-basis.d.ts +1 -1
  44. package/dist/ar/webxr-session.d.ts +3 -3
  45. package/dist/ar/webxr-session.js +1 -1
  46. package/dist/ar/xr-camera-texture.d.ts +1 -1
  47. package/dist/ar/xr-error-handler.d.ts +1 -1
  48. package/dist/ar/xr-frame-loop.d.ts +1 -1
  49. package/dist/{ar-world-group-alignment-BdS_h8Nf.d.ts → ar-world-group-alignment-Dn_UiRy1.d.ts} +1 -1
  50. package/dist/{cell-key-Bj-eYTLA.js → cell-key-D1b_Ix-p.js} +12 -1
  51. package/dist/core/index.d.ts +1 -1
  52. package/dist/{create-slam-app-store-oK9bnqyI.js → create-slam-app-store-B62K8_Qr.js} +17 -4
  53. package/dist/{create-slam-app-store-DFm5K9Ob.d.ts → create-slam-app-store-sxb1-esK.d.ts} +34 -4
  54. package/dist/{depth-grid-lookup-CCuzlqUo.d.ts → depth-grid-lookup-PcJTdRLL.d.ts} +1 -1
  55. package/dist/{depth-sampler-CS2jAFw4.d.ts → depth-sampler-BcvuxgCS.d.ts} +29 -2
  56. package/dist/{depth-unprojection-ET3Gwedf.d.ts → depth-unprojection-DbGipFkA.d.ts} +1 -1
  57. package/dist/{enable-gps-ar-D_xEHzh5.d.ts → enable-gps-ar-xjz3jNqm.d.ts} +4 -4
  58. package/dist/{frame-conversions-CH7E2Iv_.d.ts → frame-conversions-CzPQDYpM.d.ts} +1 -1
  59. package/dist/{fused-path-DOKzVMiO.d.ts → fused-path-CBAttcVm.d.ts} +1 -1
  60. package/dist/geo/h3-proximity.d.ts +1 -1
  61. package/dist/geo/index.d.ts +1 -1
  62. package/dist/{gps-anchor-BaqyRsPC.d.ts → gps-anchor-Gv4NDwH4.d.ts} +1 -1
  63. package/dist/{gps-ar-pose-sampler-BuuUuK-D.d.ts → gps-ar-pose-sampler-DBEYDFY5.d.ts} +1 -1
  64. package/dist/{gps-event-coordinator-Cruoe5I-.d.ts → gps-event-coordinator-BAy56wYd.d.ts} +4 -4
  65. package/dist/{gps-event-markers-y2b2aVl6.d.ts → gps-event-markers-212h7j3D.d.ts} +4 -4
  66. package/dist/hit-test-reticle-driver-CfKiDgsa.d.ts +40 -0
  67. package/dist/{image-capture-BevgKpoO.d.ts → image-capture-BXmx1YvD.d.ts} +3 -3
  68. package/dist/{index-Dxb6ATNK.d.ts → index-DVmgFIgm.d.ts} +1 -1
  69. package/dist/{index-BWVwd9Zw.d.ts → index-DX9VC257.d.ts} +3 -3
  70. package/dist/{index-ClmnNJ6-.d.ts → index-qYJ5-SBC.d.ts} +1 -1
  71. package/dist/index.d.ts +89 -82
  72. package/dist/index.js +17 -10
  73. package/dist/{leaflet-map-overlay-CksetpTt.d.ts → leaflet-map-overlay-BkHmzvpD.d.ts} +1 -1
  74. package/dist/{map-data-D8cCqpOM.d.ts → map-data-BQXPtRz7.d.ts} +1 -1
  75. package/dist/{map-overlay-draw-Cy-klqoA.d.ts → map-overlay-draw-sTM3wug_.d.ts} +1 -1
  76. package/dist/{null-storage-backend-DXXuwG8T.d.ts → null-storage-backend-Dtn3TBfT.d.ts} +2 -2
  77. package/dist/{occlusion-mesh-BWe2PrVi.d.ts → occlusion-mesh-BY2aMej3.d.ts} +22 -4
  78. package/dist/occupancy-cubes-visualizer-soN0Sizd.d.ts +146 -0
  79. package/dist/{occupancy-grid-CYBdmMOo.d.ts → occupancy-grid-DKzIdCSZ.d.ts} +113 -3
  80. package/dist/{occupancy-mesher-B4Bv4BTk.d.ts → occupancy-mesher-Co80tOpl.d.ts} +22 -1
  81. package/dist/occupancy-mesher-DzNeJdQf.js +837 -0
  82. package/dist/{opfs-storage-backend-D1ZpeNEL.d.ts → opfs-storage-backend-CZ-ECudx.d.ts} +2 -2
  83. package/dist/perf-stats-overlay-BMEQrzx6.d.ts +68 -0
  84. package/dist/{persistence-middleware-Cun4aF5M.d.ts → persistence-middleware-Byo_Fs4n.d.ts} +1 -1
  85. package/dist/{planar-pnp-ByxwDEyM.d.ts → planar-pnp-CkcMN3o3.d.ts} +1 -1
  86. package/dist/pointer-picking-BATHHTlT.d.ts +41 -0
  87. package/dist/{qr-debug-view-CGlITU09.d.ts → qr-debug-view-BMjNVhV2.d.ts} +1 -1
  88. package/dist/{qr-derived-pose-DZPxZd9C.d.ts → qr-derived-pose-Dq7mPK2s.d.ts} +2 -2
  89. package/dist/{qr-detected-slice-mfyxD2-M.d.ts → qr-detected-slice-8t_laDR9.d.ts} +4 -4
  90. package/dist/{qr-detection-controller-C5NII-vs.d.ts → qr-detection-controller-Dh4Paymb.d.ts} +3 -3
  91. package/dist/{qr-frontend-QzKZSqB-.d.ts → qr-frontend-BnLlVjKu.d.ts} +1 -1
  92. package/dist/{qr-pose-aggregation-mABSN0AW.d.ts → qr-pose-aggregation-Bpv4uARJ.d.ts} +1 -1
  93. package/dist/{qr-size-depth-context-CMDv6T29.d.ts → qr-size-depth-context-Bzbx98nS.d.ts} +2 -2
  94. package/dist/{qr-size-measurer-rVFf4AdM.d.ts → qr-size-measurer-18_W3INY.d.ts} +3 -3
  95. package/dist/{recording-replayer-qT2EM1Qs.d.ts → recording-replayer-CpFiYczh.d.ts} +2 -2
  96. package/dist/{recording-slice-DXw5-UvO.d.ts → recording-slice-zMedT0ot.d.ts} +1 -1
  97. package/dist/{replay-engine-B1H_kLhK.d.ts → replay-engine-DI7uknkv.d.ts} +1 -1
  98. package/dist/{replay-scene-BJeO36YT.d.ts → replay-scene-D5qzY0_x.d.ts} +3 -3
  99. package/dist/sensors/absolute-orientation.d.ts +1 -1
  100. package/dist/sensors/gps-error-handler.d.ts +1 -1
  101. package/dist/sensors/gps.d.ts +1 -1
  102. package/dist/sensors/index.d.ts +4 -4
  103. package/dist/sensors/permission-checker.d.ts +1 -1
  104. package/dist/state/app-selectors.d.ts +1 -1
  105. package/dist/state/combined-root-state.d.ts +1 -1
  106. package/dist/state/create-slam-app-store.d.ts +1 -1
  107. package/dist/state/create-slam-app-store.js +1 -1
  108. package/dist/state/gps-ar-pose-sampler.d.ts +2 -2
  109. package/dist/state/gps-event-coordinator.d.ts +2 -2
  110. package/dist/state/gps-event-coordinator.js +1 -1
  111. package/dist/state/index.d.ts +18 -18
  112. package/dist/state/index.js +3 -3
  113. package/dist/state/persistence-middleware.d.ts +1 -1
  114. package/dist/state/qr-detected-slice.d.ts +3 -3
  115. package/dist/state/recording-replayer.d.ts +2 -2
  116. package/dist/state/recording-replayer.js +1 -1
  117. package/dist/state/recording-slice.d.ts +1 -1
  118. package/dist/state/replay-engine.d.ts +1 -1
  119. package/dist/state/replay-occupancy-subscriber.d.ts +51 -0
  120. package/dist/state/replay-occupancy-subscriber.js +85 -0
  121. package/dist/state/replay-session.d.ts +88 -0
  122. package/dist/state/replay-session.js +165 -0
  123. package/dist/state/store-subscribers.d.ts +2 -2
  124. package/dist/state/store-subscribers.js +1 -1
  125. package/dist/state/subscribe-to-selector.d.ts +1 -1
  126. package/dist/state/tracking-quality.d.ts +1 -1
  127. package/dist/state/tracking-slice.d.ts +1 -1
  128. package/dist/{state-CDF5LvsO.js → state-BECcnNRW.js} +1 -1
  129. package/dist/storage/file-system-utils.d.ts +1 -1
  130. package/dist/storage/index.d.ts +8 -8
  131. package/dist/storage/null-storage-backend.d.ts +1 -1
  132. package/dist/storage/opfs-storage-backend.d.ts +1 -1
  133. package/dist/storage/opfs-storage.d.ts +1 -1
  134. package/dist/storage/storage-backend.d.ts +1 -1
  135. package/dist/storage/zip-coverage-embed.d.ts +1 -1
  136. package/dist/storage/zip-export.d.ts +1 -1
  137. package/dist/storage/zip-reader.d.ts +1 -1
  138. package/dist/{storage-backend-BX7egQKi.d.ts → storage-backend-DCYbOvTw.d.ts} +1 -1
  139. package/dist/{store-subscribers-CWHToX6N.d.ts → store-subscribers-BenHBQhD.d.ts} +2 -2
  140. package/dist/{subscribe-to-selector-j-eOYybQ.d.ts → subscribe-to-selector-hitZwSj8.d.ts} +1 -1
  141. package/dist/test-utils/browser-mocks.d.ts +1 -1
  142. package/dist/test-utils/zip-round-trip-helpers.d.ts +1 -1
  143. package/dist/text-sprite-C6VcC2mo.d.ts +53 -0
  144. package/dist/{tracking-slice-BAbcZK-Y.d.ts → tracking-slice-D5LDL_y4.d.ts} +1 -1
  145. package/dist/types/ar-types.d.ts +1 -1
  146. package/dist/types/geo-types.d.ts +1 -1
  147. package/dist/types/index.d.ts +2 -2
  148. package/dist/utils/concurrency.d.ts +1 -1
  149. package/dist/utils/failure-tracker.d.ts +1 -1
  150. package/dist/utils/format-file-size.d.ts +1 -1
  151. package/dist/utils/fused-path.d.ts +1 -1
  152. package/dist/utils/index.d.ts +7 -7
  153. package/dist/utils/list-formatter.d.ts +1 -1
  154. package/dist/utils/logger.d.ts +1 -1
  155. package/dist/visualization/accuracy-circles.d.ts +1 -1
  156. package/dist/visualization/alignment-lerper.d.ts +1 -1
  157. package/dist/visualization/ar-world-group-alignment.d.ts +1 -1
  158. package/dist/visualization/ar-world-group-alignment.js +1 -1
  159. package/dist/visualization/camera-follower.d.ts +1 -1
  160. package/dist/visualization/css3d-renderer-manager.d.ts +1 -1
  161. package/dist/visualization/frame-conversions.d.ts +1 -1
  162. package/dist/visualization/frustum-visibility.d.ts +1 -1
  163. package/dist/visualization/gps-anchor.d.ts +1 -1
  164. package/dist/visualization/gps-compass-cubes.d.ts +1 -1
  165. package/dist/visualization/gps-compass-cubes.js +6 -22
  166. package/dist/visualization/gps-event-markers.d.ts +1 -1
  167. package/dist/visualization/gps-event-markers.js +1 -1
  168. package/dist/visualization/hit-test-reticle.d.ts +1 -1
  169. package/dist/visualization/hit-test-reticle.js +3 -2
  170. package/dist/visualization/index.d.ts +25 -19
  171. package/dist/visualization/index.js +10 -4
  172. package/dist/visualization/leaflet-map-overlay.d.ts +1 -1
  173. package/dist/visualization/leaflet-map-overlay.js +1 -1
  174. package/dist/visualization/lerp-utils.d.ts +1 -1
  175. package/dist/visualization/map-data.d.ts +1 -1
  176. package/dist/visualization/map-data.js +1 -1
  177. package/dist/visualization/map-overlay-draw.d.ts +1 -1
  178. package/dist/visualization/occluder-mesh-driver.d.ts +2 -2
  179. package/dist/visualization/occlusion-mesh.d.ts +1 -1
  180. package/dist/visualization/occlusion-mesh.js +26 -1
  181. package/dist/visualization/occupancy-cubes-visualizer.d.ts +2 -0
  182. package/dist/visualization/occupancy-cubes-visualizer.js +221 -0
  183. package/dist/visualization/perf-stats-overlay.d.ts +2 -0
  184. package/dist/visualization/perf-stats-overlay.js +85 -0
  185. package/dist/visualization/pointer-picking.d.ts +2 -0
  186. package/dist/visualization/pointer-picking.js +58 -0
  187. package/dist/visualization/text-sprite.d.ts +2 -0
  188. package/dist/visualization/text-sprite.js +105 -0
  189. package/dist/visualization/three-dispose.d.ts +1 -1
  190. package/dist/visualization/vis-colors.d.ts +1 -1
  191. package/dist/visualization/wayfinding-hud.d.ts +2 -0
  192. package/dist/visualization/wayfinding-hud.js +289 -0
  193. package/dist/visualization/wayfinding-placement.d.ts +2 -0
  194. package/dist/visualization/wayfinding-placement.js +157 -0
  195. package/dist/wayfinding-hud-DVun2b69.d.ts +82 -0
  196. package/dist/wayfinding-placement-dnHzfYlT.d.ts +97 -0
  197. package/dist/{webxr-session-OyR3YbTq.js → webxr-session-BBlgzrqY.js} +3 -3
  198. package/dist/{webxr-session-DefwObIu.d.ts → webxr-session-DurXRnl_.d.ts} +7 -7
  199. package/package.json +3 -3
  200. /package/dist/{absolute-orientation-Dj1One3y.d.ts → absolute-orientation-0WIsqJnu.d.ts} +0 -0
  201. /package/dist/{accuracy-circles-BHz7yVIL.d.ts → accuracy-circles-CFnKGfsD.d.ts} +0 -0
  202. /package/dist/{alignment-lerper-DAHicRON.d.ts → alignment-lerper-CK1TYLIL.d.ts} +0 -0
  203. /package/dist/{ar-crash-isolation-DlXCGzMf.d.ts → ar-crash-isolation-BSFw_beO.d.ts} +0 -0
  204. /package/dist/{ar-types-D6PYS4bc.d.ts → ar-types-BprL3nKv.d.ts} +0 -0
  205. /package/dist/{bresenham3d-D-t9i_b5.d.ts → bresenham3d-bt61R-Qa.d.ts} +0 -0
  206. /package/dist/{camera-blit-capture-BlC-arRb.d.ts → camera-blit-capture-CgNJ9grH.d.ts} +0 -0
  207. /package/dist/{camera-follower-CO_ibF2o.d.ts → camera-follower-OnnXsbHd.d.ts} +0 -0
  208. /package/dist/{capability-checker-BZ3_x1YL.d.ts → capability-checker-DrWimJ_t.d.ts} +0 -0
  209. /package/dist/{capture-failure-tracker-BAUKjtXU.d.ts → capture-failure-tracker-bUXJeMvQ.d.ts} +0 -0
  210. /package/dist/{capture-motion-gate-CPwLekNf.d.ts → capture-motion-gate-C60Qrilh.d.ts} +0 -0
  211. /package/dist/{chromium-camera-access-workaround-BHR4clTE.d.ts → chromium-camera-access-workaround-BRs6gkI4.d.ts} +0 -0
  212. /package/dist/{concurrency-DW0jQo3G.d.ts → concurrency-CMhbkxBk.d.ts} +0 -0
  213. /package/dist/{css3d-renderer-manager-CJjHtCMT.d.ts → css3d-renderer-manager-CE6xN7XM.d.ts} +0 -0
  214. /package/dist/{device-orientation-cache-j-kLP8he.js → device-orientation-cache-BjEaEAmh.js} +0 -0
  215. /package/dist/{failure-tracker-B7fzPfZo.d.ts → failure-tracker-BdaFulDA.d.ts} +0 -0
  216. /package/dist/{file-system-utils-BHI0rXr9.d.ts → file-system-utils-DE3BViuq.d.ts} +0 -0
  217. /package/dist/{format-file-size-Da8rZgfs.d.ts → format-file-size-B2CJdRqD.d.ts} +0 -0
  218. /package/dist/{frame-loop-7GBMBu68.d.ts → frame-loop-CUEIdlhS.d.ts} +0 -0
  219. /package/dist/{frustum-visibility-COPfzruF.d.ts → frustum-visibility-BTx1Sqfo.d.ts} +0 -0
  220. /package/dist/{geo-types-BfDK8kJu.d.ts → geo-types-DGe5UKgx.d.ts} +0 -0
  221. /package/dist/{gps-CnhYrJCa.d.ts → gps-CC0l9lCp.d.ts} +0 -0
  222. /package/dist/{gps-compass-cubes-CT3TWctJ.d.ts → gps-compass-cubes-QQJgpRXR.d.ts} +0 -0
  223. /package/dist/{gps-error-handler-DjVuLXve.d.ts → gps-error-handler-da4DCcs5.d.ts} +0 -0
  224. /package/dist/{h3-proximity-BaAulrnM.d.ts → h3-proximity-CAEk3osq.d.ts} +0 -0
  225. /package/dist/{hit-test-reticle-DhnCMOsc.d.ts → hit-test-reticle-DcOyqo3B.d.ts} +0 -0
  226. /package/dist/{image-capture-C4DwxC10.js → image-capture-Dn8uLIP2.js} +0 -0
  227. /package/dist/{image-quality--HLuyJ2r.d.ts → image-quality-G7_qT4aj.d.ts} +0 -0
  228. /package/dist/{index-CjxbDm8W.d.ts → index-T8Fxvzka.d.ts} +0 -0
  229. /package/dist/{index-Nr3qg4IH.d.ts → index-Y_RNWbQX.d.ts} +0 -0
  230. /package/dist/{leaflet-map-overlay-CTcTVmL1.js → leaflet-map-overlay-DjWfRT8a.js} +0 -0
  231. /package/dist/{lerp-utils-bwMwVCpU.d.ts → lerp-utils-B-ecvLq2.d.ts} +0 -0
  232. /package/dist/{list-formatter-1ttG18MQ.d.ts → list-formatter-C45u3Vgv.d.ts} +0 -0
  233. /package/dist/{logger-B4StJUDb.d.ts → logger-BQGNXi9W.d.ts} +0 -0
  234. /package/dist/{map-data-DkhsYDGM.js → map-data-vL8jb5Z9.js} +0 -0
  235. /package/dist/{opfs-storage-S_odkCk1.d.ts → opfs-storage-CrhVauNL.d.ts} +0 -0
  236. /package/dist/{permission-checker-B-VtjnBA.d.ts → permission-checker-BDrCOwQF.d.ts} +0 -0
  237. /package/dist/{qr-pose-21fRDcFO.d.ts → qr-pose-_dInl6di.d.ts} +0 -0
  238. /package/dist/{scene-node-names-DWzhE7Ro.d.ts → scene-node-names-Ct6ATrfM.d.ts} +0 -0
  239. /package/dist/{session-disposers-B7hUN90w.js → session-disposers-BJM5U62W.js} +0 -0
  240. /package/dist/{three-dispose-C3mnKQR5.d.ts → three-dispose-B5-XiECx.d.ts} +0 -0
  241. /package/dist/{vis-colors-CoSpbZEO.d.ts → vis-colors-16Pht13u.d.ts} +0 -0
  242. /package/dist/{webxr-nue-basis-C3vTqkE2.d.ts → webxr-nue-basis-B8ZEetVb.d.ts} +0 -0
  243. /package/dist/{xr-camera-texture-q0eIDSRg.d.ts → xr-camera-texture-BA4xiaQ4.d.ts} +0 -0
  244. /package/dist/{xr-error-handler-D9y5r8ok.d.ts → xr-error-handler-BeyxXCE_.d.ts} +0 -0
  245. /package/dist/{xr-frame-loop-BiZvgqP7.d.ts → xr-frame-loop-A1mGDFHI.d.ts} +0 -0
  246. /package/dist/{zip-coverage-embed-CyoX7XL7.d.ts → zip-coverage-embed-BC3O2-8b.d.ts} +0 -0
  247. /package/dist/{zip-export-CuBimX1J.d.ts → zip-export-Cfl_kNQ7.d.ts} +0 -0
  248. /package/dist/{zip-reader-BHc_b_iA.d.ts → zip-reader-DwkuvlGo.d.ts} +0 -0
@@ -1,637 +1,2 @@
1
- import { a as packCellKey } from "../cell-key-Bj-eYTLA.js";
2
- //#region ../src/ar/occupancy-mesher.ts
3
- /** Resolve the effective mesher mode from the options. */
4
- function resolveMode(options) {
5
- return options?.mode ?? "per-face";
6
- }
7
- /**
8
- * Right-handed cyclic axis assignment per face-normal axis `d`: `(d, u, v)`
9
- * with `eu × ev = ed`, so a `(uMin,vMin)→(uMax,vMin)→(uMax,vMax)→(uMin,vMax)`
10
- * quad has the `+d` outward normal (and the reverse order has `−d`). Used by the
11
- * greedy mesher to keep merged-quad winding consistent with the per-face path.
12
- */
13
- const GREEDY_DIRS = [
14
- {
15
- d: 0,
16
- u: 1,
17
- v: 2
18
- },
19
- {
20
- d: 1,
21
- u: 2,
22
- v: 0
23
- },
24
- {
25
- d: 2,
26
- u: 0,
27
- v: 1
28
- }
29
- ];
30
- /**
31
- * The six cube faces with outward (CCW-from-outside) winding. Corner signs are
32
- * ±1 multipliers of the half-cell extent. Triangulated as (0,1,2)+(0,2,3).
33
- */
34
- const FACES = [
35
- {
36
- neighbour: [
37
- 1,
38
- 0,
39
- 0
40
- ],
41
- corners: [
42
- [
43
- 1,
44
- -1,
45
- -1
46
- ],
47
- [
48
- 1,
49
- 1,
50
- -1
51
- ],
52
- [
53
- 1,
54
- 1,
55
- 1
56
- ],
57
- [
58
- 1,
59
- -1,
60
- 1
61
- ]
62
- ]
63
- },
64
- {
65
- neighbour: [
66
- -1,
67
- 0,
68
- 0
69
- ],
70
- corners: [
71
- [
72
- -1,
73
- -1,
74
- -1
75
- ],
76
- [
77
- -1,
78
- -1,
79
- 1
80
- ],
81
- [
82
- -1,
83
- 1,
84
- 1
85
- ],
86
- [
87
- -1,
88
- 1,
89
- -1
90
- ]
91
- ]
92
- },
93
- {
94
- neighbour: [
95
- 0,
96
- 1,
97
- 0
98
- ],
99
- corners: [
100
- [
101
- -1,
102
- 1,
103
- -1
104
- ],
105
- [
106
- -1,
107
- 1,
108
- 1
109
- ],
110
- [
111
- 1,
112
- 1,
113
- 1
114
- ],
115
- [
116
- 1,
117
- 1,
118
- -1
119
- ]
120
- ]
121
- },
122
- {
123
- neighbour: [
124
- 0,
125
- -1,
126
- 0
127
- ],
128
- corners: [
129
- [
130
- -1,
131
- -1,
132
- -1
133
- ],
134
- [
135
- 1,
136
- -1,
137
- -1
138
- ],
139
- [
140
- 1,
141
- -1,
142
- 1
143
- ],
144
- [
145
- -1,
146
- -1,
147
- 1
148
- ]
149
- ]
150
- },
151
- {
152
- neighbour: [
153
- 0,
154
- 0,
155
- 1
156
- ],
157
- corners: [
158
- [
159
- -1,
160
- -1,
161
- 1
162
- ],
163
- [
164
- 1,
165
- -1,
166
- 1
167
- ],
168
- [
169
- 1,
170
- 1,
171
- 1
172
- ],
173
- [
174
- -1,
175
- 1,
176
- 1
177
- ]
178
- ]
179
- },
180
- {
181
- neighbour: [
182
- 0,
183
- 0,
184
- -1
185
- ],
186
- corners: [
187
- [
188
- -1,
189
- -1,
190
- -1
191
- ],
192
- [
193
- -1,
194
- 1,
195
- -1
196
- ],
197
- [
198
- 1,
199
- 1,
200
- -1
201
- ],
202
- [
203
- 1,
204
- -1,
205
- -1
206
- ]
207
- ]
208
- }
209
- ];
210
- /** Finite, integer, and within the packable key range on every axis.
211
- * `Number.isInteger` subsumes the finiteness check (NaN/±Infinity are not
212
- * integers) and rejects fractional coordinates, which the packed-key algebra
213
- * cannot key safely (neighbour ±1 and half-lattice `2·coord ± 1` keys only
214
- * coincide for integer cells). */
215
- function isPackableCell(cell) {
216
- for (let i = 0; i < 3; i++) {
217
- const c = cell[i];
218
- if (!Number.isInteger(c) || Math.abs(c) > 32767) return false;
219
- }
220
- return true;
221
- }
222
- /** True iff all three components are finite. A non-finite measured centroid
223
- * from `getCellPoint` (an upstream tracking/accumulation glitch) must degrade
224
- * to the geometric fallback exactly like a `null` one — otherwise it poisons
225
- * every welded vertex / shared corner that averages it, and it also breaks
226
- * `runMeshRequest`'s byte-identical parity with a direct mesh (the worker wire
227
- * protocol packs "no centroid" as NaN, so NaN already falls back off-thread). */
228
- function isFiniteVector3(v) {
229
- return Number.isFinite(v[0]) && Number.isFinite(v[1]) && Number.isFinite(v[2]);
230
- }
231
- /**
232
- * Mesh a snapshot of occupied cells into a face-culled surface + AABB list.
233
- *
234
- * Only faces whose neighbour cell is **not** in the occupied set are emitted
235
- * (interior faces are dropped), so the triangle count scales with the surface
236
- * area of the occupied set. Duplicate cells in `cells` are de-duplicated;
237
- * cells with a non-finite or non-integer coordinate are skipped defensively (a
238
- * tracking glitch upstream must not poison the mesh, and the packed cell keys
239
- * are only collision-safe for integer coordinates).
240
- *
241
- * @param cells occupied cells (e.g. `grid.getOccupiedCells(minConfidence)`).
242
- * @param cellSizeM cube edge length in metres (must be a positive finite number).
243
- * @returns positions/indices (raw-WebXR metres) + one AABB per unique cell.
244
- */
245
- function meshOccupiedCells(cells, cellSizeM, options) {
246
- if (!Number.isFinite(cellSizeM) || cellSizeM <= 0) throw new RangeError(`cellSizeM must be a positive number, got ${cellSizeM}`);
247
- const half = cellSizeM / 2;
248
- const occupied = /* @__PURE__ */ new Set();
249
- const uniqueCells = [];
250
- for (const cell of cells) {
251
- if (!isPackableCell(cell)) continue;
252
- const key = packCellKey(cell[0], cell[1], cell[2]);
253
- if (occupied.has(key)) continue;
254
- occupied.add(key);
255
- uniqueCells.push(cell);
256
- }
257
- const sharedHalfExtents = Object.freeze([
258
- half,
259
- half,
260
- half
261
- ]);
262
- const aabbs = uniqueCells.map(([x, y, z]) => ({
263
- center: [
264
- x * cellSizeM,
265
- y * cellSizeM,
266
- z * cellSizeM
267
- ],
268
- halfExtents: sharedHalfExtents
269
- }));
270
- const positions = [];
271
- const indices = [];
272
- const mode = resolveMode(options);
273
- if (mode === "greedy") buildGreedy(occupied, uniqueCells, cellSizeM, positions, indices);
274
- else if (mode === "smooth") buildSmooth(occupied, uniqueCells, cellSizeM, options?.getCellPoint, positions, indices);
275
- else if (mode === "corner-fit") buildCornerFit(occupied, uniqueCells, cellSizeM, options?.getCellPoint, positions, indices);
276
- else buildCulled(occupied, uniqueCells, cellSizeM, positions, indices);
277
- return {
278
- positions: new Float32Array(positions),
279
- indices: new Uint32Array(indices),
280
- aabbs
281
- };
282
- }
283
- /** Push a quad (4 corners, already ordered) as two triangles. */
284
- /** Per-face culling: emit each exposed unit face as its own quad. */
285
- function buildCulled(occupied, uniqueCells, cellSizeM, positions, indices) {
286
- const half = cellSizeM / 2;
287
- for (const [x, y, z] of uniqueCells) {
288
- const cx = x * cellSizeM;
289
- const cy = y * cellSizeM;
290
- const cz = z * cellSizeM;
291
- for (const face of FACES) {
292
- const nx = x + face.neighbour[0];
293
- const ny = y + face.neighbour[1];
294
- const nz = z + face.neighbour[2];
295
- if (occupied.has(packCellKey(nx, ny, nz))) continue;
296
- const base = positions.length / 3;
297
- const corners = face.corners;
298
- for (let i = 0; i < 4; i++) {
299
- const c = corners[i];
300
- positions.push(cx + c[0] * half, cy + c[1] * half, cz + c[2] * half);
301
- }
302
- indices.push(base, base + 1, base + 2, base, base + 2, base + 3);
303
- }
304
- }
305
- }
306
- /**
307
- * 'smooth' mode — **standard Naive Surface Nets (dual contouring)** over the
308
- * occupancy field, consuming the per-cell measured centroids the cube meshers
309
- * discard.
310
- *
311
- * Treats occupancy as a binary field sampled at integer cell coordinates and
312
- * contours the occupied/empty boundary:
313
- * - **Vertices** — one welded vertex per "dual cell" (a unit cube whose 8
314
- * corners are the cells `b … b+1`) that **straddles** the boundary (≥1
315
- * occupied AND ≥1 empty corner), placed at the **mean of its occupied
316
- * corners' `getCellPoint()`** (the measured surface points; the corners'
317
- * geometric centres without a provider). Welding by dual-cell key makes the
318
- * surface crack-free.
319
- * - **Quads** — one per occupied↔empty **crossing**: for every occupied-cell
320
- * face whose neighbour is empty (the SAME set the cube mesher emits), a quad
321
- * joins the 4 dual cells sharing that edge, wound to face the empty side.
322
- *
323
- * Because there is one quad per crossing, **coverage matches the cubes** — unlike
324
- * the previous 2×2-fully-occupied-patch heuristic, which only meshed flat solid
325
- * blocks and so missed 80–90 % of a real, ragged depth surface (the reported
326
- * "barely any surfaces" bug; 2026-06-30 rewrite). The result is smooth (welded
327
- * vertices pulled onto the measured surface) and watertight for closed regions;
328
- * over a thin feature (a one-cell floor) the top and bottom dual vertices average
329
- * the same cells and coincide, so it reads as a single smooth sheet — the
330
- * smoothest of the modes. Exception: a dual cell with exactly ONE occupied
331
- * corner is nudged toward its dual-cell centre ({@link SINGLE_CORNER_NUDGE_K}),
332
- * so features thin in ≥2 dimensions (isolated voxels, line/pillar ends) keep a
333
- * non-zero area instead of collapsing onto a single point; on a thin floor this
334
- * puffs only the perimeter-corner vertices by ±0.25·cell.
335
- */
336
- /**
337
- * 'smooth' single-occupied-corner fallback strength: a dual cell with exactly
338
- * one occupied corner places its vertex ON that corner's cell point, so every
339
- * dual cell around a feature thin in ≥2 dimensions (an isolated voxel, the end
340
- * of a 1-cell line/pillar) coincided with its neighbours → all-degenerate
341
- * (zero-area) triangles → thin features were invisible to the occluder despite
342
- * a full per-face triangle count. Nudging the `n === 1` vertex toward the
343
- * dual-cell centre by this fraction of the corner→centre distance (0.5 ⇒
344
- * ±0.25·cell per axis) keeps it a pure function of the dual cell, so welding /
345
- * watertightness and the measured-offset invariant are preserved. Trade-off
346
- * (accepted 2026-07-02): the `n === 1` perimeter corners of a thin floor (and
347
- * of a solid box) puff by ±0.25·cell — imperceptible for AR occlusion. Known
348
- * residual: the `n === 2` shaft rings of a long 1×1×N feature still collapse
349
- * (locally indistinguishable from a thin floor's intentionally-flat edges).
350
- * 0.25 was rejected as too close to imperceptibly-non-zero; 1.0 discards the
351
- * measured centroid exactly where data is sparsest. See
352
- * 2026-07-01-1455-smooth-mesher-single-corner-degeneracy-followup.md.
353
- */
354
- const SINGLE_CORNER_NUDGE_K = .5;
355
- function buildSmooth(occupied, uniqueCells, cellSizeM, getCellPoint, positions, indices) {
356
- const pointCache = /* @__PURE__ */ new Map();
357
- const scratch = [
358
- 0,
359
- 0,
360
- 0
361
- ];
362
- const cellPoint = (ckey, x, y, z) => {
363
- const hit = pointCache.get(ckey);
364
- if (hit !== void 0) return hit;
365
- let p = [
366
- x * cellSizeM,
367
- y * cellSizeM,
368
- z * cellSizeM
369
- ];
370
- if (getCellPoint) {
371
- scratch[0] = x;
372
- scratch[1] = y;
373
- scratch[2] = z;
374
- const cp = getCellPoint(scratch);
375
- if (cp && isFiniteVector3(cp)) p = [
376
- cp[0],
377
- cp[1],
378
- cp[2]
379
- ];
380
- }
381
- pointCache.set(ckey, p);
382
- return p;
383
- };
384
- const vertexIndex = /* @__PURE__ */ new Map();
385
- const dualVertex = (bx, by, bz) => {
386
- const dkey = packCellKey(bx, by, bz);
387
- const existing = vertexIndex.get(dkey);
388
- if (existing !== void 0) return existing;
389
- let sx = 0;
390
- let sy = 0;
391
- let sz = 0;
392
- let n = 0;
393
- let odx = 0;
394
- let ody = 0;
395
- let odz = 0;
396
- for (let dx = 0; dx <= 1; dx++) for (let dy = 0; dy <= 1; dy++) for (let dz = 0; dz <= 1; dz++) {
397
- const cx = bx + dx;
398
- const cy = by + dy;
399
- const cz = bz + dz;
400
- const ckey = packCellKey(cx, cy, cz);
401
- if (!occupied.has(ckey)) continue;
402
- const p = cellPoint(ckey, cx, cy, cz);
403
- sx += p[0];
404
- sy += p[1];
405
- sz += p[2];
406
- n += 1;
407
- odx = dx;
408
- ody = dy;
409
- odz = dz;
410
- }
411
- let px = sx / n;
412
- let py = sy / n;
413
- let pz = sz / n;
414
- if (n === 1) {
415
- const nudge = cellSizeM * SINGLE_CORNER_NUDGE_K;
416
- px += (.5 - odx) * nudge;
417
- py += (.5 - ody) * nudge;
418
- pz += (.5 - odz) * nudge;
419
- }
420
- const idx = positions.length / 3;
421
- positions.push(px, py, pz);
422
- vertexIndex.set(dkey, idx);
423
- return idx;
424
- };
425
- const dualBase = [
426
- 0,
427
- 0,
428
- 0
429
- ];
430
- const c = [
431
- 0,
432
- 0,
433
- 0
434
- ];
435
- for (const cell of uniqueCells) {
436
- c[0] = cell[0];
437
- c[1] = cell[1];
438
- c[2] = cell[2];
439
- for (const { d, u, v } of GREEDY_DIRS) for (let sgn = 1; sgn >= -1; sgn -= 2) {
440
- dualBase[d] = c[d] + sgn;
441
- dualBase[u] = c[u];
442
- dualBase[v] = c[v];
443
- if (occupied.has(packCellKey(dualBase[0], dualBase[1], dualBase[2]))) continue;
444
- const baseD = sgn > 0 ? c[d] : c[d] - 1;
445
- const bu0 = c[u] - 1;
446
- const bv0 = c[v] - 1;
447
- dualBase[d] = baseD;
448
- dualBase[u] = bu0;
449
- dualBase[v] = bv0;
450
- const iA = dualVertex(dualBase[0], dualBase[1], dualBase[2]);
451
- dualBase[u] = bu0 + 1;
452
- const iB = dualVertex(dualBase[0], dualBase[1], dualBase[2]);
453
- dualBase[v] = bv0 + 1;
454
- const iC = dualVertex(dualBase[0], dualBase[1], dualBase[2]);
455
- dualBase[u] = bu0;
456
- const iD = dualVertex(dualBase[0], dualBase[1], dualBase[2]);
457
- if (sgn > 0) indices.push(iA, iB, iC, iA, iC, iD);
458
- else indices.push(iA, iD, iC, iA, iC, iB);
459
- }
460
- }
461
- }
462
- /**
463
- * 'corner-fit' mode — the per-face cube mesher with **displaced shared corners**.
464
- *
465
- * Keeps {@link buildCulled}'s exact face topology (same exposed faces), but each
466
- * lattice corner — identified by its integer half-lattice key `(2x±1, 2y±1,
467
- * 2z±1)` so every cell sharing it produces the SAME key — is **nudged by the mean
468
- * sub-cell offset** (`getCellPoint() − cellCentre`) of the occupied cells
469
- * touching it. Vertices are welded by corner key, so adjacent faces reference the
470
- * identical displaced position: seams stay coincident ⇒ the surface deforms to
471
- * hug the measured points yet stays **watertight** (the even-edge-cover invariant
472
- * `'smooth'` gives up). Without a `getCellPoint` provider every corner falls back
473
- * to the geometric corner `key · cellSize/2`, i.e. plain cubes.
474
- *
475
- * Why the **offset**, not the absolute centroid mean (2026-06-30 fix): moving a
476
- * corner onto the absolute mean collapsed thin features — a one-cell-thick floor's
477
- * top and bottom corners average the SAME cells, so they coincided into a flat
478
- * sheet visually indistinguishable from `'smooth'`. Adding the offset to each
479
- * corner's OWN geometric position keeps the cube's thickness, so `'corner-fit'`
480
- * stays a distinct, cube-like, watertight option.
481
- *
482
- * Tradeoffs vs `'smooth'`: watertight and exact-cube topology, but corners are
483
- * 8-way averages (so geometry only *approaches* the measured points, never lands
484
- * on them) and the per-face O(surface-area) triangle cost is unchanged. Greedy
485
- * merging does not apply (displaced corners are non-coplanar).
486
- */
487
- function buildCornerFit(occupied, uniqueCells, cellSizeM, getCellPoint, positions, indices) {
488
- const half = cellSizeM / 2;
489
- const cornerSum = /* @__PURE__ */ new Map();
490
- const addCornerOffset = (key, ox, oy, oz) => {
491
- let acc = cornerSum.get(key);
492
- if (!acc) {
493
- acc = {
494
- x: 0,
495
- y: 0,
496
- z: 0,
497
- n: 0
498
- };
499
- cornerSum.set(key, acc);
500
- }
501
- acc.x += ox;
502
- acc.y += oy;
503
- acc.z += oz;
504
- acc.n += 1;
505
- };
506
- for (const cell of uniqueCells) {
507
- const cp = getCellPoint ? getCellPoint(cell) : null;
508
- if (!cp || !isFiniteVector3(cp)) continue;
509
- const ox = cp[0] - cell[0] * cellSizeM;
510
- const oy = cp[1] - cell[1] * cellSizeM;
511
- const oz = cp[2] - cell[2] * cellSizeM;
512
- for (let sx = -1; sx <= 1; sx += 2) for (let sy = -1; sy <= 1; sy += 2) for (let sz = -1; sz <= 1; sz += 2) addCornerOffset(packCellKey(2 * cell[0] + sx, 2 * cell[1] + sy, 2 * cell[2] + sz), ox, oy, oz);
513
- }
514
- const vertexIndex = /* @__PURE__ */ new Map();
515
- const cornerVertex = (kx, ky, kz) => {
516
- const key = packCellKey(kx, ky, kz);
517
- const existing = vertexIndex.get(key);
518
- if (existing !== void 0) return existing;
519
- const acc = cornerSum.get(key);
520
- const px = kx * half + (acc ? acc.x / acc.n : 0);
521
- const py = ky * half + (acc ? acc.y / acc.n : 0);
522
- const pz = kz * half + (acc ? acc.z / acc.n : 0);
523
- const idx = positions.length / 3;
524
- positions.push(px, py, pz);
525
- vertexIndex.set(key, idx);
526
- return idx;
527
- };
528
- for (const [x, y, z] of uniqueCells) for (const face of FACES) {
529
- const nx = x + face.neighbour[0];
530
- const ny = y + face.neighbour[1];
531
- const nz = z + face.neighbour[2];
532
- if (occupied.has(packCellKey(nx, ny, nz))) continue;
533
- const corners = face.corners;
534
- const x2 = 2 * x;
535
- const y2 = 2 * y;
536
- const z2 = 2 * z;
537
- const c0 = corners[0];
538
- const c1 = corners[1];
539
- const c2 = corners[2];
540
- const c3 = corners[3];
541
- const v0 = cornerVertex(x2 + c0[0], y2 + c0[1], z2 + c0[2]);
542
- const v1 = cornerVertex(x2 + c1[0], y2 + c1[1], z2 + c1[2]);
543
- const v2 = cornerVertex(x2 + c2[0], y2 + c2[1], z2 + c2[2]);
544
- const v3 = cornerVertex(x2 + c3[0], y2 + c3[1], z2 + c3[2]);
545
- indices.push(v0, v1, v2, v0, v2, v3);
546
- }
547
- }
548
- /**
549
- * Greedy meshing: for each face-normal axis and side, sweep slices and merge
550
- * adjacent coplanar exposed faces into maximal rectangles, emitting one quad
551
- * per rectangle. The covered unit faces are identical to {@link buildCulled};
552
- * only the triangle count drops.
553
- */
554
- function buildGreedy(occupied, uniqueCells, cellSizeM, positions, indices) {
555
- const half = cellSizeM / 2;
556
- const neighbour = [
557
- 0,
558
- 0,
559
- 0
560
- ];
561
- for (const { d, u, v } of GREEDY_DIRS) for (let sign = 1; sign >= -1; sign -= 2) {
562
- const slices = /* @__PURE__ */ new Map();
563
- for (const cell of uniqueCells) {
564
- neighbour[0] = cell[0];
565
- neighbour[1] = cell[1];
566
- neighbour[2] = cell[2];
567
- neighbour[d] += sign;
568
- if (occupied.has(packCellKey(neighbour[0], neighbour[1], neighbour[2]))) continue;
569
- const k = cell[d];
570
- const iu = cell[u];
571
- const iv = cell[v];
572
- let slice = slices.get(k);
573
- if (!slice) {
574
- slice = /* @__PURE__ */ new Map();
575
- slices.set(k, slice);
576
- }
577
- slice.set(packCellKey(iu, iv, 0), [iu, iv]);
578
- }
579
- for (const [k, slice] of [...slices.entries()].sort((a, b) => a[0] - b[0])) greedyMergeSlice(slice, half, cellSizeM, d, u, v, k, sign, positions, indices);
580
- }
581
- }
582
- /** Greedy-merge one slice's exposed (iu,iv) mask into maximal rectangles. */
583
- function greedyMergeSlice(slice, half, cellSizeM, d, u, v, k, sign, positions, indices) {
584
- const has = (iu, iv) => slice.has(packCellKey(iu, iv, 0));
585
- const used = /* @__PURE__ */ new Set();
586
- const isUsed = (iu, iv) => used.has(packCellKey(iu, iv, 0));
587
- const p = [
588
- 0,
589
- 0,
590
- 0
591
- ];
592
- const cells = [...slice.values()].sort((a, b) => a[1] !== b[1] ? a[1] - b[1] : a[0] - b[0]);
593
- for (const [iu, iv] of cells) {
594
- if (isUsed(iu, iv)) continue;
595
- let w = 1;
596
- while (has(iu + w, iv) && !isUsed(iu + w, iv)) w++;
597
- let h = 1;
598
- let canGrow = true;
599
- while (canGrow) {
600
- for (let du = 0; du < w; du++) {
601
- if (has(iu + du, iv + h) && !isUsed(iu + du, iv + h)) continue;
602
- canGrow = false;
603
- break;
604
- }
605
- if (canGrow) h++;
606
- }
607
- for (let dv = 0; dv < h; dv++) for (let du = 0; du < w; du++) used.add(packCellKey(iu + du, iv + dv, 0));
608
- const plane = k * cellSizeM + sign * half;
609
- const uMin = iu * cellSizeM - half;
610
- const uMax = (iu + w - 1) * cellSizeM + half;
611
- const vMin = iv * cellSizeM - half;
612
- const vMax = (iv + h - 1) * cellSizeM + half;
613
- const base = positions.length / 3;
614
- p[d] = plane;
615
- p[u] = uMin;
616
- p[v] = vMin;
617
- positions.push(p[0], p[1], p[2]);
618
- if (sign > 0) {
619
- p[u] = uMax;
620
- positions.push(p[0], p[1], p[2]);
621
- p[v] = vMax;
622
- positions.push(p[0], p[1], p[2]);
623
- p[u] = uMin;
624
- positions.push(p[0], p[1], p[2]);
625
- } else {
626
- p[v] = vMax;
627
- positions.push(p[0], p[1], p[2]);
628
- p[u] = uMax;
629
- positions.push(p[0], p[1], p[2]);
630
- p[v] = vMin;
631
- positions.push(p[0], p[1], p[2]);
632
- }
633
- indices.push(base, base + 1, base + 2, base, base + 2, base + 3);
634
- }
635
- }
636
- //#endregion
1
+ import { t as meshOccupiedCells } from "../occupancy-mesher-DzNeJdQf.js";
637
2
  export { meshOccupiedCells };
@@ -1,11 +1,11 @@
1
- import { _ as solveQrPose, a as QrPoseSolution, c as SolveQrPoseInput, d as intrinsicsFromProjection, f as invertPose, g as signedQuadArea, h as reprojectionErrorPx, i as Pose, l as buildObjectPoints, m as qrInCameraFromOpenCv, n as OpenCvPnpResult, o as QuadValidation, p as projectViewPoint, r as Point2, s as SolvePnpSquare, t as CameraIntrinsics, u as composePose, v as transformPoint, y as validateQuad } from "../../qr-pose-21fRDcFO.js";
2
- import { a as QrFrontEnd, c as createBarcodeDetectorFrontEnd, i as QrDetection, n as BarcodeDetectorLike, o as RgbaImage, r as DetectedBarcodeLike, s as ToImageBitmapSource, t as BarcodeDetectorFrontEnd } from "../../qr-frontend-QzKZSqB-.js";
3
- import { c as QrSizeAccumulatorOptions, d as QrSizeStatus, f as createQrSizeAccumulator, i as QrSizeMeasurer, l as QrSizeEstimate, n as QrSizeDepthContext, o as createQrSizeMeasurer, p as estimateQrSizeFromDepth, r as QrSizeMeasurement, s as QrSizeAccumulator, t as ImageSize, u as QrSizeObservation } from "../../qr-size-measurer-rVFf4AdM.js";
4
- import { t as createQrSizeDepthContext } from "../../qr-size-depth-context-CMDv6T29.js";
5
- import { a as createIncrementalQrPlacement, c as deriveSolvedQrPose, i as RawQrObservation, l as solveQrPoseFromObservation, n as DerivedQrPlacement, o as deriveQrPlacement, r as IncrementalQrPlacement, s as deriveQrSizeM, t as DeriveQrPoseDeps } from "../../qr-derived-pose-DZPxZd9C.js";
6
- import { n as createQrDebugView, t as QrDebugView } from "../../qr-debug-view-CGlITU09.js";
7
- import { a as createQrDetectionController, i as RawObservationSink, n as QrDetectionControllerDeps, r as QrScanStatus, t as QrDetectionController } from "../../qr-detection-controller-C5NII-vs.js";
8
- import { a as QrPoseStability, c as aggregateQrPose, i as DEFAULT_ROTATION_INLIER_ANGLE_DEG, l as averageRotation, n as AverageRotationOptions, o as QrPoseStabilityOptions, r as AverageRotationResult, s as QrPoseStabilityStatus, t as AggregateQrPoseResult, u as evaluateQrPoseStability } from "../../qr-pose-aggregation-mABSN0AW.js";
9
- import { C as parseQrLevel, D as buildQrGpsVotes, E as QrGpsVoteInput, O as localPlaneToEnu, S as fetchQrLevel, T as QrGeoPose, _ as createQrTrackingController, a as checkQrPlausibility, b as QrLevel, c as QrDetectionScheduler, d as createQrDetectionScheduler, f as QrDetectionEvent, g as QrTrackingStatus, h as QrTrackingControllerConfig, i as QrPlausibilityVerdict, k as offsetGeo, l as QrDetectionSchedulerConfig, m as QrTrackingController, n as QrPlausibility, o as DetectionScheduler, p as QrSolvePoseInput, r as QrPlausibilityOptions, s as DetectionSchedulerConfig, t as OccupancySurface, u as createDetectionScheduler, v as FetchLike, w as Enu, x as QrLevelValidationError, y as FetchQrLevelOptions } from "../../index-BWVwd9Zw.js";
10
- import { a as homographyFromCorrespondences, c as rotationToRodrigues, i as PoseCandidate, l as solveLinear, n as Mat3, o as ippePoseCandidates, r as PlanarPnpSquare, s as nearestRotation3x3, t as Homography } from "../../planar-pnp-ByxwDEyM.js";
1
+ import { _ as solveQrPose, a as QrPoseSolution, c as SolveQrPoseInput, d as intrinsicsFromProjection, f as invertPose, g as signedQuadArea, h as reprojectionErrorPx, i as Pose, l as buildObjectPoints, m as qrInCameraFromOpenCv, n as OpenCvPnpResult, o as QuadValidation, p as projectViewPoint, r as Point2, s as SolvePnpSquare, t as CameraIntrinsics, u as composePose, v as transformPoint, y as validateQuad } from "../../qr-pose-_dInl6di.js";
2
+ import { a as QrFrontEnd, c as createBarcodeDetectorFrontEnd, i as QrDetection, n as BarcodeDetectorLike, o as RgbaImage, r as DetectedBarcodeLike, s as ToImageBitmapSource, t as BarcodeDetectorFrontEnd } from "../../qr-frontend-BnLlVjKu.js";
3
+ import { c as QrSizeAccumulatorOptions, d as QrSizeStatus, f as createQrSizeAccumulator, i as QrSizeMeasurer, l as QrSizeEstimate, n as QrSizeDepthContext, o as createQrSizeMeasurer, p as estimateQrSizeFromDepth, r as QrSizeMeasurement, s as QrSizeAccumulator, t as ImageSize, u as QrSizeObservation } from "../../qr-size-measurer-18_W3INY.js";
4
+ import { t as createQrSizeDepthContext } from "../../qr-size-depth-context-Bzbx98nS.js";
5
+ import { a as createIncrementalQrPlacement, c as deriveSolvedQrPose, i as RawQrObservation, l as solveQrPoseFromObservation, n as DerivedQrPlacement, o as deriveQrPlacement, r as IncrementalQrPlacement, s as deriveQrSizeM, t as DeriveQrPoseDeps } from "../../qr-derived-pose-Dq7mPK2s.js";
6
+ import { n as createQrDebugView, t as QrDebugView } from "../../qr-debug-view-BMjNVhV2.js";
7
+ import { a as createQrDetectionController, i as RawObservationSink, n as QrDetectionControllerDeps, r as QrScanStatus, t as QrDetectionController } from "../../qr-detection-controller-Dh4Paymb.js";
8
+ import { a as QrPoseStability, c as aggregateQrPose, i as DEFAULT_ROTATION_INLIER_ANGLE_DEG, l as averageRotation, n as AverageRotationOptions, o as QrPoseStabilityOptions, r as AverageRotationResult, s as QrPoseStabilityStatus, t as AggregateQrPoseResult, u as evaluateQrPoseStability } from "../../qr-pose-aggregation-Bpv4uARJ.js";
9
+ import { C as parseQrLevel, D as buildQrGpsVotes, E as QrGpsVoteInput, O as localPlaneToEnu, S as fetchQrLevel, T as QrGeoPose, _ as createQrTrackingController, a as checkQrPlausibility, b as QrLevel, c as QrDetectionScheduler, d as createQrDetectionScheduler, f as QrDetectionEvent, g as QrTrackingStatus, h as QrTrackingControllerConfig, i as QrPlausibilityVerdict, k as offsetGeo, l as QrDetectionSchedulerConfig, m as QrTrackingController, n as QrPlausibility, o as DetectionScheduler, p as QrSolvePoseInput, r as QrPlausibilityOptions, s as DetectionSchedulerConfig, t as OccupancySurface, u as createDetectionScheduler, v as FetchLike, w as Enu, x as QrLevelValidationError, y as FetchQrLevelOptions } from "../../index-DX9VC257.js";
10
+ import { a as homographyFromCorrespondences, c as rotationToRodrigues, i as PoseCandidate, l as solveLinear, n as Mat3, o as ippePoseCandidates, r as PlanarPnpSquare, s as nearestRotation3x3, t as Homography } from "../../planar-pnp-CkcMN3o3.js";
11
11
  export { AggregateQrPoseResult, AverageRotationOptions, AverageRotationResult, BarcodeDetectorFrontEnd, BarcodeDetectorLike, CameraIntrinsics, DEFAULT_ROTATION_INLIER_ANGLE_DEG, DeriveQrPoseDeps, DerivedQrPlacement, DetectedBarcodeLike, DetectionScheduler, DetectionSchedulerConfig, Enu, FetchLike, FetchQrLevelOptions, Homography, ImageSize, IncrementalQrPlacement, Mat3, OccupancySurface, OpenCvPnpResult, PlanarPnpSquare, Point2, Pose, PoseCandidate, QrDebugView, QrDetection, QrDetectionController, QrDetectionControllerDeps, QrDetectionEvent, QrDetectionScheduler, QrDetectionSchedulerConfig, QrFrontEnd, QrGeoPose, QrGpsVoteInput, QrLevel, QrLevelValidationError, QrPlausibility, QrPlausibilityOptions, QrPlausibilityVerdict, QrPoseSolution, QrPoseStability, QrPoseStabilityOptions, QrPoseStabilityStatus, QrScanStatus, QrSizeAccumulator, QrSizeAccumulatorOptions, QrSizeDepthContext, QrSizeEstimate, QrSizeMeasurement, QrSizeMeasurer, QrSizeObservation, QrSizeStatus, QrSolvePoseInput, QrTrackingController, QrTrackingControllerConfig, QrTrackingStatus, QuadValidation, RawObservationSink, RawQrObservation, RgbaImage, SolvePnpSquare, SolveQrPoseInput, ToImageBitmapSource, aggregateQrPose, averageRotation, buildObjectPoints, buildQrGpsVotes, checkQrPlausibility, composePose, createBarcodeDetectorFrontEnd, createDetectionScheduler, createIncrementalQrPlacement, createQrDebugView, createQrDetectionController, createQrDetectionScheduler, createQrSizeAccumulator, createQrSizeDepthContext, createQrSizeMeasurer, createQrTrackingController, deriveQrPlacement, deriveQrSizeM, deriveSolvedQrPose, estimateQrSizeFromDepth, evaluateQrPoseStability, fetchQrLevel, homographyFromCorrespondences, intrinsicsFromProjection, invertPose, ippePoseCandidates, localPlaneToEnu, nearestRotation3x3, offsetGeo, parseQrLevel, projectViewPoint, qrInCameraFromOpenCv, reprojectionErrorPx, rotationToRodrigues, signedQuadArea, solveLinear, solveQrPose, solveQrPoseFromObservation, transformPoint, validateQuad };
@@ -1,2 +1,2 @@
1
- import { a as homographyFromCorrespondences, c as rotationToRodrigues, i as PoseCandidate, l as solveLinear, n as Mat3, o as ippePoseCandidates, r as PlanarPnpSquare, s as nearestRotation3x3, t as Homography } from "../../planar-pnp-ByxwDEyM.js";
1
+ import { a as homographyFromCorrespondences, c as rotationToRodrigues, i as PoseCandidate, l as solveLinear, n as Mat3, o as ippePoseCandidates, r as PlanarPnpSquare, s as nearestRotation3x3, t as Homography } from "../../planar-pnp-CkcMN3o3.js";
2
2
  export { Homography, Mat3, PlanarPnpSquare, PoseCandidate, homographyFromCorrespondences, ippePoseCandidates, nearestRotation3x3, rotationToRodrigues, solveLinear };
@@ -1,2 +1,2 @@
1
- import { n as createQrDebugView, t as QrDebugView } from "../../qr-debug-view-CGlITU09.js";
1
+ import { n as createQrDebugView, t as QrDebugView } from "../../qr-debug-view-BMjNVhV2.js";
2
2
  export { QrDebugView, createQrDebugView };
@@ -1,2 +1,2 @@
1
- import { a as createIncrementalQrPlacement, c as deriveSolvedQrPose, i as RawQrObservation, l as solveQrPoseFromObservation, n as DerivedQrPlacement, o as deriveQrPlacement, r as IncrementalQrPlacement, s as deriveQrSizeM, t as DeriveQrPoseDeps } from "../../qr-derived-pose-DZPxZd9C.js";
1
+ import { a as createIncrementalQrPlacement, c as deriveSolvedQrPose, i as RawQrObservation, l as solveQrPoseFromObservation, n as DerivedQrPlacement, o as deriveQrPlacement, r as IncrementalQrPlacement, s as deriveQrSizeM, t as DeriveQrPoseDeps } from "../../qr-derived-pose-Dq7mPK2s.js";
2
2
  export { DeriveQrPoseDeps, DerivedQrPlacement, IncrementalQrPlacement, RawQrObservation, createIncrementalQrPlacement, deriveQrPlacement, deriveQrSizeM, deriveSolvedQrPose, solveQrPoseFromObservation };
@@ -1,2 +1,2 @@
1
- import { a as createQrDetectionController, i as RawObservationSink, n as QrDetectionControllerDeps, r as QrScanStatus, t as QrDetectionController } from "../../qr-detection-controller-C5NII-vs.js";
1
+ import { a as createQrDetectionController, i as RawObservationSink, n as QrDetectionControllerDeps, r as QrScanStatus, t as QrDetectionController } from "../../qr-detection-controller-Dh4Paymb.js";
2
2
  export { QrDetectionController, QrDetectionControllerDeps, QrScanStatus, RawObservationSink, createQrDetectionController };
@@ -1,2 +1,2 @@
1
- import { a as QrFrontEnd, c as createBarcodeDetectorFrontEnd, i as QrDetection, n as BarcodeDetectorLike, o as RgbaImage, r as DetectedBarcodeLike, s as ToImageBitmapSource, t as BarcodeDetectorFrontEnd } from "../../qr-frontend-QzKZSqB-.js";
1
+ import { a as QrFrontEnd, c as createBarcodeDetectorFrontEnd, i as QrDetection, n as BarcodeDetectorLike, o as RgbaImage, r as DetectedBarcodeLike, s as ToImageBitmapSource, t as BarcodeDetectorFrontEnd } from "../../qr-frontend-BnLlVjKu.js";
2
2
  export { BarcodeDetectorFrontEnd, BarcodeDetectorLike, DetectedBarcodeLike, QrDetection, QrFrontEnd, RgbaImage, ToImageBitmapSource, createBarcodeDetectorFrontEnd };