@itwin/core-geometry 5.1.0-dev.5 → 5.1.0-dev.51

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 (788) hide show
  1. package/CHANGELOG.md +58 -1
  2. package/lib/cjs/Constant.js.map +1 -1
  3. package/lib/cjs/Geometry.d.ts +12 -4
  4. package/lib/cjs/Geometry.d.ts.map +1 -1
  5. package/lib/cjs/Geometry.js +13 -3
  6. package/lib/cjs/Geometry.js.map +1 -1
  7. package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
  8. package/lib/cjs/bspline/BSpline1dNd.d.ts +1 -1
  9. package/lib/cjs/bspline/BSpline1dNd.js +1 -1
  10. package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
  11. package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -1
  12. package/lib/cjs/bspline/BSplineCurve.js +7 -1
  13. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  14. package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
  15. package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
  16. package/lib/cjs/bspline/BSplineSurface.d.ts +4 -3
  17. package/lib/cjs/bspline/BSplineSurface.d.ts.map +1 -1
  18. package/lib/cjs/bspline/BSplineSurface.js +6 -5
  19. package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
  20. package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
  21. package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
  22. package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
  23. package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
  24. package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
  25. package/lib/cjs/bspline/KnotVector.js.map +1 -1
  26. package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -1
  27. package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
  28. package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -1
  29. package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
  30. package/lib/cjs/clipping/ClipPlane.d.ts +7 -5
  31. package/lib/cjs/clipping/ClipPlane.d.ts.map +1 -1
  32. package/lib/cjs/clipping/ClipPlane.js +9 -5
  33. package/lib/cjs/clipping/ClipPlane.js.map +1 -1
  34. package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
  35. package/lib/cjs/clipping/ClipUtils.d.ts.map +1 -1
  36. package/lib/cjs/clipping/ClipUtils.js +5 -3
  37. package/lib/cjs/clipping/ClipUtils.js.map +1 -1
  38. package/lib/cjs/clipping/ClipVector.js.map +1 -1
  39. package/lib/cjs/clipping/ConvexClipPlaneSet.d.ts +1 -2
  40. package/lib/cjs/clipping/ConvexClipPlaneSet.d.ts.map +1 -1
  41. package/lib/cjs/clipping/ConvexClipPlaneSet.js +13 -25
  42. package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
  43. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.d.ts +1 -2
  44. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.d.ts.map +1 -1
  45. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js +1 -2
  46. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  47. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  48. package/lib/cjs/core-geometry.d.ts +1 -0
  49. package/lib/cjs/core-geometry.d.ts.map +1 -1
  50. package/lib/cjs/core-geometry.js +1 -0
  51. package/lib/cjs/core-geometry.js.map +1 -1
  52. package/lib/cjs/curve/Arc3d.d.ts +54 -32
  53. package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
  54. package/lib/cjs/curve/Arc3d.js +56 -37
  55. package/lib/cjs/curve/Arc3d.js.map +1 -1
  56. package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
  57. package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
  58. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  59. package/lib/cjs/curve/CurveCollection.d.ts +33 -1
  60. package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
  61. package/lib/cjs/curve/CurveCollection.js +79 -0
  62. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  63. package/lib/cjs/curve/CurveCurve.js.map +1 -1
  64. package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
  65. package/lib/cjs/curve/CurveFactory.d.ts.map +1 -1
  66. package/lib/cjs/curve/CurveFactory.js.map +1 -1
  67. package/lib/cjs/curve/CurveLocationDetail.d.ts +25 -25
  68. package/lib/cjs/curve/CurveLocationDetail.d.ts.map +1 -1
  69. package/lib/cjs/curve/CurveLocationDetail.js +25 -25
  70. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  71. package/lib/cjs/curve/CurveOps.js.map +1 -1
  72. package/lib/cjs/curve/CurvePrimitive.d.ts +2 -2
  73. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  74. package/lib/cjs/curve/CurveProcessor.js.map +1 -1
  75. package/lib/cjs/curve/CurveTypes.d.ts +1 -1
  76. package/lib/cjs/curve/CurveTypes.js.map +1 -1
  77. package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
  78. package/lib/cjs/curve/GeometryQuery.js.map +1 -1
  79. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  80. package/lib/cjs/curve/LineString3d.js.map +1 -1
  81. package/lib/cjs/curve/Loop.js.map +1 -1
  82. package/lib/cjs/curve/OffsetOptions.js.map +1 -1
  83. package/lib/cjs/curve/ParityRegion.js.map +1 -1
  84. package/lib/cjs/curve/Path.js.map +1 -1
  85. package/lib/cjs/curve/PointString3d.js.map +1 -1
  86. package/lib/cjs/curve/ProxyCurve.js.map +1 -1
  87. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.d.ts.map +1 -1
  88. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js +10 -5
  89. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  90. package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
  91. package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
  92. package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
  93. package/lib/cjs/curve/Query/PlanarSubdivision.d.ts +9 -5
  94. package/lib/cjs/curve/Query/PlanarSubdivision.d.ts.map +1 -1
  95. package/lib/cjs/curve/Query/PlanarSubdivision.js +27 -11
  96. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  97. package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
  98. package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
  99. package/lib/cjs/curve/RegionMomentsXY.d.ts +1 -0
  100. package/lib/cjs/curve/RegionMomentsXY.d.ts.map +1 -1
  101. package/lib/cjs/curve/RegionMomentsXY.js +21 -39
  102. package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
  103. package/lib/cjs/curve/RegionOps.d.ts +55 -29
  104. package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
  105. package/lib/cjs/curve/RegionOps.js +96 -35
  106. package/lib/cjs/curve/RegionOps.js.map +1 -1
  107. package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts +27 -26
  108. package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
  109. package/lib/cjs/curve/RegionOpsClassificationSweeps.js +70 -54
  110. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  111. package/lib/cjs/curve/StrokeOptions.d.ts +1 -1
  112. package/lib/cjs/curve/StrokeOptions.js +1 -1
  113. package/lib/cjs/curve/StrokeOptions.js.map +1 -1
  114. package/lib/cjs/curve/UnionRegion.js.map +1 -1
  115. package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
  116. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  117. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  118. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  119. package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  120. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  121. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  122. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  123. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts +0 -1
  124. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
  125. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js +58 -32
  126. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  127. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  128. package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
  129. package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  130. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  131. package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
  132. package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
  133. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  134. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  135. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -1
  136. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js +0 -1
  137. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  138. package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
  139. package/lib/cjs/curve/internalContexts/TransferWithSplitArcs.d.ts +14 -0
  140. package/lib/cjs/curve/internalContexts/TransferWithSplitArcs.d.ts.map +1 -0
  141. package/lib/cjs/curve/internalContexts/TransferWithSplitArcs.js +34 -0
  142. package/lib/cjs/curve/internalContexts/TransferWithSplitArcs.js.map +1 -0
  143. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  144. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  145. package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
  146. package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
  147. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  148. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  149. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
  150. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  151. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  152. package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
  153. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  154. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  155. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
  156. package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
  157. package/lib/cjs/geometry3d/Angle.js.map +1 -1
  158. package/lib/cjs/geometry3d/AngleSweep.d.ts +24 -17
  159. package/lib/cjs/geometry3d/AngleSweep.d.ts.map +1 -1
  160. package/lib/cjs/geometry3d/AngleSweep.js +31 -17
  161. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
  162. package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
  163. package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
  164. package/lib/cjs/geometry3d/CoincidentGeometryOps.d.ts +8 -7
  165. package/lib/cjs/geometry3d/CoincidentGeometryOps.d.ts.map +1 -1
  166. package/lib/cjs/geometry3d/CoincidentGeometryOps.js +19 -25
  167. package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
  168. package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
  169. package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
  170. package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
  171. package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
  172. package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
  173. package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
  174. package/lib/cjs/geometry3d/GrowableXYArray.d.ts +1 -1
  175. package/lib/cjs/geometry3d/GrowableXYArray.js +1 -1
  176. package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
  177. package/lib/cjs/geometry3d/GrowableXYZArray.d.ts +7 -2
  178. package/lib/cjs/geometry3d/GrowableXYZArray.d.ts.map +1 -1
  179. package/lib/cjs/geometry3d/GrowableXYZArray.js +20 -2
  180. package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
  181. package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
  182. package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
  183. package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts +2 -1
  184. package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
  185. package/lib/cjs/geometry3d/IndexedXYZCollection.js +7 -3
  186. package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
  187. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  188. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  189. package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
  190. package/lib/cjs/geometry3d/Plane3d.d.ts +2 -0
  191. package/lib/cjs/geometry3d/Plane3d.d.ts.map +1 -1
  192. package/lib/cjs/geometry3d/Plane3d.js +6 -1
  193. package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
  194. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.d.ts +2 -0
  195. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.d.ts.map +1 -1
  196. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js +6 -1
  197. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  198. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.d.ts +8 -2
  199. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.d.ts.map +1 -1
  200. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js +18 -10
  201. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  202. package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
  203. package/lib/cjs/geometry3d/Point2dVector2d.d.ts.map +1 -1
  204. package/lib/cjs/geometry3d/Point2dVector2d.js +0 -2
  205. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  206. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  207. package/lib/cjs/geometry3d/Point3dVector3d.d.ts +4 -4
  208. package/lib/cjs/geometry3d/Point3dVector3d.d.ts.map +1 -1
  209. package/lib/cjs/geometry3d/Point3dVector3d.js +4 -5
  210. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  211. package/lib/cjs/geometry3d/PointHelpers.d.ts +7 -7
  212. package/lib/cjs/geometry3d/PointHelpers.d.ts.map +1 -1
  213. package/lib/cjs/geometry3d/PointHelpers.js +66 -26
  214. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  215. package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
  216. package/lib/cjs/geometry3d/PolygonOps.d.ts +49 -2
  217. package/lib/cjs/geometry3d/PolygonOps.d.ts.map +1 -1
  218. package/lib/cjs/geometry3d/PolygonOps.js +38 -2
  219. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  220. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.d.ts +13 -6
  221. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.d.ts.map +1 -1
  222. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js +16 -9
  223. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  224. package/lib/cjs/geometry3d/PolylineOps.d.ts +5 -4
  225. package/lib/cjs/geometry3d/PolylineOps.d.ts.map +1 -1
  226. package/lib/cjs/geometry3d/PolylineOps.js +5 -4
  227. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
  228. package/lib/cjs/geometry3d/Range.d.ts +18 -10
  229. package/lib/cjs/geometry3d/Range.d.ts.map +1 -1
  230. package/lib/cjs/geometry3d/Range.js +32 -10
  231. package/lib/cjs/geometry3d/Range.js.map +1 -1
  232. package/lib/cjs/geometry3d/Ray2d.d.ts.map +1 -1
  233. package/lib/cjs/geometry3d/Ray2d.js +0 -1
  234. package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
  235. package/lib/cjs/geometry3d/Ray3d.d.ts.map +1 -1
  236. package/lib/cjs/geometry3d/Ray3d.js +11 -23
  237. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  238. package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
  239. package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
  240. package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
  241. package/lib/cjs/geometry3d/Transform.d.ts +21 -2
  242. package/lib/cjs/geometry3d/Transform.d.ts.map +1 -1
  243. package/lib/cjs/geometry3d/Transform.js +32 -13
  244. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  245. package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
  246. package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
  247. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  248. package/lib/cjs/geometry4d/Map4d.js.map +1 -1
  249. package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
  250. package/lib/cjs/geometry4d/MomentData.js.map +1 -1
  251. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  252. package/lib/cjs/geometry4d/Point4d.d.ts +8 -5
  253. package/lib/cjs/geometry4d/Point4d.d.ts.map +1 -1
  254. package/lib/cjs/geometry4d/Point4d.js +27 -16
  255. package/lib/cjs/geometry4d/Point4d.js.map +1 -1
  256. package/lib/cjs/numerics/BandedSystem.js.map +1 -1
  257. package/lib/cjs/numerics/BezierPolynomials.d.ts +2 -0
  258. package/lib/cjs/numerics/BezierPolynomials.d.ts.map +1 -1
  259. package/lib/cjs/numerics/BezierPolynomials.js +11 -0
  260. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
  261. package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
  262. package/lib/cjs/numerics/Complex.js.map +1 -1
  263. package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
  264. package/lib/cjs/numerics/Newton.js.map +1 -1
  265. package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
  266. package/lib/cjs/numerics/PolarData.js.map +1 -1
  267. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  268. package/lib/cjs/numerics/Quadrature.js.map +1 -1
  269. package/lib/cjs/numerics/Range1dArray.js.map +1 -1
  270. package/lib/cjs/numerics/SmallSystem.d.ts +77 -36
  271. package/lib/cjs/numerics/SmallSystem.d.ts.map +1 -1
  272. package/lib/cjs/numerics/SmallSystem.js +129 -73
  273. package/lib/cjs/numerics/SmallSystem.js.map +1 -1
  274. package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
  275. package/lib/cjs/numerics/UnionFind.js.map +1 -1
  276. package/lib/cjs/numerics/UsageSums.js.map +1 -1
  277. package/lib/cjs/polyface/AuxData.js.map +1 -1
  278. package/lib/cjs/polyface/BoxTopology.js.map +1 -1
  279. package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
  280. package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
  281. package/lib/cjs/polyface/FacetOrientation.d.ts +1 -1
  282. package/lib/cjs/polyface/FacetOrientation.js +1 -1
  283. package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
  284. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  285. package/lib/cjs/polyface/IndexedEdgeMatcher.d.ts +55 -40
  286. package/lib/cjs/polyface/IndexedEdgeMatcher.d.ts.map +1 -1
  287. package/lib/cjs/polyface/IndexedEdgeMatcher.js +83 -75
  288. package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
  289. package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts +15 -14
  290. package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
  291. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js +47 -38
  292. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  293. package/lib/cjs/polyface/IndexedPolyfaceWalker.d.ts +26 -19
  294. package/lib/cjs/polyface/IndexedPolyfaceWalker.d.ts.map +1 -1
  295. package/lib/cjs/polyface/IndexedPolyfaceWalker.js +47 -32
  296. package/lib/cjs/polyface/IndexedPolyfaceWalker.js.map +1 -1
  297. package/lib/cjs/polyface/Polyface.d.ts +19 -5
  298. package/lib/cjs/polyface/Polyface.d.ts.map +1 -1
  299. package/lib/cjs/polyface/Polyface.js +18 -2
  300. package/lib/cjs/polyface/Polyface.js.map +1 -1
  301. package/lib/cjs/polyface/PolyfaceBuilder.d.ts +1 -1
  302. package/lib/cjs/polyface/PolyfaceBuilder.js +3 -3
  303. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  304. package/lib/cjs/polyface/PolyfaceClip.d.ts +19 -18
  305. package/lib/cjs/polyface/PolyfaceClip.d.ts.map +1 -1
  306. package/lib/cjs/polyface/PolyfaceClip.js +39 -42
  307. package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
  308. package/lib/cjs/polyface/PolyfaceData.d.ts +1 -1
  309. package/lib/cjs/polyface/PolyfaceData.js +1 -1
  310. package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
  311. package/lib/cjs/polyface/PolyfaceQuery.d.ts +119 -78
  312. package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
  313. package/lib/cjs/polyface/PolyfaceQuery.js +315 -231
  314. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  315. package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
  316. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  317. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  318. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  319. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  320. package/lib/cjs/polyface/RangeTree/RangeTreeNode.d.ts +3 -3
  321. package/lib/cjs/polyface/RangeTree/RangeTreeNode.d.ts.map +1 -1
  322. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js +3 -3
  323. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  324. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  325. package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
  326. package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
  327. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  328. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  329. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  330. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  331. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  332. package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  333. package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
  334. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.d.ts +7 -6
  335. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.d.ts.map +1 -1
  336. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js +8 -9
  337. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  338. package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
  339. package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
  340. package/lib/cjs/serialization/BGFBReader.js.map +1 -1
  341. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  342. package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  343. package/lib/cjs/serialization/DeepCompare.js.map +1 -1
  344. package/lib/cjs/serialization/GeometrySamples.d.ts +1 -1
  345. package/lib/cjs/serialization/GeometrySamples.d.ts.map +1 -1
  346. package/lib/cjs/serialization/GeometrySamples.js +3 -3
  347. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  348. package/lib/cjs/serialization/IModelJsonSchema.d.ts +3 -3
  349. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  350. package/lib/cjs/serialization/SerializationHelpers.js.map +1 -1
  351. package/lib/cjs/solid/Box.js.map +1 -1
  352. package/lib/cjs/solid/Cone.js.map +1 -1
  353. package/lib/cjs/solid/LinearSweep.d.ts +2 -3
  354. package/lib/cjs/solid/LinearSweep.d.ts.map +1 -1
  355. package/lib/cjs/solid/LinearSweep.js +2 -3
  356. package/lib/cjs/solid/LinearSweep.js.map +1 -1
  357. package/lib/cjs/solid/RotationalSweep.d.ts +2 -2
  358. package/lib/cjs/solid/RotationalSweep.js +2 -2
  359. package/lib/cjs/solid/RotationalSweep.js.map +1 -1
  360. package/lib/cjs/solid/RuledSweep.js.map +1 -1
  361. package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
  362. package/lib/cjs/solid/Sphere.js.map +1 -1
  363. package/lib/cjs/solid/SweepContour.js.map +1 -1
  364. package/lib/cjs/solid/TorusPipe.js.map +1 -1
  365. package/lib/cjs/topology/ChainMerge.d.ts +1 -1
  366. package/lib/cjs/topology/ChainMerge.js +1 -1
  367. package/lib/cjs/topology/ChainMerge.js.map +1 -1
  368. package/lib/cjs/topology/Graph.js.map +1 -1
  369. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  370. package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts +1 -0
  371. package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
  372. package/lib/cjs/topology/HalfEdgeGraphSearch.js +1 -0
  373. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  374. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  375. package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
  376. package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
  377. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  378. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  379. package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
  380. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
  381. package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
  382. package/lib/cjs/topology/MaskManager.js.map +1 -1
  383. package/lib/cjs/topology/Merging.d.ts +0 -1
  384. package/lib/cjs/topology/Merging.d.ts.map +1 -1
  385. package/lib/cjs/topology/Merging.js +49 -46
  386. package/lib/cjs/topology/Merging.js.map +1 -1
  387. package/lib/cjs/topology/RegularizeFace.js.map +1 -1
  388. package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
  389. package/lib/cjs/topology/SpaceTriangulation.js.map +1 -1
  390. package/lib/cjs/topology/Triangulation.d.ts +9 -14
  391. package/lib/cjs/topology/Triangulation.d.ts.map +1 -1
  392. package/lib/cjs/topology/Triangulation.js +29 -22
  393. package/lib/cjs/topology/Triangulation.js.map +1 -1
  394. package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
  395. package/lib/esm/Constant.js.map +1 -1
  396. package/lib/esm/Geometry.d.ts +12 -4
  397. package/lib/esm/Geometry.d.ts.map +1 -1
  398. package/lib/esm/Geometry.js +13 -3
  399. package/lib/esm/Geometry.js.map +1 -1
  400. package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
  401. package/lib/esm/bspline/BSpline1dNd.d.ts +1 -1
  402. package/lib/esm/bspline/BSpline1dNd.js +1 -1
  403. package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
  404. package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
  405. package/lib/esm/bspline/BSplineCurve.js +7 -1
  406. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  407. package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
  408. package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
  409. package/lib/esm/bspline/BSplineSurface.d.ts +4 -3
  410. package/lib/esm/bspline/BSplineSurface.d.ts.map +1 -1
  411. package/lib/esm/bspline/BSplineSurface.js +6 -5
  412. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  413. package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
  414. package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
  415. package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
  416. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  417. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  418. package/lib/esm/bspline/KnotVector.js.map +1 -1
  419. package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
  420. package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
  421. package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
  422. package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
  423. package/lib/esm/clipping/ClipPlane.d.ts +7 -5
  424. package/lib/esm/clipping/ClipPlane.d.ts.map +1 -1
  425. package/lib/esm/clipping/ClipPlane.js +9 -5
  426. package/lib/esm/clipping/ClipPlane.js.map +1 -1
  427. package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
  428. package/lib/esm/clipping/ClipUtils.d.ts.map +1 -1
  429. package/lib/esm/clipping/ClipUtils.js +5 -3
  430. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  431. package/lib/esm/clipping/ClipVector.js.map +1 -1
  432. package/lib/esm/clipping/ConvexClipPlaneSet.d.ts +1 -2
  433. package/lib/esm/clipping/ConvexClipPlaneSet.d.ts.map +1 -1
  434. package/lib/esm/clipping/ConvexClipPlaneSet.js +13 -25
  435. package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
  436. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.d.ts +1 -2
  437. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.d.ts.map +1 -1
  438. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js +1 -2
  439. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  440. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  441. package/lib/esm/core-geometry.d.ts +1 -0
  442. package/lib/esm/core-geometry.d.ts.map +1 -1
  443. package/lib/esm/core-geometry.js +1 -0
  444. package/lib/esm/core-geometry.js.map +1 -1
  445. package/lib/esm/curve/Arc3d.d.ts +54 -32
  446. package/lib/esm/curve/Arc3d.d.ts.map +1 -1
  447. package/lib/esm/curve/Arc3d.js +56 -37
  448. package/lib/esm/curve/Arc3d.js.map +1 -1
  449. package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
  450. package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
  451. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  452. package/lib/esm/curve/CurveCollection.d.ts +33 -1
  453. package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
  454. package/lib/esm/curve/CurveCollection.js +79 -0
  455. package/lib/esm/curve/CurveCollection.js.map +1 -1
  456. package/lib/esm/curve/CurveCurve.js.map +1 -1
  457. package/lib/esm/curve/CurveExtendMode.js.map +1 -1
  458. package/lib/esm/curve/CurveFactory.d.ts.map +1 -1
  459. package/lib/esm/curve/CurveFactory.js.map +1 -1
  460. package/lib/esm/curve/CurveLocationDetail.d.ts +25 -25
  461. package/lib/esm/curve/CurveLocationDetail.d.ts.map +1 -1
  462. package/lib/esm/curve/CurveLocationDetail.js +25 -25
  463. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  464. package/lib/esm/curve/CurveOps.js.map +1 -1
  465. package/lib/esm/curve/CurvePrimitive.d.ts +2 -2
  466. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  467. package/lib/esm/curve/CurveProcessor.js.map +1 -1
  468. package/lib/esm/curve/CurveTypes.d.ts +1 -1
  469. package/lib/esm/curve/CurveTypes.js.map +1 -1
  470. package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
  471. package/lib/esm/curve/GeometryQuery.js.map +1 -1
  472. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  473. package/lib/esm/curve/LineString3d.js.map +1 -1
  474. package/lib/esm/curve/Loop.js.map +1 -1
  475. package/lib/esm/curve/OffsetOptions.js.map +1 -1
  476. package/lib/esm/curve/ParityRegion.js.map +1 -1
  477. package/lib/esm/curve/Path.js.map +1 -1
  478. package/lib/esm/curve/PointString3d.js.map +1 -1
  479. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  480. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.d.ts.map +1 -1
  481. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js +10 -5
  482. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  483. package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
  484. package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
  485. package/lib/esm/curve/Query/InOutTests.js.map +1 -1
  486. package/lib/esm/curve/Query/PlanarSubdivision.d.ts +9 -5
  487. package/lib/esm/curve/Query/PlanarSubdivision.d.ts.map +1 -1
  488. package/lib/esm/curve/Query/PlanarSubdivision.js +27 -11
  489. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  490. package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
  491. package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
  492. package/lib/esm/curve/RegionMomentsXY.d.ts +1 -0
  493. package/lib/esm/curve/RegionMomentsXY.d.ts.map +1 -1
  494. package/lib/esm/curve/RegionMomentsXY.js +21 -39
  495. package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
  496. package/lib/esm/curve/RegionOps.d.ts +55 -29
  497. package/lib/esm/curve/RegionOps.d.ts.map +1 -1
  498. package/lib/esm/curve/RegionOps.js +96 -35
  499. package/lib/esm/curve/RegionOps.js.map +1 -1
  500. package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts +27 -26
  501. package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
  502. package/lib/esm/curve/RegionOpsClassificationSweeps.js +70 -54
  503. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  504. package/lib/esm/curve/StrokeOptions.d.ts +1 -1
  505. package/lib/esm/curve/StrokeOptions.js +1 -1
  506. package/lib/esm/curve/StrokeOptions.js.map +1 -1
  507. package/lib/esm/curve/UnionRegion.js.map +1 -1
  508. package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
  509. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  510. package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  511. package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  512. package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  513. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  514. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  515. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  516. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts +0 -1
  517. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
  518. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js +58 -32
  519. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  520. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  521. package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
  522. package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  523. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  524. package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
  525. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  526. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  527. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  528. package/lib/esm/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -1
  529. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js +0 -1
  530. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  531. package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
  532. package/lib/esm/curve/internalContexts/TransferWithSplitArcs.d.ts +14 -0
  533. package/lib/esm/curve/internalContexts/TransferWithSplitArcs.d.ts.map +1 -0
  534. package/lib/esm/curve/internalContexts/TransferWithSplitArcs.js +30 -0
  535. package/lib/esm/curve/internalContexts/TransferWithSplitArcs.js.map +1 -0
  536. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  537. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  538. package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
  539. package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
  540. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  541. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  542. package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
  543. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  544. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  545. package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
  546. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  547. package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  548. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
  549. package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
  550. package/lib/esm/geometry3d/Angle.js.map +1 -1
  551. package/lib/esm/geometry3d/AngleSweep.d.ts +24 -17
  552. package/lib/esm/geometry3d/AngleSweep.d.ts.map +1 -1
  553. package/lib/esm/geometry3d/AngleSweep.js +31 -17
  554. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  555. package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
  556. package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
  557. package/lib/esm/geometry3d/CoincidentGeometryOps.d.ts +8 -7
  558. package/lib/esm/geometry3d/CoincidentGeometryOps.d.ts.map +1 -1
  559. package/lib/esm/geometry3d/CoincidentGeometryOps.js +19 -25
  560. package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
  561. package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
  562. package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
  563. package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
  564. package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
  565. package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
  566. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
  567. package/lib/esm/geometry3d/GrowableXYArray.d.ts +1 -1
  568. package/lib/esm/geometry3d/GrowableXYArray.js +1 -1
  569. package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
  570. package/lib/esm/geometry3d/GrowableXYZArray.d.ts +7 -2
  571. package/lib/esm/geometry3d/GrowableXYZArray.d.ts.map +1 -1
  572. package/lib/esm/geometry3d/GrowableXYZArray.js +20 -2
  573. package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
  574. package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
  575. package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
  576. package/lib/esm/geometry3d/IndexedXYZCollection.d.ts +2 -1
  577. package/lib/esm/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
  578. package/lib/esm/geometry3d/IndexedXYZCollection.js +7 -3
  579. package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
  580. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  581. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  582. package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
  583. package/lib/esm/geometry3d/Plane3d.d.ts +2 -0
  584. package/lib/esm/geometry3d/Plane3d.d.ts.map +1 -1
  585. package/lib/esm/geometry3d/Plane3d.js +6 -1
  586. package/lib/esm/geometry3d/Plane3d.js.map +1 -1
  587. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.d.ts +2 -0
  588. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.d.ts.map +1 -1
  589. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js +6 -1
  590. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  591. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.d.ts +8 -2
  592. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.d.ts.map +1 -1
  593. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js +18 -10
  594. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  595. package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
  596. package/lib/esm/geometry3d/Point2dVector2d.d.ts.map +1 -1
  597. package/lib/esm/geometry3d/Point2dVector2d.js +0 -2
  598. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  599. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  600. package/lib/esm/geometry3d/Point3dVector3d.d.ts +4 -4
  601. package/lib/esm/geometry3d/Point3dVector3d.d.ts.map +1 -1
  602. package/lib/esm/geometry3d/Point3dVector3d.js +4 -5
  603. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  604. package/lib/esm/geometry3d/PointHelpers.d.ts +7 -7
  605. package/lib/esm/geometry3d/PointHelpers.d.ts.map +1 -1
  606. package/lib/esm/geometry3d/PointHelpers.js +66 -26
  607. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  608. package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
  609. package/lib/esm/geometry3d/PolygonOps.d.ts +49 -2
  610. package/lib/esm/geometry3d/PolygonOps.d.ts.map +1 -1
  611. package/lib/esm/geometry3d/PolygonOps.js +38 -2
  612. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  613. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.d.ts +13 -6
  614. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.d.ts.map +1 -1
  615. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js +16 -9
  616. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  617. package/lib/esm/geometry3d/PolylineOps.d.ts +5 -4
  618. package/lib/esm/geometry3d/PolylineOps.d.ts.map +1 -1
  619. package/lib/esm/geometry3d/PolylineOps.js +5 -4
  620. package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
  621. package/lib/esm/geometry3d/Range.d.ts +18 -10
  622. package/lib/esm/geometry3d/Range.d.ts.map +1 -1
  623. package/lib/esm/geometry3d/Range.js +32 -10
  624. package/lib/esm/geometry3d/Range.js.map +1 -1
  625. package/lib/esm/geometry3d/Ray2d.d.ts.map +1 -1
  626. package/lib/esm/geometry3d/Ray2d.js +0 -1
  627. package/lib/esm/geometry3d/Ray2d.js.map +1 -1
  628. package/lib/esm/geometry3d/Ray3d.d.ts.map +1 -1
  629. package/lib/esm/geometry3d/Ray3d.js +11 -23
  630. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  631. package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
  632. package/lib/esm/geometry3d/Segment1d.js.map +1 -1
  633. package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
  634. package/lib/esm/geometry3d/Transform.d.ts +21 -2
  635. package/lib/esm/geometry3d/Transform.d.ts.map +1 -1
  636. package/lib/esm/geometry3d/Transform.js +32 -13
  637. package/lib/esm/geometry3d/Transform.js.map +1 -1
  638. package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
  639. package/lib/esm/geometry3d/XYZProps.js.map +1 -1
  640. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  641. package/lib/esm/geometry4d/Map4d.js.map +1 -1
  642. package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
  643. package/lib/esm/geometry4d/MomentData.js.map +1 -1
  644. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  645. package/lib/esm/geometry4d/Point4d.d.ts +8 -5
  646. package/lib/esm/geometry4d/Point4d.d.ts.map +1 -1
  647. package/lib/esm/geometry4d/Point4d.js +27 -16
  648. package/lib/esm/geometry4d/Point4d.js.map +1 -1
  649. package/lib/esm/numerics/BandedSystem.js.map +1 -1
  650. package/lib/esm/numerics/BezierPolynomials.d.ts +2 -0
  651. package/lib/esm/numerics/BezierPolynomials.d.ts.map +1 -1
  652. package/lib/esm/numerics/BezierPolynomials.js +11 -0
  653. package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
  654. package/lib/esm/numerics/ClusterableArray.js.map +1 -1
  655. package/lib/esm/numerics/Complex.js.map +1 -1
  656. package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
  657. package/lib/esm/numerics/Newton.js.map +1 -1
  658. package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
  659. package/lib/esm/numerics/PolarData.js.map +1 -1
  660. package/lib/esm/numerics/Polynomials.js.map +1 -1
  661. package/lib/esm/numerics/Quadrature.js.map +1 -1
  662. package/lib/esm/numerics/Range1dArray.js.map +1 -1
  663. package/lib/esm/numerics/SmallSystem.d.ts +77 -36
  664. package/lib/esm/numerics/SmallSystem.d.ts.map +1 -1
  665. package/lib/esm/numerics/SmallSystem.js +129 -73
  666. package/lib/esm/numerics/SmallSystem.js.map +1 -1
  667. package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
  668. package/lib/esm/numerics/UnionFind.js.map +1 -1
  669. package/lib/esm/numerics/UsageSums.js.map +1 -1
  670. package/lib/esm/polyface/AuxData.js.map +1 -1
  671. package/lib/esm/polyface/BoxTopology.js.map +1 -1
  672. package/lib/esm/polyface/FacetFaceData.js.map +1 -1
  673. package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
  674. package/lib/esm/polyface/FacetOrientation.d.ts +1 -1
  675. package/lib/esm/polyface/FacetOrientation.js +1 -1
  676. package/lib/esm/polyface/FacetOrientation.js.map +1 -1
  677. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  678. package/lib/esm/polyface/IndexedEdgeMatcher.d.ts +55 -40
  679. package/lib/esm/polyface/IndexedEdgeMatcher.d.ts.map +1 -1
  680. package/lib/esm/polyface/IndexedEdgeMatcher.js +83 -75
  681. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
  682. package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts +15 -14
  683. package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
  684. package/lib/esm/polyface/IndexedPolyfaceVisitor.js +47 -38
  685. package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  686. package/lib/esm/polyface/IndexedPolyfaceWalker.d.ts +26 -19
  687. package/lib/esm/polyface/IndexedPolyfaceWalker.d.ts.map +1 -1
  688. package/lib/esm/polyface/IndexedPolyfaceWalker.js +47 -32
  689. package/lib/esm/polyface/IndexedPolyfaceWalker.js.map +1 -1
  690. package/lib/esm/polyface/Polyface.d.ts +19 -5
  691. package/lib/esm/polyface/Polyface.d.ts.map +1 -1
  692. package/lib/esm/polyface/Polyface.js +18 -2
  693. package/lib/esm/polyface/Polyface.js.map +1 -1
  694. package/lib/esm/polyface/PolyfaceBuilder.d.ts +1 -1
  695. package/lib/esm/polyface/PolyfaceBuilder.js +3 -3
  696. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  697. package/lib/esm/polyface/PolyfaceClip.d.ts +19 -18
  698. package/lib/esm/polyface/PolyfaceClip.d.ts.map +1 -1
  699. package/lib/esm/polyface/PolyfaceClip.js +39 -42
  700. package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
  701. package/lib/esm/polyface/PolyfaceData.d.ts +1 -1
  702. package/lib/esm/polyface/PolyfaceData.js +1 -1
  703. package/lib/esm/polyface/PolyfaceData.js.map +1 -1
  704. package/lib/esm/polyface/PolyfaceQuery.d.ts +119 -78
  705. package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
  706. package/lib/esm/polyface/PolyfaceQuery.js +316 -232
  707. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  708. package/lib/esm/polyface/RangeLengthData.js.map +1 -1
  709. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  710. package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  711. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  712. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  713. package/lib/esm/polyface/RangeTree/RangeTreeNode.d.ts +3 -3
  714. package/lib/esm/polyface/RangeTree/RangeTreeNode.d.ts.map +1 -1
  715. package/lib/esm/polyface/RangeTree/RangeTreeNode.js +3 -3
  716. package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  717. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  718. package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
  719. package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
  720. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  721. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  722. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  723. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  724. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  725. package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  726. package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
  727. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.d.ts +7 -6
  728. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.d.ts.map +1 -1
  729. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js +8 -9
  730. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  731. package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
  732. package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
  733. package/lib/esm/serialization/BGFBReader.js.map +1 -1
  734. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  735. package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  736. package/lib/esm/serialization/DeepCompare.js.map +1 -1
  737. package/lib/esm/serialization/GeometrySamples.d.ts +1 -1
  738. package/lib/esm/serialization/GeometrySamples.d.ts.map +1 -1
  739. package/lib/esm/serialization/GeometrySamples.js +3 -3
  740. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  741. package/lib/esm/serialization/IModelJsonSchema.d.ts +3 -3
  742. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  743. package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
  744. package/lib/esm/solid/Box.js.map +1 -1
  745. package/lib/esm/solid/Cone.js.map +1 -1
  746. package/lib/esm/solid/LinearSweep.d.ts +2 -3
  747. package/lib/esm/solid/LinearSweep.d.ts.map +1 -1
  748. package/lib/esm/solid/LinearSweep.js +2 -3
  749. package/lib/esm/solid/LinearSweep.js.map +1 -1
  750. package/lib/esm/solid/RotationalSweep.d.ts +2 -2
  751. package/lib/esm/solid/RotationalSweep.js +2 -2
  752. package/lib/esm/solid/RotationalSweep.js.map +1 -1
  753. package/lib/esm/solid/RuledSweep.js.map +1 -1
  754. package/lib/esm/solid/SolidPrimitive.js.map +1 -1
  755. package/lib/esm/solid/Sphere.js.map +1 -1
  756. package/lib/esm/solid/SweepContour.js.map +1 -1
  757. package/lib/esm/solid/TorusPipe.js.map +1 -1
  758. package/lib/esm/topology/ChainMerge.d.ts +1 -1
  759. package/lib/esm/topology/ChainMerge.js +1 -1
  760. package/lib/esm/topology/ChainMerge.js.map +1 -1
  761. package/lib/esm/topology/Graph.js.map +1 -1
  762. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  763. package/lib/esm/topology/HalfEdgeGraphSearch.d.ts +1 -0
  764. package/lib/esm/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
  765. package/lib/esm/topology/HalfEdgeGraphSearch.js +1 -0
  766. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  767. package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  768. package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
  769. package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
  770. package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  771. package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  772. package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
  773. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
  774. package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
  775. package/lib/esm/topology/MaskManager.js.map +1 -1
  776. package/lib/esm/topology/Merging.d.ts +0 -1
  777. package/lib/esm/topology/Merging.d.ts.map +1 -1
  778. package/lib/esm/topology/Merging.js +49 -46
  779. package/lib/esm/topology/Merging.js.map +1 -1
  780. package/lib/esm/topology/RegularizeFace.js.map +1 -1
  781. package/lib/esm/topology/SignedDataSummary.js.map +1 -1
  782. package/lib/esm/topology/SpaceTriangulation.js.map +1 -1
  783. package/lib/esm/topology/Triangulation.d.ts +9 -14
  784. package/lib/esm/topology/Triangulation.d.ts.map +1 -1
  785. package/lib/esm/topology/Triangulation.js +29 -22
  786. package/lib/esm/topology/Triangulation.js.map +1 -1
  787. package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
  788. package/package.json +3 -3
