@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
@@ -152,7 +152,8 @@ export class CurveCurveIntersectXY extends RecurseToCurvesGeometryHandler {
152
152
  * @param fractionB1 end of the subcurve of cpB
153
153
  * @param reversed whether to reverse the details in the recorded intersection pair
154
154
  * @param intervalDetails optional data for a coincident segment intersection
155
- * @param fractionTol relative tolerance for comparing fractions to avoid duplicating the last intersection. Defaults to [[Geometry.smallAngleRadians]].
155
+ * @param fractionTol relative tolerance for comparing fractions to avoid duplicating the last intersection. Defaults
156
+ * to [[Geometry.smallAngleRadians]].
156
157
  */
157
158
  recordPointWithLocalFractions(localFractionA, cpA, fractionA0, fractionA1, localFractionB, cpB, fractionB0, fractionB1, reversed, intervalDetails, fractionTol) {
158
159
  let globalFractionA, globalFractionB;
@@ -579,9 +580,9 @@ export class CurveCurveIntersectXY extends RecurseToCurvesGeometryHandler {
579
580
  bezierA.fractionToPoint4d(f1, this._xyzwA1);
580
581
  Point4d.createPlanePointPointZ(this._xyzwA0, this._xyzwA1, this._xyzwPlane);
581
582
  bezierB.poleProductsXYZW(univariateBezierB.coffs, this._xyzwPlane.x, this._xyzwPlane.y, this._xyzwPlane.z, this._xyzwPlane.w);
582
- let errors = 0;
583
583
  const roots = univariateBezierB.roots(0.0, true);
584
584
  if (roots) {
585
+ const strictTolerance = this._coincidentGeometryContext.tolerance * 0.0001;
585
586
  for (const r of roots) {
586
587
  let bezierBFraction = r;
587
588
  bezierB.fractionToPoint4d(bezierBFraction, this._xyzwB);
@@ -593,28 +594,19 @@ export class CurveCurveIntersectXY extends RecurseToCurvesGeometryHandler {
593
594
  const xyMatchingFunction = new CurveCurveIntersectionXYRRToRRD(bezierA, bezierB);
594
595
  const newtonSearcher = new Newton2dUnboundedWithDerivative(xyMatchingFunction);
595
596
  newtonSearcher.setUV(bezierAFraction, bezierBFraction);
596
- if (newtonSearcher.runIterations()) {
597
- bezierAFraction = newtonSearcher.getU();
598
- bezierBFraction = newtonSearcher.getV();
599
- }
597
+ let converged = newtonSearcher.runIterations();
598
+ bezierAFraction = newtonSearcher.getU();
599
+ bezierBFraction = newtonSearcher.getV();
600
600
  const bcurveAFraction = bezierA.fractionToParentFraction(bezierAFraction);
601
601
  const bcurveBFraction = bezierB.fractionToParentFraction(bezierBFraction);
602
- if (false) { // verify results
603
- const xyzA0 = bezierA.fractionToPoint(bezierAFraction);
604
- const xyzA1 = bcurveA.fractionToPoint(bcurveAFraction);
605
- const xyzB0 = bezierB.fractionToPoint(bezierBFraction);
606
- const xyzB1 = bcurveB.fractionToPoint(bcurveBFraction);
607
- if (!xyzA0.isAlmostEqualXY(xyzA1))
608
- errors++;
609
- if (!xyzB0.isAlmostEqualXY(xyzB1))
610
- errors++;
611
- if (errors > 0 && !xyzA0.isAlmostEqual(xyzB0))
612
- errors++;
613
- if (errors > 0 && !xyzA1.isAlmostEqual(xyzB1))
614
- errors++;
615
- }
616
602
  if (this.acceptFraction(false, bcurveAFraction, false) && this.acceptFraction(false, bcurveBFraction, false)) {
617
- this.recordPointWithLocalFractions(bcurveAFraction, bcurveA, 0, 1, bcurveBFraction, bcurveB, 0, 1, reversed);
603
+ const pointA = bezierA.fractionToPoint(bezierAFraction, CurveCurveIntersectXY._workPointA0);
604
+ const pointB = bezierB.fractionToPoint(bezierBFraction, CurveCurveIntersectXY._workPointB0);
605
+ if (!converged) { // Newton may have found close points even if it didn't converge parametrically
606
+ converged = pointA.isAlmostEqualXY(pointB, strictTolerance); // we can afford to be choosy
607
+ }
608
+ if (converged)
609
+ this.recordPointWithLocalFractions(bcurveAFraction, bcurveA, 0, 1, bcurveBFraction, bcurveB, 0, 1, reversed);
618
610
  }
619
611
  }
620
612
  }
@@ -844,9 +836,147 @@ export class CurveCurveIntersectXY extends RecurseToCurvesGeometryHandler {
844
836
  this._results = CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, index0, undefined, geomB, true);
845
837
  }
846
838
  /**
847
- * Invoke dispatch on each child of `g` as "geometryA".
848
- * * If `g` is a `Path` or `Loop`, adjust extension flags for geometryA accordingly.
839
+ * Process tail of `this._results` for xy-intersections between the curve and spiral.
840
+ * * Refine each result via Newton iteration. If it doesn't converge, remove it.
841
+ * @param curveA The other curve primitive. May also be a transition spiral.
842
+ * @param spiralB The transition spiral.
843
+ * @param index0 index of first entry in tail of `this._results` to refine.
844
+ * @param reversed whether `spiralB` data is in `detailA` of each recorded pair, and `curveA` data in `detailB`.
845
+ */
846
+ refineSpiralResultsByNewton(curveA, spiralB, index0, reversed = false) {
847
+ if (index0 >= this._results.length)
848
+ return;
849
+ // ASSUME: seeds in results tail are ordered by most accurate first, as only the first convergence within tolerance is recorded.
850
+ const xyMatchingFunction = new CurveCurveIntersectionXYRRToRRD(curveA, spiralB);
851
+ const maxIterations = 100; // observed 73 iterations to convergence in tangent case
852
+ const newtonSearcher = new Newton2dUnboundedWithDerivative(xyMatchingFunction, maxIterations);
853
+ const fractionTol = 2 * newtonSearcher.stepSizeTolerance; // relative cluster diameter for Newton convergence
854
+ const compare = CurveLocationDetailPair.comparePairsByFractions(fractionTol, this._coincidentGeometryContext.tolerance, true);
855
+ const myResults = new SortedArray(compare, DuplicatePolicy.Retain);
856
+ const pushToMyResults = (cpA, fA, pA, cpB, fB, pB) => {
857
+ const detailA = CurveLocationDetail.createCurveFractionPoint(cpA, fA, pA);
858
+ const detailB = CurveLocationDetail.createCurveFractionPoint(cpB, fB, pB);
859
+ detailA.setIntervalRole(CurveIntervalRole.isolated);
860
+ detailB.setIntervalRole(CurveIntervalRole.isolated);
861
+ myResults.insert(new CurveLocationDetailPair(reversed ? detailB : detailA, reversed ? detailA : detailB));
862
+ };
863
+ const strictTolerance = this._coincidentGeometryContext.tolerance * 0.0001;
864
+ for (let i = index0; i < this._results.length; i++) {
865
+ const pair = this._results[i];
866
+ const detailA = reversed ? pair.detailB : pair.detailA;
867
+ const detailB = reversed ? pair.detailA : pair.detailB;
868
+ assert(detailB.curve instanceof LineString3d, "Caller has discretized the spiral");
869
+ const extendA0 = reversed ? this._extendB0 : this._extendA0;
870
+ const extendA1 = reversed ? this._extendB1 : this._extendA1;
871
+ newtonSearcher.setUV(detailA.fraction, detailB.fraction); // use linestring fraction as spiral param; it generally yields a closer point than fractional length!
872
+ let converged = newtonSearcher.runIterations();
873
+ const fractionA = newtonSearcher.getU();
874
+ const fractionB = newtonSearcher.getV();
875
+ if (this.acceptFraction(extendA0, fractionA, extendA1) && this.acceptFraction(false, fractionB, false)) {
876
+ const pointA = curveA.fractionToPoint(fractionA, CurveCurveIntersectXY._workPointA0);
877
+ const pointB = spiralB.fractionToPoint(fractionB, CurveCurveIntersectXY._workPointB0);
878
+ if (!converged) // Newton may have found close points even if it didn't converge parametrically
879
+ converged = pointA.isAlmostEqualXY(pointB, strictTolerance); // we can afford to be choosy
880
+ if (converged)
881
+ pushToMyResults(curveA, fractionA, pointA, spiralB, fractionB, pointB);
882
+ }
883
+ }
884
+ this._results.splice(index0, this._results.length - index0, ...myResults.extractArray());
885
+ }
886
+ /**
887
+ * Append stroke points and return the line string.
888
+ * * This is a convenient wrapper for [[CurvePrimitive.emitStrokes]] but the analogous instance method cannot be added
889
+ * to that class due to the ensuing recursion with subclass [[LineString3d]].
890
+ * @param options options for stroking the instance curve.
891
+ * @param result object to receive appended stroke points; if omitted, a new object is created, populated, and returned.
892
+ */
893
+ strokeCurve(curve, options, result) {
894
+ const ls = result ? result : LineString3d.create();
895
+ curve.emitStrokes(ls, options);
896
+ return ls;
897
+ }
898
+ /** Compute an approximation to the max chord height error of the stroked spiral, and another curve if a spiral. */
899
+ computeMaxSpiralStrokeError(spiral0, ls0, spiral1, ls1) {
900
+ let maxError = 0;
901
+ if (ls0.numEdges() > 0) {
902
+ // the max error occurs at the spiral end with higher curvature
903
+ const k0 = spiral0.fractionToCurvature(0);
904
+ const k1 = spiral0.fractionToCurvature(1);
905
+ const iChord = (k0 !== undefined && k1 !== undefined && Math.abs(k0) > Math.abs(k1)) ? 0 : ls0.numEdges() - 1;
906
+ const midPoint = Point3d.create();
907
+ const detail = CurveLocationDetail.create();
908
+ if (ls0.packedPoints.interpolateIndexIndex(iChord, 0.5, iChord + 1, midPoint)) {
909
+ if (spiral0.closestPoint(midPoint, false, detail))
910
+ maxError = detail.a;
911
+ }
912
+ if (spiral1 && spiral1 instanceof TransitionSpiral3d && ls1 && ls1 instanceof LineString3d) {
913
+ const maxError1 = this.computeMaxSpiralStrokeError(spiral1, ls1);
914
+ if (maxError1 > maxError)
915
+ maxError = maxError1;
916
+ }
917
+ }
918
+ return maxError;
919
+ }
920
+ /**
921
+ * Solve the intersection problem for stroked, unextended curveB.
922
+ * * @return the number of results appended.
849
923
  */
924
+ appendDiscreteIntersectionResults(curveA, extendA0, extendA1, lsB, reversed) {
925
+ const i0 = this._results.length;
926
+ // handleLineString3d requires us to swap geometries
927
+ const geomB = this._geometryB;
928
+ const extendB0 = this._extendB0;
929
+ const extendB1 = this._extendB1;
930
+ this.resetGeometryA(false, false); // lsB is never extended
931
+ this.resetGeometryB(curveA, extendA0, extendA1);
932
+ this.handleLineString3d(lsB); // this puts lsB data in detailA, as expected when reversed is true
933
+ if (!reversed) { // swap lsB data to detailB
934
+ for (let i = i0; i < this._results.length; i++)
935
+ this._results[i].swapDetails();
936
+ }
937
+ this.resetGeometryA(extendA0, extendA1);
938
+ this.resetGeometryB(geomB, extendB0, extendB1);
939
+ return this._results.length - i0;
940
+ }
941
+ /**
942
+ * Solve the close approach problem for stroked, unextended curveB.
943
+ * * Sort the results shortest projection distance first.
944
+ * @return the number of results appended.
945
+ */
946
+ appendDiscreteCloseApproachResults(curveA, lsB, maxDistance, reversed) {
947
+ const i0 = this._results.length;
948
+ const closeApproachPairs = CurveCurve.closeApproachProjectedXYPairs(reversed ? lsB : curveA, reversed ? curveA : lsB, maxDistance);
949
+ closeApproachPairs.sort((p0, p1) => p0.detailA.a - p1.detailA.a);
950
+ this._results.push(...closeApproachPairs);
951
+ return this._results.length - i0;
952
+ }
953
+ /**
954
+ * Compute the xy-intersection of a curve and a spiral.
955
+ * * When `curveA` is extended, duplicate solutions may be returned.
956
+ * @param curveA curve to intersect with spiralB. May also be a transition spiral.
957
+ * @param extendA0 whether to compute xy-intersections with curveA extended beyond its start.
958
+ * @param extendA1 whether to compute xy-intersections with curveA extended beyond its end.
959
+ * @param spiralB transition spiral to intersect with curveA.
960
+ * @param reversed whether `spiralB` data will be recorded in `detailA` of each result, and `curveA` data in `detailB`.
961
+ */
962
+ dispatchCurveSpiral(curveA, extendA0, extendA1, spiralB, reversed) {
963
+ let cpA = curveA;
964
+ if (curveA instanceof TransitionSpiral3d) {
965
+ cpA = this.strokeCurve(curveA);
966
+ extendA0 = extendA1 = false;
967
+ }
968
+ const cpB = this.strokeCurve(spiralB);
969
+ const maxError = 1.01 * this.computeMaxSpiralStrokeError(spiralB, cpB, curveA, cpA);
970
+ const index0 = this._results.length;
971
+ // append seeds computed by solving discretized spiral problems, then refine the seeds via Newton
972
+ this.appendDiscreteIntersectionResults(cpA, extendA0, extendA1, cpB, reversed); // recorded first because more accurate
973
+ this.appendDiscreteCloseApproachResults(cpA, cpB, maxError, reversed); // seeds for finding tangent intersections
974
+ this.refineSpiralResultsByNewton(curveA, spiralB, index0, reversed);
975
+ }
976
+ /**
977
+ * Invoke dispatch on each child of `g` as "geometryA".
978
+ * * If `g` is a `Path` or `Loop`, adjust extension flags for geometryA accordingly.
979
+ */
850
980
  handleChildren(g) {
851
981
  const children = g.children;
852
982
  if (!children)
@@ -974,156 +1104,6 @@ export class CurveCurveIntersectXY extends RecurseToCurvesGeometryHandler {
974
1104
  }
975
1105
  return undefined;
976
1106
  }
977
- /**
978
- * Process tail of `this._results` for xy-intersections between the curve and spiral.
979
- * * If a result is not already an intersection, refine it via Newton iteration unless it doesn't converge, in which
980
- * case remove it.
981
- * @param curveA The other curve primitive. May also be a transition spiral.
982
- * @param spiralB The transition spiral.
983
- * @param index0 index of first entry in tail of `this._results` to refine.
984
- * @param reversed Whether `spiralB` data is in `detailA` of each recorded pair, and `curveA` data in `detailB`.
985
- */
986
- refineSpiralResultsByNewton(curveA, spiralB, index0, reversed = false) {
987
- if (index0 >= this._results.length)
988
- return;
989
- // ASSUME: seeds in results tail are ordered by most accurate first, as only the first convergence within tolerance is recorded.
990
- const xyMatchingFunction = new CurveCurveIntersectionXYRRToRRD(curveA, spiralB);
991
- const maxIterations = 100; // observed 73 iterations to convergence in tangent case
992
- const newtonSearcher = new Newton2dUnboundedWithDerivative(xyMatchingFunction, maxIterations);
993
- const fractionTol = 2 * newtonSearcher.stepSizeTolerance; // relative cluster diameter for Newton convergence
994
- const comparePairs = (a, b) => {
995
- assert(() => a.detailA.curve === b.detailA.curve && a.detailB.curve === b.detailB.curve, "pairs are compatible");
996
- // sort on either fraction, then on the point, using appropriate tolerances for each
997
- if (Geometry.isAlmostEqualNumber(a.detailA.fraction, b.detailA.fraction, fractionTol))
998
- return 0;
999
- if (a.detailA.point.isAlmostEqualXY(b.detailA.point, this._coincidentGeometryContext.tolerance))
1000
- return 0;
1001
- return a.detailA.fraction - b.detailA.fraction;
1002
- };
1003
- const myResults = new SortedArray(comparePairs, DuplicatePolicy.Retain);
1004
- const pushToMyResults = (cpA, fA, cpB, fB) => {
1005
- const detailA = CurveLocationDetail.createCurveFractionPoint(cpA, fA, cpA.fractionToPoint(fA));
1006
- const detailB = CurveLocationDetail.createCurveFractionPoint(cpB, fB, cpB.fractionToPoint(fB));
1007
- detailA.setIntervalRole(CurveIntervalRole.isolated);
1008
- detailB.setIntervalRole(CurveIntervalRole.isolated);
1009
- let pushed = false;
1010
- myResults.insert(new CurveLocationDetailPair(reversed ? detailB : detailA, reversed ? detailA : detailB), () => pushed = true);
1011
- return pushed;
1012
- };
1013
- for (let i = index0; i < this._results.length; i++) {
1014
- const pair = this._results[i];
1015
- const detailA = reversed ? pair.detailB : pair.detailA;
1016
- const detailB = reversed ? pair.detailA : pair.detailB;
1017
- assert(detailB.curve instanceof LineString3d, "Caller has discretized the spiral");
1018
- const extendA0 = reversed ? this._extendB0 : this._extendA0;
1019
- const extendA1 = reversed ? this._extendB1 : this._extendA1;
1020
- newtonSearcher.setUV(detailA.fraction, detailB.fraction); // use linestring fraction as spiral param; it generally yields a closer point than fractional length!
1021
- if (newtonSearcher.runIterations()) {
1022
- const fractionA = newtonSearcher.getU();
1023
- const fractionB = newtonSearcher.getV();
1024
- if (this.acceptFraction(extendA0, fractionA, extendA1) && this.acceptFraction(false, fractionB, false))
1025
- pushToMyResults(curveA, fractionA, spiralB, fractionB);
1026
- }
1027
- else if (newtonSearcher.numIterations < 10) {
1028
- // if Newton failed early due to vanishing (partial) derivative, check for a root there
1029
- const fractionA = newtonSearcher.getU();
1030
- const fractionB = newtonSearcher.getV();
1031
- if (curveA.fractionToPoint(fractionA).isAlmostEqualXY(spiralB.fractionToPoint(fractionB), this._coincidentGeometryContext.tolerance))
1032
- pushToMyResults(curveA, fractionA, spiralB, fractionB);
1033
- }
1034
- }
1035
- this._results.splice(index0, this._results.length - index0, ...myResults.extractArray());
1036
- }
1037
- /**
1038
- * Append stroke points and return the line string.
1039
- * * This is a convenient wrapper for [[CurvePrimitive.emitStrokes]] but the analogous instance method cannot be added
1040
- * to that class due to the ensuing recursion with subclass [[LineString3d]].
1041
- * @param options options for stroking the instance curve.
1042
- * @param result object to receive appended stroke points; if omitted, a new object is created, populated, and returned.
1043
- */
1044
- strokeCurve(curve, options, result) {
1045
- const ls = result ? result : LineString3d.create();
1046
- curve.emitStrokes(ls, options);
1047
- return ls;
1048
- }
1049
- /** Compute an approximation to the max chord height error of the stroked spiral, and another curve if a spiral. */
1050
- computeMaxSpiralStrokeError(spiral0, ls0, spiral1, ls1) {
1051
- let maxError = 0;
1052
- if (ls0.numEdges() > 0) {
1053
- // the max error occurs at the spiral end with higher curvature
1054
- const k0 = spiral0.fractionToCurvature(0);
1055
- const k1 = spiral0.fractionToCurvature(1);
1056
- const iChord = (k0 !== undefined && k1 !== undefined && Math.abs(k0) > Math.abs(k1)) ? 0 : ls0.numEdges() - 1;
1057
- const midPoint = Point3d.create();
1058
- const detail = CurveLocationDetail.create();
1059
- if (ls0.packedPoints.interpolateIndexIndex(iChord, 0.5, iChord + 1, midPoint)) {
1060
- if (spiral0.closestPoint(midPoint, false, detail))
1061
- maxError = detail.a;
1062
- }
1063
- if (spiral1 && spiral1 instanceof TransitionSpiral3d && ls1 && ls1 instanceof LineString3d) {
1064
- const maxError1 = this.computeMaxSpiralStrokeError(spiral1, ls1);
1065
- if (maxError1 > maxError)
1066
- maxError = maxError1;
1067
- }
1068
- }
1069
- return maxError;
1070
- }
1071
- /**
1072
- * Solve the intersection problem for stroked, unextended curveB.
1073
- * * @return the number of results appended.
1074
- */
1075
- appendDiscreteIntersectionResults(curveA, extendA0, extendA1, lsB, reversed) {
1076
- const i0 = this._results.length;
1077
- // handleLineString3d requires us to swap geometries:
1078
- const geomB = this._geometryB;
1079
- const extendB0 = this._extendB0;
1080
- const extendB1 = this._extendB1;
1081
- this.resetGeometryA(false, false); // lsB is never extended
1082
- this.resetGeometryB(curveA, extendA0, extendA1);
1083
- this.handleLineString3d(lsB); // this puts lsB data in detailA, as expected when reversed is true
1084
- if (!reversed) { // swap lsB data to detailB
1085
- for (let i = i0; i < this._results.length; i++)
1086
- this._results[i].swapDetails();
1087
- }
1088
- this.resetGeometryA(extendA0, extendA1);
1089
- this.resetGeometryB(geomB, extendB0, extendB1);
1090
- return this._results.length - i0;
1091
- }
1092
- /**
1093
- * Solve the close approach problem for stroked, unextended curveB.
1094
- * * Sort the results shortest projection distance first.
1095
- * @return the number of results appended.
1096
- */
1097
- appendDiscreteCloseApproachResults(curveA, lsB, maxDistance, reversed) {
1098
- const i0 = this._results.length;
1099
- const closeApproachPairs = CurveCurve.closeApproachProjectedXYPairs(reversed ? lsB : curveA, reversed ? curveA : lsB, maxDistance);
1100
- closeApproachPairs.sort((p0, p1) => p0.detailA.a - p1.detailA.a);
1101
- this._results.push(...closeApproachPairs);
1102
- return this._results.length - i0;
1103
- }
1104
- /**
1105
- * Compute the xy-intersection of a curve and a spiral.
1106
- * * When `curveA` is extended, duplicate solutions may be returned.
1107
- * @param curveA curve to intersect with spiralB. May also be a transition spiral.
1108
- * @param extendA0 whether to compute xy-intersections with curveA extended beyond its start.
1109
- * @param extendA1 whether to compute xy-intersections with curveA extended beyond its end.
1110
- * @param spiralB transition spiral to intersect with curveA.
1111
- * @param reversed whether `spiralB` data will be recorded in `detailA` of each result, and `curveA` data in `detailB`.
1112
- */
1113
- dispatchCurveSpiral(curveA, extendA0, extendA1, spiralB, reversed) {
1114
- let cpA = curveA;
1115
- if (curveA instanceof TransitionSpiral3d) {
1116
- cpA = this.strokeCurve(curveA);
1117
- extendA0 = extendA1 = false;
1118
- }
1119
- const cpB = this.strokeCurve(spiralB);
1120
- const maxError = 1.01 * this.computeMaxSpiralStrokeError(spiralB, cpB, curveA, cpA);
1121
- const index0 = this._results.length;
1122
- // append seeds computed by solving discretized spiral problems, then refine the seeds via Newton
1123
- this.appendDiscreteIntersectionResults(cpA, extendA0, extendA1, cpB, reversed); // recorded first because more accurate
1124
- this.appendDiscreteCloseApproachResults(cpA, cpB, maxError, reversed); // seeds for finding tangent intersections
1125
- this.refineSpiralResultsByNewton(curveA, spiralB, index0, reversed);
1126
- }
1127
1107
  /** Double dispatch handler for strongly typed spiral curve. */
1128
1108
  handleTransitionSpiral(spiral) {
1129
1109
  if (this._geometryB instanceof CurveChainWithDistanceIndex) {
@@ -1145,19 +1125,8 @@ export class CurveCurveIntersectXY extends RecurseToCurvesGeometryHandler {
1145
1125
  }
1146
1126
  /** Double dispatch handler for strongly typed homogeneous bspline curve. */
1147
1127
  handleBSplineCurve3dH(_curve) {
1148
- /*
1149
1128
  // NEEDS WORK -- make "dispatch" methods tolerant of both 3d and 3dH .
1150
1129
  // "easy" if both present BezierCurve3dH span loaders
1151
- if (this._geometryB instanceof LineSegment3d) {
1152
- this.dispatchSegmentBsplineCurve(
1153
- this._geometryB, this._extendB, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB,
1154
- curve, this._extendA, true);
1155
- } else if (this._geometryB instanceof LineString3d) {
1156
- this.dispatchLineStringBSplineCurve(this._geometryB, this._extendB, curve, this._extendA, true);
1157
- } else if (this._geometryB instanceof Arc3d) {
1158
- this.dispatchArcBsplineCurve3d(this._geometryB, this._extendB, curve, this._extendA, true);
1159
- }
1160
- */
1161
1130
  return undefined;
1162
1131
  }
1163
1132
  }