@itwin/core-geometry 5.1.1 → 5.1.3-experimental.1

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 (450) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/lib/cjs/Constant.js.map +1 -1
  3. package/lib/cjs/Geometry.js.map +1 -1
  4. package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
  5. package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
  6. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  7. package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
  8. package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
  9. package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
  10. package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
  11. package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
  12. package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
  13. package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
  14. package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
  15. package/lib/cjs/bspline/KnotVector.js.map +1 -1
  16. package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -1
  17. package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
  18. package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -1
  19. package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
  20. package/lib/cjs/clipping/ClipPlane.js.map +1 -1
  21. package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
  22. package/lib/cjs/clipping/ClipUtils.js.map +1 -1
  23. package/lib/cjs/clipping/ClipVector.js.map +1 -1
  24. package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
  25. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  26. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  27. package/lib/cjs/core-geometry.js.map +1 -1
  28. package/lib/cjs/curve/Arc3d.js.map +1 -1
  29. package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
  30. package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
  31. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  32. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  33. package/lib/cjs/curve/CurveCurve.js.map +1 -1
  34. package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
  35. package/lib/cjs/curve/CurveFactory.js.map +1 -1
  36. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  37. package/lib/cjs/curve/CurveOps.js.map +1 -1
  38. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  39. package/lib/cjs/curve/CurveProcessor.js.map +1 -1
  40. package/lib/cjs/curve/CurveTypes.js.map +1 -1
  41. package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
  42. package/lib/cjs/curve/GeometryQuery.js.map +1 -1
  43. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  44. package/lib/cjs/curve/LineString3d.js.map +1 -1
  45. package/lib/cjs/curve/Loop.js.map +1 -1
  46. package/lib/cjs/curve/OffsetOptions.js.map +1 -1
  47. package/lib/cjs/curve/ParityRegion.js.map +1 -1
  48. package/lib/cjs/curve/Path.js.map +1 -1
  49. package/lib/cjs/curve/PointString3d.js.map +1 -1
  50. package/lib/cjs/curve/ProxyCurve.js.map +1 -1
  51. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  52. package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
  53. package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
  54. package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
  55. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  56. package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
  57. package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
  58. package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
  59. package/lib/cjs/curve/RegionOps.js.map +1 -1
  60. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  61. package/lib/cjs/curve/StrokeOptions.js.map +1 -1
  62. package/lib/cjs/curve/UnionRegion.js.map +1 -1
  63. package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
  64. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  65. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  66. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  67. package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  68. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  69. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  70. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  71. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  72. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  73. package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
  74. package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  75. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  76. package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
  77. package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
  78. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  79. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  80. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  81. package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
  82. package/lib/cjs/curve/internalContexts/TransferWithSplitArcs.js.map +1 -1
  83. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  84. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  85. package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
  86. package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
  87. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  88. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  89. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
  90. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  91. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  92. package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
  93. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  94. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  95. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
  96. package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
  97. package/lib/cjs/geometry3d/Angle.js.map +1 -1
  98. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
  99. package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
  100. package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
  101. package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
  102. package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
  103. package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
  104. package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
  105. package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
  106. package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
  107. package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
  108. package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
  109. package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
  110. package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
  111. package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
  112. package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
  113. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  114. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  115. package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
  116. package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
  117. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  118. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  119. package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
  120. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  121. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  122. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  123. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  124. package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
  125. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  126. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  127. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
  128. package/lib/cjs/geometry3d/Range.js.map +1 -1
  129. package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
  130. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  131. package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
  132. package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
  133. package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
  134. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  135. package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
  136. package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
  137. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  138. package/lib/cjs/geometry4d/Map4d.js.map +1 -1
  139. package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
  140. package/lib/cjs/geometry4d/MomentData.js.map +1 -1
  141. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  142. package/lib/cjs/geometry4d/Point4d.js.map +1 -1
  143. package/lib/cjs/numerics/BandedSystem.js.map +1 -1
  144. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
  145. package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
  146. package/lib/cjs/numerics/Complex.js.map +1 -1
  147. package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
  148. package/lib/cjs/numerics/Newton.js.map +1 -1
  149. package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
  150. package/lib/cjs/numerics/PolarData.js.map +1 -1
  151. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  152. package/lib/cjs/numerics/Quadrature.js.map +1 -1
  153. package/lib/cjs/numerics/Range1dArray.js.map +1 -1
  154. package/lib/cjs/numerics/SmallSystem.js.map +1 -1
  155. package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
  156. package/lib/cjs/numerics/UnionFind.js.map +1 -1
  157. package/lib/cjs/numerics/UsageSums.js.map +1 -1
  158. package/lib/cjs/polyface/AuxData.js.map +1 -1
  159. package/lib/cjs/polyface/BoxTopology.js.map +1 -1
  160. package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
  161. package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
  162. package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
  163. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  164. package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
  165. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  166. package/lib/cjs/polyface/IndexedPolyfaceWalker.js.map +1 -1
  167. package/lib/cjs/polyface/Polyface.js.map +1 -1
  168. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  169. package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
  170. package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
  171. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  172. package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
  173. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  174. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  175. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  176. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  177. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  178. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  179. package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
  180. package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
  181. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  182. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  183. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  184. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  185. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  186. package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  187. package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
  188. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  189. package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
  190. package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
  191. package/lib/cjs/serialization/BGFBReader.js.map +1 -1
  192. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  193. package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  194. package/lib/cjs/serialization/DeepCompare.js.map +1 -1
  195. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  196. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  197. package/lib/cjs/serialization/SerializationHelpers.js.map +1 -1
  198. package/lib/cjs/solid/Box.js.map +1 -1
  199. package/lib/cjs/solid/Cone.js.map +1 -1
  200. package/lib/cjs/solid/LinearSweep.js.map +1 -1
  201. package/lib/cjs/solid/RotationalSweep.js.map +1 -1
  202. package/lib/cjs/solid/RuledSweep.js.map +1 -1
  203. package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
  204. package/lib/cjs/solid/Sphere.js.map +1 -1
  205. package/lib/cjs/solid/SweepContour.js.map +1 -1
  206. package/lib/cjs/solid/TorusPipe.js.map +1 -1
  207. package/lib/cjs/topology/ChainMerge.js.map +1 -1
  208. package/lib/cjs/topology/Graph.js.map +1 -1
  209. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  210. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  211. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  212. package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
  213. package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
  214. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  215. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  216. package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
  217. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
  218. package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
  219. package/lib/cjs/topology/MaskManager.js.map +1 -1
  220. package/lib/cjs/topology/Merging.js.map +1 -1
  221. package/lib/cjs/topology/RegularizeFace.js.map +1 -1
  222. package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
  223. package/lib/cjs/topology/SpaceTriangulation.js.map +1 -1
  224. package/lib/cjs/topology/Triangulation.js.map +1 -1
  225. package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
  226. package/lib/esm/Constant.js.map +1 -1
  227. package/lib/esm/Geometry.js.map +1 -1
  228. package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
  229. package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
  230. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  231. package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
  232. package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
  233. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  234. package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
  235. package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
  236. package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
  237. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  238. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  239. package/lib/esm/bspline/KnotVector.js.map +1 -1
  240. package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
  241. package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
  242. package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
  243. package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
  244. package/lib/esm/clipping/ClipPlane.js.map +1 -1
  245. package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
  246. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  247. package/lib/esm/clipping/ClipVector.js.map +1 -1
  248. package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
  249. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  250. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  251. package/lib/esm/core-geometry.js.map +1 -1
  252. package/lib/esm/curve/Arc3d.js.map +1 -1
  253. package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
  254. package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
  255. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  256. package/lib/esm/curve/CurveCollection.js.map +1 -1
  257. package/lib/esm/curve/CurveCurve.js.map +1 -1
  258. package/lib/esm/curve/CurveExtendMode.js.map +1 -1
  259. package/lib/esm/curve/CurveFactory.js.map +1 -1
  260. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  261. package/lib/esm/curve/CurveOps.js.map +1 -1
  262. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  263. package/lib/esm/curve/CurveProcessor.js.map +1 -1
  264. package/lib/esm/curve/CurveTypes.js.map +1 -1
  265. package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
  266. package/lib/esm/curve/GeometryQuery.js.map +1 -1
  267. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  268. package/lib/esm/curve/LineString3d.js.map +1 -1
  269. package/lib/esm/curve/Loop.js.map +1 -1
  270. package/lib/esm/curve/OffsetOptions.js.map +1 -1
  271. package/lib/esm/curve/ParityRegion.js.map +1 -1
  272. package/lib/esm/curve/Path.js.map +1 -1
  273. package/lib/esm/curve/PointString3d.js.map +1 -1
  274. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  275. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  276. package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
  277. package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
  278. package/lib/esm/curve/Query/InOutTests.js.map +1 -1
  279. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  280. package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
  281. package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
  282. package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
  283. package/lib/esm/curve/RegionOps.js.map +1 -1
  284. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  285. package/lib/esm/curve/StrokeOptions.js.map +1 -1
  286. package/lib/esm/curve/UnionRegion.js.map +1 -1
  287. package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
  288. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  289. package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  290. package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  291. package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  292. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  293. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  294. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  295. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  296. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  297. package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
  298. package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  299. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  300. package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
  301. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  302. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  303. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  304. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  305. package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
  306. package/lib/esm/curve/internalContexts/TransferWithSplitArcs.js.map +1 -1
  307. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  308. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  309. package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
  310. package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
  311. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  312. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  313. package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
  314. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  315. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  316. package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
  317. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  318. package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  319. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
  320. package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
  321. package/lib/esm/geometry3d/Angle.js.map +1 -1
  322. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  323. package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
  324. package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
  325. package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
  326. package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
  327. package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
  328. package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
  329. package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
  330. package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
  331. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
  332. package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
  333. package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
  334. package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
  335. package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
  336. package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
  337. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  338. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  339. package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
  340. package/lib/esm/geometry3d/Plane3d.js.map +1 -1
  341. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  342. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  343. package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
  344. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  345. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  346. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  347. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  348. package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
  349. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  350. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  351. package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
  352. package/lib/esm/geometry3d/Range.js.map +1 -1
  353. package/lib/esm/geometry3d/Ray2d.js.map +1 -1
  354. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  355. package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
  356. package/lib/esm/geometry3d/Segment1d.js.map +1 -1
  357. package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
  358. package/lib/esm/geometry3d/Transform.js.map +1 -1
  359. package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
  360. package/lib/esm/geometry3d/XYZProps.js.map +1 -1
  361. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  362. package/lib/esm/geometry4d/Map4d.js.map +1 -1
  363. package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
  364. package/lib/esm/geometry4d/MomentData.js.map +1 -1
  365. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  366. package/lib/esm/geometry4d/Point4d.js.map +1 -1
  367. package/lib/esm/numerics/BandedSystem.js.map +1 -1
  368. package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
  369. package/lib/esm/numerics/ClusterableArray.js.map +1 -1
  370. package/lib/esm/numerics/Complex.js.map +1 -1
  371. package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
  372. package/lib/esm/numerics/Newton.js.map +1 -1
  373. package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
  374. package/lib/esm/numerics/PolarData.js.map +1 -1
  375. package/lib/esm/numerics/Polynomials.js.map +1 -1
  376. package/lib/esm/numerics/Quadrature.js.map +1 -1
  377. package/lib/esm/numerics/Range1dArray.js.map +1 -1
  378. package/lib/esm/numerics/SmallSystem.js.map +1 -1
  379. package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
  380. package/lib/esm/numerics/UnionFind.js.map +1 -1
  381. package/lib/esm/numerics/UsageSums.js.map +1 -1
  382. package/lib/esm/polyface/AuxData.js.map +1 -1
  383. package/lib/esm/polyface/BoxTopology.js.map +1 -1
  384. package/lib/esm/polyface/FacetFaceData.js.map +1 -1
  385. package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
  386. package/lib/esm/polyface/FacetOrientation.js.map +1 -1
  387. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  388. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
  389. package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  390. package/lib/esm/polyface/IndexedPolyfaceWalker.js.map +1 -1
  391. package/lib/esm/polyface/Polyface.js.map +1 -1
  392. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  393. package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
  394. package/lib/esm/polyface/PolyfaceData.js.map +1 -1
  395. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  396. package/lib/esm/polyface/RangeLengthData.js.map +1 -1
  397. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  398. package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  399. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  400. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  401. package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  402. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  403. package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
  404. package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
  405. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  406. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  407. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  408. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  409. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  410. package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  411. package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
  412. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  413. package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
  414. package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
  415. package/lib/esm/serialization/BGFBReader.js.map +1 -1
  416. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  417. package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  418. package/lib/esm/serialization/DeepCompare.js.map +1 -1
  419. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  420. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  421. package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
  422. package/lib/esm/solid/Box.js.map +1 -1
  423. package/lib/esm/solid/Cone.js.map +1 -1
  424. package/lib/esm/solid/LinearSweep.js.map +1 -1
  425. package/lib/esm/solid/RotationalSweep.js.map +1 -1
  426. package/lib/esm/solid/RuledSweep.js.map +1 -1
  427. package/lib/esm/solid/SolidPrimitive.js.map +1 -1
  428. package/lib/esm/solid/Sphere.js.map +1 -1
  429. package/lib/esm/solid/SweepContour.js.map +1 -1
  430. package/lib/esm/solid/TorusPipe.js.map +1 -1
  431. package/lib/esm/topology/ChainMerge.js.map +1 -1
  432. package/lib/esm/topology/Graph.js.map +1 -1
  433. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  434. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  435. package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  436. package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
  437. package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
  438. package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  439. package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  440. package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
  441. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
  442. package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
  443. package/lib/esm/topology/MaskManager.js.map +1 -1
  444. package/lib/esm/topology/Merging.js.map +1 -1
  445. package/lib/esm/topology/RegularizeFace.js.map +1 -1
  446. package/lib/esm/topology/SignedDataSummary.js.map +1 -1
  447. package/lib/esm/topology/SpaceTriangulation.js.map +1 -1
  448. package/lib/esm/topology/Triangulation.js.map +1 -1
  449. package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
  450. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"UnionOfConvexClipPlaneSets.js","sourceRoot":"","sources":["../../../src/clipping/UnionOfConvexClipPlaneSets.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module CartesianGeometry\n */\n\nimport { Arc3d } from \"../curve/Arc3d\";\nimport { AnnounceNumberNumberCurvePrimitive } from \"../curve/CurvePrimitive\";\nimport { LineSegment3d } from \"../curve/LineSegment3d\";\nimport { Geometry } from \"../Geometry\";\nimport { GrowableFloat64Array } from \"../geometry3d/GrowableFloat64Array\";\nimport { GrowableXYZArray } from \"../geometry3d/GrowableXYZArray\";\nimport { IndexedXYZCollection } from \"../geometry3d/IndexedXYZCollection\";\nimport { Point3d } from \"../geometry3d/Point3dVector3d\";\nimport { Range1d, Range3d } from \"../geometry3d/Range\";\nimport { Ray3d } from \"../geometry3d/Ray3d\";\nimport { GrowableXYZArrayCache } from \"../geometry3d/ReusableObjectCache\";\nimport { Segment1d } from \"../geometry3d/Segment1d\";\nimport { Transform } from \"../geometry3d/Transform\";\nimport { Matrix4d } from \"../geometry4d/Matrix4d\";\nimport { Clipper, ClipPlaneContainment, ClipUtilities, PolygonClipper } from \"./ClipUtils\";\nimport { ConvexClipPlaneSet, ConvexClipPlaneSetProps } from \"./ConvexClipPlaneSet\";\n\n/**\n * Wire format describing a [[UnionOfConvexClipPlaneSets]].\n * @public\n */\nexport type UnionOfConvexClipPlaneSetsProps = ConvexClipPlaneSetProps[];\n\n/**\n * A collection of ConvexClipPlaneSets.\n * * A point is \"in\" the clip plane set if it is \"in\" one or more of the ConvexClipPlaneSet\n * * Hence the boolean logic is that the ClipPlaneSet is a UNION of its constituents.\n * @public\n */\nexport class UnionOfConvexClipPlaneSets implements Clipper, PolygonClipper {\n private _convexSets: ConvexClipPlaneSet[];\n /** (property accessor) Return the (reference to the) array of `ConvexClipPlaneSet` */\n public get convexSets(): ConvexClipPlaneSet[] {\n return this._convexSets;\n }\n private constructor() {\n this._convexSets = [];\n }\n /** Return an array with the `toJSON` form of each `ConvexClipPlaneSet` */\n public toJSON(): UnionOfConvexClipPlaneSetsProps {\n const val: ConvexClipPlaneSetProps[] = [];\n for (const convex of this._convexSets)\n val.push(convex.toJSON());\n return val;\n }\n /** Convert json `UnionOfConvexClipPlaneSets`, using `setFromJSON`. */\n public static fromJSON(\n json: UnionOfConvexClipPlaneSetsProps | undefined, result?: UnionOfConvexClipPlaneSets,\n ): UnionOfConvexClipPlaneSets {\n result = result ? result : new UnionOfConvexClipPlaneSets();\n result._convexSets.length = 0;\n if (!Array.isArray(json))\n return result;\n\n for (const thisJson of json)\n result._convexSets.push(ConvexClipPlaneSet.fromJSON(thisJson));\n return result;\n }\n /** Create a `UnionOfConvexClipPlaneSets` with no members. */\n public static createEmpty(result?: UnionOfConvexClipPlaneSets): UnionOfConvexClipPlaneSets {\n if (result) {\n result._convexSets.length = 0;\n return result;\n }\n return new UnionOfConvexClipPlaneSets();\n }\n /**\n * Return true if all member convex sets are almostEqual to corresponding members of other. This includes\n * identical order in array.\n * @param other clip plane to compare.\n */\n public isAlmostEqual(other: UnionOfConvexClipPlaneSets): boolean {\n if (this._convexSets.length !== other._convexSets.length)\n return false;\n for (let i = 0; i < this._convexSets.length; i++)\n if (!this._convexSets[i].isAlmostEqual(other._convexSets[i]))\n return false;\n return true;\n }\n /** Create a `UnionOfConvexClipPlaneSets` with given `ConvexClipPlaneSet` members. */\n public static createConvexSets(\n convexSets: ConvexClipPlaneSet[], result?: UnionOfConvexClipPlaneSets,\n ): UnionOfConvexClipPlaneSets {\n result = result ? result : new UnionOfConvexClipPlaneSets();\n for (const set of convexSets)\n result._convexSets.push(set);\n return result;\n }\n /** Return a deep copy. */\n public clone(result?: UnionOfConvexClipPlaneSets): UnionOfConvexClipPlaneSets {\n result = result ? result : new UnionOfConvexClipPlaneSets();\n result._convexSets.length = 0;\n for (const convexSet of this._convexSets)\n result._convexSets.push(convexSet.clone());\n return result;\n }\n /**\n * Append `toAdd` to the array of `ConvexClipPlaneSet`.\n * * undefined toAdd is ignored.\n */\n public addConvexSet(toAdd: ConvexClipPlaneSet | undefined) {\n if (toAdd)\n this._convexSets.push(toAdd);\n }\n /**\n * Test if there is any intersection with a ray defined by origin and direction.\n * * Optionally record the range (null or otherwise) in caller-allocated result.\n * * If the ray is unbounded inside the clip, result can contain positive or negative\n * \"Geometry.largeCoordinateResult\" values.\n * * If no result is provide, there are no object allocations.\n * @param maximalRange optional Range1d to receive parameters along the ray.\n */\n public hasIntersectionWithRay(ray: Ray3d, maximalRange?: Range1d): boolean {\n if (maximalRange === undefined) {\n // if complete result is not requested, return after any hit.\n for (const planeSet of this._convexSets) {\n if (planeSet.hasIntersectionWithRay(ray))\n return true;\n }\n return false;\n }\n maximalRange.setNull();\n const rangeA = Range1d.createNull();\n for (const planeSet of this._convexSets) {\n if (planeSet.hasIntersectionWithRay(ray, rangeA))\n maximalRange.extendRange(rangeA);\n }\n return !maximalRange.isNull;\n }\n /**\n * Return true if true is returned for any contained convex set returns true for\n * `convexSet.isPointInside (point, tolerance)`.\n */\n public isPointInside(point: Point3d): boolean {\n for (const convexSet of this._convexSets) {\n if (convexSet.isPointInside(point)) {\n return true;\n }\n }\n return false;\n }\n /**\n * Return true if true is returned for any contained convex set returns true for\n * `convexSet.isPointOnOrInside (point, tolerance)`.\n */\n public isPointOnOrInside(point: Point3d, tolerance: number = Geometry.smallMetricDistance): boolean {\n for (const convexSet of this._convexSets) {\n if (convexSet.isPointOnOrInside(point, tolerance))\n return true;\n }\n return false;\n }\n /**\n * Return true if true is returned for any contained convex set returns true for\n * `convexSet.isSphereOnOrInside (point, tolerance)`.\n */\n public isSphereInside(point: Point3d, radius: number) {\n for (const convexSet of this._convexSets) {\n if (convexSet.isSphereInside(point, radius))\n return true;\n }\n return false;\n }\n /** Test if any part of a line segment is within the volume. */\n public isAnyPointInOrOnFromSegment(segment: LineSegment3d): boolean {\n for (const convexSet of this._convexSets) {\n if (convexSet.announceClippedSegmentIntervals(0.0, 1.0, segment.point0Ref, segment.point1Ref))\n return true;\n }\n return false;\n }\n // Intervals must be Segment1d array, as there may be multiple intervals along segment that pass through set regions,\n // and so splitting the intervals into segments aids in better organization\n /** Returns the fractions of the segment that pass through the set region, as 1 dimensional pieces. */\n public appendIntervalsFromSegment(segment: LineSegment3d, intervals: Segment1d[]) {\n for (const convexSet of this._convexSets) {\n convexSet.announceClippedSegmentIntervals(0.0, 1.0, segment.point0Ref, segment.point1Ref,\n (fraction0: number, fraction1: number) =>\n intervals.push(Segment1d.create(fraction0, fraction1)));\n }\n }\n /** Apply `transform` to all the ConvexClipPlaneSet's. */\n public transformInPlace(transform: Transform) {\n for (const convexSet of this._convexSets) {\n convexSet.transformInPlace(transform);\n }\n }\n /** Returns 1, 2, or 3 based on whether point is strongly inside, ambiguous, or strongly outside respectively. */\n public classifyPointContainment(points: Point3d[], onIsOutside: boolean): number {\n for (const convexSet of this._convexSets) {\n const thisStatus = convexSet.classifyPointContainment(points, onIsOutside);\n if (thisStatus !== ClipPlaneContainment.StronglyOutside)\n return thisStatus;\n }\n return ClipPlaneContainment.StronglyOutside;\n }\n /**\n * Clip a polygon using this ClipPlaneSet, returning new polygon boundaries. Note that each polygon may lie\n * next to the previous, or be disconnected.\n */\n public polygonClip(input: GrowableXYZArray | Point3d[], output: GrowableXYZArray[]) {\n output.length = 0;\n if (Array.isArray(input))\n input = GrowableXYZArray.create(input);\n const work = new GrowableXYZArray();\n for (const convexSet of this._convexSets) {\n const convexSetOutput = new GrowableXYZArray();\n convexSet.polygonClip(input, convexSetOutput, work);\n if (convexSetOutput.length !== 0)\n output.push(convexSetOutput);\n }\n }\n /**\n * Announce clipSegment() for each convexSet in this ClipPlaneSet.\n * * all clipPlaneSets are inspected.\n * * announced intervals are for each individual clipPlaneSet -- adjacent intervals are not consolidated.\n * @param f0 active interval start.\n * @param f1 active interval end.\n * @param pointA line segment start.\n * @param pointB line segment end.\n * @param announce function to announce interval.\n * @returns Return true if any announcements are made.\n */\n public announceClippedSegmentIntervals(\n f0: number, f1: number, pointA: Point3d, pointB: Point3d, announce?: (fraction0: number, fraction1: number) => void,\n ): boolean {\n let numAnnounce = 0;\n for (const convexSet of this._convexSets) {\n if (convexSet.announceClippedSegmentIntervals(f0, f1, pointA, pointB, announce))\n numAnnounce++;\n }\n return numAnnounce > 0;\n }\n private static _clipArcFractionArray = new GrowableFloat64Array();\n /**\n * Find parts of an arc that are inside any member clipper.\n * Announce each with `announce(startFraction, endFraction, this)`\n */\n public announceClippedArcIntervals(arc: Arc3d, announce?: AnnounceNumberNumberCurvePrimitive): boolean {\n const breaks = UnionOfConvexClipPlaneSets._clipArcFractionArray;\n breaks.clear();\n for (const convexSet of this._convexSets) {\n for (const clipPlane of convexSet.planes) {\n clipPlane.appendIntersectionRadians(arc, breaks);\n }\n }\n arc.sweep.radiansArrayToPositivePeriodicFractions(breaks);\n return ClipUtilities.selectIntervals01(arc, breaks, this, announce);\n }\n /**\n * Collect the output from computePlanePlanePlaneIntersections in all the contained convex sets.\n * @param points (optional) array to which computed points are to be added.\n * @param rangeToExtend (optional) range to be extended by the computed points.\n * @param transform (optional) transform to apply to the accepted points.\n * @param testContainment if true, test each point to see if it is within the convex set (send false if confident\n * that the convex set is rectilinear set such as a slab. Send true if chiseled corners are possible).\n * @returns number of points.\n */\n public computePlanePlanePlaneIntersectionsInAllConvexSets(\n points: Point3d[] | undefined, rangeToExtend: Range3d | undefined, transform?: Transform, testContainment: boolean = true,\n ): number {\n let n = 0;\n for (const convexSet of this._convexSets) {\n n += convexSet.computePlanePlanePlaneIntersections(points, rangeToExtend, transform, testContainment);\n }\n return n;\n }\n /**\n * Multiply all ClipPlanes DPoint4d by matrix.\n * @param matrix matrix to apply.\n * @param invert if true, use in verse of the matrix.\n * @param transpose if true, use the transpose of the matrix (or inverse, per invert parameter).\n * * Note that if matrixA is applied to all of space, the matrix to send to this method to get a corresponding effect\n * on the plane is the inverse transpose of matrixA.\n * * Callers that will apply the same matrix to many planes should pre-invert the matrix for efficiency.\n * * Both params default to true to get the full effect of transforming space.\n * @param matrix matrix to apply\n */\n public multiplyPlanesByMatrix4d(matrix: Matrix4d, invert: boolean = true, transpose: boolean = true): boolean {\n if (invert) { // form inverse once here, reuse for all planes\n const inverse = matrix.createInverse();\n if (!inverse)\n return false;\n return this.multiplyPlanesByMatrix4d(inverse, false, transpose);\n }\n // (no inversion -- no failures possible)\n for (const convexSet of this._convexSets) {\n convexSet.multiplyPlanesByMatrix4d(matrix, false, transpose);\n }\n return true;\n }\n /** Recursively call `setInvisible` on all member convex sets. */\n public setInvisible(invisible: boolean) {\n for (const convexSet of this._convexSets) {\n convexSet.setInvisible(invisible);\n }\n }\n /** add convex sets that accept points below `zLow` and above `zHigh` */\n public addOutsideZClipSets(invisible: boolean, zLow?: number, zHigh?: number) {\n if (zLow) {\n const convexSet = ConvexClipPlaneSet.createEmpty();\n convexSet.addZClipPlanes(invisible, zLow);\n this._convexSets.push(convexSet);\n }\n if (zHigh) {\n const convexSet = ConvexClipPlaneSet.createEmpty();\n convexSet.addZClipPlanes(invisible, undefined, zHigh);\n this._convexSets.push(convexSet);\n }\n }\n /** Move convex sets from source.*/\n public takeConvexSets(source: UnionOfConvexClipPlaneSets) {\n let convexSet;\n while ((undefined !== (convexSet = source._convexSets.pop()))) {\n this._convexSets.push(convexSet);\n }\n }\n /**\n * Implement appendPolygonClip, as defined in interface PolygonClipper.\n * @param xyz convex polygon. This is not changed.\n * @param insideFragments Array to receive \"inside\" fragments. Each fragment is a GrowableXYZArray grabbed from\n * the cache. This is NOT cleared.\n * @param outsideFragments Array to receive \"outside\" fragments. Each fragment is a GrowableXYZArray grabbed from\n * the cache. This is NOT cleared.\n * @param arrayCache cache for reusable GrowableXYZArray.\n */\n public appendPolygonClip(\n xyz: IndexedXYZCollection,\n insideFragments: GrowableXYZArray[],\n outsideFragments: GrowableXYZArray[],\n arrayCache: GrowableXYZArrayCache,\n ): void {\n const oldOutsideCount = outsideFragments.length;\n const oldInsideCount = insideFragments.length;\n let carryForwardA = [arrayCache.grabAndFill(xyz)];\n let carryForwardB: GrowableXYZArray[] = [];\n let tempAB;\n let shard;\n // At each convex set, carryForwardA is all the fragments that have been outside all previous convex sets.\n // Clip each such fragment to the current set, sending the outside parts to carryForwardB, which will got to the next clipper\n // The final surviving carryForward really is out.\n for (const c of this._convexSets) {\n while (undefined !== (shard = carryForwardA.pop())) {\n c.appendPolygonClip(shard, insideFragments, carryForwardB, arrayCache);\n arrayCache.dropToCache(shard);\n }\n tempAB = carryForwardB;\n carryForwardB = carryForwardA; // and that is empty\n carryForwardA = tempAB;\n }\n while (undefined !== (shard = carryForwardA.pop())) {\n outsideFragments.push(shard);\n }\n if (outsideFragments.length === oldOutsideCount)\n ClipUtilities.restoreSingletonInPlaceOfMultipleShards(insideFragments, oldInsideCount, xyz, arrayCache);\n else if (insideFragments.length === oldInsideCount)\n ClipUtilities.restoreSingletonInPlaceOfMultipleShards(outsideFragments, oldOutsideCount, xyz, arrayCache);\n }\n}\n\n/* FUNCTIONS SKIPPED DUE TO BSPLINES, VU, OR NON-USAGE IN NATIVE CODE----------------------------------------------------------------\n\nInvolves vu: skipping for now...\n public fromSweptPolygon(points: Point3d[], directions: Vector3d[]): ClipPlaneSet;\n public parseConcavePolygonPlanes(...)\n\nUses bsplines... skipping for now:\n public appendIntervalsClipPlaneSetFromCurve();\n\nUses bsplines... skipping for now:\n public isAnyPointInOrOnFrom();\n\nSkipped fromSweptPolygon(...), which is overloaded function from first, due to presence of vu\n public fromSweptPolygon(points: Point3d[], directions: Vector3d[], shapes: Point3d[])\n*/\n"]}