@@ -36,13 +36,14 @@ export declare enum RegionBinaryOpType {
36
36
  }
37
37
  /**
38
38
  * Class `RegionOps` has static members for calculations on regions (areas).
39
- * * Regions are represented by these `CurveCollection` subclasses:
40
- * * `Loop` -- a single loop
41
- * * `ParityRegion` -- a collection of loops, interpreted by parity rules.
42
- * The common "One outer loop and many Inner loops" is a parity region.
43
- * * `UnionRegion` -- a collection of `Loop` and `ParityRegion` objects understood as a (probably disjoint) union.
44
- * * **NOTE:** Most of the methods in this class ignore z-coordinates, so callers should ensure that input geometry has
45
- * been rotated parallel to the xy-plane.
39
+ * * Regions are represented by these [[CurveCollection]] subclasses:
40
+ * * [[Loop]] -- a single loop
41
+ * * [[ParityRegion]] -- a collection of loops, interpreted by parity rules.
42
+ * The common "One outer loop and many inner loops" is a parity region.
43
+ * * [[UnionRegion]] -- a collection of `Loop` and `ParityRegion` objects understood as a (probably disjoint) union.
44
+ * * Most of the methods in this class:
45
+ * * Ignore z-coordinates, so callers should ensure that input geometry has been rotated parallel to the xy-plane.
46
+ * * Assume consistent Loop orientation: "solid" Loops are counterclockwise; "hole" Loops are clockwise.
46
47
  * @public
47
48
  */
