@itwin/core-geometry 4.10.0-dev.4 → 4.10.0-dev.6

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 (491) hide show
  1. package/lib/cjs/Constant.js.map +1 -1
  2. package/lib/cjs/Geometry.d.ts +2 -2
  3. package/lib/cjs/Geometry.js +2 -2
  4. package/lib/cjs/Geometry.js.map +1 -1
  5. package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
  6. package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
  7. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  8. package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
  9. package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
  10. package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
  11. package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
  12. package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
  13. package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
  14. package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
  15. package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
  16. package/lib/cjs/bspline/KnotVector.js.map +1 -1
  17. package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -1
  18. package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
  19. package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -1
  20. package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
  21. package/lib/cjs/clipping/ClipPlane.js.map +1 -1
  22. package/lib/cjs/clipping/ClipPrimitive.d.ts +7 -7
  23. package/lib/cjs/clipping/ClipPrimitive.d.ts.map +1 -1
  24. package/lib/cjs/clipping/ClipPrimitive.js +1 -1
  25. package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
  26. package/lib/cjs/clipping/ClipUtils.js.map +1 -1
  27. package/lib/cjs/clipping/ClipVector.js.map +1 -1
  28. package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
  29. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  30. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  31. package/lib/cjs/core-geometry.js.map +1 -1
  32. package/lib/cjs/curve/Arc3d.js.map +1 -1
  33. package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
  34. package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
  35. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +27 -8
  36. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  37. package/lib/cjs/curve/CurveChainWithDistanceIndex.js +44 -25
  38. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  39. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  40. package/lib/cjs/curve/CurveCurve.js.map +1 -1
  41. package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
  42. package/lib/cjs/curve/CurveFactory.js.map +1 -1
  43. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  44. package/lib/cjs/curve/CurveOps.js.map +1 -1
  45. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  46. package/lib/cjs/curve/CurveProcessor.js.map +1 -1
  47. package/lib/cjs/curve/CurveTypes.js.map +1 -1
  48. package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
  49. package/lib/cjs/curve/GeometryQuery.js.map +1 -1
  50. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  51. package/lib/cjs/curve/LineString3d.js.map +1 -1
  52. package/lib/cjs/curve/Loop.js.map +1 -1
  53. package/lib/cjs/curve/OffsetOptions.js.map +1 -1
  54. package/lib/cjs/curve/ParityRegion.js.map +1 -1
  55. package/lib/cjs/curve/Path.js.map +1 -1
  56. package/lib/cjs/curve/PointString3d.js.map +1 -1
  57. package/lib/cjs/curve/ProxyCurve.js.map +1 -1
  58. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  59. package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
  60. package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
  61. package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
  62. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  63. package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
  64. package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
  65. package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
  66. package/lib/cjs/curve/RegionOps.js.map +1 -1
  67. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  68. package/lib/cjs/curve/StrokeOptions.js.map +1 -1
  69. package/lib/cjs/curve/UnionRegion.js.map +1 -1
  70. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  71. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  72. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  73. package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  74. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  75. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  76. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  77. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts +1 -0
  78. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
  79. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js +30 -56
  80. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  81. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.d.ts +22 -7
  82. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.d.ts.map +1 -1
  83. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js +127 -67
  84. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  85. package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
  86. package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  87. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  88. package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
  89. package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
  90. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  91. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  92. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  93. package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
  94. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  95. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  96. package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
  97. package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
  98. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  99. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  100. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
  101. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  102. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  103. package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
  104. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  105. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  106. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
  107. package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
  108. package/lib/cjs/geometry3d/Angle.d.ts +5 -5
  109. package/lib/cjs/geometry3d/Angle.js +5 -5
  110. package/lib/cjs/geometry3d/Angle.js.map +1 -1
  111. package/lib/cjs/geometry3d/AngleSweep.d.ts +91 -7
  112. package/lib/cjs/geometry3d/AngleSweep.d.ts.map +1 -1
  113. package/lib/cjs/geometry3d/AngleSweep.js +141 -45
  114. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
  115. package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
  116. package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
  117. package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
  118. package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
  119. package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
  120. package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
  121. package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
  122. package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
  123. package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
  124. package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
  125. package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
  126. package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
  127. package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
  128. package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
  129. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  130. package/lib/cjs/geometry3d/Matrix3d.d.ts +7 -14
  131. package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -1
  132. package/lib/cjs/geometry3d/Matrix3d.js +19 -14
  133. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  134. package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
  135. package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
  136. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  137. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  138. package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
  139. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  140. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  141. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  142. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  143. package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
  144. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  145. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  146. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
  147. package/lib/cjs/geometry3d/Range.js.map +1 -1
  148. package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
  149. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  150. package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
  151. package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
  152. package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
  153. package/lib/cjs/geometry3d/Transform.d.ts +4 -2
  154. package/lib/cjs/geometry3d/Transform.d.ts.map +1 -1
  155. package/lib/cjs/geometry3d/Transform.js +4 -2
  156. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  157. package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
  158. package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
  159. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  160. package/lib/cjs/geometry4d/Map4d.js.map +1 -1
  161. package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
  162. package/lib/cjs/geometry4d/MomentData.js.map +1 -1
  163. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  164. package/lib/cjs/geometry4d/Point4d.js.map +1 -1
  165. package/lib/cjs/numerics/BandedSystem.js.map +1 -1
  166. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
  167. package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
  168. package/lib/cjs/numerics/Complex.js.map +1 -1
  169. package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
  170. package/lib/cjs/numerics/Newton.js.map +1 -1
  171. package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
  172. package/lib/cjs/numerics/PolarData.js.map +1 -1
  173. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  174. package/lib/cjs/numerics/Quadrature.js.map +1 -1
  175. package/lib/cjs/numerics/Range1dArray.js.map +1 -1
  176. package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
  177. package/lib/cjs/numerics/UnionFind.js.map +1 -1
  178. package/lib/cjs/numerics/UsageSums.js.map +1 -1
  179. package/lib/cjs/polyface/AuxData.js.map +1 -1
  180. package/lib/cjs/polyface/BoxTopology.js.map +1 -1
  181. package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
  182. package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
  183. package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
  184. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  185. package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
  186. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  187. package/lib/cjs/polyface/Polyface.js.map +1 -1
  188. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  189. package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
  190. package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
  191. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  192. package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
  193. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  194. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  195. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  196. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  197. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  198. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  199. package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
  200. package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
  201. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  202. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  203. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  204. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  205. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  206. package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  207. package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
  208. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  209. package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
  210. package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
  211. package/lib/cjs/serialization/BGFBReader.js.map +1 -1
  212. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  213. package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  214. package/lib/cjs/serialization/DeepCompare.js.map +1 -1
  215. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  216. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  217. package/lib/cjs/serialization/SerializationHelpers.js.map +1 -1
  218. package/lib/cjs/solid/Box.js.map +1 -1
  219. package/lib/cjs/solid/Cone.js.map +1 -1
  220. package/lib/cjs/solid/LinearSweep.js.map +1 -1
  221. package/lib/cjs/solid/RotationalSweep.js.map +1 -1
  222. package/lib/cjs/solid/RuledSweep.js.map +1 -1
  223. package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
  224. package/lib/cjs/solid/Sphere.js.map +1 -1
  225. package/lib/cjs/solid/SweepContour.js.map +1 -1
  226. package/lib/cjs/solid/TorusPipe.js.map +1 -1
  227. package/lib/cjs/topology/ChainMerge.js.map +1 -1
  228. package/lib/cjs/topology/Graph.js.map +1 -1
  229. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  230. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  231. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  232. package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
  233. package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
  234. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  235. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  236. package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
  237. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
  238. package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
  239. package/lib/cjs/topology/MaskManager.js.map +1 -1
  240. package/lib/cjs/topology/Merging.js.map +1 -1
  241. package/lib/cjs/topology/RegularizeFace.js.map +1 -1
  242. package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
  243. package/lib/cjs/topology/SpaceTriangulation.js.map +1 -1
  244. package/lib/cjs/topology/Triangulation.js.map +1 -1
  245. package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
  246. package/lib/esm/Constant.js.map +1 -1
  247. package/lib/esm/Geometry.d.ts +2 -2
  248. package/lib/esm/Geometry.js +2 -2
  249. package/lib/esm/Geometry.js.map +1 -1
  250. package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
  251. package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
  252. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  253. package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
  254. package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
  255. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  256. package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
  257. package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
  258. package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
  259. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  260. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  261. package/lib/esm/bspline/KnotVector.js.map +1 -1
  262. package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
  263. package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
  264. package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
  265. package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
  266. package/lib/esm/clipping/ClipPlane.js.map +1 -1
  267. package/lib/esm/clipping/ClipPrimitive.d.ts +7 -7
  268. package/lib/esm/clipping/ClipPrimitive.d.ts.map +1 -1
  269. package/lib/esm/clipping/ClipPrimitive.js +1 -1
  270. package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
  271. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  272. package/lib/esm/clipping/ClipVector.js.map +1 -1
  273. package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
  274. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  275. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  276. package/lib/esm/core-geometry.js.map +1 -1
  277. package/lib/esm/curve/Arc3d.js.map +1 -1
  278. package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
  279. package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
  280. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +27 -8
  281. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  282. package/lib/esm/curve/CurveChainWithDistanceIndex.js +44 -25
  283. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  284. package/lib/esm/curve/CurveCollection.js.map +1 -1
  285. package/lib/esm/curve/CurveCurve.js.map +1 -1
  286. package/lib/esm/curve/CurveExtendMode.js.map +1 -1
  287. package/lib/esm/curve/CurveFactory.js.map +1 -1
  288. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  289. package/lib/esm/curve/CurveOps.js.map +1 -1
  290. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  291. package/lib/esm/curve/CurveProcessor.js.map +1 -1
  292. package/lib/esm/curve/CurveTypes.js.map +1 -1
  293. package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
  294. package/lib/esm/curve/GeometryQuery.js.map +1 -1
  295. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  296. package/lib/esm/curve/LineString3d.js.map +1 -1
  297. package/lib/esm/curve/Loop.js.map +1 -1
  298. package/lib/esm/curve/OffsetOptions.js.map +1 -1
  299. package/lib/esm/curve/ParityRegion.js.map +1 -1
  300. package/lib/esm/curve/Path.js.map +1 -1
  301. package/lib/esm/curve/PointString3d.js.map +1 -1
  302. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  303. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  304. package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
  305. package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
  306. package/lib/esm/curve/Query/InOutTests.js.map +1 -1
  307. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  308. package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
  309. package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
  310. package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
  311. package/lib/esm/curve/RegionOps.js.map +1 -1
  312. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  313. package/lib/esm/curve/StrokeOptions.js.map +1 -1
  314. package/lib/esm/curve/UnionRegion.js.map +1 -1
  315. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  316. package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  317. package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  318. package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  319. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  320. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  321. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  322. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts +1 -0
  323. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
  324. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js +30 -56
  325. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  326. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.d.ts +22 -7
  327. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.d.ts.map +1 -1
  328. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js +127 -67
  329. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  330. package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
  331. package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  332. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  333. package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
  334. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  335. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  336. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  337. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  338. package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
  339. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  340. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  341. package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
  342. package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
  343. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  344. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  345. package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
  346. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  347. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  348. package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
  349. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  350. package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  351. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
  352. package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
  353. package/lib/esm/geometry3d/Angle.d.ts +5 -5
  354. package/lib/esm/geometry3d/Angle.js +5 -5
  355. package/lib/esm/geometry3d/Angle.js.map +1 -1
  356. package/lib/esm/geometry3d/AngleSweep.d.ts +91 -7
  357. package/lib/esm/geometry3d/AngleSweep.d.ts.map +1 -1
  358. package/lib/esm/geometry3d/AngleSweep.js +141 -45
  359. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  360. package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
  361. package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
  362. package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
  363. package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
  364. package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
  365. package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
  366. package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
  367. package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
  368. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
  369. package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
  370. package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
  371. package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
  372. package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
  373. package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
  374. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  375. package/lib/esm/geometry3d/Matrix3d.d.ts +7 -14
  376. package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -1
  377. package/lib/esm/geometry3d/Matrix3d.js +19 -14
  378. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  379. package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
  380. package/lib/esm/geometry3d/Plane3d.js.map +1 -1
  381. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  382. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  383. package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
  384. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  385. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  386. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  387. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  388. package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
  389. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  390. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  391. package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
  392. package/lib/esm/geometry3d/Range.js.map +1 -1
  393. package/lib/esm/geometry3d/Ray2d.js.map +1 -1
  394. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  395. package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
  396. package/lib/esm/geometry3d/Segment1d.js.map +1 -1
  397. package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
  398. package/lib/esm/geometry3d/Transform.d.ts +4 -2
  399. package/lib/esm/geometry3d/Transform.d.ts.map +1 -1
  400. package/lib/esm/geometry3d/Transform.js +4 -2
  401. package/lib/esm/geometry3d/Transform.js.map +1 -1
  402. package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
  403. package/lib/esm/geometry3d/XYZProps.js.map +1 -1
  404. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  405. package/lib/esm/geometry4d/Map4d.js.map +1 -1
  406. package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
  407. package/lib/esm/geometry4d/MomentData.js.map +1 -1
  408. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  409. package/lib/esm/geometry4d/Point4d.js.map +1 -1
  410. package/lib/esm/numerics/BandedSystem.js.map +1 -1
  411. package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
  412. package/lib/esm/numerics/ClusterableArray.js.map +1 -1
  413. package/lib/esm/numerics/Complex.js.map +1 -1
  414. package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
  415. package/lib/esm/numerics/Newton.js.map +1 -1
  416. package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
  417. package/lib/esm/numerics/PolarData.js.map +1 -1
  418. package/lib/esm/numerics/Polynomials.js.map +1 -1
  419. package/lib/esm/numerics/Quadrature.js.map +1 -1
  420. package/lib/esm/numerics/Range1dArray.js.map +1 -1
  421. package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
  422. package/lib/esm/numerics/UnionFind.js.map +1 -1
  423. package/lib/esm/numerics/UsageSums.js.map +1 -1
  424. package/lib/esm/polyface/AuxData.js.map +1 -1
  425. package/lib/esm/polyface/BoxTopology.js.map +1 -1
  426. package/lib/esm/polyface/FacetFaceData.js.map +1 -1
  427. package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
  428. package/lib/esm/polyface/FacetOrientation.js.map +1 -1
  429. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  430. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
  431. package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  432. package/lib/esm/polyface/Polyface.js.map +1 -1
  433. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  434. package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
  435. package/lib/esm/polyface/PolyfaceData.js.map +1 -1
  436. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  437. package/lib/esm/polyface/RangeLengthData.js.map +1 -1
  438. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  439. package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  440. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  441. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  442. package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  443. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  444. package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
  445. package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
  446. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  447. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  448. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  449. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  450. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  451. package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  452. package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
  453. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  454. package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
  455. package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
  456. package/lib/esm/serialization/BGFBReader.js.map +1 -1
  457. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  458. package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  459. package/lib/esm/serialization/DeepCompare.js.map +1 -1
  460. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  461. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  462. package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
  463. package/lib/esm/solid/Box.js.map +1 -1
  464. package/lib/esm/solid/Cone.js.map +1 -1
  465. package/lib/esm/solid/LinearSweep.js.map +1 -1
  466. package/lib/esm/solid/RotationalSweep.js.map +1 -1
  467. package/lib/esm/solid/RuledSweep.js.map +1 -1
  468. package/lib/esm/solid/SolidPrimitive.js.map +1 -1
  469. package/lib/esm/solid/Sphere.js.map +1 -1
  470. package/lib/esm/solid/SweepContour.js.map +1 -1
  471. package/lib/esm/solid/TorusPipe.js.map +1 -1
  472. package/lib/esm/topology/ChainMerge.js.map +1 -1
  473. package/lib/esm/topology/Graph.js.map +1 -1
  474. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  475. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  476. package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  477. package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
  478. package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
  479. package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  480. package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  481. package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
  482. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
  483. package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
  484. package/lib/esm/topology/MaskManager.js.map +1 -1
  485. package/lib/esm/topology/Merging.js.map +1 -1
  486. package/lib/esm/topology/RegularizeFace.js.map +1 -1
  487. package/lib/esm/topology/SignedDataSummary.js.map +1 -1
  488. package/lib/esm/topology/SpaceTriangulation.js.map +1 -1
  489. package/lib/esm/topology/Triangulation.js.map +1 -1
  490. package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
  491. package/package.json +3 -3
