@itwin/core-geometry 4.4.0-dev.8 → 4.5.0-dev.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 (299) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/lib/cjs/Geometry.d.ts +17 -0
  3. package/lib/cjs/Geometry.d.ts.map +1 -1
  4. package/lib/cjs/Geometry.js +14 -0
  5. package/lib/cjs/Geometry.js.map +1 -1
  6. package/lib/cjs/core-geometry.d.ts +3 -2
  7. package/lib/cjs/core-geometry.d.ts.map +1 -1
  8. package/lib/cjs/core-geometry.js +3 -2
  9. package/lib/cjs/core-geometry.js.map +1 -1
  10. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +2 -2
  11. package/lib/cjs/curve/CurveChainWithDistanceIndex.js +3 -3
  12. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  13. package/lib/cjs/curve/CurveExtendMode.d.ts +7 -6
  14. package/lib/cjs/curve/CurveExtendMode.d.ts.map +1 -1
  15. package/lib/cjs/curve/CurveExtendMode.js +7 -6
  16. package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
  17. package/lib/cjs/curve/CurveLocationDetail.d.ts.map +1 -1
  18. package/lib/cjs/curve/CurveLocationDetail.js +23 -18
  19. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  20. package/lib/cjs/curve/LineSegment3d.d.ts +14 -4
  21. package/lib/cjs/curve/LineSegment3d.d.ts.map +1 -1
  22. package/lib/cjs/curve/LineSegment3d.js +107 -2
  23. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  24. package/lib/cjs/curve/LineString3d.d.ts +41 -8
  25. package/lib/cjs/curve/LineString3d.d.ts.map +1 -1
  26. package/lib/cjs/curve/LineString3d.js +53 -15
  27. package/lib/cjs/curve/LineString3d.js.map +1 -1
  28. package/lib/cjs/curve/Loop.js +1 -1
  29. package/lib/cjs/curve/Loop.js.map +1 -1
  30. package/lib/cjs/curve/Query/PlanarSubdivision.d.ts +2 -2
  31. package/lib/cjs/curve/Query/PlanarSubdivision.js +2 -2
  32. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  33. package/lib/cjs/curve/RegionOps.d.ts +1 -2
  34. package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
  35. package/lib/cjs/curve/RegionOps.js.map +1 -1
  36. package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts +5 -8
  37. package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
  38. package/lib/cjs/curve/RegionOpsClassificationSweeps.js +12 -12
  39. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  40. package/lib/cjs/geometry3d/GrowableXYArray.d.ts +2 -2
  41. package/lib/cjs/geometry3d/GrowableXYArray.d.ts.map +1 -1
  42. package/lib/cjs/geometry3d/GrowableXYArray.js +1 -1
  43. package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
  44. package/lib/cjs/geometry3d/GrowableXYZArray.d.ts +2 -3
  45. package/lib/cjs/geometry3d/GrowableXYZArray.d.ts.map +1 -1
  46. package/lib/cjs/geometry3d/GrowableXYZArray.js +1 -1
  47. package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
  48. package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts +18 -1
  49. package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
  50. package/lib/cjs/geometry3d/IndexedXYZCollection.js +13 -0
  51. package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
  52. package/lib/cjs/geometry3d/PointHelpers.d.ts +1 -2
  53. package/lib/cjs/geometry3d/PointHelpers.d.ts.map +1 -1
  54. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  55. package/lib/cjs/geometry3d/PointStreaming.d.ts +1 -1
  56. package/lib/cjs/geometry3d/PointStreaming.d.ts.map +1 -1
  57. package/lib/cjs/geometry3d/PointStreaming.js +3 -1
  58. package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
  59. package/lib/cjs/geometry3d/PolygonOps.d.ts +68 -1
  60. package/lib/cjs/geometry3d/PolygonOps.d.ts.map +1 -1
  61. package/lib/cjs/geometry3d/PolygonOps.js +152 -4
  62. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  63. package/lib/cjs/geometry3d/PolylineOps.d.ts +23 -1
  64. package/lib/cjs/geometry3d/PolylineOps.d.ts.map +1 -1
  65. package/lib/cjs/geometry3d/PolylineOps.js +73 -1
  66. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
  67. package/lib/cjs/geometry3d/Range.d.ts +1 -1
  68. package/lib/cjs/geometry3d/Range.d.ts.map +1 -1
  69. package/lib/cjs/geometry3d/Range.js.map +1 -1
  70. package/lib/cjs/geometry3d/Transform.js +1 -1
  71. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  72. package/lib/cjs/geometry3d/YawPitchRollAngles.d.ts +7 -5
  73. package/lib/cjs/geometry3d/YawPitchRollAngles.d.ts.map +1 -1
  74. package/lib/cjs/geometry3d/YawPitchRollAngles.js +8 -6
  75. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  76. package/lib/cjs/numerics/Polynomials.d.ts +13 -1
  77. package/lib/cjs/numerics/Polynomials.d.ts.map +1 -1
  78. package/lib/cjs/numerics/Polynomials.js +13 -1
  79. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  80. package/lib/cjs/polyface/FacetLocationDetail.d.ts +28 -5
  81. package/lib/cjs/polyface/FacetLocationDetail.d.ts.map +1 -1
  82. package/lib/cjs/polyface/FacetLocationDetail.js +50 -15
  83. package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
  84. package/lib/cjs/polyface/Polyface.d.ts +1 -1
  85. package/lib/cjs/polyface/Polyface.d.ts.map +1 -1
  86. package/lib/cjs/polyface/Polyface.js.map +1 -1
  87. package/lib/cjs/polyface/PolyfaceQuery.d.ts +7 -3
  88. package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
  89. package/lib/cjs/polyface/PolyfaceQuery.js +23 -0
  90. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  91. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.d.ts +52 -0
  92. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.d.ts.map +1 -0
  93. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js +78 -0
  94. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -0
  95. package/lib/cjs/polyface/RangeTree/MinimumValueTester.d.ts +60 -0
  96. package/lib/cjs/polyface/RangeTree/MinimumValueTester.d.ts.map +1 -0
  97. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js +96 -0
  98. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -0
  99. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.d.ts +57 -0
  100. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.d.ts.map +1 -0
  101. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js +73 -0
  102. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -0
  103. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.d.ts +57 -0
  104. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.d.ts.map +1 -0
  105. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js +84 -0
  106. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -0
  107. package/lib/cjs/polyface/RangeTree/RangeTreeNode.d.ts +274 -0
  108. package/lib/cjs/polyface/RangeTree/RangeTreeNode.d.ts.map +1 -0
  109. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js +505 -0
  110. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -0
  111. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.d.ts +204 -0
  112. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.d.ts.map +1 -0
  113. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js +383 -0
  114. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -0
  115. package/lib/cjs/serialization/GeometrySamples.d.ts +36 -3
  116. package/lib/cjs/serialization/GeometrySamples.d.ts.map +1 -1
  117. package/lib/cjs/serialization/GeometrySamples.js +93 -4
  118. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  119. package/lib/cjs/solid/LinearSweep.d.ts +1 -1
  120. package/lib/cjs/solid/LinearSweep.js +1 -1
  121. package/lib/cjs/solid/LinearSweep.js.map +1 -1
  122. package/lib/cjs/solid/SweepContour.d.ts +2 -2
  123. package/lib/cjs/solid/SweepContour.d.ts.map +1 -1
  124. package/lib/cjs/solid/SweepContour.js.map +1 -1
  125. package/lib/cjs/topology/Graph.d.ts +5 -6
  126. package/lib/cjs/topology/Graph.d.ts.map +1 -1
  127. package/lib/cjs/topology/Graph.js +7 -6
  128. package/lib/cjs/topology/Graph.js.map +1 -1
  129. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +4 -4
  130. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js +5 -5
  131. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  132. package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts +108 -71
  133. package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
  134. package/lib/cjs/topology/HalfEdgeGraphSearch.js +223 -109
  135. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  136. package/lib/cjs/topology/Merging.d.ts +1 -1
  137. package/lib/cjs/topology/Merging.d.ts.map +1 -1
  138. package/lib/cjs/topology/Merging.js.map +1 -1
  139. package/lib/cjs/topology/SignedDataSummary.d.ts +13 -13
  140. package/lib/cjs/topology/SignedDataSummary.d.ts.map +1 -1
  141. package/lib/cjs/topology/SignedDataSummary.js +3 -3
  142. package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
  143. package/lib/cjs/topology/Triangulation.d.ts +1 -12
  144. package/lib/cjs/topology/Triangulation.d.ts.map +1 -1
  145. package/lib/cjs/topology/Triangulation.js.map +1 -1
  146. package/lib/cjs/topology/XYParitySearchContext.d.ts +27 -21
  147. package/lib/cjs/topology/XYParitySearchContext.d.ts.map +1 -1
  148. package/lib/cjs/topology/XYParitySearchContext.js +73 -71
  149. package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
  150. package/lib/esm/Geometry.d.ts +17 -0
  151. package/lib/esm/Geometry.d.ts.map +1 -1
  152. package/lib/esm/Geometry.js +14 -0
  153. package/lib/esm/Geometry.js.map +1 -1
  154. package/lib/esm/core-geometry.d.ts +3 -2
  155. package/lib/esm/core-geometry.d.ts.map +1 -1
  156. package/lib/esm/core-geometry.js +3 -2
  157. package/lib/esm/core-geometry.js.map +1 -1
  158. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +2 -2
  159. package/lib/esm/curve/CurveChainWithDistanceIndex.js +3 -3
  160. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  161. package/lib/esm/curve/CurveExtendMode.d.ts +7 -6
  162. package/lib/esm/curve/CurveExtendMode.d.ts.map +1 -1
  163. package/lib/esm/curve/CurveExtendMode.js +7 -6
  164. package/lib/esm/curve/CurveExtendMode.js.map +1 -1
  165. package/lib/esm/curve/CurveLocationDetail.d.ts.map +1 -1
  166. package/lib/esm/curve/CurveLocationDetail.js +23 -18
  167. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  168. package/lib/esm/curve/LineSegment3d.d.ts +14 -4
  169. package/lib/esm/curve/LineSegment3d.d.ts.map +1 -1
  170. package/lib/esm/curve/LineSegment3d.js +108 -3
  171. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  172. package/lib/esm/curve/LineString3d.d.ts +41 -8
  173. package/lib/esm/curve/LineString3d.d.ts.map +1 -1
  174. package/lib/esm/curve/LineString3d.js +53 -15
  175. package/lib/esm/curve/LineString3d.js.map +1 -1
  176. package/lib/esm/curve/Loop.js +1 -1
  177. package/lib/esm/curve/Loop.js.map +1 -1
  178. package/lib/esm/curve/Query/PlanarSubdivision.d.ts +2 -2
  179. package/lib/esm/curve/Query/PlanarSubdivision.js +2 -2
  180. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  181. package/lib/esm/curve/RegionOps.d.ts +1 -2
  182. package/lib/esm/curve/RegionOps.d.ts.map +1 -1
  183. package/lib/esm/curve/RegionOps.js +1 -1
  184. package/lib/esm/curve/RegionOps.js.map +1 -1
  185. package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts +5 -8
  186. package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
  187. package/lib/esm/curve/RegionOpsClassificationSweeps.js +12 -12
  188. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  189. package/lib/esm/geometry3d/GrowableXYArray.d.ts +2 -2
  190. package/lib/esm/geometry3d/GrowableXYArray.d.ts.map +1 -1
  191. package/lib/esm/geometry3d/GrowableXYArray.js +1 -1
  192. package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
  193. package/lib/esm/geometry3d/GrowableXYZArray.d.ts +2 -3
  194. package/lib/esm/geometry3d/GrowableXYZArray.d.ts.map +1 -1
  195. package/lib/esm/geometry3d/GrowableXYZArray.js +1 -1
  196. package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
  197. package/lib/esm/geometry3d/IndexedXYZCollection.d.ts +18 -1
  198. package/lib/esm/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
  199. package/lib/esm/geometry3d/IndexedXYZCollection.js +13 -0
  200. package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
  201. package/lib/esm/geometry3d/PointHelpers.d.ts +1 -2
  202. package/lib/esm/geometry3d/PointHelpers.d.ts.map +1 -1
  203. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  204. package/lib/esm/geometry3d/PointStreaming.d.ts +1 -1
  205. package/lib/esm/geometry3d/PointStreaming.d.ts.map +1 -1
  206. package/lib/esm/geometry3d/PointStreaming.js +3 -1
  207. package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
  208. package/lib/esm/geometry3d/PolygonOps.d.ts +68 -1
  209. package/lib/esm/geometry3d/PolygonOps.d.ts.map +1 -1
  210. package/lib/esm/geometry3d/PolygonOps.js +150 -3
  211. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  212. package/lib/esm/geometry3d/PolylineOps.d.ts +23 -1
  213. package/lib/esm/geometry3d/PolylineOps.d.ts.map +1 -1
  214. package/lib/esm/geometry3d/PolylineOps.js +73 -1
  215. package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
  216. package/lib/esm/geometry3d/Range.d.ts +1 -1
  217. package/lib/esm/geometry3d/Range.d.ts.map +1 -1
  218. package/lib/esm/geometry3d/Range.js.map +1 -1
  219. package/lib/esm/geometry3d/Transform.js +1 -1
  220. package/lib/esm/geometry3d/Transform.js.map +1 -1
  221. package/lib/esm/geometry3d/YawPitchRollAngles.d.ts +7 -5
  222. package/lib/esm/geometry3d/YawPitchRollAngles.d.ts.map +1 -1
  223. package/lib/esm/geometry3d/YawPitchRollAngles.js +8 -6
  224. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  225. package/lib/esm/numerics/Polynomials.d.ts +13 -1
  226. package/lib/esm/numerics/Polynomials.d.ts.map +1 -1
  227. package/lib/esm/numerics/Polynomials.js +13 -1
  228. package/lib/esm/numerics/Polynomials.js.map +1 -1
  229. package/lib/esm/polyface/FacetLocationDetail.d.ts +28 -5
  230. package/lib/esm/polyface/FacetLocationDetail.d.ts.map +1 -1
  231. package/lib/esm/polyface/FacetLocationDetail.js +48 -14
  232. package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
  233. package/lib/esm/polyface/Polyface.d.ts +1 -1
  234. package/lib/esm/polyface/Polyface.d.ts.map +1 -1
  235. package/lib/esm/polyface/Polyface.js.map +1 -1
  236. package/lib/esm/polyface/PolyfaceQuery.d.ts +7 -3
  237. package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
  238. package/lib/esm/polyface/PolyfaceQuery.js +23 -0
  239. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  240. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.d.ts +52 -0
  241. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.d.ts.map +1 -0
  242. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js +74 -0
  243. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -0
  244. package/lib/esm/polyface/RangeTree/MinimumValueTester.d.ts +60 -0
  245. package/lib/esm/polyface/RangeTree/MinimumValueTester.d.ts.map +1 -0
  246. package/lib/esm/polyface/RangeTree/MinimumValueTester.js +92 -0
  247. package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -0
  248. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.d.ts +57 -0
  249. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.d.ts.map +1 -0
  250. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js +69 -0
  251. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -0
  252. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.d.ts +57 -0
  253. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.d.ts.map +1 -0
  254. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js +80 -0
  255. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -0
  256. package/lib/esm/polyface/RangeTree/RangeTreeNode.d.ts +274 -0
  257. package/lib/esm/polyface/RangeTree/RangeTreeNode.d.ts.map +1 -0
  258. package/lib/esm/polyface/RangeTree/RangeTreeNode.js +497 -0
  259. package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -0
  260. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.d.ts +204 -0
  261. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.d.ts.map +1 -0
  262. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js +374 -0
  263. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -0
  264. package/lib/esm/serialization/GeometrySamples.d.ts +36 -3
  265. package/lib/esm/serialization/GeometrySamples.d.ts.map +1 -1
  266. package/lib/esm/serialization/GeometrySamples.js +93 -4
  267. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  268. package/lib/esm/solid/LinearSweep.d.ts +1 -1
  269. package/lib/esm/solid/LinearSweep.js +1 -1
  270. package/lib/esm/solid/LinearSweep.js.map +1 -1
  271. package/lib/esm/solid/SweepContour.d.ts +2 -2
  272. package/lib/esm/solid/SweepContour.d.ts.map +1 -1
  273. package/lib/esm/solid/SweepContour.js.map +1 -1
  274. package/lib/esm/topology/Graph.d.ts +5 -6
  275. package/lib/esm/topology/Graph.d.ts.map +1 -1
  276. package/lib/esm/topology/Graph.js +7 -6
  277. package/lib/esm/topology/Graph.js.map +1 -1
  278. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +4 -4
  279. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js +5 -5
  280. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  281. package/lib/esm/topology/HalfEdgeGraphSearch.d.ts +108 -71
  282. package/lib/esm/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
  283. package/lib/esm/topology/HalfEdgeGraphSearch.js +223 -109
  284. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  285. package/lib/esm/topology/Merging.d.ts +1 -1
  286. package/lib/esm/topology/Merging.d.ts.map +1 -1
  287. package/lib/esm/topology/Merging.js.map +1 -1
  288. package/lib/esm/topology/SignedDataSummary.d.ts +13 -13
  289. package/lib/esm/topology/SignedDataSummary.d.ts.map +1 -1
  290. package/lib/esm/topology/SignedDataSummary.js +3 -3
  291. package/lib/esm/topology/SignedDataSummary.js.map +1 -1
  292. package/lib/esm/topology/Triangulation.d.ts +1 -12
  293. package/lib/esm/topology/Triangulation.d.ts.map +1 -1
  294. package/lib/esm/topology/Triangulation.js.map +1 -1
  295. package/lib/esm/topology/XYParitySearchContext.d.ts +27 -21
  296. package/lib/esm/topology/XYParitySearchContext.d.ts.map +1 -1
  297. package/lib/esm/topology/XYParitySearchContext.js +73 -71
  298. package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
  299. package/package.json +3 -3
