@itwin/core-geometry 5.9.0-dev.8 → 5.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (646) hide show
  1. package/CHANGELOG.md +27 -1
  2. package/lib/cjs/Constant.js.map +1 -1
  3. package/lib/cjs/Geometry.d.ts +8 -6
  4. package/lib/cjs/Geometry.d.ts.map +1 -1
  5. package/lib/cjs/Geometry.js +8 -6
  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.js.map +1 -1
  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.js.map +1 -1
  13. package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
  14. package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
  15. package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
  16. package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
  17. package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
  18. package/lib/cjs/bspline/KnotVector.js.map +1 -1
  19. package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -1
  20. package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
  21. package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -1
  22. package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
  23. package/lib/cjs/clipping/ClipPlane.js.map +1 -1
  24. package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
  25. package/lib/cjs/clipping/ClipUtils.js.map +1 -1
  26. package/lib/cjs/clipping/ClipVector.js.map +1 -1
  27. package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
  28. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  29. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  30. package/lib/cjs/core-geometry.js.map +1 -1
  31. package/lib/cjs/curve/Arc3d.d.ts +7 -0
  32. package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
  33. package/lib/cjs/curve/Arc3d.js +11 -0
  34. package/lib/cjs/curve/Arc3d.js.map +1 -1
  35. package/lib/cjs/curve/ConstrainedCurve2d.js.map +1 -1
  36. package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
  37. package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
  38. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +11 -2
  39. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  40. package/lib/cjs/curve/CurveChainWithDistanceIndex.js +25 -15
  41. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  42. package/lib/cjs/curve/CurveCollection.d.ts +15 -6
  43. package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
  44. package/lib/cjs/curve/CurveCollection.js +15 -6
  45. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  46. package/lib/cjs/curve/CurveCurve.d.ts +1 -1
  47. package/lib/cjs/curve/CurveCurve.d.ts.map +1 -1
  48. package/lib/cjs/curve/CurveCurve.js +2 -1
  49. package/lib/cjs/curve/CurveCurve.js.map +1 -1
  50. package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
  51. package/lib/cjs/curve/CurveFactory.js.map +1 -1
  52. package/lib/cjs/curve/CurveLocationDetail.d.ts +21 -0
  53. package/lib/cjs/curve/CurveLocationDetail.d.ts.map +1 -1
  54. package/lib/cjs/curve/CurveLocationDetail.js +59 -0
  55. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  56. package/lib/cjs/curve/CurveOps.js.map +1 -1
  57. package/lib/cjs/curve/CurvePrimitive.d.ts +13 -12
  58. package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -1
  59. package/lib/cjs/curve/CurvePrimitive.js +12 -11
  60. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  61. package/lib/cjs/curve/CurveProcessor.js.map +1 -1
  62. package/lib/cjs/curve/CurveTypes.js.map +1 -1
  63. package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
  64. package/lib/cjs/curve/GeometryQuery.js.map +1 -1
  65. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  66. package/lib/cjs/curve/LineString3d.js.map +1 -1
  67. package/lib/cjs/curve/Loop.d.ts.map +1 -1
  68. package/lib/cjs/curve/Loop.js +3 -1
  69. package/lib/cjs/curve/Loop.js.map +1 -1
  70. package/lib/cjs/curve/OffsetOptions.js.map +1 -1
  71. package/lib/cjs/curve/ParityRegion.js.map +1 -1
  72. package/lib/cjs/curve/Path.js.map +1 -1
  73. package/lib/cjs/curve/PointString3d.js.map +1 -1
  74. package/lib/cjs/curve/ProxyCurve.js.map +1 -1
  75. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  76. package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
  77. package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
  78. package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
  79. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  80. package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
  81. package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
  82. package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
  83. package/lib/cjs/curve/RegionOps.d.ts +17 -4
  84. package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
  85. package/lib/cjs/curve/RegionOps.js +114 -18
  86. package/lib/cjs/curve/RegionOps.js.map +1 -1
  87. package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts +3 -11
  88. package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
  89. package/lib/cjs/curve/RegionOpsClassificationSweeps.js +1 -91
  90. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  91. package/lib/cjs/curve/StrokeOptions.d.ts +13 -6
  92. package/lib/cjs/curve/StrokeOptions.d.ts.map +1 -1
  93. package/lib/cjs/curve/StrokeOptions.js +13 -6
  94. package/lib/cjs/curve/StrokeOptions.js.map +1 -1
  95. package/lib/cjs/curve/UnionRegion.js.map +1 -1
  96. package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.d.ts +1 -1
  97. package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.d.ts.map +1 -1
  98. package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.js +1 -2
  99. package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
  100. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.d.ts +1 -1
  101. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.d.ts.map +1 -1
  102. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js +1 -2
  103. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  104. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  105. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  106. package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  107. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.d.ts +1 -1
  108. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.d.ts.map +1 -1
  109. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js +1 -2
  110. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  111. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  112. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.d.ts +113 -109
  113. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.d.ts.map +1 -1
  114. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js +361 -385
  115. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  116. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts +17 -17
  117. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
  118. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js +153 -184
  119. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  120. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  121. package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
  122. package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  123. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  124. package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
  125. package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
  126. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  127. package/lib/cjs/curve/internalContexts/PointToCurveTangentHandler.js.map +1 -1
  128. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  129. package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
  130. package/lib/cjs/curve/internalContexts/TransferWithSplitArcs.js.map +1 -1
  131. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  132. package/lib/cjs/curve/internalContexts/geometry2d/ConstrainedImplicitCurve2d.js.map +1 -1
  133. package/lib/cjs/curve/internalContexts/geometry2d/ConstraintSet.js.map +1 -1
  134. package/lib/cjs/curve/internalContexts/geometry2d/ImplicitCurve2d.js.map +1 -1
  135. package/lib/cjs/curve/internalContexts/geometry2d/ImplicitCurve2dConverter.js.map +1 -1
  136. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedCircle2d.js.map +1 -1
  137. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedEllipse2d.js.map +1 -1
  138. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedHyperbola2d.js.map +1 -1
  139. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedLine2d.js.map +1 -1
  140. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedParabola2d.js.map +1 -1
  141. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  142. package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
  143. package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
  144. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  145. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  146. package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts +1 -2
  147. package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts.map +1 -1
  148. package/lib/cjs/curve/spiral/DirectSpiral3d.js +9 -3
  149. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
  150. package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts +1 -2
  151. package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -1
  152. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js +10 -4
  153. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  154. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  155. package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
  156. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  157. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  158. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
  159. package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
  160. package/lib/cjs/geometry3d/Angle.js.map +1 -1
  161. package/lib/cjs/geometry3d/AngleSweep.d.ts +3 -1
  162. package/lib/cjs/geometry3d/AngleSweep.d.ts.map +1 -1
  163. package/lib/cjs/geometry3d/AngleSweep.js +6 -2
  164. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
  165. package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
  166. package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
  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.d.ts +33 -4
  172. package/lib/cjs/geometry3d/GeometryHandler.d.ts.map +1 -1
  173. package/lib/cjs/geometry3d/GeometryHandler.js +79 -1
  174. package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
  175. package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
  176. package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
  177. package/lib/cjs/geometry3d/GrowableXYArray.d.ts +9 -6
  178. package/lib/cjs/geometry3d/GrowableXYArray.d.ts.map +1 -1
  179. package/lib/cjs/geometry3d/GrowableXYArray.js +20 -10
  180. package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
  181. package/lib/cjs/geometry3d/GrowableXYZArray.d.ts +9 -6
  182. package/lib/cjs/geometry3d/GrowableXYZArray.d.ts.map +1 -1
  183. package/lib/cjs/geometry3d/GrowableXYZArray.js +20 -10
  184. package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
  185. package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
  186. package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
  187. package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
  188. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  189. package/lib/cjs/geometry3d/Matrix3d.d.ts +4 -4
  190. package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -1
  191. package/lib/cjs/geometry3d/Matrix3d.js +5 -4
  192. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  193. package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
  194. package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
  195. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  196. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  197. package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
  198. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  199. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  200. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  201. package/lib/cjs/geometry3d/PointHelpers.d.ts.map +1 -1
  202. package/lib/cjs/geometry3d/PointHelpers.js +6 -7
  203. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  204. package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
  205. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  206. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  207. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
  208. package/lib/cjs/geometry3d/Range.js.map +1 -1
  209. package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
  210. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  211. package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
  212. package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
  213. package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
  214. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  215. package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
  216. package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
  217. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  218. package/lib/cjs/geometry4d/Map4d.js.map +1 -1
  219. package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
  220. package/lib/cjs/geometry4d/MomentData.js.map +1 -1
  221. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  222. package/lib/cjs/geometry4d/Point4d.js.map +1 -1
  223. package/lib/cjs/numerics/BandedSystem.js.map +1 -1
  224. package/lib/cjs/numerics/BezierPolynomials.d.ts.map +1 -1
  225. package/lib/cjs/numerics/BezierPolynomials.js +1 -1
  226. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
  227. package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
  228. package/lib/cjs/numerics/Complex.js.map +1 -1
  229. package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
  230. package/lib/cjs/numerics/Newton.d.ts +52 -13
  231. package/lib/cjs/numerics/Newton.d.ts.map +1 -1
  232. package/lib/cjs/numerics/Newton.js +73 -23
  233. package/lib/cjs/numerics/Newton.js.map +1 -1
  234. package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
  235. package/lib/cjs/numerics/PolarData.js.map +1 -1
  236. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  237. package/lib/cjs/numerics/Quadrature.js.map +1 -1
  238. package/lib/cjs/numerics/Range1dArray.js.map +1 -1
  239. package/lib/cjs/numerics/SmallSystem.js.map +1 -1
  240. package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
  241. package/lib/cjs/numerics/UnionFind.js.map +1 -1
  242. package/lib/cjs/numerics/UsageSums.js.map +1 -1
  243. package/lib/cjs/polyface/AuxData.js.map +1 -1
  244. package/lib/cjs/polyface/BoxTopology.js.map +1 -1
  245. package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
  246. package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
  247. package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
  248. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  249. package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
  250. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  251. package/lib/cjs/polyface/IndexedPolyfaceWalker.js.map +1 -1
  252. package/lib/cjs/polyface/Polyface.js.map +1 -1
  253. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  254. package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
  255. package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
  256. package/lib/cjs/polyface/PolyfaceQuery.d.ts +14 -14
  257. package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
  258. package/lib/cjs/polyface/PolyfaceQuery.js +14 -14
  259. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  260. package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
  261. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  262. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  263. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  264. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  265. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  266. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  267. package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
  268. package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
  269. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  270. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  271. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  272. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  273. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  274. package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  275. package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
  276. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  277. package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
  278. package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
  279. package/lib/cjs/serialization/BGFBReader.js +2 -2
  280. package/lib/cjs/serialization/BGFBReader.js.map +1 -1
  281. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  282. package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  283. package/lib/cjs/serialization/DeepCompare.js.map +1 -1
  284. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  285. package/lib/cjs/serialization/SerializationHelpers.js.map +1 -1
  286. package/lib/cjs/solid/Box.js.map +1 -1
  287. package/lib/cjs/solid/Cone.js.map +1 -1
  288. package/lib/cjs/solid/LinearSweep.js.map +1 -1
  289. package/lib/cjs/solid/RotationalSweep.js.map +1 -1
  290. package/lib/cjs/solid/RuledSweep.js.map +1 -1
  291. package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
  292. package/lib/cjs/solid/Sphere.js.map +1 -1
  293. package/lib/cjs/solid/SweepContour.js.map +1 -1
  294. package/lib/cjs/solid/TorusPipe.js.map +1 -1
  295. package/lib/cjs/topology/ChainMerge.js.map +1 -1
  296. package/lib/cjs/topology/Graph.d.ts +15 -15
  297. package/lib/cjs/topology/Graph.d.ts.map +1 -1
  298. package/lib/cjs/topology/Graph.js +1 -1
  299. package/lib/cjs/topology/Graph.js.map +1 -1
  300. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  301. package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts +3 -3
  302. package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
  303. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  304. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  305. package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
  306. package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
  307. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  308. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  309. package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
  310. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
  311. package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
  312. package/lib/cjs/topology/MaskManager.js.map +1 -1
  313. package/lib/cjs/topology/Merging.js.map +1 -1
  314. package/lib/cjs/topology/RegularizeFace.js.map +1 -1
  315. package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
  316. package/lib/cjs/topology/SpaceTriangulation.js.map +1 -1
  317. package/lib/cjs/topology/Triangulation.js.map +1 -1
  318. package/lib/cjs/topology/Voronoi.js.map +1 -1
  319. package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
  320. package/lib/esm/Constant.js.map +1 -1
  321. package/lib/esm/Geometry.d.ts +8 -6
  322. package/lib/esm/Geometry.d.ts.map +1 -1
  323. package/lib/esm/Geometry.js +8 -6
  324. package/lib/esm/Geometry.js.map +1 -1
  325. package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
  326. package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
  327. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  328. package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
  329. package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
  330. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  331. package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
  332. package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
  333. package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
  334. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  335. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  336. package/lib/esm/bspline/KnotVector.js.map +1 -1
  337. package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
  338. package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
  339. package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
  340. package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
  341. package/lib/esm/clipping/ClipPlane.js.map +1 -1
  342. package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
  343. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  344. package/lib/esm/clipping/ClipVector.js.map +1 -1
  345. package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
  346. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  347. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  348. package/lib/esm/core-geometry.js.map +1 -1
  349. package/lib/esm/curve/Arc3d.d.ts +7 -0
  350. package/lib/esm/curve/Arc3d.d.ts.map +1 -1
  351. package/lib/esm/curve/Arc3d.js +11 -0
  352. package/lib/esm/curve/Arc3d.js.map +1 -1
  353. package/lib/esm/curve/ConstrainedCurve2d.js.map +1 -1
  354. package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
  355. package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
  356. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +11 -2
  357. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  358. package/lib/esm/curve/CurveChainWithDistanceIndex.js +25 -15
  359. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  360. package/lib/esm/curve/CurveCollection.d.ts +15 -6
  361. package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
  362. package/lib/esm/curve/CurveCollection.js +15 -6
  363. package/lib/esm/curve/CurveCollection.js.map +1 -1
  364. package/lib/esm/curve/CurveCurve.d.ts +1 -1
  365. package/lib/esm/curve/CurveCurve.d.ts.map +1 -1
  366. package/lib/esm/curve/CurveCurve.js +2 -1
  367. package/lib/esm/curve/CurveCurve.js.map +1 -1
  368. package/lib/esm/curve/CurveExtendMode.js.map +1 -1
  369. package/lib/esm/curve/CurveFactory.js.map +1 -1
  370. package/lib/esm/curve/CurveLocationDetail.d.ts +21 -0
  371. package/lib/esm/curve/CurveLocationDetail.d.ts.map +1 -1
  372. package/lib/esm/curve/CurveLocationDetail.js +59 -0
  373. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  374. package/lib/esm/curve/CurveOps.js.map +1 -1
  375. package/lib/esm/curve/CurvePrimitive.d.ts +13 -12
  376. package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
  377. package/lib/esm/curve/CurvePrimitive.js +12 -11
  378. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  379. package/lib/esm/curve/CurveProcessor.js.map +1 -1
  380. package/lib/esm/curve/CurveTypes.js.map +1 -1
  381. package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
  382. package/lib/esm/curve/GeometryQuery.js.map +1 -1
  383. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  384. package/lib/esm/curve/LineString3d.js.map +1 -1
  385. package/lib/esm/curve/Loop.d.ts.map +1 -1
  386. package/lib/esm/curve/Loop.js +3 -1
  387. package/lib/esm/curve/Loop.js.map +1 -1
  388. package/lib/esm/curve/OffsetOptions.js.map +1 -1
  389. package/lib/esm/curve/ParityRegion.js.map +1 -1
  390. package/lib/esm/curve/Path.js.map +1 -1
  391. package/lib/esm/curve/PointString3d.js.map +1 -1
  392. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  393. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  394. package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
  395. package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
  396. package/lib/esm/curve/Query/InOutTests.js.map +1 -1
  397. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  398. package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
  399. package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
  400. package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
  401. package/lib/esm/curve/RegionOps.d.ts +17 -4
  402. package/lib/esm/curve/RegionOps.d.ts.map +1 -1
  403. package/lib/esm/curve/RegionOps.js +116 -20
  404. package/lib/esm/curve/RegionOps.js.map +1 -1
  405. package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts +3 -11
  406. package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
  407. package/lib/esm/curve/RegionOpsClassificationSweeps.js +2 -92
  408. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  409. package/lib/esm/curve/StrokeOptions.d.ts +13 -6
  410. package/lib/esm/curve/StrokeOptions.d.ts.map +1 -1
  411. package/lib/esm/curve/StrokeOptions.js +13 -6
  412. package/lib/esm/curve/StrokeOptions.js.map +1 -1
  413. package/lib/esm/curve/UnionRegion.js.map +1 -1
  414. package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.d.ts +1 -1
  415. package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.d.ts.map +1 -1
  416. package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js +1 -2
  417. package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
  418. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.d.ts +1 -1
  419. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.d.ts.map +1 -1
  420. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js +1 -2
  421. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  422. package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  423. package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  424. package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  425. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.d.ts +1 -1
  426. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.d.ts.map +1 -1
  427. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js +1 -2
  428. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  429. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  430. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.d.ts +113 -109
  431. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.d.ts.map +1 -1
  432. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js +364 -388
  433. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  434. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts +17 -17
  435. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
  436. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js +153 -184
  437. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  438. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  439. package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
  440. package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  441. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  442. package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
  443. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  444. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  445. package/lib/esm/curve/internalContexts/PointToCurveTangentHandler.js.map +1 -1
  446. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  447. package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
  448. package/lib/esm/curve/internalContexts/TransferWithSplitArcs.js.map +1 -1
  449. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  450. package/lib/esm/curve/internalContexts/geometry2d/ConstrainedImplicitCurve2d.js.map +1 -1
  451. package/lib/esm/curve/internalContexts/geometry2d/ConstraintSet.js.map +1 -1
  452. package/lib/esm/curve/internalContexts/geometry2d/ImplicitCurve2d.js.map +1 -1
  453. package/lib/esm/curve/internalContexts/geometry2d/ImplicitCurve2dConverter.js.map +1 -1
  454. package/lib/esm/curve/internalContexts/geometry2d/UnboundedCircle2d.js.map +1 -1
  455. package/lib/esm/curve/internalContexts/geometry2d/UnboundedEllipse2d.js.map +1 -1
  456. package/lib/esm/curve/internalContexts/geometry2d/UnboundedHyperbola2d.js.map +1 -1
  457. package/lib/esm/curve/internalContexts/geometry2d/UnboundedLine2d.js.map +1 -1
  458. package/lib/esm/curve/internalContexts/geometry2d/UnboundedParabola2d.js.map +1 -1
  459. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  460. package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
  461. package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
  462. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  463. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  464. package/lib/esm/curve/spiral/DirectSpiral3d.d.ts +1 -2
  465. package/lib/esm/curve/spiral/DirectSpiral3d.d.ts.map +1 -1
  466. package/lib/esm/curve/spiral/DirectSpiral3d.js +9 -3
  467. package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
  468. package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts +1 -2
  469. package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -1
  470. package/lib/esm/curve/spiral/IntegratedSpiral3d.js +10 -4
  471. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  472. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  473. package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
  474. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  475. package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  476. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
  477. package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
  478. package/lib/esm/geometry3d/Angle.js.map +1 -1
  479. package/lib/esm/geometry3d/AngleSweep.d.ts +3 -1
  480. package/lib/esm/geometry3d/AngleSweep.d.ts.map +1 -1
  481. package/lib/esm/geometry3d/AngleSweep.js +6 -2
  482. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  483. package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
  484. package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
  485. package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
  486. package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
  487. package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
  488. package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
  489. package/lib/esm/geometry3d/GeometryHandler.d.ts +33 -4
  490. package/lib/esm/geometry3d/GeometryHandler.d.ts.map +1 -1
  491. package/lib/esm/geometry3d/GeometryHandler.js +77 -0
  492. package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
  493. package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
  494. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
  495. package/lib/esm/geometry3d/GrowableXYArray.d.ts +9 -6
  496. package/lib/esm/geometry3d/GrowableXYArray.d.ts.map +1 -1
  497. package/lib/esm/geometry3d/GrowableXYArray.js +20 -10
  498. package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
  499. package/lib/esm/geometry3d/GrowableXYZArray.d.ts +9 -6
  500. package/lib/esm/geometry3d/GrowableXYZArray.d.ts.map +1 -1
  501. package/lib/esm/geometry3d/GrowableXYZArray.js +20 -10
  502. package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
  503. package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
  504. package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
  505. package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
  506. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  507. package/lib/esm/geometry3d/Matrix3d.d.ts +4 -4
  508. package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -1
  509. package/lib/esm/geometry3d/Matrix3d.js +5 -4
  510. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  511. package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
  512. package/lib/esm/geometry3d/Plane3d.js.map +1 -1
  513. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  514. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  515. package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
  516. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  517. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  518. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  519. package/lib/esm/geometry3d/PointHelpers.d.ts.map +1 -1
  520. package/lib/esm/geometry3d/PointHelpers.js +6 -7
  521. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  522. package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
  523. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  524. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  525. package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
  526. package/lib/esm/geometry3d/Range.js.map +1 -1
  527. package/lib/esm/geometry3d/Ray2d.js.map +1 -1
  528. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  529. package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
  530. package/lib/esm/geometry3d/Segment1d.js.map +1 -1
  531. package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
  532. package/lib/esm/geometry3d/Transform.js.map +1 -1
  533. package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
  534. package/lib/esm/geometry3d/XYZProps.js.map +1 -1
  535. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  536. package/lib/esm/geometry4d/Map4d.js.map +1 -1
  537. package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
  538. package/lib/esm/geometry4d/MomentData.js.map +1 -1
  539. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  540. package/lib/esm/geometry4d/Point4d.js.map +1 -1
  541. package/lib/esm/numerics/BandedSystem.js.map +1 -1
  542. package/lib/esm/numerics/BezierPolynomials.d.ts.map +1 -1
  543. package/lib/esm/numerics/BezierPolynomials.js +1 -1
  544. package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
  545. package/lib/esm/numerics/ClusterableArray.js.map +1 -1
  546. package/lib/esm/numerics/Complex.js.map +1 -1
  547. package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
  548. package/lib/esm/numerics/Newton.d.ts +52 -13
  549. package/lib/esm/numerics/Newton.d.ts.map +1 -1
  550. package/lib/esm/numerics/Newton.js +71 -22
  551. package/lib/esm/numerics/Newton.js.map +1 -1
  552. package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
  553. package/lib/esm/numerics/PolarData.js.map +1 -1
  554. package/lib/esm/numerics/Polynomials.js.map +1 -1
  555. package/lib/esm/numerics/Quadrature.js.map +1 -1
  556. package/lib/esm/numerics/Range1dArray.js.map +1 -1
  557. package/lib/esm/numerics/SmallSystem.js.map +1 -1
  558. package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
  559. package/lib/esm/numerics/UnionFind.js.map +1 -1
  560. package/lib/esm/numerics/UsageSums.js.map +1 -1
  561. package/lib/esm/polyface/AuxData.js.map +1 -1
  562. package/lib/esm/polyface/BoxTopology.js.map +1 -1
  563. package/lib/esm/polyface/FacetFaceData.js.map +1 -1
  564. package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
  565. package/lib/esm/polyface/FacetOrientation.js.map +1 -1
  566. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  567. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
  568. package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  569. package/lib/esm/polyface/IndexedPolyfaceWalker.js.map +1 -1
  570. package/lib/esm/polyface/Polyface.js.map +1 -1
  571. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  572. package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
  573. package/lib/esm/polyface/PolyfaceData.js.map +1 -1
  574. package/lib/esm/polyface/PolyfaceQuery.d.ts +14 -14
  575. package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
  576. package/lib/esm/polyface/PolyfaceQuery.js +14 -14
  577. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  578. package/lib/esm/polyface/RangeLengthData.js.map +1 -1
  579. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  580. package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  581. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  582. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  583. package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  584. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  585. package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
  586. package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
  587. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  588. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  589. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  590. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  591. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  592. package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  593. package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
  594. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  595. package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
  596. package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
  597. package/lib/esm/serialization/BGFBReader.js +2 -2
  598. package/lib/esm/serialization/BGFBReader.js.map +1 -1
  599. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  600. package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  601. package/lib/esm/serialization/DeepCompare.js.map +1 -1
  602. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  603. package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
  604. package/lib/esm/solid/Box.js.map +1 -1
  605. package/lib/esm/solid/Cone.js.map +1 -1
  606. package/lib/esm/solid/LinearSweep.js.map +1 -1
  607. package/lib/esm/solid/RotationalSweep.js.map +1 -1
  608. package/lib/esm/solid/RuledSweep.js.map +1 -1
  609. package/lib/esm/solid/SolidPrimitive.js.map +1 -1
  610. package/lib/esm/solid/Sphere.js.map +1 -1
  611. package/lib/esm/solid/SweepContour.js.map +1 -1
  612. package/lib/esm/solid/TorusPipe.js.map +1 -1
  613. package/lib/esm/topology/ChainMerge.js.map +1 -1
  614. package/lib/esm/topology/Graph.d.ts +15 -15
  615. package/lib/esm/topology/Graph.d.ts.map +1 -1
  616. package/lib/esm/topology/Graph.js +1 -1
  617. package/lib/esm/topology/Graph.js.map +1 -1
  618. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  619. package/lib/esm/topology/HalfEdgeGraphSearch.d.ts +3 -3
  620. package/lib/esm/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
  621. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  622. package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  623. package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
  624. package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
  625. package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  626. package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  627. package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
  628. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
  629. package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
  630. package/lib/esm/topology/MaskManager.js.map +1 -1
  631. package/lib/esm/topology/Merging.js.map +1 -1
  632. package/lib/esm/topology/RegularizeFace.js.map +1 -1
  633. package/lib/esm/topology/SignedDataSummary.js.map +1 -1
  634. package/lib/esm/topology/SpaceTriangulation.js.map +1 -1
  635. package/lib/esm/topology/Triangulation.js.map +1 -1
  636. package/lib/esm/topology/Voronoi.js.map +1 -1
  637. package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
  638. package/package.json +3 -3
  639. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.d.ts +0 -23
  640. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.d.ts.map +0 -1
  641. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js +0 -37
  642. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +0 -1
  643. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.d.ts +0 -23
  644. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.d.ts.map +0 -1
  645. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js +0 -33
  646. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +0 -1