@@ -19,6 +19,8 @@ import { CurveCollection } from "../CurveCollection";
19
19
  import { CurveIntervalRole, CurveLocationDetail, CurveLocationDetailPair } from "../CurveLocationDetail";
20
20
  import { LineSegment3d } from "../LineSegment3d";
21
21
  import { LineString3d } from "../LineString3d";
22
+ import { Loop } from "../Loop";
23
+ import { Path } from "../Path";
22
24
  // cspell:word XYRR
23
25
  /**
24
26
  * Handler class for XYZ intersections between _geometryB and another geometry.
@@ -34,9 +36,11 @@ export class CurveCurveIntersectXYZ extends RecurseToCurvesGeometryHandler {
34
36
  */
35
37
  constructor(extendA, geometryB, extendB) {
36
38
  super();
37
- this._extendA = extendA;
39
+ this._extendA0 = extendA;
40
+ this._extendA1 = extendA;
38
41
  this._geometryB = geometryB;
39
- this._extendB = extendB;
42
+ this._extendB0 = extendB;
43
+ this._extendB1 = extendB;
40
44
  this._results = [];
41
45
  }
42
46
  /** Reset the geometry, leaving all other parts unchanged (and preserving accumulated intersections). */
@@ -53,10 +57,12 @@ export class CurveCurveIntersectXYZ extends RecurseToCurvesGeometryHandler {
53
57
  this._results = [];
54
58
  return result;
55
59
  }