@@ -0,0 +1,204 @@
1
+ /** @packageDocumentation
2
+ * @module RangeSearch
3
+ */
4
+ import { CurveLocationDetail, CurveLocationDetailPair } from "../../curve/CurveLocationDetail";
5
+ import { Point3d } from "../../geometry3d/Point3dVector3d";
6
+ import { Range3d } from "../../geometry3d/Range";
7
+ import { FacetLocationDetail, FacetLocationDetailPair } from "../FacetLocationDetail";
8
+ import { LineString3dRangeTreeContext } from "./LineString3dRangeTreeContext";
9
+ import { MinimumValueTester } from "./MinimumValueTester";
10
+ import { Point3dArrayRangeTreeContext } from "./Point3dArrayRangeTreeContext";
11
+ import { PolyfaceRangeTreeContext } from "./PolyfaceRangeTreeContext";
12
+ import { SingleTreeSearchHandler, TwoTreeDistanceMinimizationSearchHandler } from "./RangeTreeNode";
13
+ /**
14
+ * Helper class for searching for the closest point in a set of points.
15
+ * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).
16
+ * @internal
17
+ */
18
+ export declare class SingleTreeSearchHandlerForClosestPointInArray extends SingleTreeSearchHandler<number> {
19
+ /** The calling context */
20
+ context: Point3dArrayRangeTreeContext;
21
+ /** Evolving search state */
22
+ searchState: MinimumValueTester<number>;
23
+ /** Space point for the search */
24
+ spacePoint: Point3d;
25
+ /**
26
+ * Constructor
27
+ * @param spacePoint cloned
28
+ * @param context captured
29
+ * @param maxDist collect points at no more than this distance from spacePoint
30
+ */
31
+ constructor(spacePoint: Point3d, context: Point3dArrayRangeTreeContext, maxDist?: number);
32
+ /** Return the current closest point */
33
+ getResult(): CurveLocationDetail | undefined;
34
+ /** Return the collected closest points (if collecting) */
35
+ getSavedItems(): CurveLocationDetail[] | undefined;
36
+ /**
37
+ * Return true if appData within the range should be offered to `processAppData`.
38
+ * @param range range containing items to be tested.
39
+ * @returns true if the spacePoint is within the range or close enough that a point in the range could be the closest.
40
+ */
41
+ isRangeActive(range: Range3d): boolean;
42
+ /** Test a point indexed in the range tree as candidate for "closest" */
43
+ processAppData(candidateIndex: number): void;
44
+ }
45
+ /**
46
+ * Helper class for searching for the closest approach between sets of points.
47
+ * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).
48
+ * @internal
49
+ */
50
+ export declare class TwoTreeSearchHandlerForPoint3dArrayPoint3dArrayCloseApproach extends TwoTreeDistanceMinimizationSearchHandler<number> {
51
+ /** Context for first set of points */
52
+ contextA: Point3dArrayRangeTreeContext;
53
+ /** Context for second set of points */
54
+ contextB: Point3dArrayRangeTreeContext;
55
+ /** Search state with current min distance point pair */
56
+ searchState: MinimumValueTester<CurveLocationDetailPair>;
57
+ /**
58
+ * Constructor
59
+ * @param contextA captured
60
+ * @param contextB captured
61
+ * @param maxDist collect points at no more than this separation distance
62
+ */
63
+ constructor(contextA: Point3dArrayRangeTreeContext, contextB: Point3dArrayRangeTreeContext, maxDist?: number);
64
+ /** Return the current closest approach */
65
+ getResult(): CurveLocationDetailPair | undefined;
66
+ /** Return the collected close approaches (if collecting) */
67
+ getSavedItems(): CurveLocationDetailPair[] | undefined;
68
+ /** Get current min distance */
69
+ getCurrentDistance(): number;
70
+ /** Compute and test the distance between two points, given their indices. */
71
+ processAppDataPair(indexA: number, indexB: number): void;
72
+ }
73
+ /**
74
+ * Helper class for searching for the closest point in a linestring.
75
+ * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).
76
+ * @internal
77
+ */
78
+ export declare class SingleTreeSearchHandlerForClosestPointOnLineString3d extends SingleTreeSearchHandler<number> {
79
+ /** The calling context */
80
+ context: LineString3dRangeTreeContext;
81
+ /** Evolving search state */
82
+ searchState: MinimumValueTester<CurveLocationDetail>;
83
+ /** Space point for the search */
84
+ spacePoint: Point3d;
85
+ /**
86
+ * Constructor
87
+ * @param spacePoint cloned
88
+ * @param context captured
89
+ * @param maxDist collect points at no more than this distance from spacePoint
90
+ */
91
+ constructor(spacePoint: Point3d, context: LineString3dRangeTreeContext, maxDist?: number);
92
+ /** Return the current closest point */
93
+ getResult(): CurveLocationDetail | undefined;
94
+ /** Return the collected closest points (if collecting) */
95
+ getSavedItems(): CurveLocationDetail[] | undefined;
96
+ /**
97
+ * Return true if appData within the range should be offered to `processAppData`.
98
+ * @param range range containing items to be tested.
99
+ * @returns true if the spacePoint is within the range or close enough that a point in the range could be the closest.
100
+ */
101
+ isRangeActive(range: Range3d): boolean;
102
+ private _workSegment?;
103
+ /** Test a segment indexed in the range tree as candidate for "closest" */
104
+ processAppData(candidateIndex: number): void;
105
+ }
106
+ /**
107
+ * Helper class for searching for the closest approach between linestrings.
108
+ * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).
109
+ * @internal
110
+ */
111
+ export declare class TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach extends TwoTreeDistanceMinimizationSearchHandler<number> {
112
+ /** Context for first polyline */
113
+ contextA: LineString3dRangeTreeContext;
114
+ /** Context for second polyline */
115
+ contextB: LineString3dRangeTreeContext;
116
+ /** Search state with current min distance point pair */
117
+ searchState: MinimumValueTester<CurveLocationDetailPair>;
118
+ /**
119
+ * Constructor
120
+ * @param contextA captured
121
+ * @param contextB captured
122
+ * @param maxDist collect points at no more than this separation distance
123
+ */
124
+ constructor(contextA: LineString3dRangeTreeContext, contextB: LineString3dRangeTreeContext, maxDist?: number);
125
+ /**
126
+ * Return the current closest approach.
127
+ * * Details contain linestring *and* segment data, cf. [[LineString3d.convertLocalToGlobalDetail]]
128
+ */
129
+ getResult(): CurveLocationDetailPair | undefined;
130
+ /** Return the collected close approaches (if collecting) */
131
+ getSavedItems(): CurveLocationDetailPair[] | undefined;
132
+ /** Get current min distance */
133
+ getCurrentDistance(): number;
134
+ private static _workSegmentA?;
135
+ private static _workSegmentB?;
136
+ /** Compute and test the closest approach between two segments, given their indices. */
137
+ processAppDataPair(indexA: number, indexB: number): void;
138
+ }
139
+ /**
140
+ * Helper class for searching for the closest point in a polyface.
141
+ * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring FacetLocationDetail).
142
+ * @internal
143
+ */
144
+ export declare class SingleTreeSearchHandlerForClosestPointOnPolyface extends SingleTreeSearchHandler<number> {
145
+ /** The calling context */
146
+ context: PolyfaceRangeTreeContext;
147
+ /** Evolving search state */
148
+ searchState: MinimumValueTester<FacetLocationDetail>;
149
+ /** Space point for the search */
150
+ spacePoint: Point3d;
151
+ /** Whether to include facet interior in search */
152
+ searchFacetInterior: boolean;
153
+ /**
154
+ * Constructor
155
+ * @param spacePoint cloned
156
+ * @param context captured
157
+ * @param maxDist collect points at no more than this distance from spacePoint
158
+ * @param searchFacetInterior true: search facet interior + boundary; false: just boundary
159
+ */
160
+ constructor(spacePoint: Point3d, context: PolyfaceRangeTreeContext, maxDist?: number, searchFacetInterior?: boolean);
161
+ /** Return the current closest point */
162
+ getResult(): FacetLocationDetail | undefined;
163
+ /** Return the collected closest points (if collecting) */
164
+ getSavedItems(): FacetLocationDetail[] | undefined;
165
+ /**
166
+ * Return true if appData within the range should be offered to `processAppData`.
167
+ * @param range range containing items to be tested.
168
+ * @returns true if the spacePoint is within the range or close enough that a point in the range could be the closest.
169
+ */
170
+ isRangeActive(range: Range3d): boolean;
171
+ /** Test a facet indexed in the range tree as candidate for "closest" */
172
+ processAppData(candidateIndex: number): void;
173
+ }
174
+ /**
175
+ * Helper class for searching for the closest approach between polyfaces.
176
+ * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring FacetLocationDetail).
177
+ * @internal
178
+ */
179
+ export declare class TwoTreeSearchHandlerForFacetFacetCloseApproach extends TwoTreeDistanceMinimizationSearchHandler<number> {
180
+ /** Context for first polyface */
181
+ contextA: PolyfaceRangeTreeContext;
182
+ /** Context for second polyface */
183
+ contextB: PolyfaceRangeTreeContext;
184
+ /** Search state with current min distance and facet pair */
185
+ searchState: MinimumValueTester<FacetLocationDetailPair>;
186
+ /** Whether to include facet interior in search */
187
+ searchFacetInterior: boolean;
188
+ /** Constructor
189
+ * @param contextA captured
190
+ * @param contextB captured
191
+ * @param maxDist collect points at no more than this separation distance
192
+ * @param searchFacetInterior true: search facet interior + boundary; false: just boundary
193
+ */
194
+ constructor(contextA: PolyfaceRangeTreeContext, contextB: PolyfaceRangeTreeContext, maxDist?: number, searchFacetInterior?: boolean);
195
+ /** Return the facets with closest approach */
196
+ getResult(): FacetLocationDetailPair | undefined;
197
+ /** Return the collected close approaches (if collecting) */
198
+ getSavedItems(): FacetLocationDetailPair[] | undefined;
199
+ /** Get current min distance */
200
+ getCurrentDistance(): number;
201
+ /** Compute and test the closest approach between two facets, given their indices. */
202
+ processAppDataPair(indexA: number, indexB: number): void;
203
+ }
204
+ //# sourceMappingURL=RangeTreeSearchHandlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RangeTreeSearchHandlers.d.ts","sourceRoot":"","sources":["../../../../src/polyface/RangeTree/RangeTreeSearchHandlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,383 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ /** @packageDocumentation
7
+ * @module RangeSearch
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.TwoTreeSearchHandlerForFacetFacetCloseApproach = exports.SingleTreeSearchHandlerForClosestPointOnPolyface = exports.TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach = exports.SingleTreeSearchHandlerForClosestPointOnLineString3d = exports.TwoTreeSearchHandlerForPoint3dArrayPoint3dArrayCloseApproach = exports.SingleTreeSearchHandlerForClosestPointInArray = void 0;
11
+ const CurveLocationDetail_1 = require("../../curve/CurveLocationDetail");
12
+ const LineSegment3d_1 = require("../../curve/LineSegment3d");
13
+ const LineString3d_1 = require("../../curve/LineString3d");
14
+ const PolygonOps_1 = require("../../geometry3d/PolygonOps");
15
+ const FacetLocationDetail_1 = require("../FacetLocationDetail");
16
+ const MinimumValueTester_1 = require("./MinimumValueTester");
17
+ const RangeTreeNode_1 = require("./RangeTreeNode");
18
+ /**
19
+ * Helper class for searching for the closest point in a set of points.
20
+ * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).
21
+ * @internal
22
+ */
23
+ class SingleTreeSearchHandlerForClosestPointInArray extends RangeTreeNode_1.SingleTreeSearchHandler {
24
+ /**
25
+ * Constructor
26
+ * @param spacePoint cloned
27
+ * @param context captured
28
+ * @param maxDist collect points at no more than this distance from spacePoint
29
+ */
30
+ constructor(spacePoint, context, maxDist) {
31
+ super();
32
+ this.context = context;
33
+ if (maxDist !== undefined && maxDist < 0)
34
+ maxDist = undefined;
35
+ this.searchState = MinimumValueTester_1.MinimumValueTester.create(maxDist);
36
+ this.spacePoint = spacePoint.clone();
37
+ }
38
+ /** Return the current closest point */
39
+ getResult() {
40
+ if (this.searchState.minValue !== undefined && this.searchState.itemAtMinValue !== undefined) {
41
+ const iPoint = this.searchState.itemAtMinValue;
42
+ const cld = CurveLocationDetail_1.CurveLocationDetail.createCurveFractionPoint(undefined, iPoint, this.context.points[iPoint]);
43
+ cld.a = this.searchState.minValue;
44
+ return cld;
45
+ }
46
+ return undefined;
47
+ }
48
+ /** Return the collected closest points (if collecting) */
49
+ getSavedItems() {
50
+ if (this.searchState.savedItems.length === 0)
51
+ return undefined;
52
+ const cldArray = [];
53
+ for (let i = 0; i < this.searchState.savedItems.length; ++i) {
54
+ const iPoint = this.searchState.savedItems[i];
55
+ const cld = CurveLocationDetail_1.CurveLocationDetail.createCurveFractionPoint(undefined, iPoint, this.context.points[iPoint]);
56
+ cld.a = this.searchState.savedValues[i];
57
+ cldArray.push(cld);
58
+ }
59
+ return cldArray;
60
+ }
61
+ /**
62
+ * Return true if appData within the range should be offered to `processAppData`.
63
+ * @param range range containing items to be tested.
64
+ * @returns true if the spacePoint is within the range or close enough that a point in the range could be the closest.
65
+ */
66
+ isRangeActive(range) {
67
+ const dMin = range.distanceToPoint(this.spacePoint);
68
+ if (this.searchState.isNewMinValue(dMin)) {
69
+ this.context.numRangeTestTrue++;
70
+ return true;
71
+ }
72
+ this.context.numRangeTestFalse++;
73
+ return false;
74
+ }
75
+ /** Test a point indexed in the range tree as candidate for "closest" */
76
+ processAppData(candidateIndex) {
77
+ const d = this.spacePoint.distance(this.context.points[candidateIndex]);
78
+ this.context.numPointTest++;
79
+ this.searchState.testAndSave(candidateIndex, d);
80
+ }
81
+ }
82
+ exports.SingleTreeSearchHandlerForClosestPointInArray = SingleTreeSearchHandlerForClosestPointInArray;
83
+ /**
84
+ * Helper class for searching for the closest approach between sets of points.
85
+ * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).
86
+ * @internal
87
+ */
88
+ class TwoTreeSearchHandlerForPoint3dArrayPoint3dArrayCloseApproach extends RangeTreeNode_1.TwoTreeDistanceMinimizationSearchHandler {
89
+ /**
90
+ * Constructor
91
+ * @param contextA captured
92
+ * @param contextB captured
93
+ * @param maxDist collect points at no more than this separation distance
94
+ */
95
+ constructor(contextA, contextB, maxDist) {
96
+ super();
97
+ this.contextA = contextA;
98
+ this.contextB = contextB;
99
+ if (maxDist !== undefined && maxDist < 0)
100
+ maxDist = undefined;
101
+ this.searchState = MinimumValueTester_1.MinimumValueTester.create(maxDist);
102
+ }
103
+ /** Return the current closest approach */
104
+ getResult() {
105
+ if (this.searchState.minValue !== undefined) {
106
+ return this.searchState.itemAtMinValue;
107
+ }
108
+ return undefined;
109
+ }
110
+ /** Return the collected close approaches (if collecting) */
111
+ getSavedItems() {
112
+ if (this.searchState.savedItems.length > 0) {
113
+ return this.searchState.savedItems;
114
+ }
115
+ return undefined;
116
+ }
117
+ /** Get current min distance */
118
+ getCurrentDistance() {
119
+ const d = this.searchState.minValue;
120
+ return d === undefined ? Number.MAX_VALUE : d;
121
+ }
122
+ /** Compute and test the distance between two points, given their indices. */
123
+ processAppDataPair(indexA, indexB) {
124
+ this.contextA.numPointTest++;
125
+ const pointA = this.contextA.points[indexA];
126
+ const pointB = this.contextB.points[indexB];
127
+ const d = pointA.distance(pointB);
128
+ if (this.searchState.isNewMinOrTrigger(d)) {
129
+ const cldPair = CurveLocationDetail_1.CurveLocationDetailPair.createCapture(CurveLocationDetail_1.CurveLocationDetail.createCurveFractionPoint(undefined, indexA, pointA), CurveLocationDetail_1.CurveLocationDetail.createCurveFractionPoint(undefined, indexB, pointB));
130
+ cldPair.detailA.a = cldPair.detailB.a = d;
131
+ this.searchState.testAndSave(cldPair, d);
132
+ }
133
+ }
134
+ }
135
+ exports.TwoTreeSearchHandlerForPoint3dArrayPoint3dArrayCloseApproach = TwoTreeSearchHandlerForPoint3dArrayPoint3dArrayCloseApproach;
136
+ /**
137
+ * Helper class for searching for the closest point in a linestring.
138
+ * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).
139
+ * @internal
140
+ */
141
+ class SingleTreeSearchHandlerForClosestPointOnLineString3d extends RangeTreeNode_1.SingleTreeSearchHandler {
142
+ /**
143
+ * Constructor
144
+ * @param spacePoint cloned
145
+ * @param context captured
146
+ * @param maxDist collect points at no more than this distance from spacePoint
147
+ */
148
+ constructor(spacePoint, context, maxDist) {
149
+ super();
150
+ this.context = context;
151
+ if (maxDist !== undefined && maxDist < 0)
152
+ maxDist = undefined;
153
+ this.searchState = MinimumValueTester_1.MinimumValueTester.create(maxDist);
154
+ this.spacePoint = spacePoint.clone();
155
+ }
156
+ /** Return the current closest point */
157
+ getResult() {
158
+ if (this.searchState.minValue !== undefined && this.searchState.itemAtMinValue !== undefined) {
159
+ return this.searchState.itemAtMinValue;
160
+ }
161
+ return undefined;
162
+ }
163
+ /** Return the collected closest points (if collecting) */
164
+ getSavedItems() {
165
+ if (this.searchState.savedItems.length > 0) {
166
+ return this.searchState.savedItems;
167
+ }
168
+ return undefined;
169
+ }
170
+ /**
171
+ * Return true if appData within the range should be offered to `processAppData`.
172
+ * @param range range containing items to be tested.
173
+ * @returns true if the spacePoint is within the range or close enough that a point in the range could be the closest.
174
+ */
175
+ isRangeActive(range) {
176
+ const dMin = range.distanceToPoint(this.spacePoint);
177
+ if (this.searchState.isNewMinValue(dMin)) {
178
+ this.context.numRangeTestTrue++;
179
+ return true;
180
+ }
181
+ this.context.numRangeTestFalse++;
182
+ return false;
183
+ }
184
+ /** Test a segment indexed in the range tree as candidate for "closest" */
185
+ processAppData(candidateIndex) {
186
+ const segment = this._workSegment = this.context.lineString.getIndexedSegment(candidateIndex, this._workSegment);
187
+ if (segment) {
188
+ const cld = segment.closestPoint(this.spacePoint, false);
189
+ LineString3d_1.LineString3d.convertLocalToGlobalDetail(cld, candidateIndex, this.context.lineString.numEdges(), this.context.lineString);
190
+ this.context.numPointTest++;
191
+ this.searchState.testAndSave(cld, cld.a);
192
+ }
193
+ }
194
+ }
195
+ exports.SingleTreeSearchHandlerForClosestPointOnLineString3d = SingleTreeSearchHandlerForClosestPointOnLineString3d;
196
+ /**
197
+ * Helper class for searching for the closest approach between linestrings.
198
+ * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).
199
+ * @internal
200
+ */
201
+ class TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach extends RangeTreeNode_1.TwoTreeDistanceMinimizationSearchHandler {
202
+ /**
203
+ * Constructor
204
+ * @param contextA captured
205
+ * @param contextB captured
206
+ * @param maxDist collect points at no more than this separation distance
207
+ */
208
+ constructor(contextA, contextB, maxDist) {
209
+ super();
210
+ this.contextA = contextA;
211
+ this.contextB = contextB;
212
+ if (maxDist !== undefined && maxDist < 0)
213
+ maxDist = undefined;
214
+ this.searchState = MinimumValueTester_1.MinimumValueTester.create(maxDist);
215
+ }
216
+ /**
217
+ * Return the current closest approach.
218
+ * * Details contain linestring *and* segment data, cf. [[LineString3d.convertLocalToGlobalDetail]]
219
+ */
220
+ getResult() {
221
+ if (this.searchState.minValue !== undefined) {
222
+ return this.searchState.itemAtMinValue;
223
+ }
224
+ return undefined;
225
+ }
226
+ /** Return the collected close approaches (if collecting) */
227
+ getSavedItems() {
228
+ if (this.searchState.savedItems.length > 0) {
229
+ return this.searchState.savedItems;
230
+ }
231
+ return undefined;
232
+ }
233
+ /** Get current min distance */
234
+ getCurrentDistance() {
235
+ const d = this.searchState.minValue;
236
+ return d === undefined ? Number.MAX_VALUE : d;
237
+ }
238
+ /** Compute and test the closest approach between two segments, given their indices. */
239
+ processAppDataPair(indexA, indexB) {
240
+ this.contextA.numPointTest++;
241
+ const segA = TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach._workSegmentA =
242
+ this.contextA.lineString.getIndexedSegment(indexA, TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach._workSegmentA);
243
+ const segB = TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach._workSegmentB =
244
+ this.contextB.lineString.getIndexedSegment(indexB, TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach._workSegmentB);
245
+ const cldPair = LineSegment3d_1.LineSegment3d.closestApproach(segA, false, segB, false);
246
+ if (cldPair && this.searchState.isNewMinOrTrigger(cldPair.detailA.a)) {
247
+ LineString3d_1.LineString3d.convertLocalToGlobalDetail(cldPair.detailA, indexA, this.contextA.lineString.numEdges(), this.contextA.lineString);
248
+ LineString3d_1.LineString3d.convertLocalToGlobalDetail(cldPair.detailB, indexB, this.contextB.lineString.numEdges(), this.contextB.lineString);
249
+ this.searchState.testAndSave(cldPair, cldPair.detailA.a);
250
+ }
251
+ }
252
+ }
253
+ exports.TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach = TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach;
254
+ /**
255
+ * Helper class for searching for the closest point in a polyface.
256
+ * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring FacetLocationDetail).
257
+ * @internal
258
+ */
259
+ class SingleTreeSearchHandlerForClosestPointOnPolyface extends RangeTreeNode_1.SingleTreeSearchHandler {
260
+ /**
261
+ * Constructor
262
+ * @param spacePoint cloned
263
+ * @param context captured
264
+ * @param maxDist collect points at no more than this distance from spacePoint
265
+ * @param searchFacetInterior true: search facet interior + boundary; false: just boundary
266
+ */
267
+ constructor(spacePoint, context, maxDist, searchFacetInterior = false) {
268
+ super();
269
+ this.context = context;
270
+ if (maxDist !== undefined && maxDist < 0)
271
+ maxDist = undefined;
272
+ this.searchState = MinimumValueTester_1.MinimumValueTester.create(maxDist);
273
+ this.spacePoint = spacePoint.clone();
274
+ this.searchFacetInterior = searchFacetInterior;
275
+ }
276
+ /** Return the current closest point */
277
+ getResult() {
278
+ if (this.searchState.minValue !== undefined && this.searchState.itemAtMinValue !== undefined) {
279
+ return this.searchState.itemAtMinValue;
280
+ }
281
+ return undefined;
282
+ }
283
+ /** Return the collected closest points (if collecting) */
284
+ getSavedItems() {
285
+ if (this.searchState.savedItems.length > 0) {
286
+ return this.searchState.savedItems;
287
+ }
288
+ return undefined;
289
+ }
290
+ /**
291
+ * Return true if appData within the range should be offered to `processAppData`.
292
+ * @param range range containing items to be tested.
293
+ * @returns true if the spacePoint is within the range or close enough that a point in the range could be the closest.
294
+ */
295
+ isRangeActive(range) {
296
+ const dMin = range.distanceToPoint(this.spacePoint);
297
+ if (this.searchState.isNewMinValue(dMin)) {
298
+ this.context.numRangeTestTrue++;
299
+ return true;
300
+ }
301
+ this.context.numRangeTestFalse++;
302
+ return false;
303
+ }
304
+ /** Test a facet indexed in the range tree as candidate for "closest" */
305
+ processAppData(candidateIndex) {
306
+ this.context.visitor.setNumWrap(0); // so edgeCount === pointCount; closure point unnecessary for closestPoint[OnBoundary]
307
+ if (this.context.visitor.moveToReadIndex(candidateIndex)) {
308
+ let pld;
309
+ if (this.searchFacetInterior)
310
+ pld = PolygonOps_1.PolygonOps.closestPoint(this.context.visitor.point, this.spacePoint);
311
+ else
312
+ pld = PolygonOps_1.PolygonOps.closestPointOnBoundary(this.context.visitor.point, this.spacePoint);
313
+ this.context.numFacetTest++;
314
+ if (pld && this.searchState.isNewMinOrTrigger(pld.a)) {
315
+ const edgeCount = this.context.visitor.pointCount;
316
+ const fld = this.context.convexFacets
317
+ ? FacetLocationDetail_1.ConvexFacetLocationDetail.createCapture(this.context.visitor.currentReadIndex(), edgeCount, pld)
318
+ : FacetLocationDetail_1.NonConvexFacetLocationDetail.createCapture(this.context.visitor.currentReadIndex(), edgeCount, pld);
319
+ this.searchState.testAndSave(fld, pld.a);
320
+ }
321
+ }
322
+ }
323
+ }
324
+ exports.SingleTreeSearchHandlerForClosestPointOnPolyface = SingleTreeSearchHandlerForClosestPointOnPolyface;
325
+ /**
326
+ * Helper class for searching for the closest approach between polyfaces.
327
+ * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring FacetLocationDetail).
328
+ * @internal
329
+ */
330
+ class TwoTreeSearchHandlerForFacetFacetCloseApproach extends RangeTreeNode_1.TwoTreeDistanceMinimizationSearchHandler {
331
+ /** Constructor
332
+ * @param contextA captured
333
+ * @param contextB captured
334
+ * @param maxDist collect points at no more than this separation distance
335
+ * @param searchFacetInterior true: search facet interior + boundary; false: just boundary
336
+ */
337
+ constructor(contextA, contextB, maxDist, searchFacetInterior = false) {
338
+ super();
339
+ this.contextA = contextA;
340
+ this.contextB = contextB;
341
+ if (maxDist !== undefined && maxDist < 0)
342
+ maxDist = undefined;
343
+ this.searchState = MinimumValueTester_1.MinimumValueTester.create(maxDist);
344
+ this.searchFacetInterior = searchFacetInterior && contextA.convexFacets && contextB.convexFacets;
345
+ }
346
+ /** Return the facets with closest approach */
347
+ getResult() {
348
+ if (this.searchState.minValue !== undefined) {
349
+ return this.searchState.itemAtMinValue;
350
+ }
351
+ return undefined;
352
+ }
353
+ /** Return the collected close approaches (if collecting) */
354
+ getSavedItems() {
355
+ if (this.searchState.savedItems.length > 0) {
356
+ return this.searchState.savedItems;
357
+ }
358
+ return undefined;
359
+ }
360
+ /** Get current min distance */
361
+ getCurrentDistance() {
362
+ const d = this.searchState.minValue;
363
+ return d === undefined ? Number.MAX_VALUE : d;
364
+ }
365
+ /** Compute and test the closest approach between two facets, given their indices. */
366
+ processAppDataPair(indexA, indexB) {
367
+ this.contextA.visitor.setNumWrap(1); // closed polygons are more efficient for PolygonOps.closestApproach
368
+ this.contextB.visitor.setNumWrap(1);
369
+ if (this.contextA.visitor.moveToReadIndex(indexA) && this.contextB.visitor.moveToReadIndex(indexB)) {
370
+ // ASSUME: not worth sending in maxDist here...
371
+ const pldPair = PolygonOps_1.PolygonOps.closestApproach(this.contextA.visitor.point, this.contextB.visitor.point, undefined, this.searchFacetInterior);
372
+ this.contextA.numFacetTest++;
373
+ if (pldPair && this.searchState.isNewMinOrTrigger(pldPair.detailA.a)) {
374
+ const edgeCountA = this.contextA.visitor.pointCount - 1;
375
+ const edgeCountB = this.contextB.visitor.pointCount - 1;
376
+ const fldPair = FacetLocationDetail_1.FacetLocationDetailPair.create(this.contextA.convexFacets ? FacetLocationDetail_1.ConvexFacetLocationDetail.createCapture(indexA, edgeCountA, pldPair.detailA) : FacetLocationDetail_1.NonConvexFacetLocationDetail.createCapture(indexA, edgeCountA, pldPair.detailA), this.contextB.convexFacets ? FacetLocationDetail_1.ConvexFacetLocationDetail.createCapture(indexB, edgeCountB, pldPair.detailB) : FacetLocationDetail_1.NonConvexFacetLocationDetail.createCapture(indexB, edgeCountB, pldPair.detailB));
377
+ this.searchState.testAndSave(fldPair, fldPair.detailA.a);
378
+ }
379
+ }
380
+ }
381
+ }
382
+ exports.TwoTreeSearchHandlerForFacetFacetCloseApproach = TwoTreeSearchHandlerForFacetFacetCloseApproach;
383
+ //# sourceMappingURL=RangeTreeSearchHandlers.js.map