@@ -155,7 +155,8 @@ class CurveCurveIntersectXY extends GeometryHandler_1.RecurseToCurvesGeometryHan
155
155
  * @param fractionB1 end of the subcurve of cpB
156
156
  * @param reversed whether to reverse the details in the recorded intersection pair
157
157
  * @param intervalDetails optional data for a coincident segment intersection
158
- * @param fractionTol relative tolerance for comparing fractions to avoid duplicating the last intersection. Defaults to [[Geometry.smallAngleRadians]].
158
+ * @param fractionTol relative tolerance for comparing fractions to avoid duplicating the last intersection. Defaults
159
+ * to [[Geometry.smallAngleRadians]].
159
160
  */
160
161
  recordPointWithLocalFractions(localFractionA, cpA, fractionA0, fractionA1, localFractionB, cpB, fractionB0, fractionB1, reversed, intervalDetails, fractionTol) {
161
162
  let globalFractionA, globalFractionB;
@@ -582,9 +583,9 @@ class CurveCurveIntersectXY extends GeometryHandler_1.RecurseToCurvesGeometryHan
582
583
  bezierA.fractionToPoint4d(f1, this._xyzwA1);
583
584
  Point4d_1.Point4d.createPlanePointPointZ(this._xyzwA0, this._xyzwA1, this._xyzwPlane);
584
585
  bezierB.poleProductsXYZW(univariateBezierB.coffs, this._xyzwPlane.x, this._xyzwPlane.y, this._xyzwPlane.z, this._xyzwPlane.w);
585
- let errors = 0;
586
586
  const roots = univariateBezierB.roots(0.0, true);
587
587
  if (roots) {
588
+ const strictTolerance = this._coincidentGeometryContext.tolerance * 0.0001;
588
589
  for (const r of roots) {
589
590
  let bezierBFraction = r;
590
591
  bezierB.fractionToPoint4d(bezierBFraction, this._xyzwB);
@@ -596,28 +597,19 @@ class CurveCurveIntersectXY extends GeometryHandler_1.RecurseToCurvesGeometryHan
596
597
  const xyMatchingFunction = new Newton_1.CurveCurveIntersectionXYRRToRRD(bezierA, bezierB);
597
598
  const newtonSearcher = new Newton_1.Newton2dUnboundedWithDerivative(xyMatchingFunction);
598
599
  newtonSearcher.setUV(bezierAFraction, bezierBFraction);
599
- if (newtonSearcher.runIterations()) {
600
- bezierAFraction = newtonSearcher.getU();
601
- bezierBFraction = newtonSearcher.getV();
602
- }
600
+ let converged = newtonSearcher.runIterations();
601
+ bezierAFraction = newtonSearcher.getU();
602
+ bezierBFraction = newtonSearcher.getV();
603
603
  const bcurveAFraction = bezierA.fractionToParentFraction(bezierAFraction);
604
604
  const bcurveBFraction = bezierB.fractionToParentFraction(bezierBFraction);
605
- if (false) { // verify results
606
- const xyzA0 = bezierA.fractionToPoint(bezierAFraction);
607
- const xyzA1 = bcurveA.fractionToPoint(bcurveAFraction);
608
- const xyzB0 = bezierB.fractionToPoint(bezierBFraction);
609
- const xyzB1 = bcurveB.fractionToPoint(bcurveBFraction);
610
- if (!xyzA0.isAlmostEqualXY(xyzA1))
611
- errors++;
612
- if (!xyzB0.isAlmostEqualXY(xyzB1))
613
- errors++;
614
- if (errors > 0 && !xyzA0.isAlmostEqual(xyzB0))
615
- errors++;
616
- if (errors > 0 && !xyzA1.isAlmostEqual(xyzB1))
617
- errors++;
618
- }
619
605
  if (this.acceptFraction(false, bcurveAFraction, false) && this.acceptFraction(false, bcurveBFraction, false)) {
620
- this.recordPointWithLocalFractions(bcurveAFraction, bcurveA, 0, 1, bcurveBFraction, bcurveB, 0, 1, reversed);
606
+ const pointA = bezierA.fractionToPoint(bezierAFraction, CurveCurveIntersectXY._workPointA0);
607
+ const pointB = bezierB.fractionToPoint(bezierBFraction, CurveCurveIntersectXY._workPointB0);
608
+ if (!converged) { // Newton may have found close points even if it didn't converge parametrically
609
+ converged = pointA.isAlmostEqualXY(pointB, strictTolerance); // we can afford to be choosy
610
+ }
611
+ if (converged)
612
+ this.recordPointWithLocalFractions(bcurveAFraction, bcurveA, 0, 1, bcurveBFraction, bcurveB, 0, 1, reversed);
621
613
  }
622
614
  }
623
615
  }
@@ -847,9 +839,147 @@ class CurveCurveIntersectXY extends GeometryHandler_1.RecurseToCurvesGeometryHan
847
839
  this._results = CurveChainWithDistanceIndex_1.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, index0, undefined, geomB, true);