56
- acceptFraction(extend0, fraction, extend1) {
57
- if (!extend0 && fraction < 0.0)
60
+ /** Accept the fraction if it falls inside (possibly extended) fraction range. */
61
+ acceptFraction(extend0, fraction, extend1, fractionTol = 1.0e-12) {
62
+ // Note that default tol is tighter than Geometry.smallFraction. We aggressively toss intersections past endpoints.
63
+ if (!extend0 && fraction < -fractionTol)
58
64
  return false;
59
- if (!extend1 && fraction > 1.0)
65
+ if (!extend1 && fraction > 1.0 + fractionTol)
60
66
  return false;
61
67
  return true;
62
68
  }
@@ -158,13 +164,13 @@ export class CurveCurveIntersectXYZ extends RecurseToCurvesGeometryHandler {
158
164
  let lineFraction;
159
165
  let linePoint;
160
166
  for (const c of candidates) {
161
- if (this.acceptFraction(extendB0, c.fraction, extendB1)) {
167
+ const arcFraction = arc.sweep.fractionToSignedPeriodicFraction(c.fraction, extendB0);
168
+ if (this.acceptFraction(extendB0, arcFraction, extendB1)) {
162
169
  lineFraction = SmallSystem.lineSegment3dClosestPointUnbounded(pointA0, pointA1, c.point);
163
170
  if (lineFraction !== undefined) {
164
171
  linePoint = pointA0.interpolate(lineFraction, pointA1, linePoint);
165
- if (linePoint.isAlmostEqualMetric(c.point)
166
- && this.acceptFraction(extendA0, lineFraction, extendA1)) {
167
- this.recordPointWithLocalFractions(lineFraction, cpA, fractionA0, fractionA1, c.fraction, arc, 0, 1, reversed);
172
+ if (linePoint.isAlmostEqualMetric(c.point) && this.acceptFraction(extendA0, lineFraction, extendA1)) {
173
+ this.recordPointWithLocalFractions(lineFraction, cpA, fractionA0, fractionA1, arcFraction, arc, 0, 1, reversed);
168
174
  }
169
175
  }
170
176
  }
@@ -175,17 +181,17 @@ export class CurveCurveIntersectXYZ extends RecurseToCurvesGeometryHandler {
175
181
  // Passes "other" as {center, vector0, vector90} in local xy space of cpA
176
182
  // Solves the arc-arc equations for that local ellipse with unit circle.
177
183
  // Solution fractions map directly to original arcs.
178
- dispatchArcArcInPlane(cpA, extendA, cpB, extendB, reversed) {
184
+ dispatchArcArcInPlane(cpA, extendA0, extendA1, cpB, extendB0, extendB1, reversed) {
179
185
  const otherVectors = cpA.otherArcAsLocalVectors(cpB);
180
186
  if (otherVectors !== undefined) {
181
187
  const ellipseRadians = [];
182
188
  const circleRadians = [];
183
189
  TrigPolynomial.solveUnitCircleHomogeneousEllipseIntersection(otherVectors.center.x, otherVectors.center.y, 1.0, otherVectors.vector0.x, otherVectors.vector0.y, 0.0, otherVectors.vector90.x, otherVectors.vector90.y, 0.0, ellipseRadians, circleRadians);
184
190
  for (let i = 0; i < ellipseRadians.length; i++) {
185
- const fractionA = cpA.sweep.radiansToSignedPeriodicFraction(circleRadians[i]);
186
- const fractionB = cpB.sweep.radiansToSignedPeriodicFraction(ellipseRadians[i]);
191
+ const fractionA = cpA.sweep.radiansToSignedFraction(circleRadians[i], extendA0);
192
+ const fractionB = cpB.sweep.radiansToSignedFraction(ellipseRadians[i], extendB0);
187
193
  // hm .. do we really need to check the fractions? We know they are internal to the beziers
188
- if (this.acceptFraction(extendA, fractionA, extendA) && this.acceptFraction(extendB, fractionB, extendB)) {
194
+ if (this.acceptFraction(extendA0, fractionA, extendA1) && this.acceptFraction(extendB0, fractionB, extendB1)) {
189
195
  this.recordPointWithLocalFractions(fractionA, cpA, 0, 1, fractionB, cpB, 0, 1, reversed);
190
196
  }
191
197
  }
@@ -194,7 +200,7 @@ export class CurveCurveIntersectXYZ extends RecurseToCurvesGeometryHandler {
194
200
  // Caller accesses data from two arcs.
195
201
  // Selects the best conditioned arc (in xy parts) as "circle after inversion".
196
202
  // Solves the arc-arc equations.
197
- dispatchArcArc(cpA, extendA, cpB, extendB, reversed) {
203
+ dispatchArcArc(cpA, extendA0, extendA1, cpB, extendB0, extendB1, reversed) {
198
204
  // If arcs are in different planes:
199
205
  // 1) Intersect each plane with the other arc (quadratic)
200
206
  // 2) accept points that appear in both intersection sets.
@@ -205,10 +211,8 @@ export class CurveCurveIntersectXYZ extends RecurseToCurvesGeometryHandler {
205
211
  if (planeA === undefined || planeB === undefined)
206
212
  return;
207
213
  if (planeA.getNormalRef().isParallelTo(planeB.getNormalRef())) {
208
- if (planeA.isPointInPlane(planeB.getOriginRef()) && planeB.isPointInPlane(planeA.getOriginRef())) {
209
- // coplanar
210
- this.dispatchArcArcInPlane(cpA, extendA, cpB, extendB, reversed);
211
- }
214
+ if (planeA.isPointInPlane(planeB.getOriginRef()) && planeB.isPointInPlane(planeA.getOriginRef()))
215
+ this.dispatchArcArcInPlane(cpA, extendA0, extendA1, cpB, extendB0, extendB1, reversed);
212
216
  }
213
217
  else {
214
218
  const arcBPoints = [];
@@ -218,9 +222,11 @@ export class CurveCurveIntersectXYZ extends RecurseToCurvesGeometryHandler {
218
222
  for (const detailB of arcBPoints) {
219
223
  for (const detailA of arcAPoints) {
220
224
  if (detailA.point.isAlmostEqual(detailB.point)) {
221
- if (this.acceptFraction(extendA, detailA.fraction, extendA)
222
- && this.acceptFraction(extendB, detailB.fraction, extendB)) {
223
- this.recordPointWithLocalFractions(detailA.fraction, cpA, 0, 1, detailB.fraction, cpB, 0, 1, reversed);
225
+ const arcFractionA = cpA.sweep.fractionToSignedPeriodicFraction(detailA.fraction, extendA0);
226
+ const arcFractionB = cpB.sweep.fractionToSignedPeriodicFraction(detailB.fraction, extendB0);
227
+ if (this.acceptFraction(extendA0, arcFractionA, extendA1)
228
+ && this.acceptFraction(extendB0, arcFractionB, extendB1)) {
229
+ this.recordPointWithLocalFractions(arcFractionA, cpA, 0, 1, arcFractionB, cpB, 0, 1, reversed);
224
230
  }
225
231
  }
226
232
  }
@@ -230,7 +236,8 @@ export class CurveCurveIntersectXYZ extends RecurseToCurvesGeometryHandler {
230
236
  // Caller accesses data from two arcs.
231
237
  // Selects the best conditioned arc (in xy parts) as "circle after inversion".
232
238
  // Solves the arc-arc equations.
233
- dispatchArcBsplineCurve3d(_arc, _extendA, _cpB, _extendB, _reversed) {
239
+ dispatchArcBsplineCurve3d(_arc, _extendA0, _extendA1, _cpB, _extendB0, _extendB1, _reversed) {
240
+ // TODO: B-spline XYZ intersection implementation
234
241
  /*
235
242
  // Arc: X = C + cU + sV
236
243
  // implicitize the arc as viewed. This "3d" matrix is homogeneous "XYW" not "xyz"
@@ -291,9 +298,9 @@ export class CurveCurveIntersectXYZ extends RecurseToCurvesGeometryHandler {
291
298
  const bcurvePoint4d = bezier.fractionToPoint4d(root);
292
299
  const c = bcurvePoint4d.dotProductXYZW(axx, axy, axz, axw);
293
300
  const s = bcurvePoint4d.dotProductXYZW(ayx, ayy, ayz, ayw);
294
- const arcFraction = cpA.sweep.radiansToSignedPeriodicFraction(Math.atan2(s, c));
295
- if (this.acceptFraction(extendA, arcFraction, extendA) &&
296
- this.acceptFraction(extendB, fractionB, extendB)) {
301
+ const arcFraction = cpA.sweep.radiansToSignedFraction(Math.atan2(s, c), _extendA0);
302
+ if (this.acceptFraction(_extendA0, arcFraction, _extendA1) &&
303
+ this.acceptFraction(_extendB0, fractionB, _extendB1)) {
297
304
  this.recordPointWithLocalFractions(
298
305
  arcFraction, cpA, 0, 1, fractionB, cpB, 0, 1, reversed,
299
306
  );
@@ -305,6 +312,7 @@ export class CurveCurveIntersectXYZ extends RecurseToCurvesGeometryHandler {
305
312
  }
306
313
  */
307
314
  }
315
+ // TODO: Bezier XYZ intersection implementation
308
316
  /*
309
317
  // Apply the transformation to bezier curves. Optionally construct ranges.
310
318
  private transformBeziers(beziers: BezierCurve3dH[]): void {
@@ -350,8 +358,8 @@ export class CurveCurveIntersectXYZ extends RecurseToCurvesGeometryHandler {
350
358
  const bcurvePoint4d = bezier.fractionToPoint4d(root);
351
359
  const c = bcurvePoint4d.dotProductXYZW(axx, axy, axz, axw);
352
360
  const s = bcurvePoint4d.dotProductXYZW(ayx, ayy, ayz, ayw);
353
- const arcFraction = cpA.sweep.radiansToSignedPeriodicFraction(Math.atan2(s, c));
354
- if (this.acceptFraction(extendA, arcFraction, extendA) && this.acceptFraction(extendB, fractionB, extendB)) {
361
+ const arcFraction = cpA.sweep.radiansToSignedFraction(Math.atan2(s, c), extendA0);
362
+ if (this.acceptFraction(extendA0, arcFraction, extendA1) && this.acceptFraction(extendB0, fractionB, extendB1)) {
355
363
  this.recordPointWithLocalFractions(
356
364
  arcFraction, cpA, 0, 1, fractionB, cpB, 0, 1, reversed,
357
365
  );
@@ -418,6 +426,7 @@ export class CurveCurveIntersectXYZ extends RecurseToCurvesGeometryHandler {
418
426
  // Selects the best conditioned arc (in xy parts) as "circle after inversion".
419
427
  // Solves the arc-arc equations.
420
428
  dispatchBSplineCurve3dBSplineCurve3d(_bcurveA, _bcurveB, _reversed) {
429
+ // TODO: B-spline XYZ intersection implementation
421
430
  /*
422
431
  const bezierSpanA = bcurveA.collectBezierSpans(true) as BezierCurve3dH[];
423
432
  const bezierSpanB = bcurveB.collectBezierSpans(true) as BezierCurve3dH[];
@@ -481,7 +490,8 @@ export class CurveCurveIntersectXYZ extends RecurseToCurvesGeometryHandler {
481
490
  // Caller accesses data from segment and bsplineCurve
482
491
  // Selects the best conditioned arc (in xy parts) as "circle after inversion"
483
492
  // Solves the arc-arc equations
484
- dispatchSegmentBsplineCurve(_cpA, _extendA0, _pointA0, _fractionA0, _pointA1, _fractionA1, _extendA1, _bcurve, _extendB, _reversed) {
493
+ dispatchSegmentBsplineCurve(_cpA, _extendA0, _pointA0, _fractionA0, _pointA1, _fractionA1, _extendA1, _bcurve, _extendB0, _extendB1, _reversed) {
494
+ // TODO: B-spline XYZ intersection implementation
485
495
  /*
486
496
  const pointA0H = this.projectPoint(pointA0);
487
497
  const pointA1H = this.projectPoint(pointA1);
@@ -498,8 +508,8 @@ export class CurveCurveIntersectXYZ extends RecurseToCurvesGeometryHandler {
498
508
  const curvePoint = detail.point;
499
509
  const curvePointH = this.projectPoint(curvePoint);
500
510
  const lineFraction = SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, curvePointH);
501
- if (lineFraction !== undefined && this.acceptFraction(extendA0, lineFraction, extendA1) &&
502
- this.acceptFraction(extendB, fractionB, extendB)) {
511
+ if (lineFraction !== undefined && this.acceptFraction(_extendA0, lineFraction, _extendA1) &&
512
+ this.acceptFraction(_extendB0, fractionB, _extendB1)) {
503
513
  this.recordPointWithLocalFractions(
504
514
  lineFraction, cpA, fractionA0, fractionA1, fractionB, bcurve, 0, 1, reversed,
505
515
  );
@@ -508,7 +518,8 @@ export class CurveCurveIntersectXYZ extends RecurseToCurvesGeometryHandler {
508
518
  */
509
519
  }
510
520
  /** Low level dispatch of linestring with (beziers of) a bspline curve */
511
- dispatchLineStringBSplineCurve(_lsA, _extendA, _curveB, _extendB, _reversed) {
521
+ dispatchLineStringBSplineCurve(_lsA, _extendA0, _extendA1, _curveB, _extendB0, _extendB1, _reversed) {
522
+ // TODO: B-spline XYZ intersection implementation
512
523
  /*
513
524
  const numA = lsA.numPoints();
514
525
  if (numA > 1) {
@@ -523,15 +534,15 @@ export class CurveCurveIntersectXYZ extends RecurseToCurvesGeometryHandler {
523
534
  lsA.pointAt(iA, pointA1);
524
535
  fA1 = iA * dfA;
525
536
  this.dispatchSegmentBsplineCurve(
526
- lsA, iA === 1 && extendA, pointA0, fA0, pointA1, fA1, (iA + 1) === numA && extendA,
527
- curveB, extendB, reversed);
537
+ lsA, iA === 1 && _extendA0, pointA0, fA0, pointA1, fA1, (iA + 1) === numA && _extendA1,
538
+ curveB, _extendB0, _extendB1 reversed);
528
539
  }
529
540
  }
530
541
  return undefined;
531
542
  */
532
543
  }
533
544
  /** Detail computation for segment intersecting linestring. */
534
- computeSegmentLineString(lsA, extendA, lsB, extendB, reversed) {
545
+ computeSegmentLineString(lsA, extendA0, extendA1, lsB, extendB0, extendB1, reversed) {
535
546
  const pointA0 = lsA.point0Ref;
536
547
  const pointA1 = lsA.point1Ref;
537
548
  const pointB0 = CurveCurveIntersectXYZ._workPointBB0;
@@ -546,13 +557,13 @@ export class CurveCurveIntersectXYZ extends RecurseToCurvesGeometryHandler {
546
557
  for (let ib = 1; ib < numB; ib++, pointB0.setFrom(pointB1), fB0 = fB1) {
547
558
  lsB.pointAt(ib, pointB1);
548
559
  fB1 = ib * dfB;
549
- this.dispatchSegmentSegment(lsA, extendA, pointA0, 0.0, pointA1, 1.0, extendA, lsB, ib === 1 && extendB, pointB0, fB0, pointB1, fB1, (ib + 1) === numB && extendB, reversed);
560
+ this.dispatchSegmentSegment(lsA, extendA0, pointA0, 0.0, pointA1, 1.0, extendA1, lsB, ib === 1 && extendB0, pointB0, fB0, pointB1, fB1, (ib + 1) === numB && extendB1, reversed);
550
561
  }
551
562
  }
552
563
  return undefined;
553
564
  }
554
565
  /** Detail computation for arc intersecting linestring. */
555
- computeArcLineString(arcA, extendA, lsB, extendB, reversed) {
566
+ computeArcLineString(arcA, extendA0, extendA1, lsB, extendB0, extendB1, reversed) {
556
567
  const pointB0 = CurveCurveIntersectXYZ._workPointBB0;
557
568
  const pointB1 = CurveCurveIntersectXYZ._workPointBB1;
558
569
  const numB = lsB.numPoints();
@@ -565,7 +576,7 @@ export class CurveCurveIntersectXYZ extends RecurseToCurvesGeometryHandler {
565
576
  for (let ib = 1; ib < numB; ib++, pointB0.setFrom(pointB1), fB0 = fB1) {
566
577
  lsB.pointAt(ib, pointB1);
567
578
  fB1 = ib * dfB;
568
- this.dispatchSegmentArc(lsB, ib === 1 && extendB, pointB0, fB0, pointB1, fB1, (ib + 1) === numB && extendB, arcA, extendA, extendA, !reversed);
579
+ this.dispatchSegmentArc(lsB, ib === 1 && extendB0, pointB0, fB0, pointB1, fB1, (ib + 1) === numB && extendB1, arcA, extendA0, extendA1, !reversed);
569
580
  }
570
581
  }
571
582
  return undefined;
@@ -586,8 +597,6 @@ export class CurveCurveIntersectXYZ extends RecurseToCurvesGeometryHandler {
586
597
  let fB0;
587
598
  let fA1;
588
599
  let fB1;
589
- const extendA = this._extendA;
590
- const extendB = this._extendB;
591
600
  lsA.pointAt(0, pointA0);
592
601
  for (let ia = 1; ia < numA; ia++, pointA0.setFrom(pointA1), fA0 = fA1) {
593
602
  fA1 = ia * dfA;
@@ -597,23 +606,45 @@ export class CurveCurveIntersectXYZ extends RecurseToCurvesGeometryHandler {
597
606
  for (let ib = 1; ib < numB; ib++, pointB0.setFrom(pointB1), fB0 = fB1) {
598
607
  lsB.pointAt(ib, pointB1);
599
608
  fB1 = ib * dfB;
600
- this.dispatchSegmentSegment(lsA, ia === 1 && extendA, pointA0, fA0, pointA1, fA1, (ia + 1) === numA && extendA, lsB, ib === 1 && extendB, pointB0, fB0, pointB1, fB1, (ib + 1) === numB && extendB, reversed);
609
+ this.dispatchSegmentSegment(lsA, ia === 1 && this._extendA0, pointA0, fA0, pointA1, fA1, (ia + 1) === numA && this._extendA1, lsB, ib === 1 && this._extendB0, pointB0, fB0, pointB1, fB1, (ib + 1) === numB && this._extendB1, reversed);
601
610
  }
602
611
  }
603
612
  }
604
613
  }
605
- /** Low level dispatch of curve collection. */
614
+ /**
615
+ * Low level dispatch of curve collection.
616
+ * We take care of extend variables of geometry's children here if geometry is Path or Loop.
617
+ */
606
618
  dispatchCurveCollection(geomA, geomAHandler) {
607
619
  const geomB = this._geometryB; // save
608
620
  if (!geomB || !geomB.children || !(geomB instanceof CurveCollection))
609
621
  return;
610
- for (const child of geomB.children) {
611
- this.resetGeometry(child);
622
+ const children = geomB.children;
623
+ const extendB0 = this._extendB0; // save
624
+ const extendB1 = this._extendB1; // save
625
+ for (let i = 0; i < children.length; i++) {
626
+ this.resetGeometry(children[i]);
627
+ if (geomB instanceof Path && children.length > 1) {
628
+ if (i === 0)
629
+ this._extendB1 = false; // first child can only extend from start
630
+ else if (i === children.length - 1)
631
+ this._extendB0 = false; // last child can only extend from end
632
+ else
633
+ this._extendB0 = this._extendB1 = false; // middle children cannot extend
634
+ }
635
+ else if (geomB instanceof Loop) {
636
+ this._extendB0 = this._extendB1 = false; // Loops cannot extend
637
+ }
612
638
  geomAHandler(geomA);
639
+ this._extendB0 = extendB0; // restore
640
+ this._extendB1 = extendB1; // restore
613
641
  }
614
- this._geometryB = geomB; // restore
642
+ this.resetGeometry(geomB); // restore
615
643
  }
616
- /** Low level dispatch to geomA given a CurveChainWithDistanceIndex in geometryB. */
644
+ /**
645
+ * Low level dispatch of CurveChainWithDistanceIndex.
646
+ * We take care of extend variables of geometry's children here if geometry.path is Path or Loop.
647
+ */
617
648
  dispatchCurveChainWithDistanceIndex(geomA, geomAHandler) {
618
649
  if (!this._geometryB || !(this._geometryB instanceof CurveChainWithDistanceIndex))
619
650
  return;
@@ -623,27 +654,51 @@ export class CurveCurveIntersectXYZ extends RecurseToCurvesGeometryHandler {
623
654
  }
624
655
  const index0 = this._results.length;
625
656
  const geomB = this._geometryB; // save
626
- for (const child of geomB.path.children) {
627
- this.resetGeometry(child);
628
- geomAHandler(geomA);
629
- }
657
+ this.resetGeometry(geomB.path);
658
+ this.dispatchCurveCollection(geomA, geomAHandler);
630
659
  this.resetGeometry(geomB); // restore
631
660
  this._results = CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, index0, undefined, geomB, true);
632
661
  }
662
+ /**
663
+ * Invoke `child.dispatchToGeometryHandler(this)` for each child in the array returned by the query `g.children`.
664
+ * We take care of extend variables of geometry's children here if geometry is Path or Loop.
665
+ */
666
+ handleChildren(g) {
667
+ const children = g.children;
668
+ const extendA0 = this._extendA0; // save
669
+ const extendA1 = this._extendA1; // save
670
+ if (children)
671
+ for (let i = 0; i < children.length; i++) {
672
+ if (g instanceof Path && children.length > 1) {
673
+ if (i === 0)
674
+ this._extendA1 = false; // first child can only extend from start
675
+ else if (i === children.length - 1)
676
+ this._extendA0 = false; // last child can only extend from end
677
+ else
678
+ this._extendA0 = this._extendA1 = false; // middle children cannot extend
679
+ }
680
+ else if (g instanceof Loop) {
681
+ this._extendA0 = this._extendA1 = false; // Loops cannot extend
682
+ }
683
+ children[i].dispatchToGeometryHandler(this);
684
+ this._extendA0 = extendA0; // restore
685
+ this._extendA1 = extendA1; // restore
686
+ }
687
+ }
633
688
  /** Double dispatch handler for strongly typed segment. */
634
689
  handleLineSegment3d(segmentA) {
635
690
  if (this._geometryB instanceof LineSegment3d) {
636
691
  const segmentB = this._geometryB;
637
- this.dispatchSegmentSegment(segmentA, this._extendA, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA, segmentB, this._extendB, segmentB.point0Ref, 0.0, segmentB.point1Ref, 1.0, this._extendB, false);
692
+ this.dispatchSegmentSegment(segmentA, this._extendA0, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA1, segmentB, this._extendB0, segmentB.point0Ref, 0.0, segmentB.point1Ref, 1.0, this._extendB1, false);
638
693
  }
639
694
  else if (this._geometryB instanceof LineString3d) {
640
- this.computeSegmentLineString(segmentA, this._extendA, this._geometryB, this._extendB, false);
695
+ this.computeSegmentLineString(segmentA, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
641
696
  }
642
697
  else if (this._geometryB instanceof Arc3d) {
643
- this.dispatchSegmentArc(segmentA, this._extendA, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA, this._geometryB, this._extendB, this._extendB, false);
698
+ this.dispatchSegmentArc(segmentA, this._extendA0, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
644
699
  }
645
700
  else if (this._geometryB instanceof BSplineCurve3d) {
646
- this.dispatchSegmentBsplineCurve(segmentA, this._extendA, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA, this._geometryB, this._extendB, false);
701
+ this.dispatchSegmentBsplineCurve(segmentA, this._extendA0, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
647
702
  }
648
703
  else if (this._geometryB instanceof CurveCollection) {
649
704
  this.dispatchCurveCollection(segmentA, this.handleLineSegment3d.bind(this));
@@ -660,13 +715,13 @@ export class CurveCurveIntersectXYZ extends RecurseToCurvesGeometryHandler {
660
715
  this.computeLineStringLineString(lsA, lsB, false);
661
716
  }
662
717
  else if (this._geometryB instanceof LineSegment3d) {
663
- this.computeSegmentLineString(this._geometryB, this._extendB, lsA, this._extendA, true);
718
+ this.computeSegmentLineString(this._geometryB, this._extendB0, this._extendB1, lsA, this._extendA0, this._extendA1, true);
664
719
  }
665
720
  else if (this._geometryB instanceof Arc3d) {
666
- this.computeArcLineString(this._geometryB, this._extendB, lsA, this._extendA, true);
721
+ this.computeArcLineString(this._geometryB, this._extendB0, this._extendB1, lsA, this._extendA0, this._extendA1, true);
667
722
  }
668
723
  else if (this._geometryB instanceof BSplineCurve3d) {
669
- this.dispatchLineStringBSplineCurve(lsA, this._extendA, this._geometryB, this._extendB, false);
724
+ this.dispatchLineStringBSplineCurve(lsA, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
670
725
  }
671
726
  else if (this._geometryB instanceof CurveCollection) {
672
727
  this.dispatchCurveCollection(lsA, this.handleLineString3d.bind(this));
@@ -679,16 +734,16 @@ export class CurveCurveIntersectXYZ extends RecurseToCurvesGeometryHandler {
679
734
  /** Double dispatch handler for strongly typed arc. */
680
735
  handleArc3d(arc0) {
681
736
  if (this._geometryB instanceof LineSegment3d) {
682
- this.dispatchSegmentArc(this._geometryB, this._extendB, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB, arc0, this._extendA, this._extendA, true);
737
+ this.dispatchSegmentArc(this._geometryB, this._extendB0, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB1, arc0, this._extendA0, this._extendA1, true);
683
738
  }
684
739
  else if (this._geometryB instanceof LineString3d) {
685
- this.computeArcLineString(arc0, this._extendA, this._geometryB, this._extendB, false);
740
+ this.computeArcLineString(arc0, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
686
741
  }
687
742
  else if (this._geometryB instanceof Arc3d) {
688
- this.dispatchArcArc(arc0, this._extendA, this._geometryB, this._extendB, false);
743
+ this.dispatchArcArc(arc0, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
689
744
  }
690
745
  else if (this._geometryB instanceof BSplineCurve3d) {
691
- this.dispatchArcBsplineCurve3d(arc0, this._extendA, this._geometryB, this._extendB, false);
746
+ this.dispatchArcBsplineCurve3d(arc0, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
692
747
  }
693
748
  else if (this._geometryB instanceof CurveCollection) {
694
749
  this.dispatchCurveCollection(arc0, this.handleArc3d.bind(this));
@@ -701,13 +756,13 @@ export class CurveCurveIntersectXYZ extends RecurseToCurvesGeometryHandler {
701
756
  /** Double dispatch handler for strongly typed bspline curve. */
702
757
  handleBSplineCurve3d(curve) {
703
758
  if (this._geometryB instanceof LineSegment3d) {
704
- this.dispatchSegmentBsplineCurve(this._geometryB, this._extendB, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB, curve, this._extendA, true);
759
+ this.dispatchSegmentBsplineCurve(this._geometryB, this._extendB0, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB1, curve, this._extendA0, this._extendA1, true);
705
760
  }
706
761
  else if (this._geometryB instanceof LineString3d) {
707
- this.dispatchLineStringBSplineCurve(this._geometryB, this._extendB, curve, this._extendA, true);
762
+ this.dispatchLineStringBSplineCurve(this._geometryB, this._extendB0, this._extendB1, curve, this._extendA0, this._extendA1, true);
708
763
  }
709
764
  else if (this._geometryB instanceof Arc3d) {
710
- this.dispatchArcBsplineCurve3d(this._geometryB, this._extendB, curve, this._extendA, true);
765
+ this.dispatchArcBsplineCurve3d(this._geometryB, this._extendB0, this._extendB1, curve, this._extendA0, this._extendA1, true);
711
766
  }
712
767
  else if (this._geometryB instanceof BSplineCurve3dBase) {
713
768
  this.dispatchBSplineCurve3dBSplineCurve3d(curve, this._geometryB, false);
@@ -733,12 +788,17 @@ export class CurveCurveIntersectXYZ extends RecurseToCurvesGeometryHandler {
733
788
  // "easy" if both present BezierCurve3dH span loaders
734
789
  if (this._geometryB instanceof LineSegment3d) {
735
790
  this.dispatchSegmentBsplineCurve(
736
- this._geometryB, this._extendB, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB,
737
- curve, this._extendA, true);
791
+ this._geometryB, this._extendB0, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB1,
792
+ curve, this._extendA0, this.extendA1, true,
793
+ );
738
794
  } else if (this._geometryB instanceof LineString3d) {
739
- this.dispatchLineStringBSplineCurve(this._geometryB, this._extendB, curve, this._extendA, true);
795
+ this.dispatchLineStringBSplineCurve(
796
+ this._geometryB, this._extendB0, this._extendB1, curve, this._extendA0, this._extendA1, true,
797
+ );
740
798
  } else if (this._geometryB instanceof Arc3d) {
741
- this.dispatchArcBsplineCurve3d(this._geometryB, this._extendB, curve, this._extendA, true);
799
+ this.dispatchArcBsplineCurve3d(
800
+ this._geometryB, this._extendB0, this._extendB1, curve, this._extendA0, this._extendA1, true,
801
+ );
742
802
  }
743
803
  */
744
804
  return undefined;