48
49
  export declare class RegionOps {
@@ -65,7 +66,8 @@ export declare class RegionOps {
65
66
  /**
66
67
  * Return a (signed) xy area for a region.
67
68
  * * The input region should lie in a plane parallel to the xy-plane, as z-coords will be ignored.
68
- * * The area is negative if and only if the region is oriented clockwise with respect to the positive z-axis.
69
+ * * For a non-self-intersecting Loop, the returned area is negative if and only if the Loop is oriented clockwise
70
+ * with respect to the positive z-axis.
69
71
  * @param region any [[Loop]], [[ParityRegion]], or [[UnionRegion]].
70
72
  */
71
73
  static computeXYArea(region: AnyRegion): number | undefined;
@@ -136,12 +138,35 @@ export declare class RegionOps {
136
138
  * @param triangulate whether to triangulate the result
137
139
  */
138
140
  static polygonXYAreaDifferenceLoopsToPolyface(loopsA: MultiLineStringDataVariant, loopsB: MultiLineStringDataVariant, triangulate?: boolean): Polyface | undefined;
141
+ /**
142
+ * Return the region's simplest representation by stripping redundant parent(s).
143
+ * * No Boolean operations are performed.
144
+ * @param region input region (unchanged). Assumed to have at least one child.
145
+ * @returns
146
+ * * For a [[UnionRegion]] with exactly one child, return the child if it is a [[Loop]],
147
+ * or if it is a [[ParityRegion]] with multiple children; otherwise return the `ParityRegion`'s `Loop`.
148
+ * * For a `ParityRegion` with exactly one child, return the `Loop`.
149
+ * * All other inputs returned unchanged.
150
+ * @see [[simplifyRegion]]
151
+ */
152
+ static simplifyRegionType(region: AnyRegion): AnyRegion;
153
+ /**
154
+ * Simplify the region's parent/child hierarchy in place:
155
+ * * Regions with exactly one child are simplified as per [[simplifyRegionType]].
156
+ * * Regions without children are removed.
157
+ * * No Boolean operations are performed.
158
+ * @param region region to simplify in place
159
+ * @returns reference to the updated input region
160
+ * @see [[simplifyRegionType]]
161
+ */
162
+ static simplifyRegion(region: AnyRegion): AnyRegion | undefined;
139
163
  /**
140
164
  * Return areas defined by a boolean operation.
141
- * * If there are multiple regions in loopsA, they are treated as a union.
142
- * * If there are multiple regions in loopsB, they are treated as a union.
143
- * @param loopsA first set of loops
144
- * @param loopsB second set of loops
165
+ * @note For best results, input regions should have correctly oriented loops. See [[sortOuterAndHoleLoopsXY]].
166
+ * @note A common use case of this method is to convert a region with overlapping children into one with
167
+ * non-overlapping children: `regionOut = RegionOps.regionBooleanXY(regionIn, undefined, RegionBinaryOpType.Union)`.
168
+ * @param loopsA first set of loops (treated as a union)
169
+ * @param loopsB second set of loops (treated as a union)
145
170
  * @param operation indicates Union, Intersection, Parity, AMinusB, or BMinusA
146
171
  * @param mergeTolerance absolute distance tolerance for merging loops
147
172
  * @returns a region resulting from merging input loops and the boolean operation. May contain bridge edges added
@@ -299,14 +324,15 @@ export declare class RegionOps {
299
324
  */
300
325
  static consolidateAdjacentPrimitives(curves: CurveCollection, options?: ConsolidateAdjacentCurvePrimitivesOptions): void;
301
326
  /**
302
- * Reverse and reorder loops in the xy-plane for consistency and containment.
303
- * @param loops multiple loops in any order and orientation, z-coordinates ignored
327
+ * Reverse and reorder loops in the xy-plane for consistent orientation and containment.
328
+ * @param loops multiple loops in any order and orientation, z-coordinates ignored.
329
+ * * For best results, all overlaps should be containments, i.e., loop boundaries can touch, but should not cross.
304
330
  * @returns a region that captures the input pointers. This region is a:
305
- * * `Loop` if there is exactly one input loop. It is oriented counterclockwise.
306
- * * `ParityRegion` if input consists of exactly one outer loop with at least one hole loop.
331
+ * * [[Loop]] if there is exactly one input loop. It is oriented counterclockwise.
332
+ * * [[ParityRegion]] if input consists of exactly one outer loop with at least one hole loop.
307
333
  * Its first child is an outer loop oriented counterclockwise; all subsequent children are holes oriented
308
334
  * clockwise.
309
- * * `UnionRegion` if any other input configuration. Its children are individually ordered/oriented as in
335
+ * * [[UnionRegion]] if any other input configuration. Its children are individually ordered/oriented as in
310
336
  * the above cases.
311
337
  * @see [[PolygonOps.sortOuterAndHoleLoopsXY]]
312
338
  */
@@ -315,14 +341,14 @@ export declare class RegionOps {
315
341
  * Find all xy-areas bounded by the unstructured, possibly intersecting curves.
316
342
  * * For best results, input curves should be parallel to the xy-plane, as z-coordinates are ignored.
317
343
  * * A common use case of this method is to assemble the bounding "exterior" loop (or loops) containing the
318
- * input curves.
344
+ * input curves. Note that "holes" implied by inputs are _not_ preserved in output.
319
345
  * * This method does not add bridge edges to connect outer loops to inner loops. Each disconnected loop,
320
346
  * regardless of its containment, is returned as its own SignedLoops object. Pre-process with [[regionBooleanXY]]
321
347
  * to add bridge edges so that [[constructAllXYRegionLoops]] will return outer and inner loops in the same
322
348
  * SignedLoops object.
323
349
  * @param curvesAndRegions Any collection of curves. Each Loop/ParityRegion/UnionRegion contributes its curve
324
- * primitives.
325
- * @param tolerance optional distance tolerance for coincidence
350
+ * primitives, stripped of parity context. This means holes are _not_ preserved in output.
351
+ * @param tolerance optional distance tolerance for coincidence.
326
352
  * @returns array of [[SignedLoops]], each entry of which describes the faces in a single connected component:
327
353
  * * `positiveAreaLoops` contains "interior" loops, _including holes in ParityRegion input_. These loops have
328
354
  * positive area and counterclockwise orientation.
@@ -374,12 +400,10 @@ export declare class RegionOps {
374
400
  private static triangulateRegionComponent;
375
401
  /**
376
402
  * Facet the region according to stroke options.
403
+ * @note For best results, [[UnionRegion]] input should consist of non-overlapping children. See [[regionBooleanXY]].
404
+ * @note For best results, [[ParityRegion]] input should be correctly oriented. See [[sortOuterAndHoleLoopsXY]].
377
405
  * @param region a closed xy-planar region, possibly with holes.
378
406
  * * The z-coordinates of the region are ignored. Caller is responsible for rotating the region into plane local coordinates beforehand, and reversing the rotation afterwards.
379
- * * For best results, `UnionRegion` input should consist of non-overlapping children.
380
- * Caller can ensure this by passing in `region = RegionOps.regionBooleanXY(unionRegion, undefined, RegionBinaryOpType.Union)`.
381
- * * For best results, `ParityRegion` input should be correctly oriented (holes have opposite orientation to their containing loop).
382
- * Caller can ensure this for non-intersecting loops by passing in `region = RegionOps.sortOuterAndHoleLoopsXY(loops)`.
383
407
  * @param options primarily how to stroke the region boundary, but also how to facet the region interior.
384
408
  * * By default, a triangulation is returned, but if `options.maximizeConvexFacets === true`, edges between coplanar triangles are removed to return maximally convex facets.
385
409
  * @returns facets for the region, or undefined if facetting failed
@@ -394,17 +418,19 @@ export declare class RegionOps {
394
418
  static convexDecomposePolygonXY(polygon: MultiLineStringDataVariant, maximize?: boolean): GrowableXYZArray[] | undefined;
395
419
  }
396
420
  /**
397
- * * Options to control method `RegionOps.consolidateAdjacentPrimitives`
421
+ * * Options to control method `RegionOps.consolidateAdjacentPrimitives`.
398
422
  * @public
399
423
  */
400
424
  export declare class ConsolidateAdjacentCurvePrimitivesOptions {
401
- /** True to consolidate adjacent linear geometry into a single LineString3d */
425
+ /** True to consolidate adjacent linear geometry into a single LineString3d. */
402
426
  consolidateLinearGeometry: boolean;
403
- /** True to consolidate contiguous compatible arcs into a single Arc3d */
427
+ /** True to consolidate contiguous compatible arcs into a single Arc3d. */
404
428
  consolidateCompatibleArcs: boolean;
405
- /** Tolerance for collapsing identical points */
429
+ /** Disable LineSegment3d and LineString3d point compression. */
430
+ disableLinearCompression?: boolean;
431
+ /** Tolerance for collapsing identical points (if `!disableLinearCompression`). */
406
432
  duplicatePointTolerance: number;
407
- /** Tolerance for removing interior colinear points. */
433
+ /** Tolerance for removing interior colinear points (if `!disableLinearCompression`). */
408
434
  colinearPointTolerance: number;
409
435
  }
410
436
  //# sourceMappingURL=RegionOps.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RegionOps.d.ts","sourceRoot":"","sources":["../../../src/curve/RegionOps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RegionOps.d.ts","sourceRoot":"","sources":["../../../src/curve/RegionOps.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@
5
5
  /** @packageDocumentation
6
6
  * @module Curve
7
7
  */
8
+ import { assert } from "@itwin/core-bentley";
8
9
  import { Geometry } from "../Geometry";
9
10
  import { FrameBuilder } from "../geometry3d/FrameBuilder";
10
11
  import { GrowableXYZArray } from "../geometry3d/GrowableXYZArray";
@@ -31,6 +32,7 @@ import { CurveWireMomentsXYZ } from "./CurveWireMomentsXYZ";
31
32
  import { GeometryQuery } from "./GeometryQuery";
32
33
  import { ChainCollectorContext } from "./internalContexts/ChainCollectorContext";
33
34
  import { PolygonWireOffsetContext } from "./internalContexts/PolygonOffsetContext";
35
+ import { TransferWithSplitArcs } from "./internalContexts/TransferWithSplitArcs";
34
36
  import { LineString3d } from "./LineString3d";
35
37
  import { Loop } from "./Loop";
36
38
  import { OffsetOptions } from "./OffsetOptions";
@@ -57,13 +59,14 @@ export var RegionBinaryOpType;
57
59
  })(RegionBinaryOpType || (RegionBinaryOpType = {}));
58
60
  /**
59
61
  * Class `RegionOps` has static members for calculations on regions (areas).
60
- * * Regions are represented by these `CurveCollection` subclasses:
61
- * * `Loop` -- a single loop
62
- * * `ParityRegion` -- a collection of loops, interpreted by parity rules.
63
- * The common "One outer loop and many Inner loops" is a parity region.
64
- * * `UnionRegion` -- a collection of `Loop` and `ParityRegion` objects understood as a (probably disjoint) union.
65
- * * **NOTE:** Most of the methods in this class ignore z-coordinates, so callers should ensure that input geometry has
66
- * been rotated parallel to the xy-plane.
62
+ * * Regions are represented by these [[CurveCollection]] subclasses:
63
+ * * [[Loop]] -- a single loop
64
+ * * [[ParityRegion]] -- a collection of loops, interpreted by parity rules.
65
+ * The common "One outer loop and many inner loops" is a parity region.
66
+ * * [[UnionRegion]] -- a collection of `Loop` and `ParityRegion` objects understood as a (probably disjoint) union.
67
+ * * Most of the methods in this class:
68
+ * * Ignore z-coordinates, so callers should ensure that input geometry has been rotated parallel to the xy-plane.
69
+ * * Assume consistent Loop orientation: "solid" Loops are counterclockwise; "hole" Loops are clockwise.
67
70
  * @public
68
71
  */
69
72
  export class RegionOps {
@@ -98,7 +101,8 @@ export class RegionOps {
98
101
  /**
99
102
  * Return a (signed) xy area for a region.
100
103
  * * The input region should lie in a plane parallel to the xy-plane, as z-coords will be ignored.
101
- * * The area is negative if and only if the region is oriented clockwise with respect to the positive z-axis.
104
+ * * For a non-self-intersecting Loop, the returned area is negative if and only if the Loop is oriented clockwise
105
+ * with respect to the positive z-axis.
102
106
  * @param region any [[Loop]], [[ParityRegion]], or [[UnionRegion]].
103
107
  */
104
108
  static computeXYArea(region) {
@@ -278,21 +282,73 @@ export class RegionOps {
278
282
  const graph = RegionOpsFaceToFaceSearch.doPolygonBoolean(loopsA, loopsB, (inA, inB) => (inA && !inB), this._graphCheckPointFunction);
279
283
  return this.finishGraphToPolyface(graph, triangulate);
280
284
  }
285
+ /**
286
+ * Return the region's simplest representation by stripping redundant parent(s).
287
+ * * No Boolean operations are performed.
288
+ * @param region input region (unchanged). Assumed to have at least one child.
289
+ * @returns
290
+ * * For a [[UnionRegion]] with exactly one child, return the child if it is a [[Loop]],
291
+ * or if it is a [[ParityRegion]] with multiple children; otherwise return the `ParityRegion`'s `Loop`.
292
+ * * For a `ParityRegion` with exactly one child, return the `Loop`.
293
+ * * All other inputs returned unchanged.
294
+ * @see [[simplifyRegion]]
295
+ */
296
+ static simplifyRegionType(region) {
297
+ if (region instanceof UnionRegion) {
298
+ if (region.children.length === 1)
299
+ return this.simplifyRegionType(region.children[0]);
300
+ }
301
+ else if (region instanceof ParityRegion) {
302
+ if (region.children.length === 1)
303
+ return region.children[0];
304
+ }
305
+ return region;
306
+ }
307
+ /**
308
+ * Simplify the region's parent/child hierarchy in place:
309
+ * * Regions with exactly one child are simplified as per [[simplifyRegionType]].
310
+ * * Regions without children are removed.
311
+ * * No Boolean operations are performed.
312
+ * @param region region to simplify in place
313
+ * @returns reference to the updated input region
314
+ * @see [[simplifyRegionType]]
315
+ */
316
+ static simplifyRegion(region) {
317
+ if (region instanceof Loop)
318
+ return region.children.length > 0 ? region : undefined;
319
+ // remove childless Parity/UnionRegion
320
+ for (let i = 0; i < region.children.length; ++i) {
321
+ const child = region.children[i];
322
+ const newChild = this.simplifyRegion(child);
323
+ if (!newChild) {
324
+ region.children.splice(i--, 1);
325
+ }
326
+ else if (newChild !== child) {
327
+ assert(!(newChild instanceof UnionRegion));
328
+ region.children.splice(i--, 1, newChild);
329
+ }
330
+ }
331
+ if (region.children.length === 0)
332
+ return undefined;
333
+ // remove redundant Parity/UnionRegion parent
334
+ if (region.children.length === 1)
335
+ return region.children.splice(0, 1)[0];
336
+ return region;
337
+ }
281
338
  /**
282
339
  * Return areas defined by a boolean operation.
283
- * * If there are multiple regions in loopsA, they are treated as a union.
284
- * * If there are multiple regions in loopsB, they are treated as a union.
285
- * @param loopsA first set of loops
286
- * @param loopsB second set of loops
340
+ * @note For best results, input regions should have correctly oriented loops. See [[sortOuterAndHoleLoopsXY]].
341
+ * @note A common use case of this method is to convert a region with overlapping children into one with
342
+ * non-overlapping children: `regionOut = RegionOps.regionBooleanXY(regionIn, undefined, RegionBinaryOpType.Union)`.
343
+ * @param loopsA first set of loops (treated as a union)
344
+ * @param loopsB second set of loops (treated as a union)
287
345
  * @param operation indicates Union, Intersection, Parity, AMinusB, or BMinusA
288
346
  * @param mergeTolerance absolute distance tolerance for merging loops
289
347
  * @returns a region resulting from merging input loops and the boolean operation. May contain bridge edges added
290
348
  * to connect interior loops to exterior loops.
291
349
  */
292
350
  static regionBooleanXY(loopsA, loopsB, operation, mergeTolerance = Geometry.smallMetricDistance) {
293
- // Always return UnionRegion for now. But keep return type as AnyRegion:
294
- // in the future, we might return the *simplest* region type.
295
- const result = UnionRegion.create();
351
+ let result;
296
352
  const context = RegionBooleanContext.create(RegionGroupOpType.Union, RegionGroupOpType.Union);
297
353
  context.addMembers(loopsA, loopsB);
298
354
  context.annotateAndMergeCurvesInGraph(mergeTolerance);
@@ -306,11 +362,14 @@ export class RegionOps {
306
362
  return;
307
363
  if (faceType === 1) {
308
364
  const loop = PlanarSubdivision.createLoopInFace(face);
309
- if (loop)
365
+ if (loop) {
366
+ if (!result)
367
+ result = UnionRegion.create();
310
368
  result.tryAddChild(loop);
369
+ }
311
370
  }
312
371
  });
313
- return result;
372
+ return result ? this.simplifyRegion(result) : undefined;
314
373
  }
315
374
  /**
316
375
  * Return a polyface whose facets are a boolean operation between the input regions.
@@ -601,14 +660,15 @@ export class RegionOps {
601
660
  curves.dispatchToGeometryHandler(context);
602
661
  }
603
662
  /**
604
- * Reverse and reorder loops in the xy-plane for consistency and containment.
605
- * @param loops multiple loops in any order and orientation, z-coordinates ignored
663
+ * Reverse and reorder loops in the xy-plane for consistent orientation and containment.
664
+ * @param loops multiple loops in any order and orientation, z-coordinates ignored.
665
+ * * For best results, all overlaps should be containments, i.e., loop boundaries can touch, but should not cross.
606
666
  * @returns a region that captures the input pointers. This region is a:
607
- * * `Loop` if there is exactly one input loop. It is oriented counterclockwise.
608
- * * `ParityRegion` if input consists of exactly one outer loop with at least one hole loop.
667
+ * * [[Loop]] if there is exactly one input loop. It is oriented counterclockwise.
668
+ * * [[ParityRegion]] if input consists of exactly one outer loop with at least one hole loop.
609
669
  * Its first child is an outer loop oriented counterclockwise; all subsequent children are holes oriented
610
670
  * clockwise.
611
- * * `UnionRegion` if any other input configuration. Its children are individually ordered/oriented as in
671
+ * * [[UnionRegion]] if any other input configuration. Its children are individually ordered/oriented as in
612
672
  * the above cases.
613
673
  * @see [[PolygonOps.sortOuterAndHoleLoopsXY]]
614
674
  */
@@ -628,14 +688,14 @@ export class RegionOps {
628
688
  * Find all xy-areas bounded by the unstructured, possibly intersecting curves.
629
689
  * * For best results, input curves should be parallel to the xy-plane, as z-coordinates are ignored.
630
690
  * * A common use case of this method is to assemble the bounding "exterior" loop (or loops) containing the
631
- * input curves.
691
+ * input curves. Note that "holes" implied by inputs are _not_ preserved in output.
632
692
  * * This method does not add bridge edges to connect outer loops to inner loops. Each disconnected loop,
633
693
  * regardless of its containment, is returned as its own SignedLoops object. Pre-process with [[regionBooleanXY]]
634
694
  * to add bridge edges so that [[constructAllXYRegionLoops]] will return outer and inner loops in the same
635
695
  * SignedLoops object.
636
696
  * @param curvesAndRegions Any collection of curves. Each Loop/ParityRegion/UnionRegion contributes its curve
637
- * primitives.
638
- * @param tolerance optional distance tolerance for coincidence
697
+ * primitives, stripped of parity context. This means holes are _not_ preserved in output.
698
+ * @param tolerance optional distance tolerance for coincidence.
639
699
  * @returns array of [[SignedLoops]], each entry of which describes the faces in a single connected component:
640
700
  * * `positiveAreaLoops` contains "interior" loops, _including holes in ParityRegion input_. These loops have
641
701
  * positive area and counterclockwise orientation.
@@ -645,7 +705,8 @@ export class RegionOps {
645
705
  * to the edge and a constituent curve in each.
646
706
  */
647
707
  static constructAllXYRegionLoops(curvesAndRegions, tolerance = Geometry.smallMetricDistance) {
648
- const primitives = RegionOps.collectCurvePrimitives(curvesAndRegions, undefined, true, true);
708
+ let primitives = RegionOps.collectCurvePrimitives(curvesAndRegions, undefined, true, true);
709
+ primitives = TransferWithSplitArcs.clone(BagOfCurves.create(...primitives)).children;
649
710
  const range = this.curveArrayRange(primitives);
650
711
  const areaTol = this.computeXYAreaTolerance(range, tolerance);
651
712
  const intersections = CurveCurve.allIntersectionsAmongPrimitivesXY(primitives, tolerance);
@@ -798,12 +859,10 @@ export class RegionOps {
798
859
  }
799
860
  /**
800
861
  * Facet the region according to stroke options.
862
+ * @note For best results, [[UnionRegion]] input should consist of non-overlapping children. See [[regionBooleanXY]].
863
+ * @note For best results, [[ParityRegion]] input should be correctly oriented. See [[sortOuterAndHoleLoopsXY]].
801
864
  * @param region a closed xy-planar region, possibly with holes.
802
865
  * * The z-coordinates of the region are ignored. Caller is responsible for rotating the region into plane local coordinates beforehand, and reversing the rotation afterwards.
803
- * * For best results, `UnionRegion` input should consist of non-overlapping children.
804
- * Caller can ensure this by passing in `region = RegionOps.regionBooleanXY(unionRegion, undefined, RegionBinaryOpType.Union)`.
805
- * * For best results, `ParityRegion` input should be correctly oriented (holes have opposite orientation to their containing loop).
806
- * Caller can ensure this for non-intersecting loops by passing in `region = RegionOps.sortOuterAndHoleLoopsXY(loops)`.
807
866
  * @param options primarily how to stroke the region boundary, but also how to facet the region interior.
808
867
  * * By default, a triangulation is returned, but if `options.maximizeConvexFacets === true`, edges between coplanar triangles are removed to return maximally convex facets.
809
868
  * @returns facets for the region, or undefined if facetting failed
@@ -866,17 +925,19 @@ function pushToInOnOutArrays(curve, select, arrayNegative, array0, arrayPositive
866
925
  array0.push(curve);
867
926
  }
868
927
  /**
869
- * * Options to control method `RegionOps.consolidateAdjacentPrimitives`
928
+ * * Options to control method `RegionOps.consolidateAdjacentPrimitives`.
870
929
  * @public
871
930
  */
872
931
  export class ConsolidateAdjacentCurvePrimitivesOptions {
873
- /** True to consolidate adjacent linear geometry into a single LineString3d */
932
+ /** True to consolidate adjacent linear geometry into a single LineString3d. */
874
933
  consolidateLinearGeometry = true;
875
- /** True to consolidate contiguous compatible arcs into a single Arc3d */
934
+ /** True to consolidate contiguous compatible arcs into a single Arc3d. */
876
935
  consolidateCompatibleArcs = true;
877
- /** Tolerance for collapsing identical points */
936
+ /** Disable LineSegment3d and LineString3d point compression. */
937
+ disableLinearCompression = false;
938
+ /** Tolerance for collapsing identical points (if `!disableLinearCompression`). */
878
939
  duplicatePointTolerance = Geometry.smallMetricDistance;
879
- /** Tolerance for removing interior colinear points. */
940
+ /** Tolerance for removing interior colinear points (if `!disableLinearCompression`). */
880
941
  colinearPointTolerance = Geometry.smallMetricDistance;
881
942
  }
882
943
  //# sourceMappingURL=RegionOps.js.map