848
840
  }
849
841
  /**
850
- * Invoke dispatch on each child of `g` as "geometryA".
851
- * * If `g` is a `Path` or `Loop`, adjust extension flags for geometryA accordingly.
842
+ * Process tail of `this._results` for xy-intersections between the curve and spiral.
843
+ * * Refine each result via Newton iteration. If it doesn't converge, remove it.
844
+ * @param curveA The other curve primitive. May also be a transition spiral.
845
+ * @param spiralB The transition spiral.
846
+ * @param index0 index of first entry in tail of `this._results` to refine.
847
+ * @param reversed whether `spiralB` data is in `detailA` of each recorded pair, and `curveA` data in `detailB`.
852
848
  */
849
+ refineSpiralResultsByNewton(curveA, spiralB, index0, reversed = false) {
850
+ if (index0 >= this._results.length)
851
+ return;
852
+ // ASSUME: seeds in results tail are ordered by most accurate first, as only the first convergence within tolerance is recorded.
853
+ const xyMatchingFunction = new Newton_1.CurveCurveIntersectionXYRRToRRD(curveA, spiralB);
854
+ const maxIterations = 100; // observed 73 iterations to convergence in tangent case
855
+ const newtonSearcher = new Newton_1.Newton2dUnboundedWithDerivative(xyMatchingFunction, maxIterations);
856
+ const fractionTol = 2 * newtonSearcher.stepSizeTolerance; // relative cluster diameter for Newton convergence
857
+ const compare = CurveLocationDetail_1.CurveLocationDetailPair.comparePairsByFractions(fractionTol, this._coincidentGeometryContext.tolerance, true);
858
+ const myResults = new core_bentley_1.SortedArray(compare, core_bentley_1.DuplicatePolicy.Retain);
859
+ const pushToMyResults = (cpA, fA, pA, cpB, fB, pB) => {
860
+ const detailA = CurveLocationDetail_1.CurveLocationDetail.createCurveFractionPoint(cpA, fA, pA);
861
+ const detailB = CurveLocationDetail_1.CurveLocationDetail.createCurveFractionPoint(cpB, fB, pB);
862
+ detailA.setIntervalRole(CurveLocationDetail_1.CurveIntervalRole.isolated);
863
+ detailB.setIntervalRole(CurveLocationDetail_1.CurveIntervalRole.isolated);
864
+ myResults.insert(new CurveLocationDetail_1.CurveLocationDetailPair(reversed ? detailB : detailA, reversed ? detailA : detailB));
865
+ };
866
+ const strictTolerance = this._coincidentGeometryContext.tolerance * 0.0001;
867
+ for (let i = index0; i < this._results.length; i++) {
868
+ const pair = this._results[i];
869
+ const detailA = reversed ? pair.detailB : pair.detailA;
870
+ const detailB = reversed ? pair.detailA : pair.detailB;
871
+ (0, core_bentley_1.assert)(detailB.curve instanceof LineString3d_1.LineString3d, "Caller has discretized the spiral");
872
+ const extendA0 = reversed ? this._extendB0 : this._extendA0;
873
+ const extendA1 = reversed ? this._extendB1 : this._extendA1;
874
+ newtonSearcher.setUV(detailA.fraction, detailB.fraction); // use linestring fraction as spiral param; it generally yields a closer point than fractional length!
875
+ let converged = newtonSearcher.runIterations();
876
+ const fractionA = newtonSearcher.getU();
877
+ const fractionB = newtonSearcher.getV();
878
+ if (this.acceptFraction(extendA0, fractionA, extendA1) && this.acceptFraction(false, fractionB, false)) {
879
+ const pointA = curveA.fractionToPoint(fractionA, CurveCurveIntersectXY._workPointA0);
880
+ const pointB = spiralB.fractionToPoint(fractionB, CurveCurveIntersectXY._workPointB0);
881
+ if (!converged) // Newton may have found close points even if it didn't converge parametrically
882
+ converged = pointA.isAlmostEqualXY(pointB, strictTolerance); // we can afford to be choosy
883
+ if (converged)
884
+ pushToMyResults(curveA, fractionA, pointA, spiralB, fractionB, pointB);
885
+ }
886
+ }
887
+ this._results.splice(index0, this._results.length - index0, ...myResults.extractArray());
888
+ }
889
+ /**
890
+ * Append stroke points and return the line string.
891
+ * * This is a convenient wrapper for [[CurvePrimitive.emitStrokes]] but the analogous instance method cannot be added
892
+ * to that class due to the ensuing recursion with subclass [[LineString3d]].
893
+ * @param options options for stroking the instance curve.
894
+ * @param result object to receive appended stroke points; if omitted, a new object is created, populated, and returned.
895
+ */
896
+ strokeCurve(curve, options, result) {
897
+ const ls = result ? result : LineString3d_1.LineString3d.create();
898
+ curve.emitStrokes(ls, options);
899
+ return ls;
900
+ }
901
+ /** Compute an approximation to the max chord height error of the stroked spiral, and another curve if a spiral. */
902
+ computeMaxSpiralStrokeError(spiral0, ls0, spiral1, ls1) {
903
+ let maxError = 0;
904
+ if (ls0.numEdges() > 0) {
905
+ // the max error occurs at the spiral end with higher curvature
906
+ const k0 = spiral0.fractionToCurvature(0);
907
+ const k1 = spiral0.fractionToCurvature(1);
908
+ const iChord = (k0 !== undefined && k1 !== undefined && Math.abs(k0) > Math.abs(k1)) ? 0 : ls0.numEdges() - 1;
909
+ const midPoint = Point3dVector3d_1.Point3d.create();
910
+ const detail = CurveLocationDetail_1.CurveLocationDetail.create();
911
+ if (ls0.packedPoints.interpolateIndexIndex(iChord, 0.5, iChord + 1, midPoint)) {
912
+ if (spiral0.closestPoint(midPoint, false, detail))
913
+ maxError = detail.a;
914
+ }
915
+ if (spiral1 && spiral1 instanceof TransitionSpiral3d_1.TransitionSpiral3d && ls1 && ls1 instanceof LineString3d_1.LineString3d) {
916
+ const maxError1 = this.computeMaxSpiralStrokeError(spiral1, ls1);
917
+ if (maxError1 > maxError)
918
+ maxError = maxError1;
919
+ }
920
+ }
921
+ return maxError;
922
+ }
923
+ /**
924
+ * Solve the intersection problem for stroked, unextended curveB.
925
+ * * @return the number of results appended.
926
+ */
927
+ appendDiscreteIntersectionResults(curveA, extendA0, extendA1, lsB, reversed) {
928
+ const i0 = this._results.length;
929
+ // handleLineString3d requires us to swap geometries
930
+ const geomB = this._geometryB;
931
+ const extendB0 = this._extendB0;
932
+ const extendB1 = this._extendB1;
933
+ this.resetGeometryA(false, false); // lsB is never extended
934
+ this.resetGeometryB(curveA, extendA0, extendA1);
935
+ this.handleLineString3d(lsB); // this puts lsB data in detailA, as expected when reversed is true
936
+ if (!reversed) { // swap lsB data to detailB
937
+ for (let i = i0; i < this._results.length; i++)
938
+ this._results[i].swapDetails();
939
+ }
940
+ this.resetGeometryA(extendA0, extendA1);
941
+ this.resetGeometryB(geomB, extendB0, extendB1);
942
+ return this._results.length - i0;
943
+ }
944
+ /**
945
+ * Solve the close approach problem for stroked, unextended curveB.
946
+ * * Sort the results shortest projection distance first.
947
+ * @return the number of results appended.
948
+ */
949
+ appendDiscreteCloseApproachResults(curveA, lsB, maxDistance, reversed) {
950
+ const i0 = this._results.length;
951
+ const closeApproachPairs = CurveCurve_1.CurveCurve.closeApproachProjectedXYPairs(reversed ? lsB : curveA, reversed ? curveA : lsB, maxDistance);
952
+ closeApproachPairs.sort((p0, p1) => p0.detailA.a - p1.detailA.a);
953
+ this._results.push(...closeApproachPairs);
954
+ return this._results.length - i0;
955
+ }
956
+ /**
957
+ * Compute the xy-intersection of a curve and a spiral.
958
+ * * When `curveA` is extended, duplicate solutions may be returned.
959
+ * @param curveA curve to intersect with spiralB. May also be a transition spiral.
960
+ * @param extendA0 whether to compute xy-intersections with curveA extended beyond its start.
961
+ * @param extendA1 whether to compute xy-intersections with curveA extended beyond its end.
962
+ * @param spiralB transition spiral to intersect with curveA.
963
+ * @param reversed whether `spiralB` data will be recorded in `detailA` of each result, and `curveA` data in `detailB`.
964
+ */
965
+ dispatchCurveSpiral(curveA, extendA0, extendA1, spiralB, reversed) {
966
+ let cpA = curveA;
967
+ if (curveA instanceof TransitionSpiral3d_1.TransitionSpiral3d) {
968
+ cpA = this.strokeCurve(curveA);
969
+ extendA0 = extendA1 = false;
970
+ }
971
+ const cpB = this.strokeCurve(spiralB);
972
+ const maxError = 1.01 * this.computeMaxSpiralStrokeError(spiralB, cpB, curveA, cpA);
973
+ const index0 = this._results.length;
974
+ // append seeds computed by solving discretized spiral problems, then refine the seeds via Newton
975
+ this.appendDiscreteIntersectionResults(cpA, extendA0, extendA1, cpB, reversed); // recorded first because more accurate
976
+ this.appendDiscreteCloseApproachResults(cpA, cpB, maxError, reversed); // seeds for finding tangent intersections
977
+ this.refineSpiralResultsByNewton(curveA, spiralB, index0, reversed);
978
+ }
979
+ /**
980
+ * Invoke dispatch on each child of `g` as "geometryA".
981
+ * * If `g` is a `Path` or `Loop`, adjust extension flags for geometryA accordingly.
982
+ */
853
983
  handleChildren(g) {
854
984
  const children = g.children;
855
985
  if (!children)
@@ -977,156 +1107,6 @@ class CurveCurveIntersectXY extends GeometryHandler_1.RecurseToCurvesGeometryHan
977
1107
  }
