@itwin/core-geometry 4.1.0-dev.8 → 4.1.0-dev.80

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 (896) hide show
  1. package/CHANGELOG.md +87 -1
  2. package/lib/cjs/Constant.js.map +1 -1
  3. package/lib/cjs/Geometry.js.map +1 -1
  4. package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
  5. package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
  6. package/lib/cjs/bspline/BSplineCurve.d.ts +1 -1
  7. package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -1
  8. package/lib/cjs/bspline/BSplineCurve.js +2 -2
  9. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  10. package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
  11. package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
  12. package/lib/cjs/bspline/BSplineSurface.d.ts.map +1 -1
  13. package/lib/cjs/bspline/BSplineSurface.js +1 -1
  14. package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
  15. package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
  16. package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
  17. package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
  18. package/lib/cjs/bspline/BezierCurveBase.d.ts +1 -1
  19. package/lib/cjs/bspline/BezierCurveBase.d.ts.map +1 -1
  20. package/lib/cjs/bspline/BezierCurveBase.js +2 -2
  21. package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
  22. package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
  23. package/lib/cjs/bspline/KnotVector.js.map +1 -1
  24. package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -1
  25. package/lib/cjs/clipping/AlternatingConvexClipTree.d.ts +15 -17
  26. package/lib/cjs/clipping/AlternatingConvexClipTree.d.ts.map +1 -1
  27. package/lib/cjs/clipping/AlternatingConvexClipTree.js +24 -20
  28. package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
  29. package/lib/cjs/clipping/BooleanClipFactory.d.ts +28 -28
  30. package/lib/cjs/clipping/BooleanClipFactory.d.ts.map +1 -1
  31. package/lib/cjs/clipping/BooleanClipFactory.js +28 -28
  32. package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -1
  33. package/lib/cjs/clipping/BooleanClipNode.d.ts +11 -11
  34. package/lib/cjs/clipping/BooleanClipNode.d.ts.map +1 -1
  35. package/lib/cjs/clipping/BooleanClipNode.js +11 -11
  36. package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
  37. package/lib/cjs/clipping/ClipPlane.d.ts +73 -76
  38. package/lib/cjs/clipping/ClipPlane.d.ts.map +1 -1
  39. package/lib/cjs/clipping/ClipPlane.js +105 -86
  40. package/lib/cjs/clipping/ClipPlane.js.map +1 -1
  41. package/lib/cjs/clipping/ClipPrimitive.d.ts +78 -47
  42. package/lib/cjs/clipping/ClipPrimitive.d.ts.map +1 -1
  43. package/lib/cjs/clipping/ClipPrimitive.js +112 -54
  44. package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
  45. package/lib/cjs/clipping/ClipUtils.d.ts +54 -44
  46. package/lib/cjs/clipping/ClipUtils.d.ts.map +1 -1
  47. package/lib/cjs/clipping/ClipUtils.js +33 -29
  48. package/lib/cjs/clipping/ClipUtils.js.map +1 -1
  49. package/lib/cjs/clipping/ClipVector.d.ts +39 -25
  50. package/lib/cjs/clipping/ClipVector.d.ts.map +1 -1
  51. package/lib/cjs/clipping/ClipVector.js +35 -23
  52. package/lib/cjs/clipping/ClipVector.js.map +1 -1
  53. package/lib/cjs/clipping/ConvexClipPlaneSet.d.ts +61 -38
  54. package/lib/cjs/clipping/ConvexClipPlaneSet.d.ts.map +1 -1
  55. package/lib/cjs/clipping/ConvexClipPlaneSet.js +64 -41
  56. package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
  57. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.d.ts +49 -30
  58. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.d.ts.map +1 -1
  59. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js +50 -30
  60. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  61. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.d.ts +2 -2
  62. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.d.ts.map +1 -1
  63. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js +2 -2
  64. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  65. package/lib/cjs/core-geometry.d.ts +5 -1
  66. package/lib/cjs/core-geometry.d.ts.map +1 -1
  67. package/lib/cjs/core-geometry.js +5 -1
  68. package/lib/cjs/core-geometry.js.map +1 -1
  69. package/lib/cjs/curve/Arc3d.d.ts +4 -3
  70. package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
  71. package/lib/cjs/curve/Arc3d.js +7 -5
  72. package/lib/cjs/curve/Arc3d.js.map +1 -1
  73. package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
  74. package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
  75. package/lib/cjs/curve/CurveChain.js.map +1 -1
  76. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +62 -42
  77. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  78. package/lib/cjs/curve/CurveChainWithDistanceIndex.js +71 -48
  79. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  80. package/lib/cjs/curve/CurveCollection.d.ts +36 -26
  81. package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
  82. package/lib/cjs/curve/CurveCollection.js +46 -39
  83. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  84. package/lib/cjs/curve/CurveCurve.d.ts +6 -2
  85. package/lib/cjs/curve/CurveCurve.d.ts.map +1 -1
  86. package/lib/cjs/curve/CurveCurve.js +13 -9
  87. package/lib/cjs/curve/CurveCurve.js.map +1 -1
  88. package/lib/cjs/curve/CurveCurveCloseApproachXY.d.ts +74 -68
  89. package/lib/cjs/curve/CurveCurveCloseApproachXY.d.ts.map +1 -1
  90. package/lib/cjs/curve/CurveCurveCloseApproachXY.js +100 -108
  91. package/lib/cjs/curve/CurveCurveCloseApproachXY.js.map +1 -1
  92. package/lib/cjs/curve/CurveCurveIntersectXY.d.ts +46 -48
  93. package/lib/cjs/curve/CurveCurveIntersectXY.d.ts.map +1 -1
  94. package/lib/cjs/curve/CurveCurveIntersectXY.js +72 -61
  95. package/lib/cjs/curve/CurveCurveIntersectXY.js.map +1 -1
  96. package/lib/cjs/curve/CurveCurveIntersectXYZ.d.ts +32 -38
  97. package/lib/cjs/curve/CurveCurveIntersectXYZ.d.ts.map +1 -1
  98. package/lib/cjs/curve/CurveCurveIntersectXYZ.js +86 -97
  99. package/lib/cjs/curve/CurveCurveIntersectXYZ.js.map +1 -1
  100. package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
  101. package/lib/cjs/curve/CurveFactory.d.ts +67 -3
  102. package/lib/cjs/curve/CurveFactory.d.ts.map +1 -1
  103. package/lib/cjs/curve/CurveFactory.js +75 -7
  104. package/lib/cjs/curve/CurveFactory.js.map +1 -1
  105. package/lib/cjs/curve/CurveLocationDetail.d.ts +6 -6
  106. package/lib/cjs/curve/CurveLocationDetail.d.ts.map +1 -1
  107. package/lib/cjs/curve/CurveLocationDetail.js +9 -7
  108. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  109. package/lib/cjs/curve/CurveOps.d.ts +77 -0
  110. package/lib/cjs/curve/CurveOps.d.ts.map +1 -0
  111. package/lib/cjs/curve/CurveOps.js +160 -0
  112. package/lib/cjs/curve/CurveOps.js.map +1 -0
  113. package/lib/cjs/curve/CurvePrimitive.d.ts +26 -18
  114. package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -1
  115. package/lib/cjs/curve/CurvePrimitive.js +4 -3
  116. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  117. package/lib/cjs/curve/CurveProcessor.js.map +1 -1
  118. package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
  119. package/lib/cjs/curve/GeometryQuery.d.ts +2 -2
  120. package/lib/cjs/curve/GeometryQuery.d.ts.map +1 -1
  121. package/lib/cjs/curve/GeometryQuery.js +2 -2
  122. package/lib/cjs/curve/GeometryQuery.js.map +1 -1
  123. package/lib/cjs/curve/LineSegment3d.d.ts +7 -5
  124. package/lib/cjs/curve/LineSegment3d.d.ts.map +1 -1
  125. package/lib/cjs/curve/LineSegment3d.js +6 -6
  126. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  127. package/lib/cjs/curve/LineString3d.d.ts +2 -2
  128. package/lib/cjs/curve/LineString3d.d.ts.map +1 -1
  129. package/lib/cjs/curve/LineString3d.js +3 -3
  130. package/lib/cjs/curve/LineString3d.js.map +1 -1
  131. package/lib/cjs/curve/Loop.d.ts +7 -5
  132. package/lib/cjs/curve/Loop.d.ts.map +1 -1
  133. package/lib/cjs/curve/Loop.js +18 -6
  134. package/lib/cjs/curve/Loop.js.map +1 -1
  135. package/lib/cjs/curve/OffsetOptions.d.ts +97 -0
  136. package/lib/cjs/curve/OffsetOptions.d.ts.map +1 -0
  137. package/lib/cjs/curve/OffsetOptions.js +166 -0
  138. package/lib/cjs/curve/OffsetOptions.js.map +1 -0
  139. package/lib/cjs/curve/ParityRegion.d.ts +7 -7
  140. package/lib/cjs/curve/ParityRegion.d.ts.map +1 -1
  141. package/lib/cjs/curve/ParityRegion.js +19 -11
  142. package/lib/cjs/curve/ParityRegion.js.map +1 -1
  143. package/lib/cjs/curve/Path.d.ts +6 -6
  144. package/lib/cjs/curve/Path.d.ts.map +1 -1
  145. package/lib/cjs/curve/Path.js +15 -9
  146. package/lib/cjs/curve/Path.js.map +1 -1
  147. package/lib/cjs/curve/PointString3d.js.map +1 -1
  148. package/lib/cjs/curve/ProxyCurve.d.ts +5 -7
  149. package/lib/cjs/curve/ProxyCurve.d.ts.map +1 -1
  150. package/lib/cjs/curve/ProxyCurve.js +7 -7
  151. package/lib/cjs/curve/ProxyCurve.js.map +1 -1
  152. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  153. package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
  154. package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
  155. package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
  156. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  157. package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
  158. package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
  159. package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
  160. package/lib/cjs/curve/RegionOps.d.ts +76 -56
  161. package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
  162. package/lib/cjs/curve/RegionOps.js +83 -60
  163. package/lib/cjs/curve/RegionOps.js.map +1 -1
  164. package/lib/cjs/curve/RegionOpsClassificationSweeps.js +2 -2
  165. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  166. package/lib/cjs/curve/StrokeOptions.d.ts.map +1 -1
  167. package/lib/cjs/curve/StrokeOptions.js +6 -2
  168. package/lib/cjs/curve/StrokeOptions.js.map +1 -1
  169. package/lib/cjs/curve/UnionRegion.d.ts +6 -5
  170. package/lib/cjs/curve/UnionRegion.d.ts.map +1 -1
  171. package/lib/cjs/curve/UnionRegion.js +17 -8
  172. package/lib/cjs/curve/UnionRegion.js.map +1 -1
  173. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  174. package/lib/cjs/curve/{ChainCollectorContext.d.ts → internalContexts/ChainCollectorContext.d.ts} +4 -4
  175. package/lib/cjs/curve/internalContexts/ChainCollectorContext.d.ts.map +1 -0
  176. package/lib/cjs/curve/{ChainCollectorContext.js → internalContexts/ChainCollectorContext.js} +4 -4
  177. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -0
  178. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  179. package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  180. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  181. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  182. package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
  183. package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  184. package/lib/cjs/curve/internalContexts/GapSearchContext.d.ts +2 -1
  185. package/lib/cjs/curve/internalContexts/GapSearchContext.d.ts.map +1 -1
  186. package/lib/cjs/curve/internalContexts/GapSearchContext.js +6 -2
  187. package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
  188. package/lib/cjs/curve/internalContexts/MultiChainCollector.d.ts +59 -70
  189. package/lib/cjs/curve/internalContexts/MultiChainCollector.d.ts.map +1 -1
  190. package/lib/cjs/curve/internalContexts/MultiChainCollector.js +130 -220
  191. package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
  192. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  193. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.d.ts +14 -8
  194. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.d.ts.map +1 -1
  195. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js +14 -8
  196. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  197. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.d.ts +23 -95
  198. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -1
  199. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js +89 -178
  200. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  201. package/lib/cjs/curve/internalContexts/SumLengthsContext.d.ts.map +1 -1
  202. package/lib/cjs/curve/internalContexts/SumLengthsContext.js +4 -1
  203. package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
  204. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  205. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  206. package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
  207. package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
  208. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  209. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  210. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
  211. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js +1 -1
  212. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  213. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  214. package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
  215. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  216. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  217. package/lib/cjs/curve/spiral/TransitionSpiral3d.d.ts +1 -1
  218. package/lib/cjs/curve/spiral/TransitionSpiral3d.d.ts.map +1 -1
  219. package/lib/cjs/curve/spiral/TransitionSpiral3d.js +2 -2
  220. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
  221. package/lib/cjs/curve/spiral/XYCurveEvaluator.js +1 -1
  222. package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
  223. package/lib/cjs/geometry3d/Angle.d.ts +9 -0
  224. package/lib/cjs/geometry3d/Angle.d.ts.map +1 -1
  225. package/lib/cjs/geometry3d/Angle.js +13 -0
  226. package/lib/cjs/geometry3d/Angle.js.map +1 -1
  227. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
  228. package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
  229. package/lib/cjs/geometry3d/BilinearPatch.d.ts +43 -48
  230. package/lib/cjs/geometry3d/BilinearPatch.d.ts.map +1 -1
  231. package/lib/cjs/geometry3d/BilinearPatch.js +51 -55
  232. package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
  233. package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
  234. package/lib/cjs/geometry3d/Ellipsoid.d.ts +1 -1
  235. package/lib/cjs/geometry3d/Ellipsoid.js +1 -1
  236. package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
  237. package/lib/cjs/geometry3d/FrameBuilder.d.ts.map +1 -1
  238. package/lib/cjs/geometry3d/FrameBuilder.js +13 -11
  239. package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
  240. package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
  241. package/lib/cjs/geometry3d/GeometryHandler.d.ts +103 -97
  242. package/lib/cjs/geometry3d/GeometryHandler.d.ts.map +1 -1
  243. package/lib/cjs/geometry3d/GeometryHandler.js +247 -124
  244. package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
  245. package/lib/cjs/geometry3d/GrowableBlockedArray.d.ts.map +1 -1
  246. package/lib/cjs/geometry3d/GrowableBlockedArray.js +1 -1
  247. package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
  248. package/lib/cjs/geometry3d/GrowableFloat64Array.d.ts.map +1 -1
  249. package/lib/cjs/geometry3d/GrowableFloat64Array.js +1 -1
  250. package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
  251. package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
  252. package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
  253. package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
  254. package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
  255. package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
  256. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  257. package/lib/cjs/geometry3d/Matrix3d.d.ts +18 -0
  258. package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -1
  259. package/lib/cjs/geometry3d/Matrix3d.js +32 -5
  260. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  261. package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
  262. package/lib/cjs/geometry3d/Plane3d.d.ts +41 -32
  263. package/lib/cjs/geometry3d/Plane3d.d.ts.map +1 -1
  264. package/lib/cjs/geometry3d/Plane3d.js +11 -8
  265. package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
  266. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.d.ts +37 -34
  267. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.d.ts.map +1 -1
  268. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js +65 -43
  269. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  270. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.d.ts +36 -32
  271. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.d.ts.map +1 -1
  272. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js +37 -32
  273. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  274. package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
  275. package/lib/cjs/geometry3d/Point2dVector2d.d.ts +8 -9
  276. package/lib/cjs/geometry3d/Point2dVector2d.d.ts.map +1 -1
  277. package/lib/cjs/geometry3d/Point2dVector2d.js +9 -10
  278. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  279. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  280. package/lib/cjs/geometry3d/Point3dVector3d.d.ts +12 -4
  281. package/lib/cjs/geometry3d/Point3dVector3d.d.ts.map +1 -1
  282. package/lib/cjs/geometry3d/Point3dVector3d.js +18 -5
  283. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  284. package/lib/cjs/geometry3d/PointHelpers.d.ts.map +1 -1
  285. package/lib/cjs/geometry3d/PointHelpers.js +5 -5
  286. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  287. package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
  288. package/lib/cjs/geometry3d/PolygonOps.d.ts +6 -2
  289. package/lib/cjs/geometry3d/PolygonOps.d.ts.map +1 -1
  290. package/lib/cjs/geometry3d/PolygonOps.js +31 -22
  291. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  292. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  293. package/lib/cjs/geometry3d/PolylineOps.d.ts +16 -1
  294. package/lib/cjs/geometry3d/PolylineOps.d.ts.map +1 -1
  295. package/lib/cjs/geometry3d/PolylineOps.js +55 -0
  296. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
  297. package/lib/cjs/geometry3d/Range.d.ts +134 -94
  298. package/lib/cjs/geometry3d/Range.d.ts.map +1 -1
  299. package/lib/cjs/geometry3d/Range.js +297 -145
  300. package/lib/cjs/geometry3d/Range.js.map +1 -1
  301. package/lib/cjs/geometry3d/Ray2d.d.ts +69 -0
  302. package/lib/cjs/geometry3d/Ray2d.d.ts.map +1 -0
  303. package/lib/cjs/geometry3d/Ray2d.js +146 -0
  304. package/lib/cjs/geometry3d/Ray2d.js.map +1 -0
  305. package/lib/cjs/geometry3d/Ray3d.d.ts.map +1 -1
  306. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  307. package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
  308. package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
  309. package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
  310. package/lib/cjs/geometry3d/Transform.d.ts +10 -3
  311. package/lib/cjs/geometry3d/Transform.d.ts.map +1 -1
  312. package/lib/cjs/geometry3d/Transform.js +18 -6
  313. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  314. package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
  315. package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
  316. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  317. package/lib/cjs/geometry4d/Map4d.js.map +1 -1
  318. package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
  319. package/lib/cjs/geometry4d/MomentData.js.map +1 -1
  320. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  321. package/lib/cjs/geometry4d/Point4d.js.map +1 -1
  322. package/lib/cjs/numerics/BandedSystem.js.map +1 -1
  323. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
  324. package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
  325. package/lib/cjs/numerics/Complex.js.map +1 -1
  326. package/lib/cjs/numerics/ConvexPolygon2d.d.ts +7 -49
  327. package/lib/cjs/numerics/ConvexPolygon2d.d.ts.map +1 -1
  328. package/lib/cjs/numerics/ConvexPolygon2d.js +16 -107
  329. package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
  330. package/lib/cjs/numerics/Newton.js.map +1 -1
  331. package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
  332. package/lib/cjs/numerics/PolarData.js.map +1 -1
  333. package/lib/cjs/numerics/Polynomials.d.ts.map +1 -1
  334. package/lib/cjs/numerics/Polynomials.js +0 -2
  335. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  336. package/lib/cjs/numerics/Quadrature.js +5 -5
  337. package/lib/cjs/numerics/Quadrature.js.map +1 -1
  338. package/lib/cjs/numerics/Range1dArray.js.map +1 -1
  339. package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
  340. package/lib/cjs/numerics/UnionFind.js.map +1 -1
  341. package/lib/cjs/numerics/UsageSums.js.map +1 -1
  342. package/lib/cjs/polyface/AuxData.js.map +1 -1
  343. package/lib/cjs/polyface/BoxTopology.js.map +1 -1
  344. package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
  345. package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
  346. package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
  347. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  348. package/lib/cjs/polyface/IndexedEdgeMatcher.js +1 -1
  349. package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
  350. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  351. package/lib/cjs/polyface/Polyface.js.map +1 -1
  352. package/lib/cjs/polyface/PolyfaceBuilder.d.ts.map +1 -1
  353. package/lib/cjs/polyface/PolyfaceBuilder.js +2 -2
  354. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  355. package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
  356. package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
  357. package/lib/cjs/polyface/PolyfaceQuery.d.ts +93 -14
  358. package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
  359. package/lib/cjs/polyface/PolyfaceQuery.js +173 -34
  360. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  361. package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
  362. package/lib/cjs/polyface/TaggedNumericData.js +1 -1
  363. package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
  364. package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
  365. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js +2 -2
  366. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  367. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.d.ts +27 -19
  368. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.d.ts.map +1 -1
  369. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js +30 -12
  370. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  371. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.d.ts +12 -8
  372. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.d.ts.map +1 -1
  373. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js +18 -4
  374. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  375. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.d.ts +3 -4
  376. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.d.ts.map +1 -1
  377. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js +3 -5
  378. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  379. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  380. package/lib/cjs/polyface/multiclip/Range2dSearchInterface.d.ts +15 -12
  381. package/lib/cjs/polyface/multiclip/Range2dSearchInterface.d.ts.map +1 -1
  382. package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  383. package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
  384. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.d.ts +38 -0
  385. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.d.ts.map +1 -1
  386. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js +104 -1
  387. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  388. package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
  389. package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
  390. package/lib/cjs/serialization/BGFBReader.js.map +1 -1
  391. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  392. package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  393. package/lib/cjs/serialization/DeepCompare.js.map +1 -1
  394. package/lib/cjs/serialization/GeometrySamples.d.ts +11 -0
  395. package/lib/cjs/serialization/GeometrySamples.d.ts.map +1 -1
  396. package/lib/cjs/serialization/GeometrySamples.js +30 -0
  397. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  398. package/lib/cjs/serialization/IModelJsonSchema.d.ts +2 -7
  399. package/lib/cjs/serialization/IModelJsonSchema.d.ts.map +1 -1
  400. package/lib/cjs/serialization/IModelJsonSchema.js +2 -7
  401. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  402. package/lib/cjs/solid/Box.js.map +1 -1
  403. package/lib/cjs/solid/Cone.js.map +1 -1
  404. package/lib/cjs/solid/LinearSweep.d.ts +2 -1
  405. package/lib/cjs/solid/LinearSweep.d.ts.map +1 -1
  406. package/lib/cjs/solid/LinearSweep.js.map +1 -1
  407. package/lib/cjs/solid/RotationalSweep.d.ts +2 -1
  408. package/lib/cjs/solid/RotationalSweep.d.ts.map +1 -1
  409. package/lib/cjs/solid/RotationalSweep.js.map +1 -1
  410. package/lib/cjs/solid/RuledSweep.d.ts +2 -1
  411. package/lib/cjs/solid/RuledSweep.d.ts.map +1 -1
  412. package/lib/cjs/solid/RuledSweep.js.map +1 -1
  413. package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
  414. package/lib/cjs/solid/Sphere.js.map +1 -1
  415. package/lib/cjs/solid/SweepContour.d.ts +2 -2
  416. package/lib/cjs/solid/SweepContour.d.ts.map +1 -1
  417. package/lib/cjs/solid/SweepContour.js +9 -0
  418. package/lib/cjs/solid/SweepContour.js.map +1 -1
  419. package/lib/cjs/solid/TorusPipe.js.map +1 -1
  420. package/lib/cjs/topology/ChainMerge.js +1 -1
  421. package/lib/cjs/topology/ChainMerge.js.map +1 -1
  422. package/lib/cjs/topology/Graph.js.map +1 -1
  423. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  424. package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
  425. package/lib/cjs/topology/HalfEdgeGraphSearch.js +1 -1
  426. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  427. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js +1 -1
  428. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  429. package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
  430. package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
  431. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  432. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  433. package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
  434. package/lib/cjs/topology/HalfEdgePriorityQueue.d.ts.map +1 -1
  435. package/lib/cjs/topology/HalfEdgePriorityQueue.js +1 -1
  436. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
  437. package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
  438. package/lib/cjs/topology/MaskManager.js.map +1 -1
  439. package/lib/cjs/topology/Merging.js.map +1 -1
  440. package/lib/cjs/topology/RegularizeFace.js +3 -3
  441. package/lib/cjs/topology/RegularizeFace.js.map +1 -1
  442. package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
  443. package/lib/cjs/topology/SpaceTriangulation.js.map +1 -1
  444. package/lib/cjs/topology/Triangulation.js +1 -1
  445. package/lib/cjs/topology/Triangulation.js.map +1 -1
  446. package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
  447. package/lib/esm/Constant.js.map +1 -1
  448. package/lib/esm/Geometry.js.map +1 -1
  449. package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
  450. package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
  451. package/lib/esm/bspline/BSplineCurve.d.ts +1 -1
  452. package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
  453. package/lib/esm/bspline/BSplineCurve.js +1 -1
  454. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  455. package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
  456. package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
  457. package/lib/esm/bspline/BSplineSurface.d.ts.map +1 -1
  458. package/lib/esm/bspline/BSplineSurface.js +1 -1
  459. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  460. package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
  461. package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
  462. package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
  463. package/lib/esm/bspline/BezierCurveBase.d.ts +1 -1
  464. package/lib/esm/bspline/BezierCurveBase.d.ts.map +1 -1
  465. package/lib/esm/bspline/BezierCurveBase.js +1 -1
  466. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  467. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  468. package/lib/esm/bspline/KnotVector.js.map +1 -1
  469. package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
  470. package/lib/esm/clipping/AlternatingConvexClipTree.d.ts +15 -17
  471. package/lib/esm/clipping/AlternatingConvexClipTree.d.ts.map +1 -1
  472. package/lib/esm/clipping/AlternatingConvexClipTree.js +24 -20
  473. package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
  474. package/lib/esm/clipping/BooleanClipFactory.d.ts +28 -28
  475. package/lib/esm/clipping/BooleanClipFactory.d.ts.map +1 -1
  476. package/lib/esm/clipping/BooleanClipFactory.js +28 -28
  477. package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
  478. package/lib/esm/clipping/BooleanClipNode.d.ts +11 -11
  479. package/lib/esm/clipping/BooleanClipNode.d.ts.map +1 -1
  480. package/lib/esm/clipping/BooleanClipNode.js +11 -11
  481. package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
  482. package/lib/esm/clipping/ClipPlane.d.ts +73 -76
  483. package/lib/esm/clipping/ClipPlane.d.ts.map +1 -1
  484. package/lib/esm/clipping/ClipPlane.js +105 -86
  485. package/lib/esm/clipping/ClipPlane.js.map +1 -1
  486. package/lib/esm/clipping/ClipPrimitive.d.ts +78 -47
  487. package/lib/esm/clipping/ClipPrimitive.d.ts.map +1 -1
  488. package/lib/esm/clipping/ClipPrimitive.js +112 -54
  489. package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
  490. package/lib/esm/clipping/ClipUtils.d.ts +54 -44
  491. package/lib/esm/clipping/ClipUtils.d.ts.map +1 -1
  492. package/lib/esm/clipping/ClipUtils.js +33 -29
  493. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  494. package/lib/esm/clipping/ClipVector.d.ts +39 -25
  495. package/lib/esm/clipping/ClipVector.d.ts.map +1 -1
  496. package/lib/esm/clipping/ClipVector.js +35 -23
  497. package/lib/esm/clipping/ClipVector.js.map +1 -1
  498. package/lib/esm/clipping/ConvexClipPlaneSet.d.ts +61 -38
  499. package/lib/esm/clipping/ConvexClipPlaneSet.d.ts.map +1 -1
  500. package/lib/esm/clipping/ConvexClipPlaneSet.js +64 -41
  501. package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
  502. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.d.ts +49 -30
  503. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.d.ts.map +1 -1
  504. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js +50 -30
  505. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  506. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.d.ts +2 -2
  507. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.d.ts.map +1 -1
  508. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js +2 -2
  509. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  510. package/lib/esm/core-geometry.d.ts +5 -1
  511. package/lib/esm/core-geometry.d.ts.map +1 -1
  512. package/lib/esm/core-geometry.js +5 -1
  513. package/lib/esm/core-geometry.js.map +1 -1
  514. package/lib/esm/curve/Arc3d.d.ts +4 -3
  515. package/lib/esm/curve/Arc3d.d.ts.map +1 -1
  516. package/lib/esm/curve/Arc3d.js +6 -4
  517. package/lib/esm/curve/Arc3d.js.map +1 -1
  518. package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
  519. package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
  520. package/lib/esm/curve/CurveChain.js.map +1 -1
  521. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +62 -42
  522. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  523. package/lib/esm/curve/CurveChainWithDistanceIndex.js +70 -47
  524. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  525. package/lib/esm/curve/CurveCollection.d.ts +36 -26
  526. package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
  527. package/lib/esm/curve/CurveCollection.js +46 -39
  528. package/lib/esm/curve/CurveCollection.js.map +1 -1
  529. package/lib/esm/curve/CurveCurve.d.ts +6 -2
  530. package/lib/esm/curve/CurveCurve.d.ts.map +1 -1
  531. package/lib/esm/curve/CurveCurve.js +13 -9
  532. package/lib/esm/curve/CurveCurve.js.map +1 -1
  533. package/lib/esm/curve/CurveCurveCloseApproachXY.d.ts +74 -68
  534. package/lib/esm/curve/CurveCurveCloseApproachXY.d.ts.map +1 -1
  535. package/lib/esm/curve/CurveCurveCloseApproachXY.js +100 -108
  536. package/lib/esm/curve/CurveCurveCloseApproachXY.js.map +1 -1
  537. package/lib/esm/curve/CurveCurveIntersectXY.d.ts +46 -48
  538. package/lib/esm/curve/CurveCurveIntersectXY.d.ts.map +1 -1
  539. package/lib/esm/curve/CurveCurveIntersectXY.js +72 -61
  540. package/lib/esm/curve/CurveCurveIntersectXY.js.map +1 -1
  541. package/lib/esm/curve/CurveCurveIntersectXYZ.d.ts +32 -38
  542. package/lib/esm/curve/CurveCurveIntersectXYZ.d.ts.map +1 -1
  543. package/lib/esm/curve/CurveCurveIntersectXYZ.js +86 -97
  544. package/lib/esm/curve/CurveCurveIntersectXYZ.js.map +1 -1
  545. package/lib/esm/curve/CurveExtendMode.js.map +1 -1
  546. package/lib/esm/curve/CurveFactory.d.ts +67 -3
  547. package/lib/esm/curve/CurveFactory.d.ts.map +1 -1
  548. package/lib/esm/curve/CurveFactory.js +74 -6
  549. package/lib/esm/curve/CurveFactory.js.map +1 -1
  550. package/lib/esm/curve/CurveLocationDetail.d.ts +6 -6
  551. package/lib/esm/curve/CurveLocationDetail.d.ts.map +1 -1
  552. package/lib/esm/curve/CurveLocationDetail.js +9 -7
  553. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  554. package/lib/esm/curve/CurveOps.d.ts +77 -0
  555. package/lib/esm/curve/CurveOps.d.ts.map +1 -0
  556. package/lib/esm/curve/CurveOps.js +156 -0
  557. package/lib/esm/curve/CurveOps.js.map +1 -0
  558. package/lib/esm/curve/CurvePrimitive.d.ts +26 -18
  559. package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
  560. package/lib/esm/curve/CurvePrimitive.js +4 -3
  561. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  562. package/lib/esm/curve/CurveProcessor.js.map +1 -1
  563. package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
  564. package/lib/esm/curve/GeometryQuery.d.ts +2 -2
  565. package/lib/esm/curve/GeometryQuery.d.ts.map +1 -1
  566. package/lib/esm/curve/GeometryQuery.js +2 -2
  567. package/lib/esm/curve/GeometryQuery.js.map +1 -1
  568. package/lib/esm/curve/LineSegment3d.d.ts +7 -5
  569. package/lib/esm/curve/LineSegment3d.d.ts.map +1 -1
  570. package/lib/esm/curve/LineSegment3d.js +5 -5
  571. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  572. package/lib/esm/curve/LineString3d.d.ts +2 -2
  573. package/lib/esm/curve/LineString3d.d.ts.map +1 -1
  574. package/lib/esm/curve/LineString3d.js +2 -2
  575. package/lib/esm/curve/LineString3d.js.map +1 -1
  576. package/lib/esm/curve/Loop.d.ts +7 -5
  577. package/lib/esm/curve/Loop.d.ts.map +1 -1
  578. package/lib/esm/curve/Loop.js +18 -6
  579. package/lib/esm/curve/Loop.js.map +1 -1
  580. package/lib/esm/curve/OffsetOptions.d.ts +97 -0
  581. package/lib/esm/curve/OffsetOptions.d.ts.map +1 -0
  582. package/lib/esm/curve/OffsetOptions.js +161 -0
  583. package/lib/esm/curve/OffsetOptions.js.map +1 -0
  584. package/lib/esm/curve/ParityRegion.d.ts +7 -7
  585. package/lib/esm/curve/ParityRegion.d.ts.map +1 -1
  586. package/lib/esm/curve/ParityRegion.js +19 -11
  587. package/lib/esm/curve/ParityRegion.js.map +1 -1
  588. package/lib/esm/curve/Path.d.ts +6 -6
  589. package/lib/esm/curve/Path.d.ts.map +1 -1
  590. package/lib/esm/curve/Path.js +15 -9
  591. package/lib/esm/curve/Path.js.map +1 -1
  592. package/lib/esm/curve/PointString3d.js.map +1 -1
  593. package/lib/esm/curve/ProxyCurve.d.ts +5 -7
  594. package/lib/esm/curve/ProxyCurve.d.ts.map +1 -1
  595. package/lib/esm/curve/ProxyCurve.js +7 -7
  596. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  597. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  598. package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
  599. package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
  600. package/lib/esm/curve/Query/InOutTests.js.map +1 -1
  601. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  602. package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
  603. package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
  604. package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
  605. package/lib/esm/curve/RegionOps.d.ts +76 -56
  606. package/lib/esm/curve/RegionOps.d.ts.map +1 -1
  607. package/lib/esm/curve/RegionOps.js +84 -61
  608. package/lib/esm/curve/RegionOps.js.map +1 -1
  609. package/lib/esm/curve/RegionOpsClassificationSweeps.js +2 -2
  610. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  611. package/lib/esm/curve/StrokeOptions.d.ts.map +1 -1
  612. package/lib/esm/curve/StrokeOptions.js +6 -2
  613. package/lib/esm/curve/StrokeOptions.js.map +1 -1
  614. package/lib/esm/curve/UnionRegion.d.ts +6 -5
  615. package/lib/esm/curve/UnionRegion.d.ts.map +1 -1
  616. package/lib/esm/curve/UnionRegion.js +17 -8
  617. package/lib/esm/curve/UnionRegion.js.map +1 -1
  618. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  619. package/lib/esm/curve/{ChainCollectorContext.d.ts → internalContexts/ChainCollectorContext.d.ts} +4 -4
  620. package/lib/esm/curve/internalContexts/ChainCollectorContext.d.ts.map +1 -0
  621. package/lib/esm/curve/{ChainCollectorContext.js → internalContexts/ChainCollectorContext.js} +4 -4
  622. package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -0
  623. package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  624. package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  625. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  626. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  627. package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
  628. package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  629. package/lib/esm/curve/internalContexts/GapSearchContext.d.ts +2 -1
  630. package/lib/esm/curve/internalContexts/GapSearchContext.d.ts.map +1 -1
  631. package/lib/esm/curve/internalContexts/GapSearchContext.js +6 -2
  632. package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
  633. package/lib/esm/curve/internalContexts/MultiChainCollector.d.ts +59 -70
  634. package/lib/esm/curve/internalContexts/MultiChainCollector.d.ts.map +1 -1
  635. package/lib/esm/curve/internalContexts/MultiChainCollector.js +129 -218
  636. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  637. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  638. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.d.ts +14 -8
  639. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.d.ts.map +1 -1
  640. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js +14 -8
  641. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  642. package/lib/esm/curve/internalContexts/PolygonOffsetContext.d.ts +23 -95
  643. package/lib/esm/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -1
  644. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js +86 -173
  645. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  646. package/lib/esm/curve/internalContexts/SumLengthsContext.d.ts.map +1 -1
  647. package/lib/esm/curve/internalContexts/SumLengthsContext.js +4 -1
  648. package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
  649. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  650. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  651. package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
  652. package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
  653. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  654. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  655. package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
  656. package/lib/esm/curve/spiral/IntegratedSpiral3d.js +1 -1
  657. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  658. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  659. package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
  660. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  661. package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  662. package/lib/esm/curve/spiral/TransitionSpiral3d.d.ts +1 -1
  663. package/lib/esm/curve/spiral/TransitionSpiral3d.d.ts.map +1 -1
  664. package/lib/esm/curve/spiral/TransitionSpiral3d.js +1 -1
  665. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
  666. package/lib/esm/curve/spiral/XYCurveEvaluator.js +1 -1
  667. package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
  668. package/lib/esm/geometry3d/Angle.d.ts +9 -0
  669. package/lib/esm/geometry3d/Angle.d.ts.map +1 -1
  670. package/lib/esm/geometry3d/Angle.js +13 -0
  671. package/lib/esm/geometry3d/Angle.js.map +1 -1
  672. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  673. package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
  674. package/lib/esm/geometry3d/BilinearPatch.d.ts +43 -48
  675. package/lib/esm/geometry3d/BilinearPatch.d.ts.map +1 -1
  676. package/lib/esm/geometry3d/BilinearPatch.js +51 -55
  677. package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
  678. package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
  679. package/lib/esm/geometry3d/Ellipsoid.d.ts +1 -1
  680. package/lib/esm/geometry3d/Ellipsoid.js +1 -1
  681. package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
  682. package/lib/esm/geometry3d/FrameBuilder.d.ts.map +1 -1
  683. package/lib/esm/geometry3d/FrameBuilder.js +13 -11
  684. package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
  685. package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
  686. package/lib/esm/geometry3d/GeometryHandler.d.ts +103 -97
  687. package/lib/esm/geometry3d/GeometryHandler.d.ts.map +1 -1
  688. package/lib/esm/geometry3d/GeometryHandler.js +247 -124
  689. package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
  690. package/lib/esm/geometry3d/GrowableBlockedArray.d.ts.map +1 -1
  691. package/lib/esm/geometry3d/GrowableBlockedArray.js +1 -1
  692. package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
  693. package/lib/esm/geometry3d/GrowableFloat64Array.d.ts.map +1 -1
  694. package/lib/esm/geometry3d/GrowableFloat64Array.js +1 -1
  695. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
  696. package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
  697. package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
  698. package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
  699. package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
  700. package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
  701. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  702. package/lib/esm/geometry3d/Matrix3d.d.ts +18 -0
  703. package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -1
  704. package/lib/esm/geometry3d/Matrix3d.js +32 -5
  705. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  706. package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
  707. package/lib/esm/geometry3d/Plane3d.d.ts +41 -32
  708. package/lib/esm/geometry3d/Plane3d.d.ts.map +1 -1
  709. package/lib/esm/geometry3d/Plane3d.js +11 -8
  710. package/lib/esm/geometry3d/Plane3d.js.map +1 -1
  711. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.d.ts +37 -34
  712. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.d.ts.map +1 -1
  713. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js +65 -43
  714. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  715. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.d.ts +36 -32
  716. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.d.ts.map +1 -1
  717. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js +37 -32
  718. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  719. package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
  720. package/lib/esm/geometry3d/Point2dVector2d.d.ts +8 -9
  721. package/lib/esm/geometry3d/Point2dVector2d.d.ts.map +1 -1
  722. package/lib/esm/geometry3d/Point2dVector2d.js +9 -10
  723. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  724. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  725. package/lib/esm/geometry3d/Point3dVector3d.d.ts +12 -4
  726. package/lib/esm/geometry3d/Point3dVector3d.d.ts.map +1 -1
  727. package/lib/esm/geometry3d/Point3dVector3d.js +18 -5
  728. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  729. package/lib/esm/geometry3d/PointHelpers.d.ts.map +1 -1
  730. package/lib/esm/geometry3d/PointHelpers.js +5 -5
  731. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  732. package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
  733. package/lib/esm/geometry3d/PolygonOps.d.ts +6 -2
  734. package/lib/esm/geometry3d/PolygonOps.d.ts.map +1 -1
  735. package/lib/esm/geometry3d/PolygonOps.js +31 -22
  736. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  737. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  738. package/lib/esm/geometry3d/PolylineOps.d.ts +16 -1
  739. package/lib/esm/geometry3d/PolylineOps.d.ts.map +1 -1
  740. package/lib/esm/geometry3d/PolylineOps.js +56 -1
  741. package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
  742. package/lib/esm/geometry3d/Range.d.ts +134 -94
  743. package/lib/esm/geometry3d/Range.d.ts.map +1 -1
  744. package/lib/esm/geometry3d/Range.js +297 -145
  745. package/lib/esm/geometry3d/Range.js.map +1 -1
  746. package/lib/esm/geometry3d/Ray2d.d.ts +69 -0
  747. package/lib/esm/geometry3d/Ray2d.d.ts.map +1 -0
  748. package/lib/esm/geometry3d/Ray2d.js +142 -0
  749. package/lib/esm/geometry3d/Ray2d.js.map +1 -0
  750. package/lib/esm/geometry3d/Ray3d.d.ts.map +1 -1
  751. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  752. package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
  753. package/lib/esm/geometry3d/Segment1d.js.map +1 -1
  754. package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
  755. package/lib/esm/geometry3d/Transform.d.ts +10 -3
  756. package/lib/esm/geometry3d/Transform.d.ts.map +1 -1
  757. package/lib/esm/geometry3d/Transform.js +18 -6
  758. package/lib/esm/geometry3d/Transform.js.map +1 -1
  759. package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
  760. package/lib/esm/geometry3d/XYZProps.js.map +1 -1
  761. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  762. package/lib/esm/geometry4d/Map4d.js.map +1 -1
  763. package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
  764. package/lib/esm/geometry4d/MomentData.js.map +1 -1
  765. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  766. package/lib/esm/geometry4d/Point4d.js.map +1 -1
  767. package/lib/esm/numerics/BandedSystem.js.map +1 -1
  768. package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
  769. package/lib/esm/numerics/ClusterableArray.js.map +1 -1
  770. package/lib/esm/numerics/Complex.js.map +1 -1
  771. package/lib/esm/numerics/ConvexPolygon2d.d.ts +7 -49
  772. package/lib/esm/numerics/ConvexPolygon2d.d.ts.map +1 -1
  773. package/lib/esm/numerics/ConvexPolygon2d.js +14 -104
  774. package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
  775. package/lib/esm/numerics/Newton.js.map +1 -1
  776. package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
  777. package/lib/esm/numerics/PolarData.js.map +1 -1
  778. package/lib/esm/numerics/Polynomials.d.ts.map +1 -1
  779. package/lib/esm/numerics/Polynomials.js +0 -2
  780. package/lib/esm/numerics/Polynomials.js.map +1 -1
  781. package/lib/esm/numerics/Quadrature.js +5 -5
  782. package/lib/esm/numerics/Quadrature.js.map +1 -1
  783. package/lib/esm/numerics/Range1dArray.js.map +1 -1
  784. package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
  785. package/lib/esm/numerics/UnionFind.js.map +1 -1
  786. package/lib/esm/numerics/UsageSums.js.map +1 -1
  787. package/lib/esm/polyface/AuxData.js.map +1 -1
  788. package/lib/esm/polyface/BoxTopology.js.map +1 -1
  789. package/lib/esm/polyface/FacetFaceData.js.map +1 -1
  790. package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
  791. package/lib/esm/polyface/FacetOrientation.js.map +1 -1
  792. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  793. package/lib/esm/polyface/IndexedEdgeMatcher.js +1 -1
  794. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
  795. package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  796. package/lib/esm/polyface/Polyface.js.map +1 -1
  797. package/lib/esm/polyface/PolyfaceBuilder.d.ts.map +1 -1
  798. package/lib/esm/polyface/PolyfaceBuilder.js +2 -2
  799. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  800. package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
  801. package/lib/esm/polyface/PolyfaceData.js.map +1 -1
  802. package/lib/esm/polyface/PolyfaceQuery.d.ts +93 -14
  803. package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
  804. package/lib/esm/polyface/PolyfaceQuery.js +173 -35
  805. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  806. package/lib/esm/polyface/RangeLengthData.js.map +1 -1
  807. package/lib/esm/polyface/TaggedNumericData.js +1 -1
  808. package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
  809. package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
  810. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js +2 -2
  811. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  812. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.d.ts +27 -19
  813. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.d.ts.map +1 -1
  814. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js +30 -12
  815. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  816. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.d.ts +12 -8
  817. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.d.ts.map +1 -1
  818. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js +18 -4
  819. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  820. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.d.ts +3 -4
  821. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.d.ts.map +1 -1
  822. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js +3 -5
  823. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  824. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  825. package/lib/esm/polyface/multiclip/Range2dSearchInterface.d.ts +15 -12
  826. package/lib/esm/polyface/multiclip/Range2dSearchInterface.d.ts.map +1 -1
  827. package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  828. package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
  829. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.d.ts +38 -0
  830. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.d.ts.map +1 -1
  831. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js +102 -1
  832. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  833. package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
  834. package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
  835. package/lib/esm/serialization/BGFBReader.js.map +1 -1
  836. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  837. package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  838. package/lib/esm/serialization/DeepCompare.js.map +1 -1
  839. package/lib/esm/serialization/GeometrySamples.d.ts +11 -0
  840. package/lib/esm/serialization/GeometrySamples.d.ts.map +1 -1
  841. package/lib/esm/serialization/GeometrySamples.js +30 -0
  842. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  843. package/lib/esm/serialization/IModelJsonSchema.d.ts +2 -7
  844. package/lib/esm/serialization/IModelJsonSchema.d.ts.map +1 -1
  845. package/lib/esm/serialization/IModelJsonSchema.js +2 -7
  846. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  847. package/lib/esm/solid/Box.js.map +1 -1
  848. package/lib/esm/solid/Cone.js.map +1 -1
  849. package/lib/esm/solid/LinearSweep.d.ts +2 -1
  850. package/lib/esm/solid/LinearSweep.d.ts.map +1 -1
  851. package/lib/esm/solid/LinearSweep.js.map +1 -1
  852. package/lib/esm/solid/RotationalSweep.d.ts +2 -1
  853. package/lib/esm/solid/RotationalSweep.d.ts.map +1 -1
  854. package/lib/esm/solid/RotationalSweep.js.map +1 -1
  855. package/lib/esm/solid/RuledSweep.d.ts +2 -1
  856. package/lib/esm/solid/RuledSweep.d.ts.map +1 -1
  857. package/lib/esm/solid/RuledSweep.js.map +1 -1
  858. package/lib/esm/solid/SolidPrimitive.js.map +1 -1
  859. package/lib/esm/solid/Sphere.js.map +1 -1
  860. package/lib/esm/solid/SweepContour.d.ts +2 -2
  861. package/lib/esm/solid/SweepContour.d.ts.map +1 -1
  862. package/lib/esm/solid/SweepContour.js +9 -0
  863. package/lib/esm/solid/SweepContour.js.map +1 -1
  864. package/lib/esm/solid/TorusPipe.js.map +1 -1
  865. package/lib/esm/topology/ChainMerge.js +1 -1
  866. package/lib/esm/topology/ChainMerge.js.map +1 -1
  867. package/lib/esm/topology/Graph.js.map +1 -1
  868. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  869. package/lib/esm/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
  870. package/lib/esm/topology/HalfEdgeGraphSearch.js +1 -1
  871. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  872. package/lib/esm/topology/HalfEdgeGraphSpineContext.js +1 -1
  873. package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  874. package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
  875. package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
  876. package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  877. package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  878. package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
  879. package/lib/esm/topology/HalfEdgePriorityQueue.d.ts.map +1 -1
  880. package/lib/esm/topology/HalfEdgePriorityQueue.js +1 -1
  881. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
  882. package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
  883. package/lib/esm/topology/MaskManager.js.map +1 -1
  884. package/lib/esm/topology/Merging.js.map +1 -1
  885. package/lib/esm/topology/RegularizeFace.js +3 -3
  886. package/lib/esm/topology/RegularizeFace.js.map +1 -1
  887. package/lib/esm/topology/SignedDataSummary.js.map +1 -1
  888. package/lib/esm/topology/SpaceTriangulation.js.map +1 -1
  889. package/lib/esm/topology/Triangulation.js +1 -1
  890. package/lib/esm/topology/Triangulation.js.map +1 -1
  891. package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
  892. package/package.json +6 -17
  893. package/lib/cjs/curve/ChainCollectorContext.d.ts.map +0 -1
  894. package/lib/cjs/curve/ChainCollectorContext.js.map +0 -1
  895. package/lib/esm/curve/ChainCollectorContext.d.ts.map +0 -1
  896. package/lib/esm/curve/ChainCollectorContext.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"XYParitySearchContext.js","sourceRoot":"","sources":["../../../src/topology/XYParitySearchContext.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Topology\r\n */\r\n\r\n/**\r\n * * XYParitySearchContext is an internal class for callers that can feed points (without extracting to array structures)\r\n * * Most will be via static methods which handle a specific data source.\r\n * * PolygonOps.classifyPointInPolygon (x,y,points: XAndY[])\r\n * * HalfEdgeGraphSearch.pointInOrOnFaceXY (halfEdgeOnFace, x, y)\r\n * Use pattern:\r\n * * Caller must be able walk around polygon producing x,y coordinates (possibly transformed from actual polygon)\r\n * * Caller announce edges to tryStartEdge until finding one acceptable to the search.\r\n * * Caller then passes additional points up to and including both x0,y0 and x1, y1 of the accepted start edge.\r\n * Call sequence is:\r\n * `context = new XYParitySearchContext`\r\n * `repeat { acquire edge (x0,y0) (x1,y1)} until context.tryStartEdge (x0,y0,x1,y1);`\r\n * `for each (x,y) beginning AFTER x1,y1 and ending with (x1,y1) context.advance (x,y)`\r\n * `return context.classifyCounts ();`\r\n */\r\nexport class XYParitySearchContext {\r\n public xTest: number;\r\n public yTest: number;\r\n public u0: number; // local coordinates of recent point with nonzero v. Usually \"second last point\" but points can be skipped if y1 is zero\r\n public v0: number;\r\n public u1: number; // local coordinates of most recent point\r\n public v1: number;\r\n public numLeftCrossing: number;\r\n public numRightCrossing: number;\r\n public numHit: number;\r\n /**\r\n * Create a new searcher for specified test point.\r\n * @param xTest x coordinate of test point\r\n * @param yTest y coordinate of test point\r\n */\r\n public constructor(xTest: number, yTest: number) {\r\n this.xTest = xTest;\r\n this.yTest = yTest;\r\n this.u0 = this.v0 = this.u1 = this.v1 = 0; // Not valid for search -- caller must satisfy tryStartEdge !!!\r\n this.numLeftCrossing = this.numRightCrossing = 0;\r\n this.numHit = 0;\r\n }\r\n /**\r\n * test if x,y is a safe first coordinate to start the search.\r\n * * safe start must have non-zero y so that final point test (return to x0,y0) does not need look back for exact crossing logic.\r\n * @param x\r\n * @param y\r\n */\r\n public tryStartEdge(x0: number, y0: number, x1: number, y1: number): boolean {\r\n if (y0 !== this.yTest) {\r\n this.u0 = x0 - this.xTest;\r\n this.v0 = y0 - this.yTest;\r\n this.u1 = x1 - this.xTest;\r\n this.v1 = y1 - this.yTest;\r\n return true;\r\n }\r\n return false;\r\n }\r\n /** Return true if parity accumulation proceeded normally.\r\n * Return false if interrupted for exact hit.\r\n */\r\n public advance(x: number, y: number): boolean {\r\n const u = x - this.xTest;\r\n const v = y - this.yTest;\r\n const p = v * this.v1;\r\n if (p > 0) {\r\n // The common case -- skittering along above or below the x axis . . .\r\n this.u0 = this.u1;\r\n this.v0 = this.v1;\r\n this.u1 = u;\r\n this.v1 = v;\r\n return true;\r\n }\r\n if (p < 0) {\r\n // crossing within (u1,v1) to (u,v)\r\n // both v values are nonzero and of opposite sign, so this division is safe . . .\r\n const fraction = -this.v1 / (v - this.v1);\r\n const uCross = this.u1 + fraction * (u - this.u1);\r\n if (uCross === 0.0) {\r\n this.numHit++;\r\n return false;\r\n }\r\n if (uCross > 0)\r\n this.numRightCrossing++;\r\n else\r\n this.numLeftCrossing++;\r\n this.u0 = this.u1;\r\n this.v0 = this.v1;\r\n this.u1 = u;\r\n this.v1 = v;\r\n return true;\r\n }\r\n // hard stuff -- one or more exact hits . . .\r\n if (v === 0.0) {\r\n if (this.v1 === 0.0) {\r\n // uh oh -- moving along x axis. Does it pass through xTest:\r\n if (u * this.u1 <= 0.0) {\r\n this.numHit++;\r\n return false;\r\n }\r\n // quietly moving along the scan line, both xy and x1y1 to same side of test point ...\r\n // u0 and u1 remain unchanged !!!\r\n this.u1 = u;\r\n this.v1 = v;\r\n return true;\r\n }\r\n // just moved onto the scan line ...\r\n this.u0 = this.u1;\r\n this.v0 = this.v1;\r\n this.u1 = u;\r\n this.v1 = v;\r\n return true;\r\n }\r\n // fall out with v1 = 0\r\n // both v0 and v are nonzero.\r\n // any along-0 v values that have passed through are on the same side of xTest, so u1 determines crossing\r\n const q = this.v0 * v;\r\n if (this.u1 > 0) {\r\n if (q < 0)\r\n this.numRightCrossing++;\r\n } else {\r\n if (q < 0)\r\n this.numLeftCrossing++;\r\n }\r\n this.u0 = this.u1;\r\n this.v0 = this.v1;\r\n this.u1 = u;\r\n this.v1 = v;\r\n return true;\r\n }\r\n /**\r\n * Return classification as ON, IN, or OUT according to hit and crossing counts.\r\n * * Any nonzero hit count is ON\r\n * * Otherwise IN if left crossing count is odd.\r\n * @return 0 if ON, 1 if IN, -1 if OUT\r\n */\r\n public classifyCounts(): number | undefined {\r\n if (this.numHit > 0)\r\n return 0;\r\n const parity = this.numLeftCrossing & 0x01;\r\n return (parity === 1) ? 1 : -1;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"XYParitySearchContext.js","sourceRoot":"","sources":["../../../src/topology/XYParitySearchContext.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 Topology\n */\n\n/**\n * * XYParitySearchContext is an internal class for callers that can feed points (without extracting to array structures)\n * * Most will be via static methods which handle a specific data source.\n * * PolygonOps.classifyPointInPolygon (x,y,points: XAndY[])\n * * HalfEdgeGraphSearch.pointInOrOnFaceXY (halfEdgeOnFace, x, y)\n * Use pattern:\n * * Caller must be able walk around polygon producing x,y coordinates (possibly transformed from actual polygon)\n * * Caller announce edges to tryStartEdge until finding one acceptable to the search.\n * * Caller then passes additional points up to and including both x0,y0 and x1, y1 of the accepted start edge.\n * Call sequence is:\n * `context = new XYParitySearchContext`\n * `repeat { acquire edge (x0,y0) (x1,y1)} until context.tryStartEdge (x0,y0,x1,y1);`\n * `for each (x,y) beginning AFTER x1,y1 and ending with (x1,y1) context.advance (x,y)`\n * `return context.classifyCounts ();`\n */\nexport class XYParitySearchContext {\n public xTest: number;\n public yTest: number;\n public u0: number; // local coordinates of recent point with nonzero v. Usually \"second last point\" but points can be skipped if y1 is zero\n public v0: number;\n public u1: number; // local coordinates of most recent point\n public v1: number;\n public numLeftCrossing: number;\n public numRightCrossing: number;\n public numHit: number;\n /**\n * Create a new searcher for specified test point.\n * @param xTest x coordinate of test point\n * @param yTest y coordinate of test point\n */\n public constructor(xTest: number, yTest: number) {\n this.xTest = xTest;\n this.yTest = yTest;\n this.u0 = this.v0 = this.u1 = this.v1 = 0; // Not valid for search -- caller must satisfy tryStartEdge !!!\n this.numLeftCrossing = this.numRightCrossing = 0;\n this.numHit = 0;\n }\n /**\n * test if x,y is a safe first coordinate to start the search.\n * * safe start must have non-zero y so that final point test (return to x0,y0) does not need look back for exact crossing logic.\n * @param x\n * @param y\n */\n public tryStartEdge(x0: number, y0: number, x1: number, y1: number): boolean {\n if (y0 !== this.yTest) {\n this.u0 = x0 - this.xTest;\n this.v0 = y0 - this.yTest;\n this.u1 = x1 - this.xTest;\n this.v1 = y1 - this.yTest;\n return true;\n }\n return false;\n }\n /** Return true if parity accumulation proceeded normally.\n * Return false if interrupted for exact hit.\n */\n public advance(x: number, y: number): boolean {\n const u = x - this.xTest;\n const v = y - this.yTest;\n const p = v * this.v1;\n if (p > 0) {\n // The common case -- skittering along above or below the x axis . . .\n this.u0 = this.u1;\n this.v0 = this.v1;\n this.u1 = u;\n this.v1 = v;\n return true;\n }\n if (p < 0) {\n // crossing within (u1,v1) to (u,v)\n // both v values are nonzero and of opposite sign, so this division is safe . . .\n const fraction = -this.v1 / (v - this.v1);\n const uCross = this.u1 + fraction * (u - this.u1);\n if (uCross === 0.0) {\n this.numHit++;\n return false;\n }\n if (uCross > 0)\n this.numRightCrossing++;\n else\n this.numLeftCrossing++;\n this.u0 = this.u1;\n this.v0 = this.v1;\n this.u1 = u;\n this.v1 = v;\n return true;\n }\n // hard stuff -- one or more exact hits . . .\n if (v === 0.0) {\n if (this.v1 === 0.0) {\n // uh oh -- moving along x axis. Does it pass through xTest:\n if (u * this.u1 <= 0.0) {\n this.numHit++;\n return false;\n }\n // quietly moving along the scan line, both xy and x1y1 to same side of test point ...\n // u0 and u1 remain unchanged !!!\n this.u1 = u;\n this.v1 = v;\n return true;\n }\n // just moved onto the scan line ...\n this.u0 = this.u1;\n this.v0 = this.v1;\n this.u1 = u;\n this.v1 = v;\n return true;\n }\n // fall out with v1 = 0\n // both v0 and v are nonzero.\n // any along-0 v values that have passed through are on the same side of xTest, so u1 determines crossing\n const q = this.v0 * v;\n if (this.u1 > 0) {\n if (q < 0)\n this.numRightCrossing++;\n } else {\n if (q < 0)\n this.numLeftCrossing++;\n }\n this.u0 = this.u1;\n this.v0 = this.v1;\n this.u1 = u;\n this.v1 = v;\n return true;\n }\n /**\n * Return classification as ON, IN, or OUT according to hit and crossing counts.\n * * Any nonzero hit count is ON\n * * Otherwise IN if left crossing count is odd.\n * @return 0 if ON, 1 if IN, -1 if OUT\n */\n public classifyCounts(): number | undefined {\n if (this.numHit > 0)\n return 0;\n const parity = this.numLeftCrossing & 0x01;\n return (parity === 1) ? 1 : -1;\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/core-geometry",
3
- "version": "4.1.0-dev.8",
3
+ "version": "4.1.0-dev.80",
4
4
  "description": "iTwin.js Core Geometry library",
5
5
  "main": "lib/cjs/core-geometry.js",
6
6
  "module": "lib/esm/core-geometry.js",
@@ -23,23 +23,23 @@
23
23
  "url": "http://www.bentley.com"
24
24
  },
25
25
  "devDependencies": {
26
- "@itwin/eslint-plugin": "^4.0.0-dev.33",
26
+ "@itwin/eslint-plugin": "4.0.0-dev.44",
27
27
  "@types/chai": "4.3.1",
28
28
  "@types/flatbuffers": "~1.10.0",
29
29
  "@types/mocha": "^8.2.2",
30
- "@types/node": "^18.11.5",
30
+ "@types/node": "18.16.1",
31
31
  "chai": "^4.1.2",
32
32
  "debug": "^2.6.9",
33
- "eslint": "^8.36.0",
33
+ "eslint": "^8.44.0",
34
34
  "mocha": "^10.0.0",
35
35
  "nyc": "^15.1.0",
36
36
  "rimraf": "^3.0.2",
37
37
  "typescript": "~5.0.2",
38
- "@itwin/build-tools": "4.1.0-dev.8"
38
+ "@itwin/build-tools": "4.1.0-dev.80"
39
39
  },
40
40
  "dependencies": {
41
41
  "flatbuffers": "~1.12.0",
42
- "@itwin/core-bentley": "4.1.0-dev.8"
42
+ "@itwin/core-bentley": "4.1.0-dev.80"
43
43
  },
44
44
  "nyc": {
45
45
  "extends": "./node_modules/@itwin/build-tools/.nycrc",
@@ -49,17 +49,6 @@
49
49
  "branches": 70,
50
50
  "lines": 85
51
51
  },
52
- "eslintConfig": {
53
- "plugins": [
54
- "@itwin"
55
- ],
56
- "extends": "plugin:@itwin/itwinjs-recommended",
57
- "rules": {
58
- "@typescript-eslint/indent": "off",
59
- "max-statements-per-line": "off",
60
- "nonblock-statement-body-position": "off"
61
- }
62
- },
63
52
  "scripts": {
64
53
  "build": "npm run -s build:cjs && npm run -s build:esm",
65
54
  "build:cjs": "tsc 1>&2 --outDir lib/cjs",
@@ -1 +0,0 @@
1
- {"version":3,"file":"ChainCollectorContext.d.ts","sourceRoot":"","sources":["../../../src/curve/ChainCollectorContext.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,WAAW,CAAU;IAE7B,OAAO,CAAC,MAAM,CAAC,aAAa,CAAU;IACtC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAU;IAEtC;;OAEG;IACH,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,SAAS,CAAC,CAAU;IAC5B,OAAO,CAAC,qBAAqB;IAc7B;;OAEG;gBACgB,UAAU,EAAE,OAAO;IAKtC,OAAO,CAAC,SAAS,CAAC,CAAU;IAE5B;;;;;OAKG;IACI,sBAAsB,CAAC,SAAS,EAAE,cAAc,EAAE,eAAe,GAAE,OAAe;IA0CzF,yEAAyE;IACzE,OAAO,CAAC,cAAc;IAMtB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAa5B,8EAA8E;IACvE,UAAU,CAAC,gBAAgB,GAAE,OAAe,GAAG,cAAc,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,GAAG,SAAS;IAa5G;;;;OAIG;WACW,0BAA0B,CAAC,UAAU,EAAE,cAAc,GAAG,SAAS,EAAE,UAAU,EAAE,cAAc,GAAG,SAAS,EAAE,QAAQ,GAAE,OAAe,GAAG,OAAO;CAe7J"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ChainCollectorContext.js","sourceRoot":"","sources":["../../../src/curve/ChainCollectorContext.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Curve\r\n */\r\nimport { Point3d } from \"../geometry3d/Point3dVector3d\";\r\nimport { BagOfCurves } from \"./CurveCollection\";\r\nimport { CurvePrimitive } from \"./CurvePrimitive\";\r\nimport { Loop } from \"./Loop\";\r\nimport { Path } from \"./Path\";\r\n\r\n/**\r\n * Manage a growing array of arrays of curve primitives that are to be joined \"head to tail\" in paths.\r\n * * The caller makes a sequence of calls to announce individual primitives.\r\n * * The collector has 2 use cases in mind, controlled by `searchAllPaths` flag on `chainCollectorContext.announceCurvePrimitive`\r\n * * (a) \"simple chains\" -- the caller has the curve primitives in order and just needs to have them monitored for coordinate breaks that indicate transition to a new chain.\r\n * * The collector needs to watch for connection to the most recent path but not search for prior paths to join to instead.\r\n * * (b) \"mixed\" primitives -- primitive order is NOT significant for chain assembly.\r\n * * The collector needs to search all prior paths at both start and end, and consider connection to both the start and end of each new primitive.\r\n * * The per-curve announcement is\r\n * * chainCollector.announceCurvePrimitive (curve, searchAllPaths).\r\n * * When all curves have been announced, the call to grab the paths option\r\n * * formLoopsIfClosed\r\n * * If true, convert closed paths to `Loop`, open paths to `Path`\r\n * * If false, convert all paths (open or not) to `Path`\r\n * * Usage pattern is\r\n * * initialization: `context = new ChainCollectorContext (makeClones: boolean)`\r\n * * many times: ` context.announceCurvePrimitive (primitive, searchAllPaths)`\r\n * * end: ` result = context.grabResults (formLoopsIfClosed)`\r\n * @internal\r\n */\r\nexport class ChainCollectorContext {\r\n private _chains: CurvePrimitive[][];\r\n private _makeClones: boolean;\r\n\r\n private static _staticPointA: Point3d;\r\n private static _staticPointB: Point3d;\r\n\r\n /**\r\n * Push a new chain with an optional first primitive.\r\n */\r\n private pushNewChain(primitive?: CurvePrimitive) {\r\n const chain = [];\r\n if (primitive)\r\n chain.push(primitive);\r\n this._chains.push(chain);\r\n }\r\n private findOrCreateTailChain(): CurvePrimitive[] {\r\n if (this._chains.length === 0)\r\n this.pushNewChain();\r\n return this._chains[this._chains.length - 1];\r\n }\r\n private _xyzWork0?: Point3d;\r\n private findAnyChainToConnect(xyz: Point3d): { chainIndex: number, atEnd: boolean } | undefined {\r\n\r\n for (let chainIndexA = 0; chainIndexA < this._chains.length; chainIndexA++) {\r\n const path = this._chains[chainIndexA];\r\n this._xyzWork1 = path[path.length - 1].endPoint(this._xyzWork1);\r\n if (this._xyzWork1.isAlmostEqual(xyz))\r\n return { chainIndex: chainIndexA, atEnd: true };\r\n this._xyzWork1 = path[0].startPoint(this._xyzWork1);\r\n if (this._xyzWork1.isAlmostEqual(xyz))\r\n return { chainIndex: chainIndexA, atEnd: false };\r\n }\r\n return undefined;\r\n }\r\n\r\n /** Initialize with an empty array of chains.\r\n * @param makeClones if true, all CurvePrimitives sent to `announceCurvePrimitive` is immediately cloned. If false, the reference to the original curve is maintained.\r\n */\r\n public constructor(makeClones: boolean) {\r\n this._chains = [];\r\n this._makeClones = makeClones;\r\n }\r\n\r\n private _xyzWork1?: Point3d;\r\n\r\n /** Announce a curve primitive\r\n * * searchAllChains controls the extent of search for connecting points.\r\n * * false ==> only consider connection to most recent chain.\r\n * * true ==> search for any connection, reversing direction as needed.\r\n * * Otherwise start a new chain.\r\n */\r\n public announceCurvePrimitive(candidate: CurvePrimitive, searchAllChains: boolean = false) {\r\n if (candidate) {\r\n if (this._makeClones) {\r\n const candidate1 = candidate.clone();\r\n if (!candidate1 || !(candidate1 instanceof CurvePrimitive))\r\n return;\r\n this.transferMarkup(candidate, candidate1);\r\n candidate = candidate1;\r\n }\r\n if (!searchAllChains) {\r\n const activeChain = this.findOrCreateTailChain();\r\n if (activeChain.length === 0 || !ChainCollectorContext.needBreakBetweenPrimitives(activeChain[activeChain.length - 1], candidate))\r\n activeChain.push(candidate);\r\n else\r\n this.pushNewChain(candidate);\r\n } else {\r\n this._xyzWork0 = candidate.startPoint(this._xyzWork0);\r\n let connect = this.findAnyChainToConnect(this._xyzWork0);\r\n if (connect) {\r\n if (connect.atEnd) {\r\n this._chains[connect.chainIndex].push(candidate);\r\n } else {\r\n candidate.reverseInPlace();\r\n this._chains[connect.chainIndex].splice(0, 0, candidate);\r\n }\r\n } else {\r\n this._xyzWork0 = candidate.endPoint(this._xyzWork0);\r\n connect = this.findAnyChainToConnect(this._xyzWork0);\r\n if (connect) { // START of new primitive ..\r\n if (connect.atEnd) {\r\n candidate.reverseInPlace();\r\n this._chains[connect.chainIndex].push(candidate);\r\n } else {\r\n this._chains[connect.chainIndex].splice(0, 0, candidate);\r\n }\r\n } else {\r\n this._chains.push([candidate]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n /** Transfer markup (e.g. startCut, endCut) from source to destination */\r\n private transferMarkup(source: CurvePrimitive, dest: CurvePrimitive) {\r\n if (source && dest) {\r\n dest.startCut = source.startCut;\r\n dest.endCut = source.endCut;\r\n }\r\n }\r\n /** turn an array of curve primitives into the simplest possible strongly typed curve structure.\r\n * * The input array is assumed to be connected appropriately to act as the curves of a Path.\r\n * * When a path is created the curves array is CAPTURED.\r\n */\r\n private promoteArrayToCurves(curves: CurvePrimitive[], makeLoopIfClosed: boolean): CurvePrimitive | Path | Loop | undefined {\r\n if (curves.length === 0)\r\n return undefined;\r\n if (makeLoopIfClosed) {\r\n ChainCollectorContext._staticPointA = curves[0].startPoint(ChainCollectorContext._staticPointA);\r\n ChainCollectorContext._staticPointB = curves[curves.length - 1].endPoint(ChainCollectorContext._staticPointB);\r\n if (ChainCollectorContext._staticPointA.isAlmostEqual(ChainCollectorContext._staticPointB))\r\n return Loop.createArray(curves);\r\n }\r\n if (curves.length === 1)\r\n return curves[0];\r\n return Path.createArray(curves);\r\n }\r\n /** Return the collected results, structured as the simplest possible type. */\r\n public grabResult(makeLoopIfClosed: boolean = false): CurvePrimitive | Path | BagOfCurves | Loop | undefined {\r\n const chains = this._chains;\r\n if (chains.length === 0)\r\n return undefined;\r\n if (chains.length === 1)\r\n return this.promoteArrayToCurves(chains[0], makeLoopIfClosed);\r\n const bag = BagOfCurves.create();\r\n for (const chain of chains) {\r\n const q = this.promoteArrayToCurves(chain, makeLoopIfClosed);\r\n bag.tryAddChild(q);\r\n }\r\n return bag;\r\n }\r\n /** test if there is a break between primitiveA and primitiveB, due to any condition such as\r\n * * primitiveA.endCut\r\n * * primitiveB.startCut\r\n * * physical gap between primitives.\r\n */\r\n public static needBreakBetweenPrimitives(primitiveA: CurvePrimitive | undefined, primitiveB: CurvePrimitive | undefined, isXYOnly: boolean = false): boolean {\r\n if (primitiveA === undefined)\r\n return true;\r\n if (primitiveB === undefined)\r\n return true;\r\n if (primitiveA.endCut !== undefined)\r\n return true;\r\n if (primitiveB.startCut !== undefined)\r\n return true;\r\n ChainCollectorContext._staticPointA = primitiveA.endPoint(ChainCollectorContext._staticPointA);\r\n ChainCollectorContext._staticPointB = primitiveB.startPoint(ChainCollectorContext._staticPointB);\r\n return isXYOnly\r\n ? !ChainCollectorContext._staticPointA.isAlmostEqualXY(ChainCollectorContext._staticPointB)\r\n : !ChainCollectorContext._staticPointA.isAlmostEqual(ChainCollectorContext._staticPointB);\r\n }\r\n}\r\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ChainCollectorContext.d.ts","sourceRoot":"","sources":["../../../src/curve/ChainCollectorContext.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,WAAW,CAAU;IAE7B,OAAO,CAAC,MAAM,CAAC,aAAa,CAAU;IACtC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAU;IAEtC;;OAEG;IACH,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,SAAS,CAAC,CAAU;IAC5B,OAAO,CAAC,qBAAqB;IAc7B;;OAEG;gBACgB,UAAU,EAAE,OAAO;IAKtC,OAAO,CAAC,SAAS,CAAC,CAAU;IAE5B;;;;;OAKG;IACI,sBAAsB,CAAC,SAAS,EAAE,cAAc,EAAE,eAAe,GAAE,OAAe;IA0CzF,yEAAyE;IACzE,OAAO,CAAC,cAAc;IAMtB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAa5B,8EAA8E;IACvE,UAAU,CAAC,gBAAgB,GAAE,OAAe,GAAG,cAAc,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,GAAG,SAAS;IAa5G;;;;OAIG;WACW,0BAA0B,CAAC,UAAU,EAAE,cAAc,GAAG,SAAS,EAAE,UAAU,EAAE,cAAc,GAAG,SAAS,EAAE,QAAQ,GAAE,OAAe,GAAG,OAAO;CAe7J"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ChainCollectorContext.js","sourceRoot":"","sources":["../../../src/curve/ChainCollectorContext.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Curve\r\n */\r\nimport { Point3d } from \"../geometry3d/Point3dVector3d\";\r\nimport { BagOfCurves } from \"./CurveCollection\";\r\nimport { CurvePrimitive } from \"./CurvePrimitive\";\r\nimport { Loop } from \"./Loop\";\r\nimport { Path } from \"./Path\";\r\n\r\n/**\r\n * Manage a growing array of arrays of curve primitives that are to be joined \"head to tail\" in paths.\r\n * * The caller makes a sequence of calls to announce individual primitives.\r\n * * The collector has 2 use cases in mind, controlled by `searchAllPaths` flag on `chainCollectorContext.announceCurvePrimitive`\r\n * * (a) \"simple chains\" -- the caller has the curve primitives in order and just needs to have them monitored for coordinate breaks that indicate transition to a new chain.\r\n * * The collector needs to watch for connection to the most recent path but not search for prior paths to join to instead.\r\n * * (b) \"mixed\" primitives -- primitive order is NOT significant for chain assembly.\r\n * * The collector needs to search all prior paths at both start and end, and consider connection to both the start and end of each new primitive.\r\n * * The per-curve announcement is\r\n * * chainCollector.announceCurvePrimitive (curve, searchAllPaths).\r\n * * When all curves have been announced, the call to grab the paths option\r\n * * formLoopsIfClosed\r\n * * If true, convert closed paths to `Loop`, open paths to `Path`\r\n * * If false, convert all paths (open or not) to `Path`\r\n * * Usage pattern is\r\n * * initialization: `context = new ChainCollectorContext (makeClones: boolean)`\r\n * * many times: ` context.announceCurvePrimitive (primitive, searchAllPaths)`\r\n * * end: ` result = context.grabResults (formLoopsIfClosed)`\r\n * @internal\r\n */\r\nexport class ChainCollectorContext {\r\n private _chains: CurvePrimitive[][];\r\n private _makeClones: boolean;\r\n\r\n private static _staticPointA: Point3d;\r\n private static _staticPointB: Point3d;\r\n\r\n /**\r\n * Push a new chain with an optional first primitive.\r\n */\r\n private pushNewChain(primitive?: CurvePrimitive) {\r\n const chain = [];\r\n if (primitive)\r\n chain.push(primitive);\r\n this._chains.push(chain);\r\n }\r\n private findOrCreateTailChain(): CurvePrimitive[] {\r\n if (this._chains.length === 0)\r\n this.pushNewChain();\r\n return this._chains[this._chains.length - 1];\r\n }\r\n private _xyzWork0?: Point3d;\r\n private findAnyChainToConnect(xyz: Point3d): { chainIndex: number, atEnd: boolean } | undefined {\r\n\r\n for (let chainIndexA = 0; chainIndexA < this._chains.length; chainIndexA++) {\r\n const path = this._chains[chainIndexA];\r\n this._xyzWork1 = path[path.length - 1].endPoint(this._xyzWork1);\r\n if (this._xyzWork1.isAlmostEqual(xyz))\r\n return { chainIndex: chainIndexA, atEnd: true };\r\n this._xyzWork1 = path[0].startPoint(this._xyzWork1);\r\n if (this._xyzWork1.isAlmostEqual(xyz))\r\n return { chainIndex: chainIndexA, atEnd: false };\r\n }\r\n return undefined;\r\n }\r\n\r\n /** Initialize with an empty array of chains.\r\n * @param makeClones if true, all CurvePrimitives sent to `announceCurvePrimitive` is immediately cloned. If false, the reference to the original curve is maintained.\r\n */\r\n public constructor(makeClones: boolean) {\r\n this._chains = [];\r\n this._makeClones = makeClones;\r\n }\r\n\r\n private _xyzWork1?: Point3d;\r\n\r\n /** Announce a curve primitive\r\n * * searchAllChains controls the extent of search for connecting points.\r\n * * false ==> only consider connection to most recent chain.\r\n * * true ==> search for any connection, reversing direction as needed.\r\n * * Otherwise start a new chain.\r\n */\r\n public announceCurvePrimitive(candidate: CurvePrimitive, searchAllChains: boolean = false) {\r\n if (candidate) {\r\n if (this._makeClones) {\r\n const candidate1 = candidate.clone();\r\n if (!candidate1 || !(candidate1 instanceof CurvePrimitive))\r\n return;\r\n this.transferMarkup(candidate, candidate1);\r\n candidate = candidate1;\r\n }\r\n if (!searchAllChains) {\r\n const activeChain = this.findOrCreateTailChain();\r\n if (activeChain.length === 0 || !ChainCollectorContext.needBreakBetweenPrimitives(activeChain[activeChain.length - 1], candidate))\r\n activeChain.push(candidate);\r\n else\r\n this.pushNewChain(candidate);\r\n } else {\r\n this._xyzWork0 = candidate.startPoint(this._xyzWork0);\r\n let connect = this.findAnyChainToConnect(this._xyzWork0);\r\n if (connect) {\r\n if (connect.atEnd) {\r\n this._chains[connect.chainIndex].push(candidate);\r\n } else {\r\n candidate.reverseInPlace();\r\n this._chains[connect.chainIndex].splice(0, 0, candidate);\r\n }\r\n } else {\r\n this._xyzWork0 = candidate.endPoint(this._xyzWork0);\r\n connect = this.findAnyChainToConnect(this._xyzWork0);\r\n if (connect) { // START of new primitive ..\r\n if (connect.atEnd) {\r\n candidate.reverseInPlace();\r\n this._chains[connect.chainIndex].push(candidate);\r\n } else {\r\n this._chains[connect.chainIndex].splice(0, 0, candidate);\r\n }\r\n } else {\r\n this._chains.push([candidate]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n /** Transfer markup (e.g. startCut, endCut) from source to destination */\r\n private transferMarkup(source: CurvePrimitive, dest: CurvePrimitive) {\r\n if (source && dest) {\r\n dest.startCut = source.startCut;\r\n dest.endCut = source.endCut;\r\n }\r\n }\r\n /** turn an array of curve primitives into the simplest possible strongly typed curve structure.\r\n * * The input array is assumed to be connected appropriately to act as the curves of a Path.\r\n * * When a path is created the curves array is CAPTURED.\r\n */\r\n private promoteArrayToCurves(curves: CurvePrimitive[], makeLoopIfClosed: boolean): CurvePrimitive | Path | Loop | undefined {\r\n if (curves.length === 0)\r\n return undefined;\r\n if (makeLoopIfClosed) {\r\n ChainCollectorContext._staticPointA = curves[0].startPoint(ChainCollectorContext._staticPointA);\r\n ChainCollectorContext._staticPointB = curves[curves.length - 1].endPoint(ChainCollectorContext._staticPointB);\r\n if (ChainCollectorContext._staticPointA.isAlmostEqual(ChainCollectorContext._staticPointB))\r\n return Loop.createArray(curves);\r\n }\r\n if (curves.length === 1)\r\n return curves[0];\r\n return Path.createArray(curves);\r\n }\r\n /** Return the collected results, structured as the simplest possible type. */\r\n public grabResult(makeLoopIfClosed: boolean = false): CurvePrimitive | Path | BagOfCurves | Loop | undefined {\r\n const chains = this._chains;\r\n if (chains.length === 0)\r\n return undefined;\r\n if (chains.length === 1)\r\n return this.promoteArrayToCurves(chains[0], makeLoopIfClosed);\r\n const bag = BagOfCurves.create();\r\n for (const chain of chains) {\r\n const q = this.promoteArrayToCurves(chain, makeLoopIfClosed);\r\n bag.tryAddChild(q);\r\n }\r\n return bag;\r\n }\r\n /** test if there is a break between primitiveA and primitiveB, due to any condition such as\r\n * * primitiveA.endCut\r\n * * primitiveB.startCut\r\n * * physical gap between primitives.\r\n */\r\n public static needBreakBetweenPrimitives(primitiveA: CurvePrimitive | undefined, primitiveB: CurvePrimitive | undefined, isXYOnly: boolean = false): boolean {\r\n if (primitiveA === undefined)\r\n return true;\r\n if (primitiveB === undefined)\r\n return true;\r\n if (primitiveA.endCut !== undefined)\r\n return true;\r\n if (primitiveB.startCut !== undefined)\r\n return true;\r\n ChainCollectorContext._staticPointA = primitiveA.endPoint(ChainCollectorContext._staticPointA);\r\n ChainCollectorContext._staticPointB = primitiveB.startPoint(ChainCollectorContext._staticPointB);\r\n return isXYOnly\r\n ? !ChainCollectorContext._staticPointA.isAlmostEqualXY(ChainCollectorContext._staticPointB)\r\n : !ChainCollectorContext._staticPointA.isAlmostEqual(ChainCollectorContext._staticPointB);\r\n }\r\n}\r\n"]}