1
+ {"version":3,"file":"UnionOfConvexClipPlaneSets.js","sourceRoot":"","sources":["../../../src/clipping/UnionOfConvexClipPlaneSets.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"LineStringOffsetClipperContext.js","sourceRoot":"","sources":["../../../../src/clipping/internalContexts/LineStringOffsetClipperContext.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { Geometry } from \"../../Geometry\";\nimport { Point3d, Vector3d } from \"../../geometry3d/Point3dVector3d\";\nimport { UnionOfConvexClipPlaneSets } from \"../UnionOfConvexClipPlaneSets\";\nimport { ConvexClipPlaneSet } from \"../ConvexClipPlaneSet\";\nimport { ClipPlane } from \"../ClipPlane\";\nimport { IndexedXYZCollection } from \"../../geometry3d/IndexedXYZCollection\";\n/**\n * Class for building clip sets for offset regions.\n * @internal\n */\nexport class LineStringOffsetClipperContext {\n private _positiveOffsetLeft: number;\n private _positiveOffsetRight: number;\n private _turnDegrees: number;\n private constructor(positiveOffsetLeft: number, positiveOffsetRight: number) {\n this._positiveOffsetLeft = positiveOffsetLeft;\n this._positiveOffsetRight = positiveOffsetRight;\n this._turnDegrees = 60.0;\n }\n /**\n * Create a unit vector from point i to point i+1.\n * If closed, do point indexing with\n * * index less than 0 get final segment\n * * index at or beyond points.length-1 wraps to first segment\n * @param points\n * @param index0\n * @param closed indicates that first and last points are identical and need wrap logic.\n */\n public static createUnit(\n points: IndexedXYZCollection, index0: number, closed: boolean, xyOnly: boolean = true,\n ): Vector3d | undefined {\n // pick two indices of active points, allowing for wrap if needed:\n // normally use index0 and index0 + 1\n // but apply wrap if appropriate, and shift ahead of needed.\n let k0 = index0;\n let k1 = index0 + 1;\n const last = points.length - 1;\n if (closed) {\n if (index0 < 0) {\n k0 = last - 1; k1 = last;\n } else if (index0 >= last) {\n k0 = 0; k1 = 1;\n }\n } else {\n if (index0 === 0) {\n k0 = 0; k1 = 1;\n } else if (k1 > last) {\n k0 = last - 1;\n k1 = last;\n }\n }\n const result = points.vectorIndexIndex(k0, k1);\n if (result) {\n if (xyOnly)\n result.z = 0.0;\n return result.normalize(result);\n }\n return undefined;\n }\n private static createDirectedPlane(\n basePoint: Point3d, vector: Vector3d, shift: number, normalScale: number, interior: boolean = false,\n ): ClipPlane | undefined {\n return ClipPlane.createNormalAndPointXYZXYZ(\n vector.x * normalScale, vector.y * normalScale, vector.z * normalScale,\n basePoint.x + shift * vector.x, basePoint.y + shift * vector.y, basePoint.z + shift * vector.z,\n interior, interior,\n );\n }\n /**\n * Create (if needed) the chamfer cutback plane for a turn.\n * @param clipSet set to receive the plane\n * @param point central point\n * @param unitA incoming vector\n * @param unitB outgoing vector\n */\n private createChamferCut(clipSet: ConvexClipPlaneSet, point: Point3d, unitA: Vector3d, unitB: Vector3d) {\n const degreesA = unitA.angleToXY(unitB).degrees;\n if (Math.abs(degreesA) > this._turnDegrees) {\n const perpAB = unitA.interpolate(0.5, unitB);\n perpAB.rotate90CCWXY(perpAB);\n perpAB.normalizeInPlace();\n if (degreesA > 0)\n clipSet.addPlaneToConvexSet(\n LineStringOffsetClipperContext.createDirectedPlane(point, perpAB, -this._positiveOffsetRight, 1.0, false),\n );\n else\n clipSet.addPlaneToConvexSet(\n LineStringOffsetClipperContext.createDirectedPlane(point, perpAB, this._positiveOffsetLeft, -1.0, false),\n );\n }\n }\n private createOffsetFromSegment(\n pointA: Point3d,\n pointB: Point3d,\n unitA: Vector3d | undefined,\n unitB: Vector3d | undefined,\n unitC: Vector3d | undefined,\n ): ConvexClipPlaneSet | undefined {\n if (unitB === undefined)\n return undefined;\n if (unitA === undefined)\n unitA = unitB;\n if (unitC === undefined)\n unitC = unitB;\n const unitAB = unitA.interpolate(0.5, unitB);\n unitAB.normalizeInPlace();\n const perpB = unitB.rotate90CCWXY();\n const unitBC = unitB.interpolate(0.5, unitC);\n unitBC.normalizeInPlace();\n const clipSet = ConvexClipPlaneSet.createEmpty();\n clipSet.addPlaneToConvexSet(\n LineStringOffsetClipperContext.createDirectedPlane(pointA, perpB, this._positiveOffsetLeft, -1.0, false),\n );\n clipSet.addPlaneToConvexSet(\n LineStringOffsetClipperContext.createDirectedPlane(pointA, perpB, -this._positiveOffsetRight, 1.0, false),\n );\n clipSet.addPlaneToConvexSet(\n LineStringOffsetClipperContext.createDirectedPlane(pointA, unitAB, 0, 1.0, true),\n );\n clipSet.addPlaneToConvexSet(\n LineStringOffsetClipperContext.createDirectedPlane(pointB, unitBC, 0, -1.0, true),\n );\n this.createChamferCut(clipSet, pointA, unitA, unitB);\n this.createChamferCut(clipSet, pointB, unitB, unitC);\n /*\n const degreesA = unitA.angleToXY(unitB).degrees;\n if (Math.abs(degreesA) > this._turnDegrees) {\n const perpAB = unitA.interpolate(0.5, unitB);\n perpAB.rotate90CCWXY(perpAB);\n perpAB.normalizeInPlace();\n if (degreesA > 0)\n clipSet.addPlaneToConvexSet(BuildingCodeRegionOffsetsOps.createDirectedPlane(pointA, perpAB, -this._positiveOffsetRight, 1.0));\n else\n clipSet.addPlaneToConvexSet(BuildingCodeRegionOffsetsOps.createDirectedPlane(pointA, perpAB, -this._positiveOffsetLeft, -1.0));\n }\n const degreesB = unitB.angleToXY(unitC).degrees;\n if (Math.abs(degreesB) > this._turnDegrees) {\n const perpBC = unitB.interpolate(0.5, unitC);\n perpBC.rotate90CCWXY(perpBC);\n perpBC.normalizeInPlace();\n if (degreesB > 0)\n clipSet.addPlaneToConvexSet(BuildingCodeRegionOffsetsOps.createDirectedPlane(pointB, perpBC, -this._positiveOffsetRight, 1.0));\n else\n clipSet.addPlaneToConvexSet(BuildingCodeRegionOffsetsOps.createDirectedPlane(pointB, perpBC, -this._positiveOffsetLeft, -1.0));\n }\n */\n return clipSet;\n }\n /**\n * @param points\n * @param positiveOffsetLeft offset to left. 0 is clip on the path.\n * @param positiveOffsetRight offset to the right. 0 is clip on the path.\n * @param z0 z for lower clipping plane. If undefined, unbounded in positive z\n * @param z1 z for upper clipping plane. If undefined, unbounded in negative z.\n */\n public static createClipBetweenOffsets(\n points: IndexedXYZCollection,\n positiveOffsetLeft: number,\n positiveOffsetRight: number,\n z0: number | undefined,\n z1: number | undefined,\n ): UnionOfConvexClipPlaneSets {\n const context = new LineStringOffsetClipperContext(positiveOffsetLeft, positiveOffsetRight);\n const result = UnionOfConvexClipPlaneSets.createEmpty();\n if (points.length > 1) {\n const closed = Geometry.isSmallMetricDistance(points.distanceIndexIndex(0, points.length - 1)!);\n for (let i = 0; i + 1 < points.length; i++) {\n const unitVectorA = this.createUnit(points, i - 1, closed);\n const unitVectorB = this.createUnit(points, i, closed);\n const unitVectorC = this.createUnit(points, i + 1, closed);\n const clipSet = context.createOffsetFromSegment(points.getPoint3dAtUncheckedPointIndex(i),\n points.getPoint3dAtUncheckedPointIndex(i + 1), unitVectorA, unitVectorB, unitVectorC);\n clipSet?.addZClipPlanes(false, z0, z1);\n if (clipSet)\n result.addConvexSet(clipSet);\n }\n } else {\n // make a singleton clipper with the z values.\n const clipSet = ConvexClipPlaneSet.createEmpty();\n clipSet?.addZClipPlanes(false, z0, z1);\n if (clipSet.planes.length > 0)\n result.addConvexSet(clipSet);\n }\n return result;\n }\n}\n"]}
1
+ {"version":3,"file":"LineStringOffsetClipperContext.js","sourceRoot":"","sources":["../../../../src/clipping/internalContexts/LineStringOffsetClipperContext.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"core-geometry.js","sourceRoot":"","sources":["../../src/core-geometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Utility\n */\n\n// REMARK:\n// The docs-group-description comments are followed by empty classes with names corresponding to the doc-group.\n// Normally (in committed code) these are commented out.\n// The comments have distinctive strings so that simple search and replace can make the \"real\".\n// This is useful when working on the documentation: When the empty classes are present, VSCode will format the doc comments\n// for and display them when the mouse hovers over the class name.\n\n/**\n * @docs-package-description\n * The core-geometry package contains classes for working with geometry: points, vectors, curves, surfaces, and analytic solids\n */\n/**\n * @docs-group-description CartesianGeometry\n * Points, Vectors, Planes, and Transformations for x,y,z geometry.\n * * Fundamental cartesian geometry objects:\n * * Point2d, Point3d -- points with x,y,z coordinates\n * * Vector2d, Vector3d -- vectors with x,y,z coordinates\n * * Matrix3d -- 3x3 matrix\n * * * commonly used for pure rotations\n * * * scale and skew entries are also allowed.\n * * Transform -- an origin and axes.\n * * Range1d, Range2d, Range3d -- subsets of 1d, 2d, and 3d space bounded by low and high values.\n * * Ray3d -- a ray defined by origin and direction vector\n * * Plane3d -- an abstract base class extended by Plane3dByOriginAndNormal, Plane3dByOriginAndUnitNormal, Point4d, and ClipPlane\n * * Plane3dByOriginAndUnitNormal -- a plane defined by an origin and a single vector which is perpendicular to the plane\n * * plane3dByOriginAndVectors -- a plane defined by an origin and two vectors in the plane.\n * * Angles\n * * Angle -- a strongly typed angle object whose method names make it clear whether input and outputs are degrees or radians.\n * * AngleSweep -- an angular interval\n * * LatitudeLongitudeNumber -- carrier for position and altitude on sphere or ellipsoid\n * * YawPitchAndRollAngles -- 3 angles that define a rotated coordinate system.\n * * Utility classes\n * * FrameBuilder -- construction of coordinate frames from mixed data sources.\n * * ClipPlane -- a single plane\n * * ConvexClipPlaneSet -- an array of planes bounding a convex volume\n * * ClipPlaneSet -- an array of ConvexClipPlaneSet, defining the union of their volumes\n * * BilinearPatch -- twisted quadrilateral defined by 4 points\n * * BarycentricTriangle -- triangle defined by 3 points.\n * * Constant -- various numeric values exported as readonly constants\n */\n// doc:export class CartesianGeometryDoc { }\n/**\n * @docs-group-description ArraysAndInterfaces\n * These classes support array operations and inheritance-based algorithms.\n * * Arrays\n * * GrowableArray -- A carrier for a Float64Array, with methods that hide reallocation of the underlying array as contents are added.\n * * Point2dArray, Point3dArray, Point4dArray, Vector3dArray -- miscellaneous operations on arrays of 2d and 3d points.\n * * Interfaces\n * * GeometryHandler -- a double-dispatch protocol used for efficient implementation of algorithms that work on many geometry types.\n *\n */\n// doc:export class ArraysAndInterfacesDoc { }\n\n/**\n * @docs-group-description Bspline\n * A bspline curve or surface is used for curved freeform geometry defined by controls points (sometimes called poles).\n * * BSplineCurve -- a curve defined by control points (which are not on the curve)\n * * InterpolationCurve -- a curve defined by passthrough points, with \"good\" visual properties\n * * BSplineSurfaceXYZ -- a surface with XYZ\n * * BsplineSurfaceXYZW -- a surface with weighted (rational) XYZ coordinates\n * * KnotVector -- vector of breakpoints in bspline definitions.\n */\n// doc:export class BsplineDoc { }\n\n/**\n * @docs-group-description Curve\n * Curves in the GeometryQuery hierarchy: LineSegment3d, LineString3d, Arc3d, TransitionSpiral3d\n * * CurvePrimitive -- base class for parametric curves\n * * LineSegment3d -- a (bounded) portion of an unbounded line\n * * Arc3d -- a circular or elliptic arc\n * * LineString3d -- a sequence of points joined by line segments\n * * TransitionSpiral -- controlled transition between curvatures\n * * Support classes\n * * PointString3d -- a sequence of isolated points\n * * StrokeOptions -- tolerances to describe stroking accuracy\n * * RecursiveCurveProcessor, RecursiveCurveProcessorWithStack -- algorithmic support for trees with CurvePrimitives at the leaf level.\n */\n// doc:export class CurveDoc { }\n/**\n * @docs-group-description Numerics\n * The Numerics classes have geometric and numeric methods used during large algorithms in other classes.\n */\n// doc:export class NumericsDoc { }\n/**\n * @docs-group-description Polyface\n * A Polyface is a mesh structure with arrays of points that are shared among multiple incident facets.\n */\n// doc:export class PolyfaceDoc { }\n/**\n * @docs-group-description Serialization\n * These classes are related to serialization of geometry classes.\n * * IModelJson.Reader, IModelJson.Writer -- Conversion of in-memory geometry objects to json objects for persistence and transmission.\n */\n// doc:export class SerializationDoc { }\n/**\n * @docs-group-description Solid\n * Analytic Solids in the GeometryQuery hierarchy: Box, Sphere, Cone, TorusPipe, LinearSweep, RotationalSweep, RuledSweep\n * * Box -- a box solid. This is usually rectangular on all faces, but can in one directly like a view frustum\n * * Sphere -- a sphere\n * * Cone -- a cone or cylinder\n * * TorusPipe -- a pipe elbow\n * * LinearSweep -- a linear sweep of a base contour\n * * RotationalSweep -- a rotational sweep of a base contour\n * * RuledSweep -- two or more similarly structured contours joined by linear rule lines.\n */\n// doc:export class SolidDOc { }\n/**\n * @docs-group-description Topology\n * The Topology classes provide adjacency structures used in triangulations.\n */\n// doc:export class TopologyDoc { }\n/**\n * @docs-group-description RangeSearch\n * Support classes for searching collections of ranges.\n */\nexport * from \"./geometry3d/Angle\";\nexport * from \"./geometry3d/AngleSweep\";\nexport * from \"./geometry3d/LongitudeLatitudeAltitude\";\nexport * from \"./geometry3d/BarycentricTriangle\";\nexport * from \"./geometry3d/BilinearPatch\";\nexport * from \"./geometry3d/Ellipsoid\";\nexport * from \"./geometry3d/FrameBuilder\";\nexport * from \"./geometry3d/FrustumAnimation\";\nexport * from \"./geometry3d/GeometryHandler\";\nexport * from \"./geometry3d/GrowableBlockedArray\";\nexport * from \"./geometry3d/GrowableFloat64Array\";\nexport * from \"./geometry3d/GrowableXYArray\";\nexport * from \"./geometry3d/GrowableXYZArray\";\nexport * from \"./geometry3d/IndexedCollectionInterval\";\nexport * from \"./geometry3d/IndexedXYCollection\";\nexport * from \"./geometry3d/IndexedXYZCollection\";\nexport * from \"./geometry3d/Matrix3d\";\nexport * from \"./geometry3d/OrderedRotationAngles\";\nexport * from \"./geometry3d/Plane3d\";\nexport * from \"./geometry3d/Plane3dByOriginAndUnitNormal\";\nexport * from \"./geometry3d/Plane3dByOriginAndVectors\";\nexport * from \"./geometry3d/Point2dArrayCarrier\";\nexport * from \"./geometry3d/Point2dVector2d\";\nexport * from \"./geometry3d/Point3dVector3d\";\nexport * from \"./geometry3d/PointHelpers\";\nexport * from \"./geometry3d/Point3dArrayCarrier\";\nexport * from \"./geometry3d/PolylineOps\";\nexport * from \"./geometry3d/PolygonOps\";\nexport * from \"./geometry3d/Range\";\nexport * from \"./geometry3d/Ray2d\";\nexport * from \"./geometry3d/Ray3d\";\nexport * from \"./geometry3d/ReusableObjectCache\";\nexport * from \"./geometry3d/Segment1d\";\nexport * from \"./geometry3d/Transform\";\nexport * from \"./geometry3d/UVSurfaceOps\";\nexport * from \"./geometry3d/XYZProps\";\nexport * from \"./geometry3d/YawPitchRollAngles\";\n\nexport * from \"./Geometry\";\nexport * from \"./Constant\";\nexport * from \"./clipping/BooleanClipFactory\";\nexport * from \"./clipping/ClipPlane\";\nexport * from \"./clipping/ConvexClipPlaneSet\";\nexport * from \"./clipping/UnionOfConvexClipPlaneSets\";\nexport * from \"./clipping/ClipPrimitive\";\nexport * from \"./clipping/ClipVector\";\nexport * from \"./clipping/ClipUtils\";\nexport * from \"./numerics/ConvexPolygon2d\";\nexport * from \"./geometry4d/PlaneByOriginAndVectors4d\";\nexport * from \"./geometry4d/Point4d\";\nexport * from \"./geometry4d/Matrix4d\";\nexport * from \"./geometry4d/Map4d\";\nexport * from \"./geometry4d/MomentData\";\nexport * from \"./numerics/BezierPolynomials\";\nexport * from \"./numerics/ClusterableArray\";\nexport * from \"./numerics/Complex\";\nexport * from \"./numerics/ConvexPolygon2d\";\nexport * from \"./numerics/PascalCoefficients\";\nexport * from \"./numerics/Quadrature\";\nexport * from \"./numerics/Range1dArray\";\nexport * from \"./numerics/SmallSystem\";\nexport * from \"./numerics/TriDiagonalSystem\";\n\nexport * from \"./curve/Arc3d\";\nexport * from \"./curve/ConstructCurveBetweenCurves\";\nexport * from \"./curve/CoordinateXYZ\";\nexport * from \"./curve/CurveTypes\";\nexport * from \"./curve/CurveChainWithDistanceIndex\";\nexport * from \"./curve/CurveExtendMode\";\nexport * from \"./curve/CurveCollection\";\nexport * from \"./curve/CurveCurve\";\nexport * from \"./curve/CurveLocationDetail\";\nexport * from \"./curve/CurveFactory\";\nexport * from \"./curve/CurveOps\";\nexport * from \"./curve/CurvePrimitive\";\nexport * from \"./curve/CurveProcessor\";\nexport * from \"./curve/GeometryQuery\";\nexport * from \"./curve/LineSegment3d\";\nexport * from \"./curve/LineString3d\";\nexport * from \"./curve/Loop\";\nexport * from \"./curve/OffsetOptions\";\nexport * from \"./curve/ParityRegion\";\nexport * from \"./curve/Path\";\nexport * from \"./curve/RegionMomentsXY\";\nexport * from \"./curve/RegionOps\";\nexport * from \"./curve/PointString3d\";\nexport * from \"./curve/ProxyCurve\";\nexport * from \"./curve/StrokeOptions\";\nexport * from \"./curve/spiral/TransitionSpiral3d\";\nexport * from \"./curve/spiral/IntegratedSpiral3d\";\nexport * from \"./curve/spiral/DirectSpiral3d\";\nexport * from \"./curve/UnionRegion\";\nexport * from \"./curve/Query/StrokeCountMap\";\nexport * from \"./solid/Box\";\nexport * from \"./solid/Cone\";\nexport * from \"./solid/LinearSweep\";\nexport * from \"./solid/RotationalSweep\";\nexport * from \"./solid/RuledSweep\";\nexport * from \"./solid/SolidPrimitive\";\nexport * from \"./solid/Sphere\";\nexport * from \"./solid/SweepContour\";\nexport * from \"./solid/TorusPipe\";\nexport * from \"./bspline/AkimaCurve3d\";\nexport * from \"./bspline/Bezier1dNd\";\nexport * from \"./bspline/BezierCurveBase\";\nexport * from \"./bspline/BezierCurve3d\";\nexport * from \"./bspline/BezierCurve3dH\";\nexport * from \"./bspline/BSplineCurve\";\nexport * from \"./bspline/BSplineCurveOps\";\nexport * from \"./bspline/BSpline1dNd\";\nexport * from \"./bspline/BSplineCurve3dH\";\nexport * from \"./bspline/BSplineSurface\";\nexport * from \"./bspline/InterpolationCurve3d\";\nexport * from \"./bspline/KnotVector\";\nexport * from \"./polyface/AuxData\";\nexport * from \"./polyface/BoxTopology\";\nexport * from \"./polyface/FacetFaceData\";\nexport * from \"./polyface/Polyface\";\nexport * from \"./polyface/FacetLocationDetail\";\nexport * from \"./polyface/IndexedEdgeMatcher\";\nexport * from \"./polyface/IndexedPolyfaceVisitor\";\nexport * from \"./polyface/IndexedPolyfaceWalker\";\nexport * from \"./polyface/multiclip/GriddedRaggedRange2dSet\";\nexport * from \"./polyface/multiclip/GriddedRaggedRange2dSetWithOverflow\";\nexport * from \"./polyface/PolyfaceBuilder\";\nexport * from \"./polyface/PolyfaceData\";\nexport * from \"./polyface/PolyfaceQuery\";\nexport * from \"./polyface/PolyfaceClip\";\nexport * from \"./polyface/RangeTree/Point3dArrayRangeTreeContext\";\nexport * from \"./polyface/RangeTree/LineString3dRangeTreeContext\";\nexport * from \"./polyface/RangeTree/PolyfaceRangeTreeContext\";\nexport * from \"./polyface/TaggedNumericData\";\nexport * from \"./topology/SpaceTriangulation\";\nexport * from \"./serialization/IModelJsonSchema\";\nexport * from \"./serialization/DeepCompare\";\nexport * from \"./serialization/GeometrySamples\";\nexport * from \"./serialization/SerializationHelpers\";\nexport { BentleyGeometryFlatBuffer } from \"./serialization/BentleyGeometryFlatBuffer\";\n"]}
1
+ {"version":3,"file":"core-geometry.js","sourceRoot":"","sources":["../../src/core-geometry.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Arc3d.js","sourceRoot":"","sources":["../../../src/curve/Arc3d.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Curve\n */\n\nimport { Clipper } from \"../clipping/ClipUtils\";\nimport { Constant } from \"../Constant\";\nimport { AxisOrder, BeJSONFunctions, Geometry, PlaneAltitudeEvaluator } from \"../Geometry\";\nimport { Angle } from \"../geometry3d/Angle\";\nimport { AngleSweep } from \"../geometry3d/AngleSweep\";\nimport { GeometryHandler, IStrokeHandler } from \"../geometry3d/GeometryHandler\";\nimport { Matrix3d } from \"../geometry3d/Matrix3d\";\nimport { Plane3dByOriginAndUnitNormal } from \"../geometry3d/Plane3dByOriginAndUnitNormal\";\nimport { Plane3dByOriginAndVectors } from \"../geometry3d/Plane3dByOriginAndVectors\";\nimport { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\nimport { Range1d, Range3d } from \"../geometry3d/Range\";\nimport { Ray3d } from \"../geometry3d/Ray3d\";\nimport { Transform } from \"../geometry3d/Transform\";\nimport { XYAndZ } from \"../geometry3d/XYZProps\";\nimport { Matrix4d } from \"../geometry4d/Matrix4d\";\nimport { Point4d } from \"../geometry4d/Point4d\";\nimport { SineCosinePolynomial, TrigPolynomial } from \"../numerics/Polynomials\";\nimport { SmallSystem } from \"../numerics/SmallSystem\";\nimport { CurveChain } from \"./CurveCollection\";\nimport { CurveExtendMode, CurveExtendOptions, VariantCurveExtendParameter } from \"./CurveExtendMode\";\nimport { CurveIntervalRole, CurveLocationDetail, CurveSearchStatus } from \"./CurveLocationDetail\";\nimport { AnnounceNumberNumberCurvePrimitive, CurvePrimitive, TangentOptions } from \"./CurvePrimitive\";\nimport { GeometryQuery } from \"./GeometryQuery\";\nimport { CurveOffsetXYHandler } from \"./internalContexts/CurveOffsetXYHandler\";\nimport { EllipticalArcApproximationContext } from \"./internalContexts/EllipticalArcApproximationContext\";\nimport { PlaneAltitudeRangeContext } from \"./internalContexts/PlaneAltitudeRangeContext\";\nimport { LineSegment3d } from \"./LineSegment3d\";\nimport { LineString3d } from \"./LineString3d\";\nimport { OffsetOptions } from \"./OffsetOptions\";\nimport { Path } from \"./Path\";\nimport { StrokeOptions } from \"./StrokeOptions\";\n\n// cspell:words binormal\n\n/**\n * Compact vector form of an elliptic arc defined by center, vectors at 0 and 90 degrees, and angular sweep.\n * * @see [Curve Collections]($docs/learning/geometry/CurvePrimitive.md) learning article for further details of the\n * parameterization and meaning of the vectors.\n * @public\n */\nexport interface ArcVectors {\n /** Center point of arc. */\n center: Point3d;\n /** Vector from the arc center to the arc point at parameter 0 degrees. */\n vector0: Vector3d;\n /** Vector from the arc center to the arc point at parameter 90 degrees. */\n vector90: Vector3d;\n /** Angular range swept by the arc, of length less than 2*pi if not a full ellipse. */\n sweep: AngleSweep;\n}\n\n/**\n * Carrier structure for an arc with fractional data on incoming, outgoing curves.\n * @public\n */\nexport interface ArcBlendData {\n /** Constructed arc. */\n arc?: Arc3d;\n /** Fraction \"moving backward\" on the inbound curve. */\n fraction10: number;\n /** Fraction \"moving forward\" on the outbound curve. */\n fraction12: number;\n /** Optional reference point. */\n point?: Point3d;\n}\n\n/**\n * Enumeration of methods used to sample an elliptical arc in [[Arc3d.constructCircularArcChainApproximation]].\n * * Because ellipses have two axes of symmetry, samples are computed for one quadrant and reflected across each\n * axis to the other quadrants. Any samples that fall outside the arc sweep are filtered out.\n * @public\n */\nexport enum EllipticalArcSampleMethod {\n /** Generate n samples uniformly interpolated between the min and max parameters of a full ellipse quadrant. */\n UniformParameter = 0,\n /** Generate n samples uniformly interpolated between the min and max curvatures of a full ellipse quadrant. */\n UniformCurvature = 1,\n /**\n * Generate n samples interpolated between the min and max curvatures of a full ellipse quadrant, using a\n * [[FractionMapper]] callback to generate the interpolation weights.\n */\n NonUniformCurvature = 2,\n /**\n * Generate samples by subdividing parameter space until the approximation has less than a given max\n * distance to the elliptical arc.\n */\n AdaptiveSubdivision = 3,\n}\n\n/**\n * A function that maps [0,1]->[0,1].\n * @public\n */\nexport type FractionMapper = (f: number) => number;\n\n/**\n * Options for generating samples for the construction of an approximation to an elliptical arc.\n * * Used by [[Arc3d.constructCircularArcChainApproximation]].\n * @public\n */\nexport class EllipticalArcApproximationOptions {\n private _sampleMethod: EllipticalArcSampleMethod;\n private _numSamplesInQuadrant: number;\n private _maxError: number;\n private _remapFunction: FractionMapper;\n private _forcePath: boolean;\n\n /** Default error tolerance. */\n public static defaultMaxError = Constant.oneCentimeter;\n\n private constructor(\n method: EllipticalArcSampleMethod,\n numSamplesInQuadrant: number,\n maxError: number,\n remapFunction: FractionMapper,\n forcePath: boolean,\n ) {\n this._sampleMethod = method;\n this._numSamplesInQuadrant = numSamplesInQuadrant;\n this._maxError = maxError;\n this._remapFunction = remapFunction;\n this._forcePath = forcePath;\n }\n /**\n * Construct options with optional defaults.\n * @param method sample method, default [[EllipticalArcSampleMethod.AdaptiveSubdivision]].\n * @param numSamplesInQuadrant samples in each full quadrant for interpolation methods, default 4.\n * @param maxError positive maximum distance to ellipse for the subdivision method, default 1cm.\n * @param remapFunction optional callback to remap fraction space for [[EllipticalArcSampleMethod.NonUniformCurvature]],\n * default quadratic. For best results, this function should be a bijection.\n * @param forcePath whether to return a [[Path]] instead of a [[Loop]] when approximating a full elliptical arc,\n * default false.\n */\n public static create(\n method: EllipticalArcSampleMethod = EllipticalArcSampleMethod.AdaptiveSubdivision,\n numSamplesInQuadrant: number = 4,\n maxError: number = this.defaultMaxError,\n remapFunction: FractionMapper = (x: number) => x * x,\n forcePath: boolean = false,\n ) {\n if (numSamplesInQuadrant < 2)\n numSamplesInQuadrant = 2;\n if (maxError <= 0)\n maxError = this.defaultMaxError;\n return new EllipticalArcApproximationOptions(method, numSamplesInQuadrant, maxError, remapFunction, forcePath);\n }\n /** Clone the options. */\n public clone(): EllipticalArcApproximationOptions {\n return new EllipticalArcApproximationOptions(\n this.sampleMethod, this.numSamplesInQuadrant, this.maxError, this.remapFunction, this.forcePath,\n );\n }\n /** Method used to sample the elliptical arc. */\n public get sampleMethod(): EllipticalArcSampleMethod {\n return this._sampleMethod;\n }\n public set sampleMethod(method: EllipticalArcSampleMethod) {\n this._sampleMethod = method;\n }\n /**\n * Number of samples to return in each full quadrant, including endpoint(s).\n * * Used by interpolation sample methods.\n * * In general, for n samples, the approximating [[Path]] consists of n-1 primitives,\n * and the approximating [[Loop]] consists of n primitives.\n * * Minimum value is 2.\n */\n public get numSamplesInQuadrant(): number {\n return this._numSamplesInQuadrant;\n }\n public set numSamplesInQuadrant(numSamples: number) {\n this._numSamplesInQuadrant = numSamples;\n }\n /**\n * Maximum distance (in meters) of the computed approximation to the elliptical arc.\n * * Used by [[EllipticalArcSampleMethod.AdaptiveSubdivision]].\n */\n public get maxError(): number {\n return this._maxError;\n }\n public set maxError(error: number) {\n this._maxError = error;\n }\n /**\n * Callback function to remap fraction space to fraction space.\n * * Used by [[EllipticalArcSampleMethod.NonUniformCurvature]].\n */\n public get remapFunction(): FractionMapper {\n return this._remapFunction;\n }\n public set remapFunction(f: FractionMapper) {\n this._remapFunction = f;\n }\n /** Whether to return a [[Path]] instead of a [[Loop]] when approximating a full (closed) ellipse. */\n public get forcePath(): boolean {\n return this._forcePath;\n }\n public set forcePath(value: boolean) {\n this._forcePath = value;\n }\n}\n\n/**\n * Circular or elliptic arc.\n * * The angle to point equation is:\n * * `X = center + cos(theta) * vector0 + sin(theta) * vector90`\n * * The arc's `sweep` determines the range of theta values (angles). In particular:\n * * The point at `theta = n*360` degrees is `center + vector0` for any integer n.\n * * The point at `theta = 90 + n*360` degrees is `center + vector90` for any integer n.\n * * The arc's `sweep` _together with_ `vector0` and `vector90` determine the arc's orientation:\n * * If `sweep.startDegrees < sweep.endDegrees`, the arc's orientation is counterclockwise with respect to its\n * `perpendicularVector` (i.e., looking at the arc from the head of this vector).\n * * Similarly, if `sweep.startDegrees > sweep.endDegrees`, the arc's orientation is clockwise with respect to\n * its `perpendicularVector`.\n * * The arc's orientation is _always_ counterclockwise with respect to its `binormalVector`.\n * * When `vector0` and `vector90` are perpendicular and have equal length, the arc is circular.\n * * When they are non-perpendicular, the arc is always elliptic.\n * * When they have unequal length, the arc is always elliptic.\n * * To create an ellipse in standard major-minor axis form:\n * * `vector0` is the vector from the center to the major axis extreme.\n * * `vector90` is the vector from the center to the minor axis extreme.\n * * Note that constructing these vectors to the extreme points makes them perpendicular.\n * * The method [[Arc3d.toScaledMatrix3d]] can be called to convert an arc with unrestricted `vector0` and `vector90`\n * to an arc in standard major-minor axis form.\n * * The unrestricted form is much easier to work with for common calculations: stroking, projection to 2d,\n * intersection with plane.\n * @public\n */\nexport class Arc3d extends CurvePrimitive implements BeJSONFunctions {\n /** String name for schema properties. */\n public readonly curvePrimitiveType = \"arc\";\n /** Test if this and other are both instances of Arc3d. */\n public isSameGeometryClass(other: GeometryQuery): boolean {\n return other instanceof Arc3d;\n }\n private _center: Point3d;\n private _matrix: Matrix3d; // columns are [vector0, vector90, unit normal]\n private _sweep: AngleSweep; // sweep limits\n private static _workPointA = Point3d.create();\n private static _workPointB = Point3d.create();\n private static _workPointC = Point3d.create();\n private static _workVectorU = Vector3d.create();\n private static _workVectorV = Vector3d.create();\n private static _workVectorW = Vector3d.create();\n /** Read/write the center. Getter returns clone. */\n public get center(): Point3d {\n return this._center.clone();\n }\n public set center(center: XYAndZ) {\n this._center.setFrom(center);\n }\n /** Read property for (reference to) the arc center. */\n public get centerRef(): Point3d {\n return this._center;\n }\n /**\n * Read property for (clone of) the x-column of the arc matrix.\n * * This vector determines the point on the arc corresponding to angles n*360 degrees.\n */\n public get vector0(): Vector3d {\n return this._matrix.columnX();\n }\n /**\n * Read property for (clone of) the y-column of the arc matrix.\n * * This vector determines the point on the arc corresponding to angles 90 + n*360 degrees.\n */\n public get vector90(): Vector3d {\n return this._matrix.columnY();\n }\n /**\n * Compute an arc binormal vector with arbitrary length.\n * * The arc parameterization is counterclockwise with respect to this vector.\n * * This vector is parallel to [[perpendicularVector]] and possibly opposite.\n */\n public binormalVector(result?: Vector3d): Vector3d {\n const plane = this.fractionToPointAnd2Derivatives(0.0);\n return plane.vectorU.crossProduct(plane.vectorV, result);\n }\n /**\n * Read property for (clone of) the z-column of the arc matrix.\n * * This vector is nominally the normalized cross product: `vector0 x vector90`.\n * * To compute a vector with respect to which the arc sweep is counterclockwise, use [[binormalVector]].\n */\n public get perpendicularVector(): Vector3d {\n return this._matrix.columnZ();\n }\n /** Return a clone of the arc matrix. */\n public matrixClone(): Matrix3d {\n return this._matrix.clone();\n }\n /** Read property for (reference to) the arc matrix. */\n public get matrixRef(): Matrix3d {\n return this._matrix;\n }\n /** Read/write the sweep. Getter returns reference. */\n public get sweep(): AngleSweep {\n return this._sweep;\n }\n public set sweep(value: AngleSweep) {\n this._sweep.setFrom(value);\n }\n /** An Arc3d extends along its complete elliptic arc. */\n public override get isExtensibleFractionSpace(): boolean {\n return true;\n }\n /** Constructor. Captures the inputs. */\n private constructor(center: Point3d, matrix: Matrix3d, sweep: AngleSweep) {\n super();\n this._center = center;\n this._matrix = matrix;\n this._sweep = sweep.clampToFullCircle(sweep);\n }\n /** Return a clone of the arc, with transform applied. */\n public cloneTransformed(transform: Transform): Arc3d { // we know tryTransformInPlace succeeds.\n const c = this.clone();\n c.tryTransformInPlace(transform);\n return c;\n }\n /**\n * Redefine the arc with (captured references to) given data.\n * @param center arc center.\n * @param matrix matrix with columns vector0, vector90, and their unit cross product.\n * @param sweep angle sweep.\n */\n public setRefs(center: Point3d, matrix: Matrix3d, sweep: AngleSweep) {\n this._center = center;\n this._matrix = matrix;\n this._sweep = sweep;\n }\n /**\n * Redefine the arc with (clones of) given data.\n * @param center arc center.\n * @param matrix matrix with columns vector0, vector90, and their unit cross product.\n * @param sweep angle sweep.\n */\n public set(center: Point3d, matrix: Matrix3d, sweep: AngleSweep | undefined) {\n this.setRefs(center.clone(), matrix.clone(), sweep ? sweep.clone() : AngleSweep.create360());\n }\n /** Copy center, matrix, and sweep from other Arc3d. */\n public setFrom(other: Arc3d) {\n this._center.setFrom(other._center);\n this._matrix.setFrom(other._matrix);\n this._sweep.setFrom(other._sweep);\n }\n /** Return a clone of this arc. */\n public clone(): Arc3d {\n return new Arc3d(this._center.clone(), this._matrix.clone(), this._sweep.clone());\n }\n /**\n * Create an arc, capturing references to center, matrix and sweep.\n * @param center center point.\n * @param matrix matrix with columns vector0, vector90, and their unit cross product.\n * @param sweep sweep limits.\n * @param result optional preallocated result.\n */\n public static createRefs(center: Point3d, matrix: Matrix3d, sweep: AngleSweep, result?: Arc3d): Arc3d {\n if (result) {\n result.setRefs(center, matrix, sweep);\n return result;\n }\n return new Arc3d(center, matrix, sweep);\n }\n /**\n * Create an arc from center, x column to be scaled, and y column to be scaled.\n * @param center center of ellipse.\n * @param matrix the x-column and y-column of this matrix are scaled by `radius0` and `radius90` to define the\n * arc's `vector0` and `vector90`.\n * @param radius0 radius along `vector0`.\n * @param radius90 radius along `vector90`.\n * @param sweep sweep limits.\n * @param result optional preallocated result.\n */\n public static createScaledXYColumns(\n center: Point3d | undefined, matrix: Matrix3d, radius0: number, radius90: number, sweep?: AngleSweep, result?: Arc3d,\n ): Arc3d {\n const vector0 = matrix.columnX();\n const vector90 = matrix.columnY();\n return Arc3d.create(center, vector0.scale(radius0, vector0), vector90.scale(radius90, vector90), sweep, result);\n }\n /**\n * Create a full circle from center, normal and radius.\n * @param center center of circle. If undefined, use 000.\n * @param normal normal vector.\n * @param radius radius of the circle.\n * @param result optional preallocated result.\n */\n public static createCenterNormalRadius(\n center: Point3d | undefined, normal: Vector3d, radius: number, result?: Arc3d,\n ): Arc3d {\n const frame = Matrix3d.createRigidHeadsUp(normal);\n return Arc3d.createScaledXYColumns(center, frame, radius, radius, undefined, result);\n }\n /**\n * Create an elliptical arc by center with vectors to points at 0 and 90 degrees in parameter space.\n * @param center arc center.\n * @param vector0 vector to 0 degrees (commonly major axis).\n * @param vector90 vector to 90 degree point (commonly minor axis).\n * @param sweep sweep limits; defaults to full sweep.\n * @param result optional preallocated result.\n */\n public static create(\n center: Point3d | undefined, vector0: Vector3d, vector90: Vector3d, sweep?: AngleSweep, result?: Arc3d,\n ): Arc3d {\n const normal = vector0.unitCrossProductWithDefault(vector90, 0, 0, 0); // normal will be 000 for degenerate case\n const matrix = Matrix3d.createColumns(vector0, vector90, normal);\n return Arc3d.createRefs(\n center !== undefined ? center.clone() : Point3d.create(0, 0, 0),\n matrix,\n sweep ? sweep.clone() : AngleSweep.create360(),\n result,\n );\n }\n /**\n * Create an elliptical arc from three points on the ellipse: two points on an axis and one in between.\n * @param start start of arc, on an axis.\n * @param middle point on arc somewhere between `start` and `end`.\n * @param end point on arc directly opposite `start`.\n * @param sweep angular sweep, measured from `start` in the direction of `middle`.\n * For a half-ellipse from `start` to `end` passing through `middle`, pass `AngleSweep.createStartEndDegrees(0,180)`.\n * Default value is full sweep to create the entire ellipse.\n * @param result optional preallocated result.\n * @returns elliptical arc, or undefined if construction impossible.\n */\n public static createStartMiddleEnd(\n start: XYAndZ, middle: XYAndZ, end: XYAndZ, sweep?: AngleSweep, result?: Arc3d,\n ): Arc3d | undefined {\n const center = Point3d.createAdd2Scaled(start, 0.5, end, 0.5);\n const vector0 = Vector3d.createStartEnd(center, start);\n const vector1 = Vector3d.createStartEnd(center, middle);\n const v0DotV1 = vector0.dotProduct(vector1);\n const v0Len2 = vector0.magnitudeSquared();\n if (Math.abs(v0DotV1) >= v0Len2)\n return undefined; // middle point projects to end of axis or beyond (rules out negative under the radical below)\n const normal = vector0.crossProduct(vector1);\n const vector90 = normal.unitCrossProductWithDefault(vector0, 0, 0, 0);\n const v1DotV90 = vector1.dotProduct(vector90);\n // solve the standard ellipse equation for the unknown axis length, given local coords of middle (v0.v1/||v0||, v90.v1)\n const v90Len = Geometry.safeDivideFraction(v0Len2 * v1DotV90, Math.sqrt(v0Len2 * v0Len2 - v0DotV1 * v0DotV1), 0);\n if (Geometry.isSmallMetricDistanceSquared(v90Len)) // tighter than smallMetricDistance to allow flatter long elliptical arcs\n return undefined;\n vector90.scaleInPlace(v90Len);\n return Arc3d.create(center, vector0, vector90, sweep, result);\n }\n /**\n * Create a circular arc defined by start point, tangent at start point, and end point.\n * * The circular arc is swept from `start` to `end` in the direction of `tangentAtStart`.\n * * If `tangentAtStart` is parallel to the line segment from `start` to `end`, return the line segment.\n */\n public static createCircularStartTangentEnd(\n start: Point3d, tangentAtStart: Vector3d, end: Point3d, result?: Arc3d,\n ): Arc3d | LineSegment3d {\n // see itwinjs-core\\core\\geometry\\internaldocs\\Arc3d.md to clarify below algorithm\n const startToEnd = Vector3d.createStartEnd(start, end);\n const frame = Matrix3d.createRigidFromColumns(tangentAtStart, startToEnd, AxisOrder.XYZ);\n if (frame !== undefined) {\n const vv = startToEnd.dotProduct(startToEnd);\n const vw = frame.dotColumnY(startToEnd);\n const radius = Geometry.conditionalDivideCoordinate(vv, 2 * vw);\n if (radius !== undefined) {\n const vector0 = frame.columnY();\n vector0.scaleInPlace(-radius); // center to start\n const vector90 = frame.columnX();\n vector90.scaleInPlace(radius);\n const centerToEnd = vector0.plus(startToEnd);\n const sweepAngle = vector0.angleTo(centerToEnd);\n let sweepRadians = sweepAngle.radians; // always positive and less than PI\n if (tangentAtStart.dotProduct(centerToEnd) < 0.0) // sweepRadians is the wrong way\n sweepRadians = 2.0 * Math.PI - sweepRadians;\n const center = start.plusScaled(vector0, -1.0);\n const sweep = AngleSweep.createStartEndRadians(0.0, sweepRadians);\n return Arc3d.create(center, vector0, vector90, sweep, result);\n }\n }\n return LineSegment3d.create(start, end);\n }\n /**\n * Create a circular arc from start point, tangent at start, radius, optional plane normal, arc sweep.\n * * The vector from start point to center is in the direction of upVector crossed with tangentA.\n * @param start start point.\n * @param tangentAtStart vector in tangent direction at the start.\n * @param radius signed radius.\n * @param upVector optional out-of-plane vector. Defaults to positive Z.\n * @param sweep angular range. If single `Angle` is given, start angle is at 0 degrees (the start point).\n */\n public static createCircularStartTangentRadius(\n start: Point3d, tangentAtStart: Vector3d, radius: number, upVector?: Vector3d, sweep?: Angle | AngleSweep,\n ): Arc3d | undefined {\n if (upVector === undefined)\n upVector = Vector3d.unitZ();\n const vector0 = upVector.unitCrossProduct(tangentAtStart);\n if (vector0 === undefined)\n return undefined;\n const center = start.plusScaled(vector0, radius);\n // reverse the A-to-center vector and bring it up to scale\n vector0.scaleInPlace(-radius);\n const vector90 = tangentAtStart.scaleToLength(Math.abs(radius))!; // cannot fail; prior unitCrossProduct would have failed first\n return Arc3d.create(center, vector0, vector90, AngleSweep.create(sweep));\n }\n /**\n * Create a circular arc defined by start and end points and radius.\n * @param start start point of the arc.\n * @param end end point of the arc.\n * @param helper a third point near the arc in its plane, or a vector in the direction of the arc normal.\n * @returns the constructed arc, or undefined if desired arc cannot be constructed.\n */\n public static createCircularStartEndRadius(start: Point3d, end: Point3d, radius: number, helper: Point3d | Vector3d): Arc3d | undefined {\n // Construct a line segment from start to end. It is a chord of the circle,\n // so the circle center is on its perpendicular bisector.\n const semiChordLen2 = 0.25 * start.distanceSquared(end);\n const radius2 = radius * radius;\n if (radius2 < semiChordLen2)\n return undefined;\n const height = Math.sqrt(radius2 - semiChordLen2); // Pythagoras gives us distance from chord to center\n const normal = Vector3d.createZero(this._workVectorU);\n const vecToCenter = Vector3d.createZero(this._workVectorV);\n // the helper gives us the circle normal\n if (helper instanceof Point3d)\n start.crossProductToPoints(helper, end, normal);\n else\n normal.setFrom(helper);\n // the normal and chord direction give us the side of the chord on which the center resides\n if (!normal.normalizeInPlace() || !normal.crossProductStartEnd(start, end, vecToCenter).scaleToLength(height, vecToCenter))\n return undefined;\n const center = Point3d.createZero();\n start.interpolate(0.5, end, center).addInPlace(vecToCenter);\n const vector0 = Vector3d.createStartEnd(center, start, this._workVectorW);\n const endVector = Vector3d.createStartEnd(center, end, this._workVectorV); // reuse static\n const sweep = AngleSweep.create(vector0.signedAngleTo(endVector, normal));\n const vector90 = normal.crossProduct(vector0, this._workVectorV); // has length radius (reuse static)\n return Arc3d.createRefs(center, Matrix3d.createColumns(vector0, vector90, normal), sweep);\n }\n\n /**\n * Return a clone of this arc, projected to given z value.\n * * If `z` is omitted, the clone is at the z of the center.\n * * This function projects the arc into a plane parallel to xy-plane.\n * * Note that projection to fixed z can change circle into ellipse (and (rarely) ellipse to circle).\n */\n public cloneAtZ(z?: number): Arc3d {\n if (z === undefined)\n z = this._center.z;\n return Arc3d.createXYZXYZXYZ(\n this._center.x, this._center.y, z,\n this._matrix.coffs[0], this._matrix.coffs[3], 0,\n this._matrix.coffs[1], this._matrix.coffs[4], 0,\n this._sweep,\n );\n }\n /**\n * Create an arc by center (cx,cy,xz) with vectors (ux,uy,uz) and (vx,vy,vz) to points at 0 and 90 degrees in\n * parameter space.\n * @param result optional preallocated result.\n */\n public static createXYZXYZXYZ(\n cx: number, cy: number, cz: number,\n ux: number, uy: number, uz: number,\n vx: number, vy: number, vz: number,\n sweep?: AngleSweep, result?: Arc3d,\n ): Arc3d {\n return Arc3d.create(\n Point3d.create(cx, cy, cz), Vector3d.create(ux, uy, uz), Vector3d.create(vx, vy, vz), sweep, result,\n );\n }\n /**\n * Return a quick estimate of the eccentricity of the ellipse.\n * * The estimator is the cross magnitude of the product of vectors U and V, divided by square of the larger magnitude\n * * for typical Arc3d with perpendicular UV, this is exactly the small axis divided by large.\n * * note that the eccentricity is AT MOST ONE.\n */\n public quickEccentricity(): number {\n const magX = this._matrix.columnXMagnitude();\n const magY = this._matrix.columnYMagnitude();\n const jacobian = this._matrix.columnXYCrossProductMagnitude();\n const largeAxis = Geometry.maxXY(magX, magY);\n return jacobian / (largeAxis * largeAxis);\n }\n /**\n * Create a circular arc defined by start point, any intermediate point, and end point.\n * If the points are colinear, assemble them into a linestring.\n */\n public static createCircularStartMiddleEnd(\n pointA: XYAndZ, pointB: XYAndZ, pointC: XYAndZ, result?: Arc3d,\n ): Arc3d | LineString3d {\n const vectorAB = Vector3d.createStartEnd(pointA, pointB);\n const vectorAC = Vector3d.createStartEnd(pointA, pointC);\n const ab2 = vectorAB.magnitudeSquared();\n const ac2 = vectorAC.magnitudeSquared();\n const normal = vectorAB.sizedCrossProduct(vectorAC, Math.sqrt(Math.sqrt(ab2 * ac2)));\n if (normal) {\n const vectorToCenter = SmallSystem.linearSystem3d(\n normal.x, normal.y, normal.z,\n vectorAB.x, vectorAB.y, vectorAB.z,\n vectorAC.x, vectorAC.y, vectorAC.z,\n 0, // vectorToCenter DOT normal = 0 (ensure normal is perp to the plane of the 3 points)\n 0.5 * ab2, // vectorToCenter DOT vectorAB = ab2 / 2 (ensure the projection of vectorToCenter on AB bisects AB)\n 0.5 * ac2, // vectorToCenter DOT vectorAC = ac2 / 2 (ensure the projection of vectorToCenter on AC bisects AC)\n );\n if (vectorToCenter) { // i.e., the negative of vectorX\n const center = Point3d.create(pointA.x, pointA.y, pointA.z).plus(vectorToCenter);\n const vectorX = Vector3d.createStartEnd(center, pointA);\n const vectorY = Vector3d.createRotateVectorAroundVector(vectorX, normal, Angle.createDegrees(90));\n if (vectorY) {\n const vectorCenterToC = Vector3d.createStartEnd(center, pointC);\n const sweepAngle = vectorX.signedAngleTo(vectorCenterToC, normal);\n if (sweepAngle.radians < 0.0)\n sweepAngle.addMultipleOf2PiInPlace(1.0);\n return Arc3d.create(\n center, vectorX, vectorY, AngleSweep.createStartEndRadians(0.0, sweepAngle.radians), result,\n );\n }\n }\n }\n return LineString3d.create(pointA, pointB, pointC);\n }\n /** The arc has simple proportional arc length if and only if it is a circular arc. */\n public override getFractionToDistanceScale(): number | undefined {\n const radius = this.circularRadius();\n if (radius !== undefined)\n return Math.abs(radius * this._sweep.sweepRadians);\n return undefined;\n }\n /**\n * Convert a fractional position to xyz coordinates.\n * @param fraction fractional position on arc.\n * @param result optional preallocated result.\n */\n public fractionToPoint(fraction: number, result?: Point3d): Point3d {\n const radians = this._sweep.fractionToRadians(fraction);\n return this._matrix.originPlusMatrixTimesXY(this._center, Math.cos(radians), Math.sin(radians), result);\n }\n /**\n * Convert fractional arc and radial positions to xyz coordinates.\n * @param fraction fractional position on arc.\n * @param result optional preallocated result.\n */\n public fractionAndRadialFractionToPoint(arcFraction: number, radialFraction: number, result?: Point3d): Point3d {\n const radians = this._sweep.fractionToRadians(arcFraction);\n return this._matrix.originPlusMatrixTimesXY(\n this._center, radialFraction * Math.cos(radians), radialFraction * Math.sin(radians), result,\n );\n }\n /**\n * Convert a fractional position to xyz coordinates and derivative with respect to fraction.\n * @param fraction fractional position on arc.\n * @param result optional preallocated result.\n */\n public fractionToPointAndDerivative(fraction: number, result?: Ray3d): Ray3d {\n result = this.radiansToPointAndDerivative(this._sweep.fractionToRadians(fraction), result);\n result.direction.scaleInPlace(this._sweep.sweepRadians);\n return result;\n }\n /**\n * Construct a plane with\n * * origin at the fractional position along the arc.\n * * x axis is the first derivative, i.e. tangent along the arc.\n * * y axis is the second derivative, i.e. in the plane and on the center side of the tangent.\n * If the arc is circular, the second derivative is directly towards the center.\n */\n public fractionToPointAnd2Derivatives(fraction: number, result?: Plane3dByOriginAndVectors): Plane3dByOriginAndVectors {\n const radians = this._sweep.fractionToRadians(fraction);\n if (!result)\n result = Plane3dByOriginAndVectors.createXYPlane();\n const c = Math.cos(radians);\n const s = Math.sin(radians);\n this._matrix.originPlusMatrixTimesXY(this._center, c, s, result.origin);\n const a = this._sweep.sweepRadians;\n this._matrix.multiplyXY(-a * s, a * c, result.vectorU);\n const aa = a * a;\n this._matrix.multiplyXY(-aa * c, -aa * s, result.vectorV);\n return result;\n }\n /**\n * Evaluate the point and derivative with respect to the angle (in radians).\n * @param radians angular position.\n * @param result optional preallocated ray.\n */\n public radiansToPointAndDerivative(radians: number, result?: Ray3d): Ray3d {\n result = result ? result : Ray3d.createZero();\n const c = Math.cos(radians);\n const s = Math.sin(radians);\n this._matrix.originPlusMatrixTimesXY(this._center, c, s, result.origin);\n this._matrix.multiplyXY(-s, c, result.direction);\n return result;\n }\n /**\n * Evaluate the point with respect to the angle (in radians).\n * @param radians angular position.\n * @param result optional preallocated ray.\n */\n public radiansToPoint(radians: number, result?: Point3d): Point3d {\n result = result ? result : Point3d.create();\n const c = Math.cos(radians);\n const s = Math.sin(radians);\n this._matrix.originPlusMatrixTimesXY(this._center, c, s, result);\n return result;\n }\n /**\n * Return a parametric plane with\n * * origin at arc center.\n * * vectorU from center to arc at angle (in radians).\n * * vectorV from center to arc at 90 degrees past the angle.\n * @param radians angular position.\n * @param result optional preallocated plane.\n */\n public radiansToRotatedBasis(radians: number, result?: Plane3dByOriginAndVectors): Plane3dByOriginAndVectors {\n result = result ? result : Plane3dByOriginAndVectors.createXYPlane();\n const c = Math.cos(radians);\n const s = Math.sin(radians);\n result.origin.setFromPoint3d(this.center);\n this._matrix.multiplyXY(c, s, result.vectorU);\n this._matrix.multiplyXY(-s, c, result.vectorV);\n return result;\n }\n /**\n * Evaluate the point and derivative with respect to the angle (in radians).\n * @param theta angular position.\n * @param result optional preallocated ray.\n */\n public angleToPointAndDerivative(theta: Angle, result?: Ray3d): Ray3d {\n result = result ? result : Ray3d.createZero();\n const c = theta.cos();\n const s = theta.sin();\n this._matrix.originPlusMatrixTimesXY(this._center, c, s, result.origin);\n this._matrix.multiplyXY(-s, c, result.direction);\n return result;\n }\n /**\n * Return the start point of the arc.\n * @param result optional preallocated result.\n */\n public override startPoint(result?: Point3d): Point3d {\n return this.fractionToPoint(0.0, result);\n }\n /**\n * Return the end point of the arc.\n * @param result optional preallocated result.\n */\n public override endPoint(result?: Point3d): Point3d {\n return this.fractionToPoint(1.0, result);\n }\n /** * If this is a circular arc, return the simple length derived from radius and sweep.\n * * Otherwise (i.e. if this elliptical) fall through to CurvePrimitive base implementation which\n * Uses quadrature.\n */\n public override curveLength(): number {\n return this.curveLengthBetweenFractions(0, 1);\n }\n /**\n * Gauss point quadrature count for evaluating curve length. (The number of intervals is adjusted to the arc sweep).\n * @deprecated in 5.0 - will not be removed until after 2026-06-13. Use correct spelling quadratureGaussCount.\n */\n public static readonly quadratureGuassCount = 5;\n /** Gauss point quadrature count for evaluating curve length. (The number of intervals is adjusted to the arc sweep). */\n public static readonly quadratureGaussCount = 5;\n /** In quadrature for arc length, use this interval (divided by quickEccentricity). */\n public static readonly quadratureIntervalAngleDegrees = 10.0;\n /**\n * * If this is a circular arc, return the simple length derived from radius and sweep.\n * * Otherwise (i.e. if this elliptical) fall through CurvePrimitive integrator.\n */\n public override curveLengthBetweenFractions(fraction0: number, fraction1: number): number {\n const simpleLength = this.getFractionToDistanceScale();\n if (simpleLength !== undefined)\n return simpleLength * Math.abs(fraction1 - fraction0);\n // fall through for true ellipse . .. stroke and accumulate quadrature with typical count . ..\n let f0 = fraction0;\n let f1 = fraction1;\n if (fraction0 > fraction1) {\n f0 = fraction1;\n f1 = fraction0;\n }\n const sweepDegrees = (f1 - f0) * this._sweep.sweepDegrees;\n let eccentricity = this.quickEccentricity();\n if (eccentricity < 0.00001)\n eccentricity = 0.00001;\n let numInterval = Math.ceil(sweepDegrees / (eccentricity * Arc3d.quadratureIntervalAngleDegrees));\n if (numInterval > 400)\n numInterval = 400;\n if (numInterval < 1)\n numInterval = 1;\n return super.curveLengthWithFixedIntervalCountQuadrature(f0, f1, numInterval, Arc3d.quadratureGaussCount);\n }\n /**\n * Return an approximate (but easy to compute) arc length.\n * The estimate is:\n * * Form 8 chords on full circle, proportionally fewer for partials (but 2 extras if less than half circle).\n * * Sum the chord lengths.\n * * For a circle, we know this crude approximation has to be increased by a factor (theta/(2*sin(theta/2))).\n * * Apply that factor.\n * * Experiments confirm that this is within 3 percent for a variety of eccentricities and arc sweeps.\n */\n public quickLength(): number {\n const totalSweep = Math.abs(this._sweep.sweepRadians);\n let numInterval = Math.ceil(4 * totalSweep / Math.PI);\n if (numInterval < 1)\n numInterval = 1;\n if (numInterval < 4)\n numInterval += 3;\n else if (numInterval < 6)\n numInterval += 2; // force extras for short arcs\n const pointA = Arc3d._workPointA;\n const pointB = Arc3d._workPointB;\n let chordSum = 0.0;\n this.fractionToPoint(0.0, pointA);\n for (let i = 1; i <= numInterval; i++) {\n this.fractionToPoint(i / numInterval, pointB);\n chordSum += pointA.distance(pointB);\n pointA.setFromPoint3d(pointB);\n }\n // The chord sum is always shorter.\n // if it is a true circular arc, the ratio of correct over sum is easy ...\n const dTheta = totalSweep / numInterval;\n const factor = dTheta / (2.0 * Math.sin(0.5 * dTheta));\n return chordSum * factor;\n }\n /**\n * * See extended comments on `CurvePrimitive.moveSignedDistanceFromFraction`.\n * * A zero length line generates `CurveSearchStatus.error`.\n * * Nonzero length line generates `CurveSearchStatus.success` or `CurveSearchStatus.stoppedAtBoundary`.\n */\n public override moveSignedDistanceFromFraction(\n startFraction: number, signedDistance: number, allowExtension: false, result?: CurveLocationDetail,\n ): CurveLocationDetail {\n if (!this.isCircular) // suppress extension !!!\n return super.moveSignedDistanceFromFractionGeneric(startFraction, signedDistance, allowExtension, result);\n const totalLength = this.curveLength();\n const signedFractionMove = Geometry.conditionalDivideFraction(signedDistance, totalLength);\n if (signedFractionMove === undefined) {\n return CurveLocationDetail.createCurveFractionPointDistanceCurveSearchStatus(\n this, startFraction, this.fractionToPoint(startFraction), 0.0, CurveSearchStatus.error);\n }\n return CurveLocationDetail.createConditionalMoveSignedDistance(\n allowExtension,\n this,\n startFraction,\n startFraction + signedFractionMove,\n signedDistance,\n result);\n }\n /**\n * Return all radian angles where the ellipse tangent is perpendicular to the vector to a spacePoint.\n * @param spacePoint point of origin of vectors to the ellipse.\n * @param _extend always true. Sweep is ignored: perpendiculars for the full ellipse are returned.\n * @param endpoints if true, force the end radians into the result.\n */\n public allPerpendicularAngles(spacePoint: Point3d, _extend: boolean = true, endpoints: boolean = false): number[] {\n const radians: number[] = [];\n const vectorQ = spacePoint.vectorTo(this.center);\n const uu = this._matrix.columnXMagnitudeSquared();\n const uv = this._matrix.columnXDotColumnY();\n const vv = this._matrix.columnYMagnitudeSquared();\n TrigPolynomial.solveUnitCircleImplicitQuadricIntersection(\n uv,\n vv - uu,\n -uv,\n this._matrix.dotColumnY(vectorQ),\n -this._matrix.dotColumnX(vectorQ),\n 0.0,\n radians,\n );\n if (endpoints) {\n radians.push(this.sweep.startRadians);\n radians.push(this.sweep.endRadians);\n }\n return radians;\n }\n /**\n * Return details of the closest point on the arc, optionally extending to full ellipse.\n * @param spacePoint search for point closest to this point.\n * @param extend if true, consider projections to the complete ellipse. If false, consider only endpoints and\n * projections within the arc sweep.\n * @param result optional preallocated result.\n */\n public override closestPoint(\n spacePoint: Point3d, extend: VariantCurveExtendParameter, result?: CurveLocationDetail,\n ): CurveLocationDetail {\n result = CurveLocationDetail.create(this, result);\n const allRadians = this.allPerpendicularAngles(spacePoint, true, true);\n let extend0 = CurveExtendOptions.resolveVariantCurveExtendParameterToCurveExtendMode(extend, 0);\n let extend1 = CurveExtendOptions.resolveVariantCurveExtendParameterToCurveExtendMode(extend, 1);\n // distinct extends for cyclic space are awkward ....\n if (this._sweep.isFullCircle) {\n extend0 = CurveExtendMode.None;\n extend1 = CurveExtendMode.None;\n }\n if (extend0 !== CurveExtendMode.None && extend1 !== CurveExtendMode.None) {\n allRadians.push(this._sweep.startRadians);\n allRadians.push(this._sweep.endRadians);\n }\n // hm... logically there must at least two angles there ... but if it happens return the start point ...\n const workRay = Ray3d.createZero();\n if (allRadians.length === 0) {\n result.setFR(0.0, this.radiansToPointAndDerivative(this._sweep.startRadians, workRay));\n result.a = spacePoint.distance(result.point);\n } else {\n let dMin = Number.MAX_VALUE;\n let d = 0;\n for (const radians of allRadians) {\n const fraction = CurveExtendOptions.resolveRadiansToSweepFraction(extend, radians, this.sweep);\n if (fraction !== undefined) {\n this.fractionToPointAndDerivative(fraction, workRay);\n\n d = spacePoint.distance(workRay.origin);\n if (d < dMin) {\n dMin = d;\n result.setFR(fraction, workRay);\n result.a = d;\n }\n }\n }\n }\n return result;\n }\n /** Override of [[CurvePrimitive.emitTangents]] for Arc3d. */\n public override emitTangents(\n spacePoint: Point3d, announceTangent: (tangent: CurveLocationDetail) => any, options?: TangentOptions,\n ): void {\n const centerToPoint = Vector3d.createStartEnd(this.centerRef, spacePoint);\n let centerToLocalPoint: Vector3d | undefined;\n if (options?.vectorToEye) {\n const arcToView = Matrix3d.createColumns(this.matrixRef.getColumn(0), this.matrixRef.getColumn(1), options.vectorToEye);\n centerToLocalPoint = arcToView.multiplyInverse(centerToPoint);\n } else {\n centerToLocalPoint = this.matrixRef.multiplyInverse(centerToPoint)!;\n }\n if (centerToLocalPoint === undefined)\n return;\n // centerToLocalPoint is a vector in the local coordinate system of the as-viewed arc.\n // In other words, the local arc is the unit circle.\n // alpha is the angle from the local x-axis to centerToLocalPoint.\n // beta is the nonnegative angle from centerToLocalPoint to a tangency radial.\n // Tangency angles are preserved by local <-> world transformation.\n if (centerToLocalPoint !== undefined) {\n const hypotenuseSquared = centerToLocalPoint.magnitudeSquaredXY();\n if (hypotenuseSquared >= 1.0) { // localPoint lies outside or on the unit circle...\n // ...and forms a right triangle with unit radial leg to tangent point\n const distanceToTangency = Math.sqrt(hypotenuseSquared - 1.0);\n const alpha = Math.atan2(centerToLocalPoint.y, centerToLocalPoint.x);\n const beta = Math.atan2(distanceToTangency, 1);\n const angles = Geometry.isSmallAngleRadians(beta) ? [alpha] : [alpha + beta, alpha - beta];\n for (const theta of angles) {\n const f = CurveExtendOptions.resolveRadiansToValidSweepFraction(options?.extend ?? false, theta, this.sweep);\n if (f.isValid) {\n const tangent = CurveLocationDetail.createCurveFractionPoint(this, f.fraction, this.fractionToPoint(f.fraction));\n announceTangent(tangent);\n }\n }\n }\n }\n }\n /** Reverse the sweep of the arc. */\n public reverseInPlace(): void {\n this._sweep.reverseInPlace();\n }\n /**\n * Apply a transform to the arc basis vectors.\n * * nonuniform (i.e. skewing) transforms are allowed.\n * * The transformed vector0 and vector90 are NOT squared up as major minor axes (this is a good feature).\n */\n public tryTransformInPlace(transform: Transform): boolean {\n this._center = transform.multiplyPoint3d(this._center, this._center);\n this._matrix = transform.matrix.multiplyMatrixMatrix(this._matrix, this._matrix);\n // force re-normalization of columnZ.\n this.setVector0Vector90(this._matrix.columnX(), this._matrix.columnY());\n return true;\n }\n /** Return true if the ellipse center and basis vectors are in the plane. */\n public isInPlane(plane: Plane3dByOriginAndUnitNormal): boolean {\n const normal = plane.getNormalRef();\n // The ellipse vectors are full-length -- true distance comparisons say things.\n return Geometry.isSmallMetricDistance(plane.altitude(this._center))\n && Geometry.isSmallMetricDistance(this._matrix.dotColumnX(normal))\n && Geometry.isSmallMetricDistance(this._matrix.dotColumnY(normal));\n }\n /** Return true if the vector0 and vector90 are of equal length and perpendicular. */\n public get isCircular(): boolean {\n const axx = this._matrix.columnXMagnitudeSquared();\n const ayy = this._matrix.columnYMagnitudeSquared();\n const axy = this._matrix.columnXDotColumnY();\n return Angle.isPerpendicularDotSet(axx, ayy, axy) && Geometry.isSameCoordinateSquared(axx, ayy);\n }\n /** Return radius if the vector0 and vector90 are of equal length and perpendicular. Ignores z. */\n public circularRadiusXY(): number | undefined {\n const ux = this._matrix.at(0, 0);\n const uy = this._matrix.at(1, 0);\n const vx = this._matrix.at(0, 1);\n const vy = this._matrix.at(1, 1);\n const dotUU = Geometry.dotProductXYXY(ux, uy, ux, uy);\n const dotVV = Geometry.dotProductXYXY(vx, vy, vx, vy);\n const dotUV = Geometry.dotProductXYXY(ux, uy, vx, vy);\n if (Angle.isPerpendicularDotSet(dotUU, dotVV, dotUV) && Geometry.isSameCoordinateSquared(dotUU, dotVV))\n return Geometry.hypotenuseXY(ux, uy);\n return undefined;\n }\n /** If the arc is circular, return its radius. Otherwise return undefined. */\n public circularRadius(): number | undefined {\n return this.isCircular ? this._matrix.columnXMagnitude() : undefined;\n }\n\n /** Return the larger length of the two defining vectors. */\n public maxVectorLength(): number {\n return Math.max(this._matrix.columnXMagnitude(), this._matrix.columnYMagnitude());\n }\n /**\n * Compute intersections with a plane.\n * @param plane plane to intersect.\n * @param result array of locations on the curve.\n */\n public override appendPlaneIntersectionPoints(plane: PlaneAltitudeEvaluator, result: CurveLocationDetail[]): number {\n const constCoff = plane.altitude(this._center);\n const coffs = this._matrix.coffs;\n const cosCoff = plane.velocityXYZ(coffs[0], coffs[3], coffs[6]);\n const sinCoff = plane.velocityXYZ(coffs[1], coffs[4], coffs[7]);\n const trigPoints = Geometry.solveTrigForm(constCoff, cosCoff, sinCoff);\n let numIntersection = 0;\n if (trigPoints !== undefined) {\n numIntersection = trigPoints.length;\n let xy;\n for (xy of trigPoints) {\n const radians = Math.atan2(xy.y, xy.x);\n const fraction = this._sweep.radiansToPositivePeriodicFraction(radians);\n const detail = CurveLocationDetail.createCurveFractionPoint(this, fraction, this.fractionToPoint(fraction));\n detail.intervalRole = CurveIntervalRole.isolated;\n if (Angle.isAlmostEqualRadiansAllowPeriodShift(radians, this._sweep.startRadians))\n detail.intervalRole = CurveIntervalRole.isolatedAtVertex;\n else if (Angle.isAlmostEqualRadiansAllowPeriodShift(radians, this._sweep.endRadians))\n detail.intervalRole = CurveIntervalRole.isolatedAtVertex;\n result.push(detail);\n }\n }\n return numIntersection;\n }\n /**\n * Extend a range to include the range of the arc.\n * @param range range being extended.\n * @param transform optional transform to apply to the arc.\n */\n public extendRange(range: Range3d, transform?: Transform): void {\n this.extendRangeInSweep(range, this._sweep, transform);\n }\n /**\n * Extend a range to include the range of the arc, using specified range in place of the arc range.\n * @param range range being extended.\n * @param transform optional transform to apply to the arc.\n */\n public extendRangeInSweep(range: Range3d, sweep: AngleSweep, transform?: Transform): void {\n const trigForm = new SineCosinePolynomial(0, 0, 0);\n const center = this._center.clone(Arc3d._workPointA);\n const vectorU = this._matrix.columnX(Arc3d._workVectorU);\n const vectorV = this._matrix.columnY(Arc3d._workVectorV);\n if (transform) {\n transform.multiplyPoint3d(center, center);\n transform.multiplyVector(vectorU, vectorU);\n transform.multiplyVector(vectorV, vectorV);\n }\n const lowPoint = Arc3d._workPointB;\n const highPoint = Arc3d._workPointC;\n const range1 = Range1d.createNull();\n for (let i = 0; i < 3; i++) {\n trigForm.set(center.at(i), vectorU.at(i), vectorV.at(i));\n trigForm.rangeInSweep(sweep, range1);\n lowPoint.setAt(i, range1.low);\n highPoint.setAt(i, range1.high);\n }\n range.extend(lowPoint);\n range.extend(highPoint);\n }\n /**\n * Returns a (high accuracy) range of the curve between fractional positions.\n * * Default implementation returns teh range of the curve from clonePartialCurve.\n */\n public override rangeBetweenFractions(fraction0: number, fraction1: number, transform?: Transform): Range3d {\n const sweep = AngleSweep.createStartEndRadians(\n this.sweep.fractionToRadians(fraction0), this.sweep.fractionToRadians(fraction1),\n );\n const range = Range3d.create();\n this.extendRangeInSweep(range, sweep, transform);\n return range;\n }\n /**\n * Set up a SineCosinePolynomial as the function c+u*cos(theta)+v*sin(theta) where\n * c,u,v are coefficients obtained by evaluating altitude and velocity relative to the plane.\n * @param plane plane for altitude calculation.\n * @param result optional result.\n * @internal\n */\n public getPlaneAltitudeSineCosinePolynomial(\n plane: PlaneAltitudeEvaluator, result?: SineCosinePolynomial,\n ): SineCosinePolynomial {\n if (!result)\n result = new SineCosinePolynomial(0, 0, 0);\n // altitude function of angle t, given plane with origin o and unit normal n:\n // A(t) = (c + u cos(t) + v sin(t)) . n = (c-o).n + u.n cos(t) + v.n sin(t)\n // Note the different functions for computing dot product against a point vs. a vector!\n result.set(plane.altitude(this._center),\n plane.velocityXYZ(this._matrix.coffs[0], this._matrix.coffs[3], this._matrix.coffs[6]),\n plane.velocityXYZ(this._matrix.coffs[1], this._matrix.coffs[4], this._matrix.coffs[7]));\n return result;\n }\n /** Create a new arc which is a unit circle in the xy-plane centered at the origin. */\n public static createUnitCircle(): Arc3d {\n return Arc3d.createRefs(Point3d.create(0, 0, 0), Matrix3d.createIdentity(), AngleSweep.create360());\n }\n /**\n * Create a new arc which is parallel to the xy plane, with given center and radius and optional angle sweep.\n * @param center center of arc.\n * @param radius radius of arc.\n * @param sweep sweep limits; defaults to full circle.\n */\n public static createXY(center: Point3d, radius: number, sweep: AngleSweep = AngleSweep.create360()): Arc3d {\n return new Arc3d(center.clone(), Matrix3d.createScale(radius, radius, 1.0), sweep.clone());\n }\n /**\n * Create a new arc which is parallel to the xy plane, with given center and x,y radii, and optional angle sweep\n * @param center center of ellipse.\n * @param radiusA x axis radius.\n * @param radiusB y axis radius.\n * @param sweep angle sweep.\n */\n public static createXYEllipse(\n center: Point3d,\n radiusA: number,\n radiusB: number,\n sweep: AngleSweep = AngleSweep.create360()): Arc3d {\n return new Arc3d(center.clone(), Matrix3d.createScale(radiusA, radiusB, 1.0), sweep.clone());\n }\n /**\n * Replace the arc's 0 and 90 degree vectors.\n * @param vector0 vector from center to ellipse point at 0 degrees in parameter space.\n * @param vector90 vector from center to ellipse point at 90 degrees in parameter space.\n */\n public setVector0Vector90(vector0: Vector3d, vector90: Vector3d) {\n this._matrix.setColumns(vector0, vector90,\n vector0.unitCrossProductWithDefault(vector90, 0, 0, 0), // normal will be 000 for degenerate case\n );\n }\n /**\n * Return the symmetric definition of the arc, with rigid axes and radii.\n * * The caller can send the returned data into [[createScaledXYColumns]] to construct the major-minor axis\n * version of the instance arc. This formulation of the arc has the same shape, but has perpendicular axes,\n * from which the arc's symmetry is readily apparent.\n */\n public toScaledMatrix3d(): { center: Point3d, axes: Matrix3d, r0: number, r90: number, sweep: AngleSweep } {\n const angleData = Angle.dotProductsToHalfAngleTrigValues(\n this._matrix.columnXMagnitudeSquared(),\n this._matrix.columnYMagnitudeSquared(),\n this._matrix.columnXDotColumnY(),\n true,\n );\n const vector0A = this._matrix.multiplyXY(angleData.c, angleData.s);\n const vector90A = this._matrix.multiplyXY(-angleData.s, angleData.c);\n const axes = Matrix3d.createRigidFromColumns(vector0A, vector90A, AxisOrder.XYZ);\n return {\n center: this._center.clone(),\n axes: (axes ? axes : Matrix3d.createIdentity()),\n r0: vector0A.magnitude(),\n r90: vector90A.magnitude(),\n sweep: this.sweep.cloneMinusRadians(angleData.radians),\n };\n }\n /** Return the arc definition with center, two vectors, and angle sweep. */\n public toVectors(): ArcVectors {\n return {\n center: this.center.clone(),\n vector0: this._matrix.columnX(),\n vector90: this._matrix.columnY(),\n sweep: this.sweep.clone(),\n };\n }\n /** Return the arc definition with center, two vectors, and angle sweep, optionally transformed. */\n public toTransformedVectors(\n transform?: Transform,\n ): { center: Point3d, vector0: Vector3d, vector90: Vector3d, sweep: AngleSweep } {\n return transform ? {\n center: transform.multiplyPoint3d(this._center),\n vector0: transform.multiplyVector(this._matrix.columnX()),\n vector90: transform.multiplyVector(this._matrix.columnY()),\n sweep: this.sweep.clone(),\n }\n : {\n center: this._center.clone(),\n vector0: this._matrix.columnX(),\n vector90: this._matrix.columnY(),\n sweep: this.sweep.clone(),\n };\n }\n /** Return the arc definition with center, two vectors, and angle sweep, transformed to 4d points. */\n public toTransformedPoint4d(\n matrix: Matrix4d,\n ): { center: Point4d, vector0: Point4d, vector90: Point4d, sweep: AngleSweep } {\n return {\n center: matrix.multiplyPoint3d(this._center, 1.0),\n vector0: matrix.multiplyPoint3d(this._matrix.columnX(), 0.0),\n vector90: matrix.multiplyPoint3d(this._matrix.columnY(), 0.0),\n sweep: this.sweep.clone(),\n };\n }\n /**\n * Set this arc from a json object with these values:\n * * center center point.\n * * vector0 vector from center to 0 degree point in parameter space (commonly but not always the major axis vector).\n * * vector90 vector from center to 90 degree point in parameter space (commonly but not always the minor axis vector).\n * @param json\n */\n public setFromJSON(json?: any) {\n if (json && json.center && json.vector0 && json.vector90 && json.sweep) {\n this._center.setFromJSON(json.center);\n const vector0 = Vector3d.create();\n const vector90 = Vector3d.create();\n vector0.setFromJSON(json.vector0);\n vector90.setFromJSON(json.vector90);\n this.setVector0Vector90(vector0, vector90);\n this._sweep.setFromJSON(json.sweep);\n } else {\n this._center.set(0, 0, 0);\n this._matrix.setFrom(Matrix3d.identity);\n this._sweep.setStartEndRadians();\n }\n }\n /**\n * Convert to a JSON object.\n * @return {*} [center: [], vector0:[], vector90:[], sweep []}\n */\n public toJSON(): any {\n return {\n center: this._center.toJSON(),\n sweep: this._sweep.toJSON(),\n vector0: this._matrix.columnX().toJSON(),\n vector90: this._matrix.columnY().toJSON(),\n };\n }\n /** Test if this arc is almost equal to another GeometryQuery object. */\n public override isAlmostEqual(otherGeometry: GeometryQuery, distanceTol: number = Geometry.smallMetricDistance, radianTol: number = Geometry.smallAngleRadians): boolean {\n if (otherGeometry instanceof Arc3d) {\n const other = otherGeometry;\n return this._center.isAlmostEqual(other._center, distanceTol)\n && this._matrix.isAlmostEqual(other._matrix, distanceTol)\n && this._sweep.isAlmostEqualAllowPeriodShift(other._sweep, radianTol);\n }\n return false;\n }\n /** Emit strokes to caller-supplied linestring. */\n public emitStrokes(dest: LineString3d, options?: StrokeOptions): void {\n const numStrokes = this.computeStrokeCountForOptions(options);\n dest.appendFractionalStrokePoints(this, numStrokes, 0.0, 1.0, true);\n }\n /** Emit strokes to caller-supplied handler. */\n public emitStrokableParts(handler: IStrokeHandler, options?: StrokeOptions): void {\n const numStrokes = this.computeStrokeCountForOptions(options);\n handler.startCurvePrimitive(this);\n handler.announceIntervalForUniformStepStrokes(this, numStrokes, 0.0, 1.0);\n handler.endCurvePrimitive(this);\n }\n /**\n * Return the stroke count required for given options.\n * @param options StrokeOptions that determine count.\n */\n public computeStrokeCountForOptions(options?: StrokeOptions): number {\n let numStroke;\n if (options) {\n const rMax = this.maxVectorLength();\n numStroke = options.applyTolerancesToArc(rMax, this._sweep.sweepRadians);\n } else {\n numStroke = StrokeOptions.applyAngleTol(undefined, 1, this._sweep.sweepRadians);\n }\n return numStroke;\n }\n /** Second step of double dispatch: call `handler.handleArc3d(this)` */\n public dispatchToGeometryHandler(handler: GeometryHandler): any {\n return handler.handleArc3d(this);\n }\n /**\n * Return (if possible) an arc which is a portion of this curve.\n * @param fractionA start fraction.\n * @param fractionB end fraction.\n */\n public override clonePartialCurve(fractionA: number, fractionB: number): Arc3d {\n if (fractionB < fractionA) {\n const arcA = this.clonePartialCurve(fractionB, fractionA);\n arcA.reverseInPlace();\n return arcA;\n }\n const arcB = this.clone();\n arcB.sweep.setStartEndRadians(\n this.sweep.fractionToRadians(fractionA),\n this.sweep.fractionToRadians(fractionB),\n );\n return arcB;\n }\n /**\n * Return an arc whose basis vectors are rotated by given angle within the current basis space.\n * * The returned arc will have `vector0 = this.vector0 * cos(theta) + this.vector90 * sin(theta)`.\n * * The returned arc has the same shape as the instance.\n * * In other words, the arc's sweep is adjusted so that all fractional parameters evaluate to the same points.\n * * Specifically, theta is subtracted from the original start and end angles.\n * @param theta the angle (in the input arc space) which is to become the 0-degree point in the new arc.\n */\n public cloneInRotatedBasis(theta: Angle): Arc3d {\n const c = theta.cos();\n const s = theta.sin();\n const vector0 = this._matrix.multiplyXY(c, s);\n const vector90 = this._matrix.multiplyXY(-s, c);\n const newSweep = AngleSweep.createStartEndRadians(\n this._sweep.startRadians - theta.radians, this._sweep.endRadians - theta.radians,\n );\n const arcB = Arc3d.create(this._center.clone(), vector0, vector90, newSweep);\n return arcB;\n }\n /**\n * Return a cloned arc with basis rotated to align with the global axes. The arc's shape is unchanged.\n * * This method is most useful when the instance is an xy-circular arc, for then the aligned arc's stored sweep\n * angles can be understood as being measured from the global positive x-axis to the arc's start/end. This is *not*\n * the case for xy-elliptical arcs: the parameter angle difference between two points on an ellipse is in general\n * not the same as the angle measured between their radials.\n * * For an xy instance, the output arc will have:\n * * vector0 is in the same direction as the positive x-axis\n * * perpendicularVector is in the same direction as the positive z-axis\n * * For a general instance, the output arc will have:\n * * vector0 is in the same direction as the projection of the positive x-axis vector onto the arc plane\n * * perpendicularVector lies in the halfspace z >= 0\n * @returns cloned arc, or undefined (if the instance normal is parallel to the x-axis, or its matrix is singular)\n */\n public cloneAxisAligned(): Arc3d | undefined {\n const plane = Plane3dByOriginAndUnitNormal.create(this.center, this.perpendicularVector.crossProduct(Vector3d.unitX()));\n if (!plane)\n return undefined;\n const axisPts: CurveLocationDetail[] = [];\n if (2 !== this.appendPlaneIntersectionPoints(plane, axisPts))\n return undefined;\n const iAxisPt = plane.getNormalRef().dotProduct(this.perpendicularVector.crossProductStartEnd(this.center, axisPts[0].point)) > 0.0 ? 0 : 1;\n const toUnitX = this.sweep.fractionToAngle(axisPts[iAxisPt].fraction);\n const arc1 = this.cloneInRotatedBasis(toUnitX); // rotate in arc's plane\n if (this.perpendicularVector.dotProduct(Vector3d.unitZ()) < -Geometry.smallAngleRadians) {\n if (this.matrixRef.isSingular())\n return undefined;\n const flip = Matrix3d.createRowValues(1, 0, 0, 0, -1, 0, 0, 0, -1); // rotate 180 degrees around arc's local x-axis\n arc1.matrixRef.multiplyMatrixMatrix(flip, arc1.matrixRef);\n arc1.sweep.setStartEndDegrees(-arc1.sweep.startDegrees, -arc1.sweep.endDegrees); // rotation alone is insufficient to flip\n }\n return arc1;\n }\n /**\n * Find intervals of this CurvePrimitive that are interior to a clipper.\n * @param clipper clip structure (e.g.clip planes).\n * @param announce (optional) function to be called announcing fractional intervals\n * `announce(fraction0, fraction1, curvePrimitive)`.\n * @returns true if any \"in\" segments are announced.\n */\n public override announceClipIntervals(clipper: Clipper, announce?: AnnounceNumberNumberCurvePrimitive): boolean {\n return clipper.announceClippedArcIntervals(this, announce);\n }\n /** Compute the center and vectors of another arc as local coordinates within this arc's frame. */\n public otherArcAsLocalVectors(other: Arc3d): ArcVectors | undefined {\n const otherOrigin = this._matrix.multiplyInverseXYZAsPoint3d(\n other.center.x - this.center.x,\n other.center.y - this.center.y,\n other.center.z - this.center.z,\n );\n const otherVector0 = this._matrix.multiplyInverse(other.vector0);\n const otherVector90 = this._matrix.multiplyInverse(other.vector90);\n if (otherOrigin && otherVector0 && otherVector90) {\n return {\n center: otherOrigin,\n vector0: otherVector0,\n vector90: otherVector90,\n sweep: this.sweep.clone(),\n };\n }\n return undefined;\n }\n /**\n * Determine an arc \"at a point of inflection\" of a point sequence.\n * * Return the arc along with the fractional positions of the tangency points.\n * * In the returned object:\n * * `arc` is the (bounded) arc.\n * * `fraction10` is the tangency point's position as an interpolating fraction of the line segment from\n * `point1` (backwards) to `point0`.\n * * `fraction12` is the tangency point's position as an interpolating fraction of the line segment from\n * `point1` (forward) to `point2`.\n * * `point` is the `point1` input.\n * * If unable to construct the arc:\n * * `point` is the `point1` input.\n * * both fractions are zero.\n * * `arc` is undefined.\n * @param point0 first point of path (the point before the point of inflection).\n * @param point1 second point of path (the point of inflection).\n * @param point2 third point of path (the point after the point of inflection).\n * @param radius arc radius.\n *\n */\n public static createFilletArc(point0: Point3d, point1: Point3d, point2: Point3d, radius: number): ArcBlendData {\n const vector10 = Vector3d.createStartEnd(point1, point0);\n const vector12 = Vector3d.createStartEnd(point1, point2);\n const d10 = vector10.magnitude();\n const d12 = vector12.magnitude();\n if (vector10.normalizeInPlace() && vector12.normalizeInPlace()) {\n const bisector = vector10.plus(vector12);\n if (bisector.normalizeInPlace()) {\n // const theta = vector12.angleTo(bisector);\n // vector10, vector12, and bisector are UNIT vectors\n // bisector splits the angle between vector10 and vector12\n const perpendicular = vector12.minus(vector10);\n const perpendicularMagnitude = perpendicular.magnitude(); // == 2 * sin(theta)\n const sinTheta = 0.5 * perpendicularMagnitude;\n if (!Geometry.isSmallAngleRadians(sinTheta)) { // (for small theta, sinTheta is almost equal to theta)\n const cosTheta = Math.sqrt(1 - sinTheta * sinTheta);\n const tanTheta = sinTheta / cosTheta;\n const alphaRadians = Math.acos(sinTheta);\n const distanceToCenter = radius / sinTheta;\n const distanceToTangency = radius / tanTheta;\n const f10 = distanceToTangency / d10;\n const f12 = distanceToTangency / d12;\n const center = point1.plusScaled(bisector, distanceToCenter);\n bisector.scaleInPlace(-radius);\n perpendicular.scaleInPlace(radius / perpendicularMagnitude);\n const arc02 = Arc3d.create(center, bisector, perpendicular, AngleSweep.createStartEndRadians(-alphaRadians, alphaRadians));\n return { arc: arc02, fraction10: f10, fraction12: f12, point: point1.clone() };\n }\n }\n }\n return { fraction10: 0.0, fraction12: 0.0, point: point1.clone() };\n }\n /** Scale the vector0 and vector90 vectors by `scaleFactor`. */\n public scaleAboutCenterInPlace(scaleFactor: number) {\n this._matrix.scaleColumnsInPlace(scaleFactor, scaleFactor, 1.0);\n }\n /** Return the (signed) area between (a fractional portion of) the arc and the chord between those points. */\n public areaToChordXY(fraction0: number, fraction1: number): number {\n let detJ = Geometry.crossProductXYXY(\n this._matrix.coffs[0], this._matrix.coffs[3],\n this._matrix.coffs[1], this._matrix.coffs[4],\n );\n // areas in arc of unit circle with radians limits\n const radians0 = this._sweep.fractionToRadians(fraction0);\n const radians1 = this._sweep.fractionToRadians(fraction1);\n // const midRadians = 0.5 * (radians0 + radians1);\n const alpha = 0.5 * (radians1 - radians0);\n if (alpha < 0.0)\n detJ = -detJ;\n const wedgeArea = Math.cos(alpha) * Math.sin(alpha);\n return (alpha - wedgeArea) * detJ;\n }\n /**\n * Construct an offset of the instance curve as viewed in the xy-plane (ignoring z).\n * @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object.\n */\n public override constructOffsetXY(\n offsetDistanceOrOptions: number | OffsetOptions,\n ): CurvePrimitive | CurvePrimitive[] | undefined {\n const options = OffsetOptions.create(offsetDistanceOrOptions);\n if (this.isCircular || options.preserveEllipticalArcs) {\n const arcXY = this.cloneAtZ();\n const sign = arcXY.sweep.sweepRadians * arcXY.matrixRef.coffs[8] >= 0.0 ? 1.0 : -1.0;\n const r0 = arcXY.matrixRef.columnXMagnitude();\n const r0new = r0 - sign * options.leftOffsetDistance;\n const r90 = this.isCircular ? r0 : arcXY.matrixRef.columnYMagnitude();\n const r90new = this.isCircular ? r0new : r90 - sign * options.leftOffsetDistance;\n if (\n !Geometry.isSmallMetricDistance(r0new)\n && (r0 * r0new > 0.0)\n && (this.isCircular || (!Geometry.isSmallMetricDistance(r90new) && (r90 * r90new > 0.0)))\n ) {\n const factor0 = r0new / r0;\n const factor90 = this.isCircular ? factor0 : r90new / r90;\n const matrix = arcXY.matrixClone();\n matrix.scaleColumnsInPlace(factor0, factor90, 1.0);\n return Arc3d.createRefs(arcXY.center.clone(), matrix, arcXY.sweep.clone());\n } else {\n return undefined; // zero radius\n }\n }\n // default impl\n const handler = new CurveOffsetXYHandler(this, options.leftOffsetDistance);\n this.emitStrokableParts(handler, options.strokeOptions);\n return handler.claimResult();\n }\n /**\n * Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.\n * @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.\n * @param lowHigh optional receiver for output.\n * @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the end of the ray.\n */\n public override projectedParameterRange(ray: Vector3d | Ray3d, lowHigh?: Range1d): Range1d | undefined {\n return PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);\n }\n /**\n * Construct a circular arc chain approximation to the instance elliptical arc.\n * * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/ArcApproximationGeneral and\n * https://www.itwinjs.org/sandbox/SaeedTorabi/ArcApproximation\n * @param options bundle of options for sampling an elliptical arc (use default options if undefined).\n * @returns the approximating curve chain, the circular instance, or undefined if construction fails.\n */\n public constructCircularArcChainApproximation(options?: EllipticalArcApproximationOptions): CurveChain | Arc3d | undefined {\n if (!options)\n options = EllipticalArcApproximationOptions.create();\n const context = EllipticalArcApproximationContext.create(this);\n const result = context.constructCircularArcChainApproximation(options);\n if (!result && this.isCircular)\n return (this.sweep.isFullCircle && options.forcePath) ? Path.create(this) : this;\n return result;\n }\n}\n"]}
1
+ {"version":3,"file":"Arc3d.js","sourceRoot":"","sources":["../../../src/curve/Arc3d.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConstructCurveBetweenCurves.js","sourceRoot":"","sources":["../../../src/curve/ConstructCurveBetweenCurves.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,OAAO,2BAA4B,SAAQ,mBAAmB;IAClE,oDAAoD;IAC5C,UAAU,CAAgB;IAC1B,SAAS,CAAS;IAC1B,YAAoB,UAAyB,EAAE,SAAiB,EAAE,UAAyB;QACzF,KAAK,EAAE,CAAC;QACR,gDAAgD;QAChD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACa,mBAAmB,CAAC,QAAuB;QACzD,IAAI,IAAI,CAAC,UAAU,YAAY,aAAa,EAAE,CAAC;YAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;YACjC,OAAO,aAAa,CAAC,MAAM,CACzB,QAAQ,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,EACxE,QAAQ,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD;;;;OAIG;IACa,kBAAkB,CAAC,GAAiB;QAClD,IAAI,IAAI,CAAC,UAAU,YAAY,YAAY,EAAE,CAAC;YAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;YAC5B,IAAI,GAAG,CAAC,SAAS,EAAE,KAAK,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC;gBACxC,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;gBAClC,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;gBACjC,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;gBACpC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;gBACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;gBAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;oBACnC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;oBAC3B,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;oBAC3B,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;oBACxD,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACzB,CAAC;gBACD,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;oBACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;wBACnC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACvH,CAAC;gBACH,CAAC;gBACD,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;oBACrC,qDAAqD;oBACrD,kCAAkC;oBAClC,2FAA2F;oBAC3F,EAAE,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACzC,CAAC;gBACD,IAAI,GAAG,CAAC,iBAAiB,IAAI,GAAG,CAAC,iBAAiB,EAAE,CAAC;oBACnD,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;oBACtC,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;oBACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;wBACnC,GAAG,CAAC,iBAAiB,CAAC,+BAA+B,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;wBACtE,GAAG,CAAC,iBAAiB,CAAC,+BAA+B,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;wBACtE,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;oBACnE,CAAC;gBAEH,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD;;;;OAIG;IACa,WAAW,CAAC,IAAW;QACrC,IAAI,IAAI,CAAC,UAAU,YAAY,KAAK,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;YAC7B,OAAO,KAAK,CAAC,MAAM,CACjB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,EACpD,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,EACtD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,EACxD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;;;;;OASG;IACI,MAAM,CAAC,kBAAkB,CAAC,SAAwB,EAAE,QAAgB,EAAE,SAAwB;QACnG,MAAM,OAAO,GAAG,IAAI,2BAA2B,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAChF,OAAO,SAAS,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Curve\n */\n\nimport { Geometry } from \"../Geometry\";\nimport { NullGeometryHandler } from \"../geometry3d/GeometryHandler\";\nimport { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\nimport { Arc3d } from \"./Arc3d\";\nimport { GeometryQuery } from \"./GeometryQuery\";\nimport { LineSegment3d } from \"./LineSegment3d\";\nimport { LineString3d } from \"./LineString3d\";\n\n/**\n * Context for constructing a curve that is interpolated between two other curves.\n * * The only callable method is the static `InterpolateBetween`.\n * * Other methods are called only by `dispatchToGeometryHandler`\n * @public\n */\nexport class ConstructCurveBetweenCurves extends NullGeometryHandler {\n // private geometry0: GeometryQuery; <-- Never used\n private _geometry1: GeometryQuery;\n private _fraction: number;\n private constructor(_geometry0: GeometryQuery, _fraction: number, _geometry1: GeometryQuery) {\n super();\n // this.geometry0 = _geometry0; <-- Never used\n this._geometry1 = _geometry1;\n this._fraction = _fraction;\n }\n\n /**\n * * To be directly called only by double dispatcher\n * * Assumes this.geometry1 was set by calling context.\n * * Construct the interpolated curve between this.geometry1 and the supplied segment0.\n */\n public override handleLineSegment3d(segment0: LineSegment3d): any {\n if (this._geometry1 instanceof LineSegment3d) {\n const segment1 = this._geometry1;\n return LineSegment3d.create(\n segment0.startPoint().interpolate(this._fraction, segment1.startPoint()),\n segment0.endPoint().interpolate(this._fraction, segment1.endPoint()));\n }\n return undefined;\n }\n /**\n * * To be directly called only by double dispatcher\n * * Assumes this.geometry1 was set by calling context.\n * * Construct the interpolated curve between this.geometry1 and the supplied ls0.\n */\n public override handleLineString3d(ls0: LineString3d): any {\n if (this._geometry1 instanceof LineString3d) {\n const ls1 = this._geometry1;\n if (ls0.numPoints() === ls1.numPoints()) {\n const numPoints = ls0.numPoints();\n const ls = LineString3d.create();\n const workPoint = Point3d.create();\n const workPoint0 = Point3d.create();\n const workPoint1 = Point3d.create();\n const fraction = this._fraction;\n for (let i = 0; i < numPoints; i++) {\n ls0.pointAt(i, workPoint0);\n ls1.pointAt(i, workPoint1);\n workPoint0.interpolate(fraction, workPoint1, workPoint);\n ls.addPoint(workPoint);\n }\n if (ls0.fractions && ls1.fractions) {\n for (let i = 0; i < numPoints; i++) {\n ls.addFraction(Geometry.interpolate(ls0.fractions.atUncheckedIndex(i), fraction, ls1.fractions.atUncheckedIndex(i)));\n }\n }\n if (ls0.strokeData && ls1.strokeData) {\n // Policy: simple clone of stroke count map from ls0.\n // The curveLength will not match.\n // But we expect to be called at a time compatible count and a0,a1 are the important thing.\n ls.strokeData = ls0.strokeData.clone();\n }\n if (ls0.packedDerivatives && ls1.packedDerivatives) {\n const workVector0 = Vector3d.create();\n const workVector1 = Vector3d.create();\n for (let i = 0; i < numPoints; i++) {\n ls0.packedDerivatives.getVector3dAtCheckedVectorIndex(i, workVector0);\n ls1.packedDerivatives.getVector3dAtCheckedVectorIndex(i, workVector1);\n ls.addDerivative(workVector0.interpolate(fraction, workVector1));\n }\n\n }\n return ls;\n }\n }\n return undefined;\n }\n /**\n * * To be directly called only by double dispatcher\n * * Assumes this.geometry1 was set by calling context.\n * * Construct the interpolated curve between this.geometry1 and the supplied arc0.\n */\n public override handleArc3d(arc0: Arc3d): any {\n if (this._geometry1 instanceof Arc3d) {\n const arc1 = this._geometry1;\n return Arc3d.create(\n arc0.center.interpolate(this._fraction, arc1.center),\n arc0.vector0.interpolate(this._fraction, arc1.vector0),\n arc0.vector90.interpolate(this._fraction, arc1.vector90),\n arc0.sweep.interpolate(this._fraction, arc1.sweep));\n }\n return undefined;\n }\n\n /**\n * Construct a geometry item which is fractionally interpolated between two others.\n * * The construction is only supported between certain types:\n * * * LineSegment3d+LineSegment3d -- endpoints are interpolated\n * * * LineString3d+LineString3d with matching counts. Each point is interpolated.\n * * * Arc3d+Arc3d -- center, vector0, vector90, and limit angles of the sweep are interpolated.\n * @param geometry0 geometry \"at fraction 0\"\n * @param fraction fractional position\n * @param geometry1 geometry \"at fraction 1\"\n */\n public static interpolateBetween(geometry0: GeometryQuery, fraction: number, geometry1: GeometryQuery): GeometryQuery | undefined {\n const handler = new ConstructCurveBetweenCurves(geometry0, fraction, geometry1);\n return geometry0.dispatchToGeometryHandler(handler);\n }\n}\n"]}
1
+ {"version":3,"file":"ConstructCurveBetweenCurves.js","sourceRoot":"","sources":["../../../src/curve/ConstructCurveBetweenCurves.ts"],"names":[],"mappings":"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"}