978
1108
  return undefined;
979
1109
  }
980
- /**
981
- * Process tail of `this._results` for xy-intersections between the curve and spiral.
982
- * * If a result is not already an intersection, refine it via Newton iteration unless it doesn't converge, in which
983
- * case remove it.
984
- * @param curveA The other curve primitive. May also be a transition spiral.
985
- * @param spiralB The transition spiral.
986
- * @param index0 index of first entry in tail of `this._results` to refine.
987
- * @param reversed Whether `spiralB` data is in `detailA` of each recorded pair, and `curveA` data in `detailB`.
988
- */
989
- refineSpiralResultsByNewton(curveA, spiralB, index0, reversed = false) {
990
- if (index0 >= this._results.length)
991
- return;
992
- // ASSUME: seeds in results tail are ordered by most accurate first, as only the first convergence within tolerance is recorded.
993
- const xyMatchingFunction = new Newton_1.CurveCurveIntersectionXYRRToRRD(curveA, spiralB);
994
- const maxIterations = 100; // observed 73 iterations to convergence in tangent case
995
- const newtonSearcher = new Newton_1.Newton2dUnboundedWithDerivative(xyMatchingFunction, maxIterations);
996
- const fractionTol = 2 * newtonSearcher.stepSizeTolerance; // relative cluster diameter for Newton convergence
997
- const comparePairs = (a, b) => {
998
- (0, core_bentley_1.assert)(() => a.detailA.curve === b.detailA.curve && a.detailB.curve === b.detailB.curve, "pairs are compatible");
999
- // sort on either fraction, then on the point, using appropriate tolerances for each
1000
- if (Geometry_1.Geometry.isAlmostEqualNumber(a.detailA.fraction, b.detailA.fraction, fractionTol))
1001
- return 0;
1002
- if (a.detailA.point.isAlmostEqualXY(b.detailA.point, this._coincidentGeometryContext.tolerance))
1003
- return 0;
1004
- return a.detailA.fraction - b.detailA.fraction;
1005
- };
1006
- const myResults = new core_bentley_1.SortedArray(comparePairs, core_bentley_1.DuplicatePolicy.Retain);
1007
- const pushToMyResults = (cpA, fA, cpB, fB) => {
1008
- const detailA = CurveLocationDetail_1.CurveLocationDetail.createCurveFractionPoint(cpA, fA, cpA.fractionToPoint(fA));
1009
- const detailB = CurveLocationDetail_1.CurveLocationDetail.createCurveFractionPoint(cpB, fB, cpB.fractionToPoint(fB));
1010
- detailA.setIntervalRole(CurveLocationDetail_1.CurveIntervalRole.isolated);
1011
- detailB.setIntervalRole(CurveLocationDetail_1.CurveIntervalRole.isolated);
1012
- let pushed = false;
1013
- myResults.insert(new CurveLocationDetail_1.CurveLocationDetailPair(reversed ? detailB : detailA, reversed ? detailA : detailB), () => pushed = true);
1014
- return pushed;
1015
- };
1016
- for (let i = index0; i < this._results.length; i++) {
1017
- const pair = this._results[i];
1018
- const detailA = reversed ? pair.detailB : pair.detailA;
1019
- const detailB = reversed ? pair.detailA : pair.detailB;
1020
- (0, core_bentley_1.assert)(detailB.curve instanceof LineString3d_1.LineString3d, "Caller has discretized the spiral");
1021
- const extendA0 = reversed ? this._extendB0 : this._extendA0;
1022
- const extendA1 = reversed ? this._extendB1 : this._extendA1;
1023
- newtonSearcher.setUV(detailA.fraction, detailB.fraction); // use linestring fraction as spiral param; it generally yields a closer point than fractional length!
1024
- if (newtonSearcher.runIterations()) {
1025
- const fractionA = newtonSearcher.getU();
1026
- const fractionB = newtonSearcher.getV();
1027
- if (this.acceptFraction(extendA0, fractionA, extendA1) && this.acceptFraction(false, fractionB, false))
1028
- pushToMyResults(curveA, fractionA, spiralB, fractionB);
1029
- }
1030
- else if (newtonSearcher.numIterations < 10) {
1031
- // if Newton failed early due to vanishing (partial) derivative, check for a root there
1032
- const fractionA = newtonSearcher.getU();
1033
- const fractionB = newtonSearcher.getV();
1034
- if (curveA.fractionToPoint(fractionA).isAlmostEqualXY(spiralB.fractionToPoint(fractionB), this._coincidentGeometryContext.tolerance))
1035
- pushToMyResults(curveA, fractionA, spiralB, fractionB);
1036
- }
1037
- }
1038
- this._results.splice(index0, this._results.length - index0, ...myResults.extractArray());
1039
- }
1040
- /**
1041
- * Append stroke points and return the line string.
1042
- * * This is a convenient wrapper for [[CurvePrimitive.emitStrokes]] but the analogous instance method cannot be added
1043
- * to that class due to the ensuing recursion with subclass [[LineString3d]].
1044
- * @param options options for stroking the instance curve.
1045
- * @param result object to receive appended stroke points; if omitted, a new object is created, populated, and returned.
1046
- */
1047
- strokeCurve(curve, options, result) {
1048
- const ls = result ? result : LineString3d_1.LineString3d.create();
1049
- curve.emitStrokes(ls, options);
1050
- return ls;
1051
- }
1052
- /** Compute an approximation to the max chord height error of the stroked spiral, and another curve if a spiral. */
1053
- computeMaxSpiralStrokeError(spiral0, ls0, spiral1, ls1) {
1054
- let maxError = 0;
1055
- if (ls0.numEdges() > 0) {
1056
- // the max error occurs at the spiral end with higher curvature
1057
- const k0 = spiral0.fractionToCurvature(0);
1058
- const k1 = spiral0.fractionToCurvature(1);
1059
- const iChord = (k0 !== undefined && k1 !== undefined && Math.abs(k0) > Math.abs(k1)) ? 0 : ls0.numEdges() - 1;
1060
- const midPoint = Point3dVector3d_1.Point3d.create();
1061
- const detail = CurveLocationDetail_1.CurveLocationDetail.create();
1062
- if (ls0.packedPoints.interpolateIndexIndex(iChord, 0.5, iChord + 1, midPoint)) {
1063
- if (spiral0.closestPoint(midPoint, false, detail))
1064
- maxError = detail.a;
1065
- }
1066
- if (spiral1 && spiral1 instanceof TransitionSpiral3d_1.TransitionSpiral3d && ls1 && ls1 instanceof LineString3d_1.LineString3d) {
1067
- const maxError1 = this.computeMaxSpiralStrokeError(spiral1, ls1);
1068
- if (maxError1 > maxError)
1069
- maxError = maxError1;
1070
- }
1071
- }
1072
- return maxError;
1073
- }
1074
- /**
1075
- * Solve the intersection problem for stroked, unextended curveB.
1076
- * * @return the number of results appended.
1077
- */
1078
- appendDiscreteIntersectionResults(curveA, extendA0, extendA1, lsB, reversed) {
1079
- const i0 = this._results.length;
1080
- // handleLineString3d requires us to swap geometries:
1081
- const geomB = this._geometryB;
1082
- const extendB0 = this._extendB0;
1083
- const extendB1 = this._extendB1;
1084
- this.resetGeometryA(false, false); // lsB is never extended
1085
- this.resetGeometryB(curveA, extendA0, extendA1);
1086
- this.handleLineString3d(lsB); // this puts lsB data in detailA, as expected when reversed is true
1087
- if (!reversed) { // swap lsB data to detailB
1088
- for (let i = i0; i < this._results.length; i++)
1089
- this._results[i].swapDetails();
1090
- }
1091
- this.resetGeometryA(extendA0, extendA1);
1092
- this.resetGeometryB(geomB, extendB0, extendB1);
1093
- return this._results.length - i0;
1094
- }
1095
- /**
1096
- * Solve the close approach problem for stroked, unextended curveB.
1097
- * * Sort the results shortest projection distance first.
1098
- * @return the number of results appended.
1099
- */
1100
- appendDiscreteCloseApproachResults(curveA, lsB, maxDistance, reversed) {
1101
- const i0 = this._results.length;
1102
- const closeApproachPairs = CurveCurve_1.CurveCurve.closeApproachProjectedXYPairs(reversed ? lsB : curveA, reversed ? curveA : lsB, maxDistance);
1103
- closeApproachPairs.sort((p0, p1) => p0.detailA.a - p1.detailA.a);
1104
- this._results.push(...closeApproachPairs);
1105
- return this._results.length - i0;
1106
- }
1107
- /**
1108
- * Compute the xy-intersection of a curve and a spiral.
1109
- * * When `curveA` is extended, duplicate solutions may be returned.
1110
- * @param curveA curve to intersect with spiralB. May also be a transition spiral.
1111
- * @param extendA0 whether to compute xy-intersections with curveA extended beyond its start.
1112
- * @param extendA1 whether to compute xy-intersections with curveA extended beyond its end.
1113
- * @param spiralB transition spiral to intersect with curveA.
1114
- * @param reversed whether `spiralB` data will be recorded in `detailA` of each result, and `curveA` data in `detailB`.
1115
- */
1116
- dispatchCurveSpiral(curveA, extendA0, extendA1, spiralB, reversed) {
1117
- let cpA = curveA;
1118
- if (curveA instanceof TransitionSpiral3d_1.TransitionSpiral3d) {
1119
- cpA = this.strokeCurve(curveA);
1120
- extendA0 = extendA1 = false;
1121
- }
1122
- const cpB = this.strokeCurve(spiralB);
1123
- const maxError = 1.01 * this.computeMaxSpiralStrokeError(spiralB, cpB, curveA, cpA);
1124
- const index0 = this._results.length;
1125
- // append seeds computed by solving discretized spiral problems, then refine the seeds via Newton
1126
- this.appendDiscreteIntersectionResults(cpA, extendA0, extendA1, cpB, reversed); // recorded first because more accurate
1127
- this.appendDiscreteCloseApproachResults(cpA, cpB, maxError, reversed); // seeds for finding tangent intersections
1128
- this.refineSpiralResultsByNewton(curveA, spiralB, index0, reversed);
1129
- }
1130
1110
  /** Double dispatch handler for strongly typed spiral curve. */
