@itwin/core-geometry 5.2.0-dev.7 → 5.3.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (438) hide show
  1. package/CHANGELOG.md +36 -1
  2. package/lib/cjs/Geometry.d.ts +30 -10
  3. package/lib/cjs/Geometry.d.ts.map +1 -1
  4. package/lib/cjs/Geometry.js +74 -10
  5. package/lib/cjs/Geometry.js.map +1 -1
  6. package/lib/cjs/bspline/AkimaCurve3d.d.ts +19 -6
  7. package/lib/cjs/bspline/AkimaCurve3d.d.ts.map +1 -1
  8. package/lib/cjs/bspline/AkimaCurve3d.js +21 -5
  9. package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
  10. package/lib/cjs/bspline/BSplineCurve.d.ts +3 -3
  11. package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -1
  12. package/lib/cjs/bspline/BSplineCurve.js +6 -6
  13. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  14. package/lib/cjs/bspline/BSplineCurveOps.d.ts.map +1 -1
  15. package/lib/cjs/bspline/BSplineCurveOps.js +1 -1
  16. package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
  17. package/lib/cjs/bspline/BezierCurveBase.d.ts +2 -2
  18. package/lib/cjs/bspline/BezierCurveBase.d.ts.map +1 -1
  19. package/lib/cjs/bspline/BezierCurveBase.js +4 -6
  20. package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
  21. package/lib/cjs/bspline/InterpolationCurve3d.d.ts +27 -17
  22. package/lib/cjs/bspline/InterpolationCurve3d.d.ts.map +1 -1
  23. package/lib/cjs/bspline/InterpolationCurve3d.js +17 -7
  24. package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
  25. package/lib/cjs/clipping/ClipPlane.d.ts +19 -6
  26. package/lib/cjs/clipping/ClipPlane.d.ts.map +1 -1
  27. package/lib/cjs/clipping/ClipPlane.js +17 -2
  28. package/lib/cjs/clipping/ClipPlane.js.map +1 -1
  29. package/lib/cjs/clipping/ClipUtils.d.ts +14 -1
  30. package/lib/cjs/clipping/ClipUtils.d.ts.map +1 -1
  31. package/lib/cjs/clipping/ClipUtils.js +21 -3
  32. package/lib/cjs/clipping/ClipUtils.js.map +1 -1
  33. package/lib/cjs/clipping/ConvexClipPlaneSet.d.ts +14 -11
  34. package/lib/cjs/clipping/ConvexClipPlaneSet.d.ts.map +1 -1
  35. package/lib/cjs/clipping/ConvexClipPlaneSet.js +23 -16
  36. package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
  37. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.d.ts +20 -3
  38. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.d.ts.map +1 -1
  39. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js +22 -5
  40. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  41. package/lib/cjs/curve/Arc3d.d.ts +27 -17
  42. package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
  43. package/lib/cjs/curve/Arc3d.js +61 -35
  44. package/lib/cjs/curve/Arc3d.js.map +1 -1
  45. package/lib/cjs/curve/CurveCollection.d.ts +1 -0
  46. package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
  47. package/lib/cjs/curve/CurveCollection.js +1 -0
  48. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  49. package/lib/cjs/curve/CurveLocationDetail.d.ts +8 -7
  50. package/lib/cjs/curve/CurveLocationDetail.d.ts.map +1 -1
  51. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  52. package/lib/cjs/curve/CurveOps.d.ts +51 -1
  53. package/lib/cjs/curve/CurveOps.d.ts.map +1 -1
  54. package/lib/cjs/curve/CurveOps.js +97 -3
  55. package/lib/cjs/curve/CurveOps.js.map +1 -1
  56. package/lib/cjs/curve/LineString3d.d.ts +4 -4
  57. package/lib/cjs/curve/LineString3d.d.ts.map +1 -1
  58. package/lib/cjs/curve/LineString3d.js +8 -8
  59. package/lib/cjs/curve/LineString3d.js.map +1 -1
  60. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js +3 -3
  61. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  62. package/lib/cjs/curve/Query/PlanarSubdivision.d.ts +6 -2
  63. package/lib/cjs/curve/Query/PlanarSubdivision.d.ts.map +1 -1
  64. package/lib/cjs/curve/Query/PlanarSubdivision.js +12 -7
  65. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  66. package/lib/cjs/curve/RegionOps.d.ts +9 -4
  67. package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
  68. package/lib/cjs/curve/RegionOps.js +10 -5
  69. package/lib/cjs/curve/RegionOps.js.map +1 -1
  70. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
  71. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js +2 -1
  72. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  73. package/lib/cjs/curve/internalContexts/MultiChainCollector.d.ts +4 -4
  74. package/lib/cjs/curve/internalContexts/MultiChainCollector.d.ts.map +1 -1
  75. package/lib/cjs/curve/internalContexts/MultiChainCollector.js +21 -18
  76. package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
  77. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -1
  78. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js +30 -50
  79. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  80. package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts +2 -2
  81. package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts.map +1 -1
  82. package/lib/cjs/curve/spiral/DirectSpiral3d.js +6 -2
  83. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
  84. package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts +2 -2
  85. package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -1
  86. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js +6 -2
  87. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  88. package/lib/cjs/curve/spiral/TransitionSpiral3d.d.ts +5 -1
  89. package/lib/cjs/curve/spiral/TransitionSpiral3d.d.ts.map +1 -1
  90. package/lib/cjs/curve/spiral/TransitionSpiral3d.js +0 -3
  91. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
  92. package/lib/cjs/geometry3d/AngleSweep.d.ts +6 -2
  93. package/lib/cjs/geometry3d/AngleSweep.d.ts.map +1 -1
  94. package/lib/cjs/geometry3d/AngleSweep.js +12 -3
  95. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
  96. package/lib/cjs/geometry3d/FrameBuilder.d.ts +2 -1
  97. package/lib/cjs/geometry3d/FrameBuilder.d.ts.map +1 -1
  98. package/lib/cjs/geometry3d/FrameBuilder.js +14 -18
  99. package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
  100. package/lib/cjs/geometry3d/Matrix3d.d.ts +1 -1
  101. package/lib/cjs/geometry3d/Matrix3d.js +1 -1
  102. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  103. package/lib/cjs/geometry3d/Point2dVector2d.d.ts +18 -2
  104. package/lib/cjs/geometry3d/Point2dVector2d.d.ts.map +1 -1
  105. package/lib/cjs/geometry3d/Point2dVector2d.js +37 -4
  106. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  107. package/lib/cjs/geometry3d/Point3dVector3d.d.ts +1 -1
  108. package/lib/cjs/geometry3d/Point3dVector3d.d.ts.map +1 -1
  109. package/lib/cjs/geometry3d/Point3dVector3d.js +1 -0
  110. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  111. package/lib/cjs/geometry3d/PointStreaming.d.ts +8 -0
  112. package/lib/cjs/geometry3d/PointStreaming.d.ts.map +1 -1
  113. package/lib/cjs/geometry3d/PointStreaming.js +18 -2
  114. package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
  115. package/lib/cjs/geometry3d/PolygonOps.d.ts +18 -9
  116. package/lib/cjs/geometry3d/PolygonOps.d.ts.map +1 -1
  117. package/lib/cjs/geometry3d/PolygonOps.js +53 -26
  118. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  119. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.d.ts +8 -2
  120. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.d.ts.map +1 -1
  121. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js +10 -4
  122. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  123. package/lib/cjs/geometry3d/PolylineOps.d.ts +14 -3
  124. package/lib/cjs/geometry3d/PolylineOps.d.ts.map +1 -1
  125. package/lib/cjs/geometry3d/PolylineOps.js +20 -4
  126. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
  127. package/lib/cjs/geometry3d/Range.d.ts +34 -32
  128. package/lib/cjs/geometry3d/Range.d.ts.map +1 -1
  129. package/lib/cjs/geometry3d/Range.js +28 -21
  130. package/lib/cjs/geometry3d/Range.js.map +1 -1
  131. package/lib/cjs/geometry3d/Ray2d.d.ts +16 -6
  132. package/lib/cjs/geometry3d/Ray2d.d.ts.map +1 -1
  133. package/lib/cjs/geometry3d/Ray2d.js +28 -4
  134. package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
  135. package/lib/cjs/geometry3d/Ray3d.d.ts.map +1 -1
  136. package/lib/cjs/geometry3d/Ray3d.js +3 -4
  137. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  138. package/lib/cjs/geometry3d/Transform.d.ts +1 -1
  139. package/lib/cjs/geometry3d/Transform.js +1 -1
  140. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  141. package/lib/cjs/geometry3d/XYZProps.d.ts +12 -1
  142. package/lib/cjs/geometry3d/XYZProps.d.ts.map +1 -1
  143. package/lib/cjs/geometry3d/XYZProps.js +17 -2
  144. package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
  145. package/lib/cjs/geometry4d/Matrix4d.d.ts +16 -0
  146. package/lib/cjs/geometry4d/Matrix4d.d.ts.map +1 -1
  147. package/lib/cjs/geometry4d/Matrix4d.js +26 -0
  148. package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
  149. package/lib/cjs/numerics/BezierPolynomials.d.ts.map +1 -1
  150. package/lib/cjs/numerics/BezierPolynomials.js +5 -9
  151. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
  152. package/lib/cjs/numerics/SmallSystem.d.ts +13 -7
  153. package/lib/cjs/numerics/SmallSystem.d.ts.map +1 -1
  154. package/lib/cjs/numerics/SmallSystem.js +13 -7
  155. package/lib/cjs/numerics/SmallSystem.js.map +1 -1
  156. package/lib/cjs/polyface/Polyface.d.ts +1 -3
  157. package/lib/cjs/polyface/Polyface.d.ts.map +1 -1
  158. package/lib/cjs/polyface/Polyface.js +2 -6
  159. package/lib/cjs/polyface/Polyface.js.map +1 -1
  160. package/lib/cjs/polyface/PolyfaceBuilder.d.ts +25 -6
  161. package/lib/cjs/polyface/PolyfaceBuilder.d.ts.map +1 -1
  162. package/lib/cjs/polyface/PolyfaceBuilder.js +59 -8
  163. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  164. package/lib/cjs/polyface/PolyfaceData.d.ts +2 -0
  165. package/lib/cjs/polyface/PolyfaceData.d.ts.map +1 -1
  166. package/lib/cjs/polyface/PolyfaceData.js +7 -3
  167. package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
  168. package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
  169. package/lib/cjs/polyface/PolyfaceQuery.js +8 -10
  170. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  171. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.d.ts +8 -5
  172. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.d.ts.map +1 -1
  173. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js +8 -4
  174. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  175. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.d.ts +3 -3
  176. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.d.ts.map +1 -1
  177. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js +1 -1
  178. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  179. package/lib/cjs/polyface/RangeTree/RangeTreeNode.d.ts +4 -2
  180. package/lib/cjs/polyface/RangeTree/RangeTreeNode.d.ts.map +1 -1
  181. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js +9 -12
  182. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  183. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.d.ts +8 -3
  184. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.d.ts.map +1 -1
  185. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js +13 -6
  186. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  187. package/lib/cjs/serialization/DeepCompare.js +1 -1
  188. package/lib/cjs/serialization/DeepCompare.js.map +1 -1
  189. package/lib/cjs/serialization/GeometrySamples.d.ts +2 -1
  190. package/lib/cjs/serialization/GeometrySamples.d.ts.map +1 -1
  191. package/lib/cjs/serialization/GeometrySamples.js +2 -1
  192. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  193. package/lib/cjs/topology/Graph.d.ts +38 -12
  194. package/lib/cjs/topology/Graph.d.ts.map +1 -1
  195. package/lib/cjs/topology/Graph.js +91 -23
  196. package/lib/cjs/topology/Graph.js.map +1 -1
  197. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +5 -4
  198. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts.map +1 -1
  199. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js +6 -5
  200. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  201. package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts +20 -11
  202. package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
  203. package/lib/cjs/topology/HalfEdgeGraphSearch.js +43 -39
  204. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  205. package/lib/cjs/topology/Merging.d.ts +7 -4
  206. package/lib/cjs/topology/Merging.d.ts.map +1 -1
  207. package/lib/cjs/topology/Merging.js +16 -11
  208. package/lib/cjs/topology/Merging.js.map +1 -1
  209. package/lib/cjs/topology/Triangulation.d.ts +13 -11
  210. package/lib/cjs/topology/Triangulation.d.ts.map +1 -1
  211. package/lib/cjs/topology/Triangulation.js +40 -36
  212. package/lib/cjs/topology/Triangulation.js.map +1 -1
  213. package/lib/cjs/topology/Voronoi.d.ts +195 -0
  214. package/lib/cjs/topology/Voronoi.d.ts.map +1 -0
  215. package/lib/cjs/topology/Voronoi.js +700 -0
  216. package/lib/cjs/topology/Voronoi.js.map +1 -0
  217. package/lib/cjs/topology/XYParitySearchContext.d.ts +1 -1
  218. package/lib/cjs/topology/XYParitySearchContext.d.ts.map +1 -1
  219. package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
  220. package/lib/esm/Geometry.d.ts +30 -10
  221. package/lib/esm/Geometry.d.ts.map +1 -1
  222. package/lib/esm/Geometry.js +74 -10
  223. package/lib/esm/Geometry.js.map +1 -1
  224. package/lib/esm/bspline/AkimaCurve3d.d.ts +19 -6
  225. package/lib/esm/bspline/AkimaCurve3d.d.ts.map +1 -1
  226. package/lib/esm/bspline/AkimaCurve3d.js +21 -5
  227. package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
  228. package/lib/esm/bspline/BSplineCurve.d.ts +3 -3
  229. package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
  230. package/lib/esm/bspline/BSplineCurve.js +6 -6
  231. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  232. package/lib/esm/bspline/BSplineCurveOps.d.ts.map +1 -1
  233. package/lib/esm/bspline/BSplineCurveOps.js +1 -1
  234. package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
  235. package/lib/esm/bspline/BezierCurveBase.d.ts +2 -2
  236. package/lib/esm/bspline/BezierCurveBase.d.ts.map +1 -1
  237. package/lib/esm/bspline/BezierCurveBase.js +4 -6
  238. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  239. package/lib/esm/bspline/InterpolationCurve3d.d.ts +27 -17
  240. package/lib/esm/bspline/InterpolationCurve3d.d.ts.map +1 -1
  241. package/lib/esm/bspline/InterpolationCurve3d.js +17 -7
  242. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  243. package/lib/esm/clipping/ClipPlane.d.ts +19 -6
  244. package/lib/esm/clipping/ClipPlane.d.ts.map +1 -1
  245. package/lib/esm/clipping/ClipPlane.js +17 -2
  246. package/lib/esm/clipping/ClipPlane.js.map +1 -1
  247. package/lib/esm/clipping/ClipUtils.d.ts +14 -1
  248. package/lib/esm/clipping/ClipUtils.d.ts.map +1 -1
  249. package/lib/esm/clipping/ClipUtils.js +21 -3
  250. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  251. package/lib/esm/clipping/ConvexClipPlaneSet.d.ts +14 -11
  252. package/lib/esm/clipping/ConvexClipPlaneSet.d.ts.map +1 -1
  253. package/lib/esm/clipping/ConvexClipPlaneSet.js +23 -16
  254. package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
  255. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.d.ts +20 -3
  256. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.d.ts.map +1 -1
  257. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js +22 -5
  258. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  259. package/lib/esm/curve/Arc3d.d.ts +27 -17
  260. package/lib/esm/curve/Arc3d.d.ts.map +1 -1
  261. package/lib/esm/curve/Arc3d.js +61 -35
  262. package/lib/esm/curve/Arc3d.js.map +1 -1
  263. package/lib/esm/curve/CurveCollection.d.ts +1 -0
  264. package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
  265. package/lib/esm/curve/CurveCollection.js +1 -0
  266. package/lib/esm/curve/CurveCollection.js.map +1 -1
  267. package/lib/esm/curve/CurveLocationDetail.d.ts +8 -7
  268. package/lib/esm/curve/CurveLocationDetail.d.ts.map +1 -1
  269. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  270. package/lib/esm/curve/CurveOps.d.ts +51 -1
  271. package/lib/esm/curve/CurveOps.d.ts.map +1 -1
  272. package/lib/esm/curve/CurveOps.js +98 -4
  273. package/lib/esm/curve/CurveOps.js.map +1 -1
  274. package/lib/esm/curve/LineString3d.d.ts +4 -4
  275. package/lib/esm/curve/LineString3d.d.ts.map +1 -1
  276. package/lib/esm/curve/LineString3d.js +8 -8
  277. package/lib/esm/curve/LineString3d.js.map +1 -1
  278. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js +3 -3
  279. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  280. package/lib/esm/curve/Query/PlanarSubdivision.d.ts +6 -2
  281. package/lib/esm/curve/Query/PlanarSubdivision.d.ts.map +1 -1
  282. package/lib/esm/curve/Query/PlanarSubdivision.js +12 -7
  283. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  284. package/lib/esm/curve/RegionOps.d.ts +9 -4
  285. package/lib/esm/curve/RegionOps.d.ts.map +1 -1
  286. package/lib/esm/curve/RegionOps.js +10 -5
  287. package/lib/esm/curve/RegionOps.js.map +1 -1
  288. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
  289. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js +2 -1
  290. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  291. package/lib/esm/curve/internalContexts/MultiChainCollector.d.ts +4 -4
  292. package/lib/esm/curve/internalContexts/MultiChainCollector.d.ts.map +1 -1
  293. package/lib/esm/curve/internalContexts/MultiChainCollector.js +21 -18
  294. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  295. package/lib/esm/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -1
  296. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js +30 -50
  297. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  298. package/lib/esm/curve/spiral/DirectSpiral3d.d.ts +2 -2
  299. package/lib/esm/curve/spiral/DirectSpiral3d.d.ts.map +1 -1
  300. package/lib/esm/curve/spiral/DirectSpiral3d.js +6 -2
  301. package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
  302. package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts +2 -2
  303. package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -1
  304. package/lib/esm/curve/spiral/IntegratedSpiral3d.js +6 -2
  305. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  306. package/lib/esm/curve/spiral/TransitionSpiral3d.d.ts +5 -1
  307. package/lib/esm/curve/spiral/TransitionSpiral3d.d.ts.map +1 -1
  308. package/lib/esm/curve/spiral/TransitionSpiral3d.js +0 -3
  309. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
  310. package/lib/esm/geometry3d/AngleSweep.d.ts +6 -2
  311. package/lib/esm/geometry3d/AngleSweep.d.ts.map +1 -1
  312. package/lib/esm/geometry3d/AngleSweep.js +12 -3
  313. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  314. package/lib/esm/geometry3d/FrameBuilder.d.ts +2 -1
  315. package/lib/esm/geometry3d/FrameBuilder.d.ts.map +1 -1
  316. package/lib/esm/geometry3d/FrameBuilder.js +14 -18
  317. package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
  318. package/lib/esm/geometry3d/Matrix3d.d.ts +1 -1
  319. package/lib/esm/geometry3d/Matrix3d.js +1 -1
  320. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  321. package/lib/esm/geometry3d/Point2dVector2d.d.ts +18 -2
  322. package/lib/esm/geometry3d/Point2dVector2d.d.ts.map +1 -1
  323. package/lib/esm/geometry3d/Point2dVector2d.js +37 -4
  324. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  325. package/lib/esm/geometry3d/Point3dVector3d.d.ts +1 -1
  326. package/lib/esm/geometry3d/Point3dVector3d.d.ts.map +1 -1
  327. package/lib/esm/geometry3d/Point3dVector3d.js +1 -0
  328. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  329. package/lib/esm/geometry3d/PointStreaming.d.ts +8 -0
  330. package/lib/esm/geometry3d/PointStreaming.d.ts.map +1 -1
  331. package/lib/esm/geometry3d/PointStreaming.js +18 -2
  332. package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
  333. package/lib/esm/geometry3d/PolygonOps.d.ts +18 -9
  334. package/lib/esm/geometry3d/PolygonOps.d.ts.map +1 -1
  335. package/lib/esm/geometry3d/PolygonOps.js +53 -26
  336. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  337. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.d.ts +8 -2
  338. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.d.ts.map +1 -1
  339. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js +10 -4
  340. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  341. package/lib/esm/geometry3d/PolylineOps.d.ts +14 -3
  342. package/lib/esm/geometry3d/PolylineOps.d.ts.map +1 -1
  343. package/lib/esm/geometry3d/PolylineOps.js +20 -4
  344. package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
  345. package/lib/esm/geometry3d/Range.d.ts +34 -32
  346. package/lib/esm/geometry3d/Range.d.ts.map +1 -1
  347. package/lib/esm/geometry3d/Range.js +28 -21
  348. package/lib/esm/geometry3d/Range.js.map +1 -1
  349. package/lib/esm/geometry3d/Ray2d.d.ts +16 -6
  350. package/lib/esm/geometry3d/Ray2d.d.ts.map +1 -1
  351. package/lib/esm/geometry3d/Ray2d.js +28 -4
  352. package/lib/esm/geometry3d/Ray2d.js.map +1 -1
  353. package/lib/esm/geometry3d/Ray3d.d.ts.map +1 -1
  354. package/lib/esm/geometry3d/Ray3d.js +3 -4
  355. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  356. package/lib/esm/geometry3d/Transform.d.ts +1 -1
  357. package/lib/esm/geometry3d/Transform.js +1 -1
  358. package/lib/esm/geometry3d/Transform.js.map +1 -1
  359. package/lib/esm/geometry3d/XYZProps.d.ts +12 -1
  360. package/lib/esm/geometry3d/XYZProps.d.ts.map +1 -1
  361. package/lib/esm/geometry3d/XYZProps.js +16 -1
  362. package/lib/esm/geometry3d/XYZProps.js.map +1 -1
  363. package/lib/esm/geometry4d/Matrix4d.d.ts +16 -0
  364. package/lib/esm/geometry4d/Matrix4d.d.ts.map +1 -1
  365. package/lib/esm/geometry4d/Matrix4d.js +26 -0
  366. package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
  367. package/lib/esm/numerics/BezierPolynomials.d.ts.map +1 -1
  368. package/lib/esm/numerics/BezierPolynomials.js +5 -9
  369. package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
  370. package/lib/esm/numerics/SmallSystem.d.ts +13 -7
  371. package/lib/esm/numerics/SmallSystem.d.ts.map +1 -1
  372. package/lib/esm/numerics/SmallSystem.js +13 -7
  373. package/lib/esm/numerics/SmallSystem.js.map +1 -1
  374. package/lib/esm/polyface/Polyface.d.ts +1 -3
  375. package/lib/esm/polyface/Polyface.d.ts.map +1 -1
  376. package/lib/esm/polyface/Polyface.js +2 -6
  377. package/lib/esm/polyface/Polyface.js.map +1 -1
  378. package/lib/esm/polyface/PolyfaceBuilder.d.ts +25 -6
  379. package/lib/esm/polyface/PolyfaceBuilder.d.ts.map +1 -1
  380. package/lib/esm/polyface/PolyfaceBuilder.js +59 -8
  381. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  382. package/lib/esm/polyface/PolyfaceData.d.ts +2 -0
  383. package/lib/esm/polyface/PolyfaceData.d.ts.map +1 -1
  384. package/lib/esm/polyface/PolyfaceData.js +7 -3
  385. package/lib/esm/polyface/PolyfaceData.js.map +1 -1
  386. package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
  387. package/lib/esm/polyface/PolyfaceQuery.js +8 -10
  388. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  389. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.d.ts +8 -5
  390. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.d.ts.map +1 -1
  391. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js +8 -4
  392. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  393. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.d.ts +3 -3
  394. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.d.ts.map +1 -1
  395. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js +1 -1
  396. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  397. package/lib/esm/polyface/RangeTree/RangeTreeNode.d.ts +4 -2
  398. package/lib/esm/polyface/RangeTree/RangeTreeNode.d.ts.map +1 -1
  399. package/lib/esm/polyface/RangeTree/RangeTreeNode.js +9 -12
  400. package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  401. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.d.ts +8 -3
  402. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.d.ts.map +1 -1
  403. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js +13 -6
  404. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  405. package/lib/esm/serialization/DeepCompare.js +1 -1
  406. package/lib/esm/serialization/DeepCompare.js.map +1 -1
  407. package/lib/esm/serialization/GeometrySamples.d.ts +2 -1
  408. package/lib/esm/serialization/GeometrySamples.d.ts.map +1 -1
  409. package/lib/esm/serialization/GeometrySamples.js +2 -1
  410. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  411. package/lib/esm/topology/Graph.d.ts +38 -12
  412. package/lib/esm/topology/Graph.d.ts.map +1 -1
  413. package/lib/esm/topology/Graph.js +92 -24
  414. package/lib/esm/topology/Graph.js.map +1 -1
  415. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +5 -4
  416. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts.map +1 -1
  417. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js +6 -5
  418. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  419. package/lib/esm/topology/HalfEdgeGraphSearch.d.ts +20 -11
  420. package/lib/esm/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
  421. package/lib/esm/topology/HalfEdgeGraphSearch.js +43 -39
  422. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  423. package/lib/esm/topology/Merging.d.ts +7 -4
  424. package/lib/esm/topology/Merging.d.ts.map +1 -1
  425. package/lib/esm/topology/Merging.js +17 -12
  426. package/lib/esm/topology/Merging.js.map +1 -1
  427. package/lib/esm/topology/Triangulation.d.ts +13 -11
  428. package/lib/esm/topology/Triangulation.d.ts.map +1 -1
  429. package/lib/esm/topology/Triangulation.js +40 -36
  430. package/lib/esm/topology/Triangulation.js.map +1 -1
  431. package/lib/esm/topology/Voronoi.d.ts +195 -0
  432. package/lib/esm/topology/Voronoi.d.ts.map +1 -0
  433. package/lib/esm/topology/Voronoi.js +696 -0
  434. package/lib/esm/topology/Voronoi.js.map +1 -0
  435. package/lib/esm/topology/XYParitySearchContext.d.ts +1 -1
  436. package/lib/esm/topology/XYParitySearchContext.d.ts.map +1 -1
  437. package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
  438. package/package.json +3 -3