1131
1111
  handleTransitionSpiral(spiral) {
1132
1112
  if (this._geometryB instanceof CurveChainWithDistanceIndex_1.CurveChainWithDistanceIndex) {
@@ -1148,19 +1128,8 @@ class CurveCurveIntersectXY extends GeometryHandler_1.RecurseToCurvesGeometryHan
1148
1128
  }
1149
1129
  /** Double dispatch handler for strongly typed homogeneous bspline curve. */
1150
1130
  handleBSplineCurve3dH(_curve) {
1151
- /*
1152
1131
  // NEEDS WORK -- make "dispatch" methods tolerant of both 3d and 3dH .
1153
1132
  // "easy" if both present BezierCurve3dH span loaders
1154
- if (this._geometryB instanceof LineSegment3d) {
1155
- this.dispatchSegmentBsplineCurve(
1156
- this._geometryB, this._extendB, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB,
1157
- curve, this._extendA, true);
1158
- } else if (this._geometryB instanceof LineString3d) {
1159
- this.dispatchLineStringBSplineCurve(this._geometryB, this._extendB, curve, this._extendA, true);
1160
- } else if (this._geometryB instanceof Arc3d) {
1161
- this.dispatchArcBsplineCurve3d(this._geometryB, this._extendB, curve, this._extendA, true);
1162
- }
1163
- */
1164
1133
  return undefined;
1165
1134
  }
1166
1135
  }