@@ -8,6 +8,8 @@
8
8
  import { CurveLocationDetail, CurveLocationDetailPair } from "../../curve/CurveLocationDetail";
9
9
  import { LineSegment3d } from "../../curve/LineSegment3d";
10
10
  import { LineString3d } from "../../curve/LineString3d";
11
+ import { Geometry } from "../../Geometry";
12
+ import { Point3d } from "../../geometry3d/Point3dVector3d";
11
13
  import { PolygonOps } from "../../geometry3d/PolygonOps";
12
14
  import { ConvexFacetLocationDetail, FacetLocationDetailPair, NonConvexFacetLocationDetail } from "../FacetLocationDetail";
13
15
  import { MinimumValueTester } from "./MinimumValueTester";
@@ -36,7 +38,7 @@ export class SingleTreeSearchHandlerForClosestPointInArray extends SingleTreeSea
36
38
  if (maxDist !== undefined && maxDist < 0)
37
39
  maxDist = undefined;
38
40
  this.searchState = MinimumValueTester.create(maxDist);
39
- this.spacePoint = spacePoint.clone();
41
+ this.spacePoint = Point3d.createFrom(spacePoint);
40
42
  }
41
43
  /** Return the current closest point */
42
44
  getResult() {
@@ -67,7 +69,7 @@ export class SingleTreeSearchHandlerForClosestPointInArray extends SingleTreeSea
67
69
  * @returns true if the spacePoint is within the range or close enough that a point in the range could be the closest.
68
70
  */
69
71
  isRangeActive(range) {
70
- const dMin = range.distanceToPoint(this.spacePoint);
72
+ const dMin = this.context.xyOnly ? range.distanceToPointXY(this.spacePoint) : range.distanceToPoint(this.spacePoint);
71
73
  if (this.searchState.isNewMinValue(dMin)) {
72
74
  this.context.numRangeTestTrue++;
73
75
  return true;
@@ -77,7 +79,7 @@ export class SingleTreeSearchHandlerForClosestPointInArray extends SingleTreeSea
77
79
  }
78
80
  /** Test a point indexed in the range tree as candidate for "closest" */
79
81
  processAppData(candidateIndex) {
80
- const d = this.spacePoint.distance(this.context.points[candidateIndex]);
82
+ const d = this.context.xyOnly ? this.spacePoint.distanceXY(this.context.points[candidateIndex]) : this.spacePoint.distance(this.context.points[candidateIndex]);
81
83
  this.context.numPointTest++;
82
84
  this.searchState.testAndSave(candidateIndex, d);
83
85
  }
@@ -94,6 +96,8 @@ export class TwoTreeSearchHandlerForPoint3dArrayPoint3dArrayCloseApproach extend
94
96
  contextB;
95
97
  /** Search state with current min distance point pair */
96
98
  searchState;
99
+ /** True if and only if both contexts specify xy-only. */
100
+ _xyOnly;
97
101
  /**
98
102
  * Constructor
99
103
  * @param contextA captured
@@ -107,6 +111,7 @@ export class TwoTreeSearchHandlerForPoint3dArrayPoint3dArrayCloseApproach extend
107
111
  if (maxDist !== undefined && maxDist < 0)
108
112
  maxDist = undefined;
109
113
  this.searchState = MinimumValueTester.create(maxDist);
114
+ this._xyOnly = contextA.xyOnly && contextB.xyOnly;
110
115
  }
111
116
  /** Return the current closest approach */
112
117
  getResult() {
@@ -127,12 +132,14 @@ export class TwoTreeSearchHandlerForPoint3dArrayPoint3dArrayCloseApproach extend
127
132
  const d = this.searchState.minValue;
128
133
  return d === undefined ? Number.MAX_VALUE : d;
129
134
  }
135
+ /** Whether to ignore z-coordinates in distance computations. */
136
+ getXYOnly() { return this._xyOnly ?? false; }
130
137
  /** Compute and test the distance between two points, given their indices. */
131
138
  processAppDataPair(indexA, indexB) {
132
139
  this.contextA.numPointTest++;
133
140
  const pointA = this.contextA.points[indexA];
134
141
  const pointB = this.contextB.points[indexB];
135
- const d = pointA.distance(pointB);
142
+ const d = this._xyOnly ? Geometry.distanceXYXY(pointA.x, pointA.y, pointB.x, pointB.y) : Geometry.distanceXYZXYZ(pointA.x, pointA.y, pointA.z, pointB.x, pointB.y, pointB.z);
136
143
  if (this.searchState.isNewMinOrTrigger(d)) {
137
144
  const cldPair = CurveLocationDetailPair.createCapture(CurveLocationDetail.createCurveFractionPoint(undefined, indexA, pointA), CurveLocationDetail.createCurveFractionPoint(undefined, indexB, pointB));
138
145
  cldPair.detailA.a = cldPair.detailB.a = d;
@@ -287,7 +294,7 @@ export class SingleTreeSearchHandlerForClosestPointOnPolyface extends SingleTree
287
294
  searchFacetInterior;
288
295
  /**
289
296
  * Constructor
290
- * @param spacePoint cloned
297
+ * @param spacePoint point to test
291
298
  * @param context captured
292
299
  * @param maxDist collect points at no more than this distance from spacePoint
293
300
  * @param searchFacetInterior true: search facet interior + boundary; false: just boundary
@@ -298,7 +305,7 @@ export class SingleTreeSearchHandlerForClosestPointOnPolyface extends SingleTree
298
305
  if (maxDist !== undefined && maxDist < 0)
299
306
  maxDist = undefined;
300
307
  this.searchState = MinimumValueTester.create(maxDist);
301
- this.spacePoint = spacePoint.clone();
308
+ this.spacePoint = Point3d.createFrom(spacePoint);
302
309
  this.searchFacetInterior = searchFacetInterior;
303
310
  }
304
311
  /** Return the current closest point */
@@ -1 +1 @@
1
- {"version":3,"file":"RangeTreeSearchHandlers.js","sourceRoot":"","sources":["../../../../src/polyface/RangeTree/RangeTreeSearchHandlers.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module RangeSearch\n */\n\nimport { CurveLocationDetail, CurveLocationDetailPair } from \"../../curve/CurveLocationDetail\";\nimport { LineSegment3d } from \"../../curve/LineSegment3d\";\nimport { LineString3d } from \"../../curve/LineString3d\";\nimport { Point3d } from \"../../geometry3d/Point3dVector3d\";\nimport { PolygonLocationDetail, PolygonOps } from \"../../geometry3d/PolygonOps\";\nimport { Range3d } from \"../../geometry3d/Range\";\nimport { ConvexFacetLocationDetail, FacetLocationDetail, FacetLocationDetailPair, NonConvexFacetLocationDetail } from \"../FacetLocationDetail\";\nimport { LineString3dRangeTreeContext } from \"./LineString3dRangeTreeContext\";\nimport { MinimumValueTester } from \"./MinimumValueTester\";\nimport { Point3dArrayRangeTreeContext } from \"./Point3dArrayRangeTreeContext\";\nimport { PolyfaceRangeTreeContext } from \"./PolyfaceRangeTreeContext\";\nimport { SingleTreeSearchHandler, TwoTreeDistanceMinimizationSearchHandler } from \"./RangeTreeNode\";\n\n/**\n * Helper class for searching for the closest point in a set of points.\n * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).\n * @internal\n */\nexport class SingleTreeSearchHandlerForClosestPointInArray extends SingleTreeSearchHandler<number> {\n /** The calling context */\n public context: Point3dArrayRangeTreeContext;\n /** Evolving search state */\n public searchState: MinimumValueTester<number>;\n /** Space point for the search */\n public spacePoint: Point3d;\n\n /**\n * Constructor\n * @param spacePoint cloned\n * @param context captured\n * @param maxDist collect points at no more than this distance from spacePoint\n */\n public constructor(spacePoint: Point3d, context: Point3dArrayRangeTreeContext, maxDist?: number) {\n super();\n this.context = context;\n if (maxDist !== undefined && maxDist < 0)\n maxDist = undefined;\n this.searchState = MinimumValueTester.create<number>(maxDist);\n this.spacePoint = spacePoint.clone();\n }\n /** Return the current closest point */\n public getResult(): CurveLocationDetail | undefined {\n if (this.searchState.minValue !== undefined && this.searchState.itemAtMinValue !== undefined) {\n const iPoint = this.searchState.itemAtMinValue;\n const cld = CurveLocationDetail.createCurveFractionPoint(undefined, iPoint, this.context.points[iPoint]);\n cld.a = this.searchState.minValue;\n return cld;\n }\n return undefined;\n }\n /** Return the collected closest points (if collecting) */\n public getSavedItems(): CurveLocationDetail[] | undefined {\n if (this.searchState.savedItems.length === 0)\n return undefined;\n const cldArray: CurveLocationDetail[] = [];\n for (let i = 0; i < this.searchState.savedItems.length; ++i) {\n const iPoint = this.searchState.savedItems[i];\n const cld = CurveLocationDetail.createCurveFractionPoint(undefined, iPoint, this.context.points[iPoint]);\n cld.a = this.searchState.savedValues[i];\n cldArray.push(cld);\n }\n return cldArray;\n }\n /**\n * Return true if appData within the range should be offered to `processAppData`.\n * @param range range containing items to be tested.\n * @returns true if the spacePoint is within the range or close enough that a point in the range could be the closest.\n */\n public override isRangeActive(range: Range3d): boolean {\n const dMin = range.distanceToPoint(this.spacePoint);\n if (this.searchState.isNewMinValue(dMin)) {\n this.context.numRangeTestTrue++;\n return true;\n }\n this.context.numRangeTestFalse++;\n return false;\n }\n /** Test a point indexed in the range tree as candidate for \"closest\" */\n public override processAppData(candidateIndex: number): void {\n const d = this.spacePoint.distance(this.context.points[candidateIndex]);\n this.context.numPointTest++;\n this.searchState.testAndSave(candidateIndex, d);\n }\n}\n\n/**\n * Helper class for searching for the closest approach between sets of points.\n * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).\n * @internal\n */\nexport class TwoTreeSearchHandlerForPoint3dArrayPoint3dArrayCloseApproach extends TwoTreeDistanceMinimizationSearchHandler<number> {\n /** Context for first set of points */\n public contextA: Point3dArrayRangeTreeContext;\n /** Context for second set of points */\n public contextB: Point3dArrayRangeTreeContext;\n /** Search state with current min distance point pair */\n public searchState: MinimumValueTester<CurveLocationDetailPair>;\n\n /**\n * Constructor\n * @param contextA captured\n * @param contextB captured\n * @param maxDist collect points at no more than this separation distance\n */\n public constructor(contextA: Point3dArrayRangeTreeContext, contextB: Point3dArrayRangeTreeContext, maxDist?: number) {\n super();\n this.contextA = contextA;\n this.contextB = contextB;\n if (maxDist !== undefined && maxDist < 0)\n maxDist = undefined;\n this.searchState = MinimumValueTester.create<CurveLocationDetailPair>(maxDist);\n }\n /** Return the current closest approach */\n public getResult(): CurveLocationDetailPair | undefined {\n if (this.searchState.minValue !== undefined) {\n return this.searchState.itemAtMinValue;\n }\n return undefined;\n }\n /** Return the collected close approaches (if collecting) */\n public getSavedItems(): CurveLocationDetailPair[] | undefined {\n if (this.searchState.savedItems.length > 0) {\n return this.searchState.savedItems;\n }\n return undefined;\n }\n /** Get current min distance */\n public override getCurrentDistance(): number {\n const d = this.searchState.minValue;\n return d === undefined ? Number.MAX_VALUE : d;\n }\n /** Compute and test the distance between two points, given their indices. */\n public override processAppDataPair(indexA: number, indexB: number): void {\n this.contextA.numPointTest++;\n const pointA = this.contextA.points[indexA];\n const pointB = this.contextB.points[indexB];\n const d = pointA.distance(pointB);\n if (this.searchState.isNewMinOrTrigger(d)) {\n const cldPair = CurveLocationDetailPair.createCapture(\n CurveLocationDetail.createCurveFractionPoint(undefined, indexA, pointA),\n CurveLocationDetail.createCurveFractionPoint(undefined, indexB, pointB),\n );\n cldPair.detailA.a = cldPair.detailB.a = d;\n this.searchState.testAndSave(cldPair, d);\n }\n }\n}\n\n/**\n * Helper class for searching for the closest point in a linestring.\n * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).\n * @internal\n */\nexport class SingleTreeSearchHandlerForClosestPointOnLineString3d extends SingleTreeSearchHandler<number> {\n /** The calling context */\n public context: LineString3dRangeTreeContext;\n /** Evolving search state */\n public searchState: MinimumValueTester<CurveLocationDetail>;\n /** Space point for the search */\n public spacePoint: Point3d;\n\n /**\n * Constructor\n * @param spacePoint cloned\n * @param context captured\n * @param maxDist collect points at no more than this distance from spacePoint\n */\n public constructor(spacePoint: Point3d, context: LineString3dRangeTreeContext, maxDist?: number) {\n super();\n this.context = context;\n if (maxDist !== undefined && maxDist < 0)\n maxDist = undefined;\n this.searchState = MinimumValueTester.create<CurveLocationDetail>(maxDist);\n this.spacePoint = spacePoint.clone();\n }\n /** Return the current closest point */\n public getResult(): CurveLocationDetail | undefined {\n if (this.searchState.minValue !== undefined && this.searchState.itemAtMinValue !== undefined) {\n return this.searchState.itemAtMinValue;\n }\n return undefined;\n }\n /** Return the collected closest points (if collecting) */\n public getSavedItems(): CurveLocationDetail[] | undefined {\n if (this.searchState.savedItems.length > 0) {\n return this.searchState.savedItems;\n }\n return undefined;\n }\n /**\n * Return true if appData within the range should be offered to `processAppData`.\n * @param range range containing items to be tested.\n * @returns true if the spacePoint is within the range or close enough that a point in the range could be the closest.\n */\n public override isRangeActive(range: Range3d): boolean {\n const dMin = range.distanceToPoint(this.spacePoint);\n if (this.searchState.isNewMinValue(dMin)) {\n this.context.numRangeTestTrue++;\n return true;\n }\n this.context.numRangeTestFalse++;\n return false;\n }\n private _workSegment?: LineSegment3d;\n /** Test a segment indexed in the range tree as candidate for \"closest\" */\n public override processAppData(candidateIndex: number): void {\n const segment = this._workSegment = this.context.lineString.getIndexedSegment(candidateIndex, this._workSegment)!;\n if (segment) {\n const cld = segment.closestPoint(this.spacePoint, false);\n LineString3d.convertLocalToGlobalDetail(cld, candidateIndex, this.context.lineString.numEdges(), this.context.lineString);\n this.context.numPointTest++;\n this.searchState.testAndSave(cld, cld.a);\n }\n }\n}\n\n/**\n * Helper class for searching for the closest approach between linestrings.\n * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).\n * @internal\n */\nexport class TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach extends TwoTreeDistanceMinimizationSearchHandler<number> {\n /** Context for first polyline */\n public contextA: LineString3dRangeTreeContext;\n /** Context for second polyline */\n public contextB: LineString3dRangeTreeContext;\n /** Search state with current min distance point pair */\n public searchState: MinimumValueTester<CurveLocationDetailPair>;\n\n /**\n * Constructor\n * @param contextA captured\n * @param contextB captured\n * @param maxDist collect points at no more than this separation distance\n */\n public constructor(contextA: LineString3dRangeTreeContext, contextB: LineString3dRangeTreeContext, maxDist?: number) {\n super();\n this.contextA = contextA;\n this.contextB = contextB;\n if (maxDist !== undefined && maxDist < 0)\n maxDist = undefined;\n this.searchState = MinimumValueTester.create<CurveLocationDetailPair>(maxDist);\n }\n /**\n * Return the current closest approach.\n * * Details contain linestring *and* segment data, cf. [[LineString3d.convertLocalToGlobalDetail]]\n */\n public getResult(): CurveLocationDetailPair | undefined {\n if (this.searchState.minValue !== undefined) {\n return this.searchState.itemAtMinValue;\n }\n return undefined;\n }\n /** Return the collected close approaches (if collecting) */\n public getSavedItems(): CurveLocationDetailPair[] | undefined {\n if (this.searchState.savedItems.length > 0) {\n return this.searchState.savedItems;\n }\n return undefined;\n }\n /** Get current min distance */\n public override getCurrentDistance(): number {\n const d = this.searchState.minValue;\n return d === undefined ? Number.MAX_VALUE : d;\n }\n private static _workSegmentA?: LineSegment3d;\n private static _workSegmentB?: LineSegment3d;\n /** Compute and test the closest approach between two segments, given their indices. */\n public override processAppDataPair(indexA: number, indexB: number): void {\n this.contextA.numPointTest++;\n const segA = TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach._workSegmentA =\n this.contextA.lineString.getIndexedSegment(indexA, TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach._workSegmentA)!;\n const segB = TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach._workSegmentB =\n this.contextB.lineString.getIndexedSegment(indexB, TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach._workSegmentB)!;\n const cldPair = LineSegment3d.closestApproach(segA, false, segB, false);\n if (cldPair && this.searchState.isNewMinOrTrigger(cldPair.detailA.a)) {\n LineString3d.convertLocalToGlobalDetail(cldPair.detailA, indexA, this.contextA.lineString.numEdges(), this.contextA.lineString);\n LineString3d.convertLocalToGlobalDetail(cldPair.detailB, indexB, this.contextB.lineString.numEdges(), this.contextB.lineString);\n this.searchState.testAndSave(cldPair, cldPair.detailA.a);\n }\n }\n}\n\n/**\n * Helper class for searching for the closest point in a polyface.\n * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring FacetLocationDetail).\n * @internal\n */\nexport class SingleTreeSearchHandlerForClosestPointOnPolyface extends SingleTreeSearchHandler<number> {\n /** The calling context */\n public context: PolyfaceRangeTreeContext;\n /** Evolving search state */\n public searchState: MinimumValueTester<FacetLocationDetail>;\n /** Space point for the search */\n public spacePoint: Point3d;\n /** Whether to include facet interior in search */\n public searchFacetInterior: boolean;\n\n /**\n * Constructor\n * @param spacePoint cloned\n * @param context captured\n * @param maxDist collect points at no more than this distance from spacePoint\n * @param searchFacetInterior true: search facet interior + boundary; false: just boundary\n */\n public constructor(spacePoint: Point3d, context: PolyfaceRangeTreeContext, maxDist?: number, searchFacetInterior: boolean = false) {\n super();\n this.context = context;\n if (maxDist !== undefined && maxDist < 0)\n maxDist = undefined;\n this.searchState = MinimumValueTester.create<FacetLocationDetail>(maxDist);\n this.spacePoint = spacePoint.clone();\n this.searchFacetInterior = searchFacetInterior;\n }\n /** Return the current closest point */\n public getResult(): FacetLocationDetail | undefined {\n if (this.searchState.minValue !== undefined && this.searchState.itemAtMinValue !== undefined) {\n return this.searchState.itemAtMinValue;\n }\n return undefined;\n }\n /** Return the collected closest points (if collecting) */\n public getSavedItems(): FacetLocationDetail[] | undefined {\n if (this.searchState.savedItems.length > 0) {\n return this.searchState.savedItems;\n }\n return undefined;\n }\n /**\n * Return true if appData within the range should be offered to `processAppData`.\n * @param range range containing items to be tested.\n * @returns true if the spacePoint is within the range or close enough that a point in the range could be the closest.\n */\n public override isRangeActive(range: Range3d): boolean {\n const dMin = range.distanceToPoint(this.spacePoint);\n if (this.searchState.isNewMinValue(dMin)) {\n this.context.numRangeTestTrue++;\n return true;\n }\n this.context.numRangeTestFalse++;\n return false;\n }\n /** Test a facet indexed in the range tree as candidate for \"closest\" */\n public override processAppData(candidateIndex: number): void {\n this.context.visitor.setNumWrap(0); // so edgeCount === pointCount; closure point unnecessary for closestPoint[OnBoundary]\n if (this.context.visitor.moveToReadIndex(candidateIndex)) {\n let pld: PolygonLocationDetail | undefined;\n if (this.searchFacetInterior)\n pld = PolygonOps.closestPoint(this.context.visitor.point, this.spacePoint);\n else\n pld = PolygonOps.closestPointOnBoundary(this.context.visitor.point, this.spacePoint);\n this.context.numFacetTest++;\n if (pld && this.searchState.isNewMinOrTrigger(pld.a)) {\n const edgeCount = this.context.visitor.pointCount;\n const fld = this.context.convexFacets\n ? ConvexFacetLocationDetail.createCapture(this.context.visitor.currentReadIndex(), edgeCount, pld)\n : NonConvexFacetLocationDetail.createCapture(this.context.visitor.currentReadIndex(), edgeCount, pld);\n this.searchState.testAndSave(fld, pld.a);\n }\n }\n }\n}\n/**\n * Helper class for searching for the closest approach between polyfaces.\n * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring FacetLocationDetail).\n * @internal\n */\nexport class TwoTreeSearchHandlerForFacetFacetCloseApproach extends TwoTreeDistanceMinimizationSearchHandler<number> {\n /** Context for first polyface */\n public contextA: PolyfaceRangeTreeContext;\n /** Context for second polyface */\n public contextB: PolyfaceRangeTreeContext;\n /** Search state with current min distance and facet pair */\n public searchState: MinimumValueTester<FacetLocationDetailPair>;\n /** Whether to include facet interior in search */\n public searchFacetInterior: boolean;\n\n /** Constructor\n * @param contextA captured\n * @param contextB captured\n * @param maxDist collect points at no more than this separation distance\n * @param searchFacetInterior true: search facet interior + boundary; false: just boundary\n */\n public constructor(contextA: PolyfaceRangeTreeContext, contextB: PolyfaceRangeTreeContext, maxDist?: number, searchFacetInterior: boolean = false) {\n super();\n this.contextA = contextA;\n this.contextB = contextB;\n if (maxDist !== undefined && maxDist < 0)\n maxDist = undefined;\n this.searchState = MinimumValueTester.create<FacetLocationDetailPair>(maxDist);\n this.searchFacetInterior = searchFacetInterior && contextA.convexFacets && contextB.convexFacets;\n }\n /** Return the facets with closest approach */\n public getResult(): FacetLocationDetailPair | undefined {\n if (this.searchState.minValue !== undefined) {\n return this.searchState.itemAtMinValue;\n }\n return undefined;\n }\n /** Return the collected close approaches (if collecting) */\n public getSavedItems(): FacetLocationDetailPair[] | undefined {\n if (this.searchState.savedItems.length > 0) {\n return this.searchState.savedItems;\n }\n return undefined;\n }\n /** Get current min distance */\n public override getCurrentDistance(): number {\n const d = this.searchState.minValue;\n return d === undefined ? Number.MAX_VALUE : d;\n }\n /** Compute and test the closest approach between two facets, given their indices. */\n public override processAppDataPair(indexA: number, indexB: number): void {\n this.contextA.visitor.setNumWrap(1); // closed polygons are more efficient for PolygonOps.closestApproach\n this.contextB.visitor.setNumWrap(1);\n if (this.contextA.visitor.moveToReadIndex(indexA) && this.contextB.visitor.moveToReadIndex(indexB)) {\n // ASSUME: not worth sending in maxDist here...\n const pldPair = PolygonOps.closestApproach(this.contextA.visitor.point, this.contextB.visitor.point, undefined, this.searchFacetInterior);\n this.contextA.numFacetTest++;\n if (pldPair && this.searchState.isNewMinOrTrigger(pldPair.detailA.a)) {\n const edgeCountA = this.contextA.visitor.pointCount - 1;\n const edgeCountB = this.contextB.visitor.pointCount - 1;\n const fldPair = FacetLocationDetailPair.create(\n this.contextA.convexFacets ? ConvexFacetLocationDetail.createCapture(indexA, edgeCountA, pldPair.detailA) : NonConvexFacetLocationDetail.createCapture(indexA, edgeCountA, pldPair.detailA),\n this.contextB.convexFacets ? ConvexFacetLocationDetail.createCapture(indexB, edgeCountB, pldPair.detailB) : NonConvexFacetLocationDetail.createCapture(indexB, edgeCountB, pldPair.detailB),\n );\n this.searchState.testAndSave(fldPair, fldPair.detailA.a);\n }\n }\n }\n}\n\n"]}
1
+ {"version":3,"file":"RangeTreeSearchHandlers.js","sourceRoot":"","sources":["../../../../src/polyface/RangeTree/RangeTreeSearchHandlers.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module RangeSearch\n */\n\nimport { CurveLocationDetail, CurveLocationDetailPair } from \"../../curve/CurveLocationDetail\";\nimport { LineSegment3d } from \"../../curve/LineSegment3d\";\nimport { LineString3d } from \"../../curve/LineString3d\";\nimport { Geometry } from \"../../Geometry\";\nimport { Point3d } from \"../../geometry3d/Point3dVector3d\";\nimport { PolygonLocationDetail, PolygonOps } from \"../../geometry3d/PolygonOps\";\nimport { Range3d } from \"../../geometry3d/Range\";\nimport { XAndY, XYAndZ } from \"../../geometry3d/XYZProps\";\nimport { ConvexFacetLocationDetail, FacetLocationDetail, FacetLocationDetailPair, NonConvexFacetLocationDetail } from \"../FacetLocationDetail\";\nimport { LineString3dRangeTreeContext } from \"./LineString3dRangeTreeContext\";\nimport { MinimumValueTester } from \"./MinimumValueTester\";\nimport { Point3dArrayRangeTreeContext } from \"./Point3dArrayRangeTreeContext\";\nimport { PolyfaceRangeTreeContext } from \"./PolyfaceRangeTreeContext\";\nimport { SingleTreeSearchHandler, TwoTreeDistanceMinimizationSearchHandler } from \"./RangeTreeNode\";\n\n/**\n * Helper class for searching for the closest point in a set of points.\n * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).\n * @internal\n */\nexport class SingleTreeSearchHandlerForClosestPointInArray extends SingleTreeSearchHandler<number> {\n /** The calling context */\n public context: Point3dArrayRangeTreeContext;\n /** Evolving search state */\n public searchState: MinimumValueTester<number>;\n /** Space point for the search */\n public spacePoint: Point3d;\n\n /**\n * Constructor\n * @param spacePoint cloned\n * @param context captured\n * @param maxDist collect points at no more than this distance from spacePoint\n */\n public constructor(spacePoint: XAndY | XYAndZ, context: Point3dArrayRangeTreeContext, maxDist?: number) {\n super();\n this.context = context;\n if (maxDist !== undefined && maxDist < 0)\n maxDist = undefined;\n this.searchState = MinimumValueTester.create<number>(maxDist);\n this.spacePoint = Point3d.createFrom(spacePoint);\n }\n /** Return the current closest point */\n public getResult(): CurveLocationDetail | undefined {\n if (this.searchState.minValue !== undefined && this.searchState.itemAtMinValue !== undefined) {\n const iPoint = this.searchState.itemAtMinValue;\n const cld = CurveLocationDetail.createCurveFractionPoint(undefined, iPoint, this.context.points[iPoint]);\n cld.a = this.searchState.minValue;\n return cld;\n }\n return undefined;\n }\n /** Return the collected closest points (if collecting) */\n public getSavedItems(): CurveLocationDetail[] | undefined {\n if (this.searchState.savedItems.length === 0)\n return undefined;\n const cldArray: CurveLocationDetail[] = [];\n for (let i = 0; i < this.searchState.savedItems.length; ++i) {\n const iPoint = this.searchState.savedItems[i];\n const cld = CurveLocationDetail.createCurveFractionPoint(undefined, iPoint, this.context.points[iPoint]);\n cld.a = this.searchState.savedValues[i];\n cldArray.push(cld);\n }\n return cldArray;\n }\n /**\n * Return true if appData within the range should be offered to `processAppData`.\n * @param range range containing items to be tested.\n * @returns true if the spacePoint is within the range or close enough that a point in the range could be the closest.\n */\n public override isRangeActive(range: Range3d): boolean {\n const dMin = this.context.xyOnly ? range.distanceToPointXY(this.spacePoint) : range.distanceToPoint(this.spacePoint);\n if (this.searchState.isNewMinValue(dMin)) {\n this.context.numRangeTestTrue++;\n return true;\n }\n this.context.numRangeTestFalse++;\n return false;\n }\n /** Test a point indexed in the range tree as candidate for \"closest\" */\n public override processAppData(candidateIndex: number): void {\n const d = this.context.xyOnly ? this.spacePoint.distanceXY(this.context.points[candidateIndex]) : this.spacePoint.distance(this.context.points[candidateIndex]);\n this.context.numPointTest++;\n this.searchState.testAndSave(candidateIndex, d);\n }\n}\n\n/**\n * Helper class for searching for the closest approach between sets of points.\n * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).\n * @internal\n */\nexport class TwoTreeSearchHandlerForPoint3dArrayPoint3dArrayCloseApproach extends TwoTreeDistanceMinimizationSearchHandler<number> {\n /** Context for first set of points */\n public contextA: Point3dArrayRangeTreeContext;\n /** Context for second set of points */\n public contextB: Point3dArrayRangeTreeContext;\n /** Search state with current min distance point pair */\n public searchState: MinimumValueTester<CurveLocationDetailPair>;\n\n /** True if and only if both contexts specify xy-only. */\n private _xyOnly?: boolean;\n\n /**\n * Constructor\n * @param contextA captured\n * @param contextB captured\n * @param maxDist collect points at no more than this separation distance\n */\n public constructor(contextA: Point3dArrayRangeTreeContext, contextB: Point3dArrayRangeTreeContext, maxDist?: number) {\n super();\n this.contextA = contextA;\n this.contextB = contextB;\n if (maxDist !== undefined && maxDist < 0)\n maxDist = undefined;\n this.searchState = MinimumValueTester.create<CurveLocationDetailPair>(maxDist);\n this._xyOnly = contextA.xyOnly && contextB.xyOnly;\n }\n /** Return the current closest approach */\n public getResult(): CurveLocationDetailPair | undefined {\n if (this.searchState.minValue !== undefined) {\n return this.searchState.itemAtMinValue;\n }\n return undefined;\n }\n /** Return the collected close approaches (if collecting) */\n public getSavedItems(): CurveLocationDetailPair[] | undefined {\n if (this.searchState.savedItems.length > 0) {\n return this.searchState.savedItems;\n }\n return undefined;\n }\n /** Get current min distance */\n public override getCurrentDistance(): number {\n const d = this.searchState.minValue;\n return d === undefined ? Number.MAX_VALUE : d;\n }\n /** Whether to ignore z-coordinates in distance computations. */\n public override getXYOnly(): boolean { return this._xyOnly ?? false; }\n\n /** Compute and test the distance between two points, given their indices. */\n public override processAppDataPair(indexA: number, indexB: number): void {\n this.contextA.numPointTest++;\n const pointA = this.contextA.points[indexA];\n const pointB = this.contextB.points[indexB];\n const d = this._xyOnly ? Geometry.distanceXYXY(pointA.x, pointA.y, pointB.x, pointB.y) : Geometry.distanceXYZXYZ(pointA.x, pointA.y, pointA.z, pointB.x, pointB.y, pointB.z);\n if (this.searchState.isNewMinOrTrigger(d)) {\n const cldPair = CurveLocationDetailPair.createCapture(\n CurveLocationDetail.createCurveFractionPoint(undefined, indexA, pointA),\n CurveLocationDetail.createCurveFractionPoint(undefined, indexB, pointB),\n );\n cldPair.detailA.a = cldPair.detailB.a = d;\n this.searchState.testAndSave(cldPair, d);\n }\n }\n}\n\n/**\n * Helper class for searching for the closest point in a linestring.\n * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).\n * @internal\n */\nexport class SingleTreeSearchHandlerForClosestPointOnLineString3d extends SingleTreeSearchHandler<number> {\n /** The calling context */\n public context: LineString3dRangeTreeContext;\n /** Evolving search state */\n public searchState: MinimumValueTester<CurveLocationDetail>;\n /** Space point for the search */\n public spacePoint: Point3d;\n\n /**\n * Constructor\n * @param spacePoint cloned\n * @param context captured\n * @param maxDist collect points at no more than this distance from spacePoint\n */\n public constructor(spacePoint: Point3d, context: LineString3dRangeTreeContext, maxDist?: number) {\n super();\n this.context = context;\n if (maxDist !== undefined && maxDist < 0)\n maxDist = undefined;\n this.searchState = MinimumValueTester.create<CurveLocationDetail>(maxDist);\n this.spacePoint = spacePoint.clone();\n }\n /** Return the current closest point */\n public getResult(): CurveLocationDetail | undefined {\n if (this.searchState.minValue !== undefined && this.searchState.itemAtMinValue !== undefined) {\n return this.searchState.itemAtMinValue;\n }\n return undefined;\n }\n /** Return the collected closest points (if collecting) */\n public getSavedItems(): CurveLocationDetail[] | undefined {\n if (this.searchState.savedItems.length > 0) {\n return this.searchState.savedItems;\n }\n return undefined;\n }\n /**\n * Return true if appData within the range should be offered to `processAppData`.\n * @param range range containing items to be tested.\n * @returns true if the spacePoint is within the range or close enough that a point in the range could be the closest.\n */\n public override isRangeActive(range: Range3d): boolean {\n const dMin = range.distanceToPoint(this.spacePoint);\n if (this.searchState.isNewMinValue(dMin)) {\n this.context.numRangeTestTrue++;\n return true;\n }\n this.context.numRangeTestFalse++;\n return false;\n }\n private _workSegment?: LineSegment3d;\n /** Test a segment indexed in the range tree as candidate for \"closest\" */\n public override processAppData(candidateIndex: number): void {\n const segment = this._workSegment = this.context.lineString.getIndexedSegment(candidateIndex, this._workSegment)!;\n if (segment) {\n const cld = segment.closestPoint(this.spacePoint, false);\n LineString3d.convertLocalToGlobalDetail(cld, candidateIndex, this.context.lineString.numEdges(), this.context.lineString);\n this.context.numPointTest++;\n this.searchState.testAndSave(cld, cld.a);\n }\n }\n}\n\n/**\n * Helper class for searching for the closest approach between linestrings.\n * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).\n * @internal\n */\nexport class TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach extends TwoTreeDistanceMinimizationSearchHandler<number> {\n /** Context for first polyline */\n public contextA: LineString3dRangeTreeContext;\n /** Context for second polyline */\n public contextB: LineString3dRangeTreeContext;\n /** Search state with current min distance point pair */\n public searchState: MinimumValueTester<CurveLocationDetailPair>;\n\n /**\n * Constructor\n * @param contextA captured\n * @param contextB captured\n * @param maxDist collect points at no more than this separation distance\n */\n public constructor(contextA: LineString3dRangeTreeContext, contextB: LineString3dRangeTreeContext, maxDist?: number) {\n super();\n this.contextA = contextA;\n this.contextB = contextB;\n if (maxDist !== undefined && maxDist < 0)\n maxDist = undefined;\n this.searchState = MinimumValueTester.create<CurveLocationDetailPair>(maxDist);\n }\n /**\n * Return the current closest approach.\n * * Details contain linestring *and* segment data, cf. [[LineString3d.convertLocalToGlobalDetail]]\n */\n public getResult(): CurveLocationDetailPair | undefined {\n if (this.searchState.minValue !== undefined) {\n return this.searchState.itemAtMinValue;\n }\n return undefined;\n }\n /** Return the collected close approaches (if collecting) */\n public getSavedItems(): CurveLocationDetailPair[] | undefined {\n if (this.searchState.savedItems.length > 0) {\n return this.searchState.savedItems;\n }\n return undefined;\n }\n /** Get current min distance */\n public override getCurrentDistance(): number {\n const d = this.searchState.minValue;\n return d === undefined ? Number.MAX_VALUE : d;\n }\n private static _workSegmentA?: LineSegment3d;\n private static _workSegmentB?: LineSegment3d;\n /** Compute and test the closest approach between two segments, given their indices. */\n public override processAppDataPair(indexA: number, indexB: number): void {\n this.contextA.numPointTest++;\n const segA = TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach._workSegmentA =\n this.contextA.lineString.getIndexedSegment(indexA, TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach._workSegmentA)!;\n const segB = TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach._workSegmentB =\n this.contextB.lineString.getIndexedSegment(indexB, TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach._workSegmentB)!;\n const cldPair = LineSegment3d.closestApproach(segA, false, segB, false);\n if (cldPair && this.searchState.isNewMinOrTrigger(cldPair.detailA.a)) {\n LineString3d.convertLocalToGlobalDetail(cldPair.detailA, indexA, this.contextA.lineString.numEdges(), this.contextA.lineString);\n LineString3d.convertLocalToGlobalDetail(cldPair.detailB, indexB, this.contextB.lineString.numEdges(), this.contextB.lineString);\n this.searchState.testAndSave(cldPair, cldPair.detailA.a);\n }\n }\n}\n\n/**\n * Helper class for searching for the closest point in a polyface.\n * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring FacetLocationDetail).\n * @internal\n */\nexport class SingleTreeSearchHandlerForClosestPointOnPolyface extends SingleTreeSearchHandler<number> {\n /** The calling context */\n public context: PolyfaceRangeTreeContext;\n /** Evolving search state */\n public searchState: MinimumValueTester<FacetLocationDetail>;\n /** Space point for the search */\n public spacePoint: Point3d;\n /** Whether to include facet interior in search */\n public searchFacetInterior: boolean;\n\n /**\n * Constructor\n * @param spacePoint point to test\n * @param context captured\n * @param maxDist collect points at no more than this distance from spacePoint\n * @param searchFacetInterior true: search facet interior + boundary; false: just boundary\n */\n public constructor(spacePoint: XYAndZ | XAndY, context: PolyfaceRangeTreeContext, maxDist?: number, searchFacetInterior: boolean = false) {\n super();\n this.context = context;\n if (maxDist !== undefined && maxDist < 0)\n maxDist = undefined;\n this.searchState = MinimumValueTester.create<FacetLocationDetail>(maxDist);\n this.spacePoint = Point3d.createFrom(spacePoint);\n this.searchFacetInterior = searchFacetInterior;\n }\n /** Return the current closest point */\n public getResult(): FacetLocationDetail | undefined {\n if (this.searchState.minValue !== undefined && this.searchState.itemAtMinValue !== undefined) {\n return this.searchState.itemAtMinValue;\n }\n return undefined;\n }\n /** Return the collected closest points (if collecting) */\n public getSavedItems(): FacetLocationDetail[] | undefined {\n if (this.searchState.savedItems.length > 0) {\n return this.searchState.savedItems;\n }\n return undefined;\n }\n /**\n * Return true if appData within the range should be offered to `processAppData`.\n * @param range range containing items to be tested.\n * @returns true if the spacePoint is within the range or close enough that a point in the range could be the closest.\n */\n public override isRangeActive(range: Range3d): boolean {\n const dMin = range.distanceToPoint(this.spacePoint);\n if (this.searchState.isNewMinValue(dMin)) {\n this.context.numRangeTestTrue++;\n return true;\n }\n this.context.numRangeTestFalse++;\n return false;\n }\n /** Test a facet indexed in the range tree as candidate for \"closest\" */\n public override processAppData(candidateIndex: number): void {\n this.context.visitor.setNumWrap(0); // so edgeCount === pointCount; closure point unnecessary for closestPoint[OnBoundary]\n if (this.context.visitor.moveToReadIndex(candidateIndex)) {\n let pld: PolygonLocationDetail | undefined;\n if (this.searchFacetInterior)\n pld = PolygonOps.closestPoint(this.context.visitor.point, this.spacePoint);\n else\n pld = PolygonOps.closestPointOnBoundary(this.context.visitor.point, this.spacePoint);\n this.context.numFacetTest++;\n if (pld && this.searchState.isNewMinOrTrigger(pld.a)) {\n const edgeCount = this.context.visitor.pointCount;\n const fld = this.context.convexFacets\n ? ConvexFacetLocationDetail.createCapture(this.context.visitor.currentReadIndex(), edgeCount, pld)\n : NonConvexFacetLocationDetail.createCapture(this.context.visitor.currentReadIndex(), edgeCount, pld);\n this.searchState.testAndSave(fld, pld.a);\n }\n }\n }\n}\n/**\n * Helper class for searching for the closest approach between polyfaces.\n * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring FacetLocationDetail).\n * @internal\n */\nexport class TwoTreeSearchHandlerForFacetFacetCloseApproach extends TwoTreeDistanceMinimizationSearchHandler<number> {\n /** Context for first polyface */\n public contextA: PolyfaceRangeTreeContext;\n /** Context for second polyface */\n public contextB: PolyfaceRangeTreeContext;\n /** Search state with current min distance and facet pair */\n public searchState: MinimumValueTester<FacetLocationDetailPair>;\n /** Whether to include facet interior in search */\n public searchFacetInterior: boolean;\n\n /** Constructor\n * @param contextA captured\n * @param contextB captured\n * @param maxDist collect points at no more than this separation distance\n * @param searchFacetInterior true: search facet interior + boundary; false: just boundary\n */\n public constructor(contextA: PolyfaceRangeTreeContext, contextB: PolyfaceRangeTreeContext, maxDist?: number, searchFacetInterior: boolean = false) {\n super();\n this.contextA = contextA;\n this.contextB = contextB;\n if (maxDist !== undefined && maxDist < 0)\n maxDist = undefined;\n this.searchState = MinimumValueTester.create<FacetLocationDetailPair>(maxDist);\n this.searchFacetInterior = searchFacetInterior && contextA.convexFacets && contextB.convexFacets;\n }\n /** Return the facets with closest approach */\n public getResult(): FacetLocationDetailPair | undefined {\n if (this.searchState.minValue !== undefined) {\n return this.searchState.itemAtMinValue;\n }\n return undefined;\n }\n /** Return the collected close approaches (if collecting) */\n public getSavedItems(): FacetLocationDetailPair[] | undefined {\n if (this.searchState.savedItems.length > 0) {\n return this.searchState.savedItems;\n }\n return undefined;\n }\n /** Get current min distance */\n public override getCurrentDistance(): number {\n const d = this.searchState.minValue;\n return d === undefined ? Number.MAX_VALUE : d;\n }\n /** Compute and test the closest approach between two facets, given their indices. */\n public override processAppDataPair(indexA: number, indexB: number): void {\n this.contextA.visitor.setNumWrap(1); // closed polygons are more efficient for PolygonOps.closestApproach\n this.contextB.visitor.setNumWrap(1);\n if (this.contextA.visitor.moveToReadIndex(indexA) && this.contextB.visitor.moveToReadIndex(indexB)) {\n // ASSUME: not worth sending in maxDist here...\n const pldPair = PolygonOps.closestApproach(this.contextA.visitor.point, this.contextB.visitor.point, undefined, this.searchFacetInterior);\n this.contextA.numFacetTest++;\n if (pldPair && this.searchState.isNewMinOrTrigger(pldPair.detailA.a)) {\n const edgeCountA = this.contextA.visitor.pointCount - 1;\n const edgeCountB = this.contextB.visitor.pointCount - 1;\n const fldPair = FacetLocationDetailPair.create(\n this.contextA.convexFacets ? ConvexFacetLocationDetail.createCapture(indexA, edgeCountA, pldPair.detailA) : NonConvexFacetLocationDetail.createCapture(indexA, edgeCountA, pldPair.detailA),\n this.contextB.convexFacets ? ConvexFacetLocationDetail.createCapture(indexB, edgeCountB, pldPair.detailB) : NonConvexFacetLocationDetail.createCapture(indexB, edgeCountB, pldPair.detailB),\n );\n this.searchState.testAndSave(fldPair, fldPair.detailA.a);\n }\n }\n }\n}\n\n"]}
@@ -93,7 +93,7 @@ export class DeepCompare {
93
93
  if (a == null && b == null)
94
94
  return this.announce(true);
95
95
  if ((Object.keys(a)).length !== (Object.keys(b)).length) {
96
- this.errorTracker.unshift(`Mismatched property lists [${Object.keys(a)}][${Object.keys(b)}`);
96
+ this.errorTracker.unshift(`Mismatched property lists [${Object.keys(a).toString()}][${Object.keys(b).toString()}`);
97
97
  return this.announce(false);
98
98
  }
99
99
  // Keep track of result for each property of object
@@ -1 +1 @@
1
- {"version":3,"file":"DeepCompare.js","sourceRoot":"","sources":["../../../src/serialization/DeepCompare.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F;;GAEG;AAEH;;;GAGG;AACH,MAAM,OAAO,WAAW;IACtB,kDAAkD;IAC3C,UAAU,GAAG;QAClB,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;QACT,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,CAAC;QACX,SAAS,EAAE,CAAC;KACb,CAAC;IACF,oEAAoE;IAC7D,cAAc,GAA8B,EAAE,CAAC;IACtD,mCAAmC;IAC5B,YAAY,GAAU,EAAE,CAAC;IAChC,6DAA6D;IACtD,YAAY,CAAS;IAC5B,2DAA2D;IAC3D,YAAmB,YAAY,GAAG,OAAO,IAAI,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC;IAEhF;;OAEG;IACI,aAAa,CAAC,CAAS,EAAE,CAAS;QACvC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,8BAA8B,CAAC,CAAC;YAC/G,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,CAAQ,EAAE,CAAQ;QACrC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAA2B,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAA2B,EAAE,CAAC;YAC5C,0HAA0H;YAC1H,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC1E,KAAK,MAAM,QAAQ,IAAI,CAAC,EAAE,CAAC;wBACzB,IAAI,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;4BAC/B,+CAA+C;4BAC/C,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC;gCACpC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;4BACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACvB,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACpC,0HAA0H;YAC1H,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC1E,KAAK,MAAM,QAAQ,IAAI,CAAC,EAAE,CAAC;wBACzB,IAAI,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;4BAC/B,+CAA+C;4BAC/C,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC;gCACpC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;4BACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACvB,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAEpC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YACxF,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,iDAAiD;QACjD,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtC,QAAQ,GAAG,KAAK,CAAC;gBACjB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;gBAC/C,MAAM;YACR,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAEO,aAAa,CAAC,CAAM,EAAE,CAAM;QAClC,gEAAgE;QAChE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI;YACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YACxD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,8BAA8B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7F,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,mDAAmD;QACnD,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,KAAK,MAAM,QAAQ,IAAI,CAAC,EAAE,CAAC;YACzB,2CAA2C;YAC3C,IAAI,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/B,wDAAwD;gBACxD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAClD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACpC,CAAC;gBACD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAEhC,uCAAuC;gBACvC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;oBAClC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,QAAQ,gBAAgB,CAAC,CAAC;oBAChE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC7B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;oBACpD,gDAAgD;oBAChD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBACpC,QAAQ,GAAG,KAAK,CAAC;oBACjB,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,+EAA+E;IACvE,QAAQ,CAAC,KAAc;QAC7B,IAAI,KAAK;YACP,OAAO,IAAI,CAAC;QACd,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACI,OAAO,CAAC,CAAM,EAAE,CAAM,EAAE,SAAkB;QAC/C,IAAI,SAAS,KAAK,SAAS;YACzB,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAChC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC;QAC5L,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,yEAAyE;IACjE,eAAe,CAAC,CAAM,EAAE,CAAM;QACpC,IAAI,OAAO,CAAC,KAAK,OAAO,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,CAAC;aAAM,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE,CAAC;YAC9D,0CAA0C;YAC1C,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1D,+CAA+C;YAC/C,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC1B,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC;aAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1D,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;aAAM,IAAI,OAAO,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;YAC5D,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;aAAM,IAAI,OAAO,CAAC,KAAK,WAAW,IAAI,OAAO,CAAC,KAAK,WAAW,EAAE,CAAC;YAChE,6CAA6C;YAC7C,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,CAAC;YACN,mBAAmB;YACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Serialization\n */\n\n/**\n * Utilities to compare json objects by searching through their properties.\n * @public\n */\nexport class DeepCompare {\n /** Statistical accumulations during searchers. */\n public typeCounts = {\n numbers: 0,\n arrays: 0,\n functions: 0,\n objects: 0,\n strings: 0,\n booleans: 0,\n undefined: 0,\n };\n /** Counts of property names encountered during various searches. */\n public propertyCounts: { [key: string]: number } = {};\n /** Array of error descriptions. */\n public errorTracker: any[] = [];\n /** relative tolerance for declaring numeric values equal. */\n public numberRelTol: number;\n /** Construct comparison object with relative tolerance. */\n public constructor(numberRelTol = 1.0e-12) { this.numberRelTol = numberRelTol; }\n\n /** Test if a and b are within tolerance.\n * * If not, push error message to errorTracker.\n */\n public compareNumber(a: number, b: number) {\n if (Math.abs(b - a) < this.numberRelTol * (1 + Math.abs(a) + Math.abs(b))) {\n return this.announce(true);\n } else {\n this.errorTracker.unshift(b);\n this.errorTracker.unshift(a);\n this.errorTracker.unshift(`In ${this.errorTracker[this.errorTracker.length - 1]} property: Mismatched values`);\n return this.announce(false);\n }\n }\n\n private compareArray(a: any[], b: any[]) {\n if (a.length !== b.length) {\n const aCounter: { [key: string]: any } = {};\n const bCounter: { [key: string]: any } = {};\n // Append object to tracker that counts the properties of each array element (which is an object) in b, ONLY AT THIS LEVEL\n for (const i of b) {\n if (typeof i === \"object\" && typeof i !== \"function\" && !Array.isArray(i)) {\n for (const property in i) {\n if (i.hasOwnProperty(property)) {\n // Add property to counter if not already there\n if (!bCounter.hasOwnProperty(property))\n bCounter[property] = 0;\n bCounter[property]++;\n }\n }\n }\n }\n this.errorTracker.unshift(bCounter);\n // Append object to tracker that counts the properties of each array element (which is an object) in a, ONLY AT THIS LEVEL\n for (const i of a) {\n if (typeof i === \"object\" && typeof i !== \"function\" && !Array.isArray(i)) {\n for (const property in i) {\n if (i.hasOwnProperty(property)) {\n // Add property to counter if not already there\n if (!aCounter.hasOwnProperty(property))\n aCounter[property] = 0;\n aCounter[property]++;\n }\n }\n }\n }\n this.errorTracker.unshift(aCounter);\n\n this.errorTracker.unshift(`Mismatched array lengths a: [${a.length}] b: [${b.length}]`);\n return this.announce(false);\n }\n // Keep track of result for each element of array\n let toReturn = true;\n for (let i = 0; i < a.length; i++) {\n if (!this.compareInternal(a[i], b[i])) {\n toReturn = false;\n this.errorTracker.unshift(`[${i.toString()}]`);\n break;\n }\n }\n return this.announce(toReturn);\n }\n\n private compareObject(a: any, b: any) {\n // Check that both objects contain the same amount of properties\n if (a == null && b == null)\n return this.announce(true);\n if ((Object.keys(a)).length !== (Object.keys(b)).length) {\n this.errorTracker.unshift(`Mismatched property lists [${Object.keys(a)}][${Object.keys(b)}`);\n return this.announce(false);\n }\n // Keep track of result for each property of object\n let toReturn = true;\n for (const property in a) {\n // Only check non-generic object properties\n if (a.hasOwnProperty(property)) {\n // If property does not exist in propertyCounter, add it\n if (!this.propertyCounts.hasOwnProperty(property)) {\n this.propertyCounts[property] = 0;\n }\n this.propertyCounts[property]++;\n\n // Check that same property exists in b\n if (!(b.hasOwnProperty(property))) {\n this.errorTracker.unshift(`Property ${property} of A not in B`);\n this.errorTracker.unshift(a);\n this.errorTracker.unshift(b);\n return this.announce(false);\n }\n if (!this.compareInternal(a[property], b[property])) {\n // If not true, push property and break the loop\n this.errorTracker.unshift(property);\n toReturn = false;\n break;\n }\n }\n }\n return this.announce(toReturn);\n }\n\n // this is a convenient place for a breakpoint on failures in areSameStructure.\n private announce(value: boolean): boolean {\n if (value)\n return true;\n return false;\n }\n\n /** Main entry for comparing deep json objects.\n * * errorTracker, typeCounts, and propertyCounts are cleared.\n */\n public compare(a: any, b: any, tolerance?: number): boolean {\n if (tolerance !== undefined)\n this.numberRelTol = tolerance;\n this.errorTracker.length = 0;\n this.typeCounts.numbers = this.typeCounts.arrays = this.typeCounts.functions = this.typeCounts.objects = this.typeCounts.strings = this.typeCounts.booleans = this.typeCounts.undefined = 0;\n this.propertyCounts = {};\n return this.compareInternal(a, b);\n }\n\n // Recursive function for comparing any two nodes in a json object \"tree\"\n private compareInternal(a: any, b: any): boolean {\n if (typeof a !== typeof b) {\n return this.announce(false);\n } else if ((typeof a === \"number\") && (typeof b === \"number\")) {\n this.typeCounts.numbers++;\n return this.compareNumber(a, b);\n } else if (Array.isArray(a) && Array.isArray(b)) {\n this.typeCounts.arrays++;\n return this.compareArray(a, b);\n } else if (typeof a === \"function\" && typeof b === \"function\") {\n // No current necessity to check functions\n this.typeCounts.functions++;\n return true;\n } else if (typeof a === \"object\" && typeof b === \"object\") {\n // Argument is object but not array or function\n this.typeCounts.objects++;\n return (a === b) ? true : this.compareObject(a, b);\n } else if (typeof a === \"string\" && typeof b === \"string\") {\n this.typeCounts.strings++;\n return a === b;\n } else if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n this.typeCounts.booleans++;\n return a === b;\n } else if (typeof a === \"undefined\" && typeof b === \"undefined\") {\n // As long as both are undefined, return true\n this.typeCounts.undefined++;\n return true;\n } else {\n // Unsupported type\n return this.announce(false);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"DeepCompare.js","sourceRoot":"","sources":["../../../src/serialization/DeepCompare.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Serialization\n */\n\n/**\n * Utilities to compare json objects by searching through their properties.\n * @public\n */\nexport class DeepCompare {\n /** Statistical accumulations during searchers. */\n public typeCounts = {\n numbers: 0,\n arrays: 0,\n functions: 0,\n objects: 0,\n strings: 0,\n booleans: 0,\n undefined: 0,\n };\n /** Counts of property names encountered during various searches. */\n public propertyCounts: { [key: string]: number } = {};\n /** Array of error descriptions. */\n public errorTracker: any[] = [];\n /** relative tolerance for declaring numeric values equal. */\n public numberRelTol: number;\n /** Construct comparison object with relative tolerance. */\n public constructor(numberRelTol = 1.0e-12) { this.numberRelTol = numberRelTol; }\n\n /** Test if a and b are within tolerance.\n * * If not, push error message to errorTracker.\n */\n public compareNumber(a: number, b: number) {\n if (Math.abs(b - a) < this.numberRelTol * (1 + Math.abs(a) + Math.abs(b))) {\n return this.announce(true);\n } else {\n this.errorTracker.unshift(b);\n this.errorTracker.unshift(a);\n this.errorTracker.unshift(`In ${this.errorTracker[this.errorTracker.length - 1]} property: Mismatched values`);\n return this.announce(false);\n }\n }\n\n private compareArray(a: any[], b: any[]) {\n if (a.length !== b.length) {\n const aCounter: { [key: string]: any } = {};\n const bCounter: { [key: string]: any } = {};\n // Append object to tracker that counts the properties of each array element (which is an object) in b, ONLY AT THIS LEVEL\n for (const i of b) {\n if (typeof i === \"object\" && typeof i !== \"function\" && !Array.isArray(i)) {\n for (const property in i) {\n if (i.hasOwnProperty(property)) {\n // Add property to counter if not already there\n if (!bCounter.hasOwnProperty(property))\n bCounter[property] = 0;\n bCounter[property]++;\n }\n }\n }\n }\n this.errorTracker.unshift(bCounter);\n // Append object to tracker that counts the properties of each array element (which is an object) in a, ONLY AT THIS LEVEL\n for (const i of a) {\n if (typeof i === \"object\" && typeof i !== \"function\" && !Array.isArray(i)) {\n for (const property in i) {\n if (i.hasOwnProperty(property)) {\n // Add property to counter if not already there\n if (!aCounter.hasOwnProperty(property))\n aCounter[property] = 0;\n aCounter[property]++;\n }\n }\n }\n }\n this.errorTracker.unshift(aCounter);\n\n this.errorTracker.unshift(`Mismatched array lengths a: [${a.length}] b: [${b.length}]`);\n return this.announce(false);\n }\n // Keep track of result for each element of array\n let toReturn = true;\n for (let i = 0; i < a.length; i++) {\n if (!this.compareInternal(a[i], b[i])) {\n toReturn = false;\n this.errorTracker.unshift(`[${i.toString()}]`);\n break;\n }\n }\n return this.announce(toReturn);\n }\n\n private compareObject(a: any, b: any) {\n // Check that both objects contain the same amount of properties\n if (a == null && b == null)\n return this.announce(true);\n if ((Object.keys(a)).length !== (Object.keys(b)).length) {\n this.errorTracker.unshift(`Mismatched property lists [${Object.keys(a).toString()}][${Object.keys(b).toString()}`);\n return this.announce(false);\n }\n // Keep track of result for each property of object\n let toReturn = true;\n for (const property in a) {\n // Only check non-generic object properties\n if (a.hasOwnProperty(property)) {\n // If property does not exist in propertyCounter, add it\n if (!this.propertyCounts.hasOwnProperty(property)) {\n this.propertyCounts[property] = 0;\n }\n this.propertyCounts[property]++;\n\n // Check that same property exists in b\n if (!(b.hasOwnProperty(property))) {\n this.errorTracker.unshift(`Property ${property} of A not in B`);\n this.errorTracker.unshift(a);\n this.errorTracker.unshift(b);\n return this.announce(false);\n }\n if (!this.compareInternal(a[property], b[property])) {\n // If not true, push property and break the loop\n this.errorTracker.unshift(property);\n toReturn = false;\n break;\n }\n }\n }\n return this.announce(toReturn);\n }\n\n // this is a convenient place for a breakpoint on failures in areSameStructure.\n private announce(value: boolean): boolean {\n if (value)\n return true;\n return false;\n }\n\n /** Main entry for comparing deep json objects.\n * * errorTracker, typeCounts, and propertyCounts are cleared.\n */\n public compare(a: any, b: any, tolerance?: number): boolean {\n if (tolerance !== undefined)\n this.numberRelTol = tolerance;\n this.errorTracker.length = 0;\n this.typeCounts.numbers = this.typeCounts.arrays = this.typeCounts.functions = this.typeCounts.objects = this.typeCounts.strings = this.typeCounts.booleans = this.typeCounts.undefined = 0;\n this.propertyCounts = {};\n return this.compareInternal(a, b);\n }\n\n // Recursive function for comparing any two nodes in a json object \"tree\"\n private compareInternal(a: any, b: any): boolean {\n if (typeof a !== typeof b) {\n return this.announce(false);\n } else if ((typeof a === \"number\") && (typeof b === \"number\")) {\n this.typeCounts.numbers++;\n return this.compareNumber(a, b);\n } else if (Array.isArray(a) && Array.isArray(b)) {\n this.typeCounts.arrays++;\n return this.compareArray(a, b);\n } else if (typeof a === \"function\" && typeof b === \"function\") {\n // No current necessity to check functions\n this.typeCounts.functions++;\n return true;\n } else if (typeof a === \"object\" && typeof b === \"object\") {\n // Argument is object but not array or function\n this.typeCounts.objects++;\n return (a === b) ? true : this.compareObject(a, b);\n } else if (typeof a === \"string\" && typeof b === \"string\") {\n this.typeCounts.strings++;\n return a === b;\n } else if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n this.typeCounts.booleans++;\n return a === b;\n } else if (typeof a === \"undefined\" && typeof b === \"undefined\") {\n // As long as both are undefined, return true\n this.typeCounts.undefined++;\n return true;\n } else {\n // Unsupported type\n return this.announce(false);\n }\n }\n}\n"]}
@@ -343,7 +343,8 @@ export declare class Sample {
343
343
  * @param numYVertices number of vertices in y direction
344
344
  * @param createParams true to create parameters, with parameter value `(i,j)` for point at (0 based) vertex in x,y directions
345
345
  * @param createNormals true to create a (single) normal indexed from all facets
346
- * @param createColors true to create a single color on each quad. (shared between its triangles)
346
+ * @param createColors true to create a single color on each quad (shared between both triangles in quad if triangulating)
347
+ * @param triangulate whether to triangulate the quads (default true)
347
348
  * @note edgeVisible is false only on the diagonals
348
349
  */
349
350
  static createTriangularUnitGridPolyface(origin: Point3d, vectorX: Vector3d, vectorY: Vector3d, numXVertices: number, numYVertices: number, createParams?: boolean, createNormals?: boolean, createColors?: boolean, triangulate?: boolean): IndexedPolyface;
@@ -1 +1 @@
1
- {"version":3,"file":"GeometrySamples.d.ts","sourceRoot":"","sources":["../../../src/serialization/GeometrySamples.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAyB,MAAM,2BAA2B,CAAC;AAGvG,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AACpF,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAAE,MAAM,4CAA4C,CAAC;AAE1F,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAA8B,kBAAkB,EAAmB,MAAM,qBAAqB,CAAC;AACtG,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;AACpE;;;;GAIG;AACH,qBAAa,2BAA2B;IACtC,iEAAiE;WACnD,cAAc,CAAC,KAAK,GAAE,MAAU,GAAG,oBAAoB;IAGrE;;;OAGG;WACW,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAE,MAAU,GAAG,oBAAoB;IAG3E;;;OAGG;WACW,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,UAAmC,EAAE,EAAE,GAAE,MAAU,GAAG,oBAAoB;IAG/H;;;OAGG;WACW,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,UAAmC,EAAE,EAAE,GAAE,MAAU,GAAG,oBAAoB;CAG9H;AAqED;;;GAGG;AACH,qBAAa,MAAM;IACjB,0CAA0C;IAC1C,gBAAuB,OAAO,EAAE,OAAO,EAAE,CAIjB;IACxB,0CAA0C;IAC1C,gBAAuB,OAAO,EAAE,OAAO,EAAE,CASb;IAC5B;;;OAGG;WACW,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE;IAQtF;;;OAGG;WACW,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE;IAOtF,0CAA0C;IAC1C,gBAAuB,OAAO,EAAE,OAAO,EAAE,CAWV;IAC/B,kDAAkD;WACpC,oBAAoB,IAAI,QAAQ,EAAE;IAehD,mDAAmD;IACnD,gBAAuB,QAAQ,EAAE,QAAQ,EAAE,CAUzC;IACF,oDAAoD;WACtC,cAAc,IAAI,OAAO,EAAE;IAOzC,8FAA8F;WAChF,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,GAAE,MAAU,GAAG,OAAO,EAAE;IASzG,iGAAiG;WACnF,yBAAyB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,GAAE,MAAU,GAAG,OAAO,EAAE;IAGjH;;;;OAIG;WACW,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAE,MAAY;IAOhF,2EAA2E;WAC7D,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE;IAU5D;;;;;OAKG;WACW,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,GAAE,MAAU,GAAG,OAAO,EAAE;IAWpI,mCAAmC;WACrB,gBAAgB,IAAI,SAAS,EAAE;IAW7C;;;;OAIG;WACW,mBAAmB,IAAI,0BAA0B,EAAE;IAqBjE;;;OAGG;WACW,mBAAmB,CAAC,oBAAoB,GAAE,OAAe,GAAG,cAAc,EAAE;IAkC1F;;;OAGG;WACW,sBAAsB,IAAI,eAAe,EAAE;IAezD,gFAAgF;WAClE,yBAAyB,CACrC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAC1E,cAAc,EAAE;IAqBnB,kDAAkD;WACpC,oBAAoB,IAAI,eAAe,EAAE;IAqBvD;;;;;;;;OAQG;WACW,qCAAqC,CACjD,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,OAAO,GACzB,MAAM,EAAE,EAAE;IA4Bb;;;OAGG;WACW,wBAAwB,IAAI,kBAAkB,EAAE;IAQ9D,4FAA4F;WAC9E,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,4BAA4B;IAUzH,oFAAoF;WACtE,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK;IAMhG,4CAA4C;IAC5C,gBAAuB,4BAA4B,EAAE,4BAA4B,EAAE,CAMjF;IAEF,sDAAsD;IACtD,gBAAuB,KAAK,EAAE,KAAK,EAAE,CAMnC;IACF,wEAAwE;IACxE,gBAAuB,KAAK,EAAE,KAAK,EAAE,CAOnC;IACF,4BAA4B;IAC5B,gBAAuB,UAAU,EAAE,UAAU,EAAE,CAO7C;IACF,6BAA6B;IAC7B,gBAAuB,aAAa,EAAE,aAAa,EAAE,CAKnD;IACF,6BAA6B;WACf,iBAAiB,IAAI,YAAY,EAAE;IAmBjD,2EAA2E;IAC3E,gBAAuB,OAAO,EAAE,OAAO,EAAE,CAKvC;IACF,kFAAkF;IAClF,gBAAuB,OAAO,EAAE,OAAO,EAAE,CAKvC;IACF,kFAAkF;IAClF,gBAAuB,OAAO,EAAE,OAAO,EAAE,CAKvC;IACF;;;;;;;OAOG;WACW,mBAAmB,IAAI,QAAQ,EAAE;IAiB/C,sCAAsC;WACxB,0BAA0B,IAAI,SAAS,EAAE;IAiBvD;;;;;;OAMG;WACW,uBAAuB,IAAI,QAAQ,EAAE;IAiDnD;;;;;;;OAOG;WACW,sBAAsB,IAAI,QAAQ,EAAE;IAyBlD;;;;;;;OAOG;WACW,qBAAqB,CAAC,aAAa,GAAE,MAAY,GAAG,SAAS,EAAE;IA2B7E,8DAA8D;WAChD,yBAAyB,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS;IAKxE;;;;;OAKG;WACW,eAAe,IAAI,QAAQ,EAAE;IAiB3C;;;;;OAKG,QACW,eAAe,CAAC,gBAAgB,GAAE,OAAe,GAAG,QAAQ,EAAE;IAiB5E,uEAAuE;WACzD,YAAY,IAAI,KAAK,EAAE;IAarC,sCAAsC;WACxB,iBAAiB,CAAC,QAAQ,GAAE,OAAe,GAAG,IAAI,EAAE;IA+BlE;;;OAGG;WACW,kBAAkB,IAAI,IAAI,EAAE;IAyB1C,wCAAwC;WAC1B,wBAAwB,IAAI,aAAa,EAAE;IAczD,8BAA8B;WAChB,iBAAiB,IAAI,IAAI,EAAE;IAsBzC;;;;;;;;OAQG;WACW,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,EAAE;IAgBpI;;;;;;;;OAQG;WACW,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,EAAE;IAc5J;;;;;;;;;;OAUG;WACW,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,EAAE;IASzI,sEAAsE;WACxD,sBAAsB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE;IAQlK;;;;;;;;;;;;;;;OAeG;WACW,2BAA2B,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAC9I,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,EAAE;IAgBjG;;;;;;OAMG;WACW,YAAY,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI;IAYpG;;;;;;OAMG;WACW,gBAAgB,IAAI,IAAI,EAAE;IAoBxC;;;;;OAKG;WACW,wBAAwB,IAAI,OAAO,EAAE,EAAE;IAOrD,sCAAsC;WACxB,yBAAyB,CAAC,cAAc,GAAE,OAAe,GAAG,YAAY,EAAE;IA6ExF,oBAAoB;WACN,kBAAkB,IAAI,WAAW,EAAE;IA4BjD,wCAAwC;WAC1B,iBAAiB,IAAI,WAAW,EAAE;IAchD;;;;OAIG;WACW,2BAA2B,CAAC,IAAI,GAAE,MAAY,GAAG,cAAc,EAAE;IA0B/E,yEAAyE;WAC3D,4BAA4B,CAAC,cAAc,EAAE,MAAM,GAAG,eAAe,EAAE;IAgCrF;;;;;;;;;;;OAWG;WACW,gCAAgC,CAC5C,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EACrD,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GAAE,OAAe,EAAE,aAAa,GAAE,OAAe,EACzG,YAAY,GAAE,OAAe,EAAE,WAAW,GAAE,OAAc,GACzD,eAAe;IAwGlB,0EAA0E;WAC5D,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAE,MAAY,EAAE,EAAE,GAAE,MAAY,GAAG,OAAO,EAAE;IASrG,sDAAsD;WACxC,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAIlI;;;;;;;;;OASG;WACW,+BAA+B,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IA2BzK;;;;;;OAMG;WACW,wBAAwB,CACpC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IA+BpD,sDAAsD;WACxC,kCAAkC,CAC9C,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAC1D,QAAQ,GAAE,MAAY,EACtB,QAAQ,GAAE,MAAY,EACtB,QAAQ,GAAE,MAAY,EACtB,QAAQ,GAAE,MAAY,GAAG,iBAAiB,GAAG,SAAS;IAgBxD,6BAA6B;WACf,wBAAwB,IAAI,WAAW,EAAE;IAqCvD;;;OAGG;WACW,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,cAAc,EAAE;IASnH,yEAAyE;WAC3D,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAGjG,yEAAyE;WAC3D,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAGjG,yCAAyC;WAC3B,4BAA4B,IAAI,eAAe,EAAE;IAe/D,8BAA8B;WAChB,aAAa,CAAC,kBAAkB,GAAE,OAAe,GAAG,MAAM,EAAE;IAoC1E,8CAA8C;WAChC,gBAAgB,IAAI,MAAM,EAAE;IAe1C,6BAA6B;WACf,WAAW,IAAI,IAAI,EAAE;IAcnC,0GAA0G;WAC5F,yBAAyB,CACrC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,GAC9F,eAAe;IAUlB,kCAAkC;WACpB,gBAAgB,IAAI,SAAS,EAAE;IAe7C,6BAA6B;WACf,WAAW,CAAC,MAAM,GAAE,OAAc,GAAG,GAAG,EAAE;IAyCxD,qFAAqF;WACvE,eAAe,CAC3B,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,GAAE,MAAY,EAAE,MAAM,GAAE,OAAe,GACvF,OAAO,EAAE;IAWZ,2EAA2E;WAC7D,wBAAwB,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,GAAE,MAAY,EAAE,MAAM,GAAE,OAAe,GAAG,OAAO,EAAE;IAO3G,mCAAmC;WACrB,iBAAiB,CAC7B,mBAAmB,GAAE,OAAe,EAAE,kBAAkB,GAAE,OAAe,GACxE,UAAU,EAAE;IAoCf;;;;;OAKG;WACW,+BAA+B,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,oBAAoB;IAMzG;;;;;OAKG;WACW,+BAA+B,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,OAAe,EACpG,OAAO,GAAE,MAAU,EAAE,OAAO,GAAE,MAAU,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,gBAAgB;IAUtF,OAAO,CAAC,MAAM,CAAC,cAAc;IAI7B,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAYlC;;;;;;;;OAQG;WACW,6BAA6B,CACzC,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GACtF,OAAO,EAAE;IAUZ;;;OAGG;WACW,0BAA0B,CAAC,YAAY,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,OAAO,EAAE;IAetG,2CAA2C;WAC7B,iCAAiC,CAAC,YAAY,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,OAAO,EAAE;IAiB7G,mEAAmE;WACrD,mCAAmC,CAAC,YAAY,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,OAAO,EAAE;IAiB/G,kEAAkE;WACpD,gCAAgC,CAAC,YAAY,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,OAAO,EAAE;IAoB5G,qEAAqE;WACvD,8BAA8B,CAAC,YAAY,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,OAAO,EAAE;IAmB1G,+CAA+C;WACjC,+BAA+B,CAAC,YAAY,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,OAAO,EAAE;IAmB3G,oEAAoE;WACtD,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO;IAOvG;;;;;;;;;OASG;WACW,4BAA4B,CACxC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,OAAc,EACpB,IAAI,GAAE,OAAiC,EACvC,IAAI,GAAE,OAAiC,EACvC,IAAI,GAAE,OAAiC,GAAG,OAAO,EAAE;IAOrD,uDAAuD;WACzC,sBAAsB,CAAC,EAAE,GAAE,MAAU,EAAE,EAAE,GAAE,MAAU,EAAE,EAAE,GAAE,MAAU,EAAE,EAAE,GAAE,MAAU,EAAE,EAAE,GAAE,MAAU,EAAE,EAAE,GAAE,MAAU,EACjI,QAAQ,CAAC,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE;IA0B9C;;;OAGG;WACW,6BAA6B,IAAI,kBAAkB,EAAE;IA0GnE;;;;OAIG;WACW,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAC9C,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,YAAY,EAAE,UAAU,EACxB,UAAU,EAAE,UAAU,EACtB,cAAc,CAAC,EAAE,SAAS,GACzB,cAAc,GAAG,SAAS;IA0B7B;;;;;;;;;;;;;;;OAeG;WACW,iCAAiC,IAAI,2BAA2B,EAAE;IAkIhF;;;;;;;;OAQG;WACW,oBAAoB,CAChC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GACpF,IAAI;IAuCP;;;;;;OAMG;WACW,UAAU,CAAC,WAAW,GAAE,MAAY,EAAE,KAAK,GAAE,UAAmC,GAAG,KAAK,EAAE;IAYxG;;;OAGG;WACW,cAAc,CAAC,WAAW,GAAE,MAAM,EAAO,GAAG,KAAK,EAAE;IAoBjE;;;;;OAKG;WACW,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS;IAavE;;;;;;OAMG;WACW,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,GAAE,KAA+B,GAAG,cAAc,EAAE;IA+CzH;;;;;;;;;;;;;OAaG;WACW,YAAY,CACxB,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,UAAQ,GACzH,OAAO,EAAE;IAoBZ;;;;;;;;;;;OAWG;WACW,4BAA4B,CACxC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GACnG,OAAO,EAAE;IAaZ,mHAAmH;WACrG,2BAA2B,CACvC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GACnG,OAAO,EAAE;IAIZ;;;;OAIG;WACW,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,YAAY,GAAE,OAAe,GAAG,aAAa,EAAE;IAUxG;;;;;OAKG;WACW,oBAAoB,CAChC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAC7F,OAAO,EAAE;IAYZ;;;;;;OAMG;WACW,UAAU,CACtB,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,KAAK,GACvH,OAAO,EAAE;IAiBZ;;;;;;;;;;;OAWG;WACW,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,EAAE;IAcjL,OAAO,CAAC,MAAM,CAAC,cAAc;IAG7B,8DAA8D;WAChD,2BAA2B,IAAI,aAAa,EAAE;IA0C5D;;;;;;OAMG;WACW,mBAAmB,CAC/B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,WAAW,GAAE,MAAW,EACxB,KAAK,GAAE,MAAqB,EAC5B,CAAC,GAAE,MAAU,EACb,UAAU,GAAE,UAAqD,EACjE,CAAC,GAAE,MAAU,EACb,SAAS,GAAE,UAAqD,GAC/D,OAAO,EAAE;IAOZ;;;OAGG;WACW,4BAA4B,CACxC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,oBAAoB,EAAE,EAAE,EAAE,oBAAoB,EAAE,EAAE,CAAC,EAAE,oBAAoB,GACjG,OAAO,EAAE;IASZ;;;;;;;;;;;OAWG;WACW,uBAAuB,CACnC,IAAI,EAAE,YAAY,EAClB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EACnD,QAAQ,EAAE,kBAAkB,EAC5B,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,MAAM,GACtD,IAAI;IAoBP;;;;;;;;;OASG;WACW,mBAAmB,CAC/B,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAC9F,eAAe,GAAG,SAAS;IAkB9B,0EAA0E;WAC5D,qBAAqB,CACjC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,GACnH,OAAO,EAAE;IAmBZ;;;;;;;;;;;OAWG;WACW,2BAA2B,CACvC,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,MAAM,EACxB,aAAa,GAAE,UAAsD,EACrE,cAAc,GAAE,UAAqD,GACpE,OAAO,EAAE;IAsBZ;;;;;;;;;OASG;WACW,gBAAgB,CAC5B,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAE,OAAc,EAAE,CAAC,GAAE,MAAU,GAC7H,OAAO,EAAE;IAeZ;;;;;;;OAOG;WACW,gCAAgC,CAC5C,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,GACxF,eAAe;IA4BlB;;;;;;;;;OASG;WACW,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE;IAkBvG;;;;MAIE;WACY,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAE,MAAU,GAAG,OAAO;IAIjF;;;MAGE;WACY,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAGlE;;;;;OAKG;WACW,2BAA2B,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,aAAa,EACvB,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,eAAe,GAAG,SAAS;IAKjD;;;;;OAKG;WACW,iBAAiB,CAC7B,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,SAAS,GACpB,OAAO,EAAE;CAeb"}
1
+ {"version":3,"file":"GeometrySamples.d.ts","sourceRoot":"","sources":["../../../src/serialization/GeometrySamples.ts"],"names":[],"mappings":"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"}
@@ -1093,7 +1093,8 @@ export class Sample {
1093
1093
  * @param numYVertices number of vertices in y direction
1094
1094
  * @param createParams true to create parameters, with parameter value `(i,j)` for point at (0 based) vertex in x,y directions
1095
1095
  * @param createNormals true to create a (single) normal indexed from all facets
1096
- * @param createColors true to create a single color on each quad. (shared between its triangles)
1096
+ * @param createColors true to create a single color on each quad (shared between both triangles in quad if triangulating)
1097
+ * @param triangulate whether to triangulate the quads (default true)
1097
1098
  * @note edgeVisible is false only on the diagonals
1098
1099
  */
1099
1100
  static createTriangularUnitGridPolyface(origin, vectorX, vectorY, numXVertices, numYVertices, createParams = false, createNormals = false, createColors = false, triangulate = true) {