@itwin/core-geometry 4.1.0-dev.4 → 4.1.0-dev.40

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 (570) hide show
  1. package/CHANGELOG.md +32 -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.d.ts +1 -0
  28. package/lib/cjs/core-geometry.d.ts.map +1 -1
  29. package/lib/cjs/core-geometry.js +4 -1
  30. package/lib/cjs/core-geometry.js.map +1 -1
  31. package/lib/cjs/curve/Arc3d.d.ts +71 -86
  32. package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
  33. package/lib/cjs/curve/Arc3d.js +110 -96
  34. package/lib/cjs/curve/Arc3d.js.map +1 -1
  35. package/lib/cjs/curve/ChainCollectorContext.js.map +1 -1
  36. package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
  37. package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
  38. package/lib/cjs/curve/CurveChain.js.map +1 -1
  39. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +61 -41
  40. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  41. package/lib/cjs/curve/CurveChainWithDistanceIndex.js +69 -46
  42. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  43. package/lib/cjs/curve/CurveCollection.d.ts +73 -46
  44. package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
  45. package/lib/cjs/curve/CurveCollection.js +100 -64
  46. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  47. package/lib/cjs/curve/CurveCurve.d.ts.map +1 -1
  48. package/lib/cjs/curve/CurveCurve.js.map +1 -1
  49. package/lib/cjs/curve/CurveCurveCloseApproachXY.js.map +1 -1
  50. package/lib/cjs/curve/CurveCurveIntersectXY.js.map +1 -1
  51. package/lib/cjs/curve/CurveCurveIntersectXYZ.js.map +1 -1
  52. package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
  53. package/lib/cjs/curve/CurveFactory.js.map +1 -1
  54. package/lib/cjs/curve/CurveLocationDetail.d.ts +45 -46
  55. package/lib/cjs/curve/CurveLocationDetail.d.ts.map +1 -1
  56. package/lib/cjs/curve/CurveLocationDetail.js +39 -41
  57. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  58. package/lib/cjs/curve/CurvePrimitive.d.ts +138 -92
  59. package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -1
  60. package/lib/cjs/curve/CurvePrimitive.js +115 -75
  61. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  62. package/lib/cjs/curve/CurveProcessor.js.map +1 -1
  63. package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
  64. package/lib/cjs/curve/GeometryQuery.d.ts +26 -20
  65. package/lib/cjs/curve/GeometryQuery.d.ts.map +1 -1
  66. package/lib/cjs/curve/GeometryQuery.js +11 -9
  67. package/lib/cjs/curve/GeometryQuery.js.map +1 -1
  68. package/lib/cjs/curve/LineSegment3d.d.ts +38 -27
  69. package/lib/cjs/curve/LineSegment3d.d.ts.map +1 -1
  70. package/lib/cjs/curve/LineSegment3d.js +77 -39
  71. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  72. package/lib/cjs/curve/LineString3d.d.ts +70 -51
  73. package/lib/cjs/curve/LineString3d.d.ts.map +1 -1
  74. package/lib/cjs/curve/LineString3d.js +120 -71
  75. package/lib/cjs/curve/LineString3d.js.map +1 -1
  76. package/lib/cjs/curve/Loop.d.ts +7 -5
  77. package/lib/cjs/curve/Loop.d.ts.map +1 -1
  78. package/lib/cjs/curve/Loop.js +18 -6
  79. package/lib/cjs/curve/Loop.js.map +1 -1
  80. package/lib/cjs/curve/ParityRegion.d.ts +7 -7
  81. package/lib/cjs/curve/ParityRegion.d.ts.map +1 -1
  82. package/lib/cjs/curve/ParityRegion.js +19 -11
  83. package/lib/cjs/curve/ParityRegion.js.map +1 -1
  84. package/lib/cjs/curve/Path.d.ts +6 -6
  85. package/lib/cjs/curve/Path.d.ts.map +1 -1
  86. package/lib/cjs/curve/Path.js +15 -9
  87. package/lib/cjs/curve/Path.js.map +1 -1
  88. package/lib/cjs/curve/PointString3d.js.map +1 -1
  89. package/lib/cjs/curve/ProxyCurve.d.ts +4 -6
  90. package/lib/cjs/curve/ProxyCurve.d.ts.map +1 -1
  91. package/lib/cjs/curve/ProxyCurve.js +7 -7
  92. package/lib/cjs/curve/ProxyCurve.js.map +1 -1
  93. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  94. package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
  95. package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
  96. package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
  97. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  98. package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
  99. package/lib/cjs/curve/Query/StrokeCountMap.d.ts +14 -13
  100. package/lib/cjs/curve/Query/StrokeCountMap.d.ts.map +1 -1
  101. package/lib/cjs/curve/Query/StrokeCountMap.js +9 -8
  102. package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
  103. package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
  104. package/lib/cjs/curve/RegionOps.d.ts +69 -47
  105. package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
  106. package/lib/cjs/curve/RegionOps.js +70 -47
  107. package/lib/cjs/curve/RegionOps.js.map +1 -1
  108. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  109. package/lib/cjs/curve/StrokeOptions.d.ts +29 -21
  110. package/lib/cjs/curve/StrokeOptions.d.ts.map +1 -1
  111. package/lib/cjs/curve/StrokeOptions.js +50 -24
  112. package/lib/cjs/curve/StrokeOptions.js.map +1 -1
  113. package/lib/cjs/curve/UnionRegion.d.ts +6 -5
  114. package/lib/cjs/curve/UnionRegion.d.ts.map +1 -1
  115. package/lib/cjs/curve/UnionRegion.js +17 -8
  116. package/lib/cjs/curve/UnionRegion.js.map +1 -1
  117. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  118. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  119. package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  120. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  121. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  122. package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
  123. package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  124. package/lib/cjs/curve/internalContexts/GapSearchContext.d.ts +2 -1
  125. package/lib/cjs/curve/internalContexts/GapSearchContext.d.ts.map +1 -1
  126. package/lib/cjs/curve/internalContexts/GapSearchContext.js +6 -2
  127. package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
  128. package/lib/cjs/curve/internalContexts/MultiChainCollector.d.ts +4 -0
  129. package/lib/cjs/curve/internalContexts/MultiChainCollector.d.ts.map +1 -1
  130. package/lib/cjs/curve/internalContexts/MultiChainCollector.js +5 -2
  131. package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
  132. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  133. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.d.ts +14 -8
  134. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.d.ts.map +1 -1
  135. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js +14 -8
  136. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  137. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.d.ts +56 -34
  138. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -1
  139. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js +152 -87
  140. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  141. package/lib/cjs/curve/internalContexts/SumLengthsContext.d.ts.map +1 -1
  142. package/lib/cjs/curve/internalContexts/SumLengthsContext.js +4 -1
  143. package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
  144. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  145. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  146. package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
  147. package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
  148. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  149. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  150. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
  151. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  152. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  153. package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
  154. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  155. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  156. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
  157. package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
  158. package/lib/cjs/geometry3d/Angle.js.map +1 -1
  159. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
  160. package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
  161. package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
  162. package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
  163. package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
  164. package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
  165. package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
  166. package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
  167. package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
  168. package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
  169. package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
  170. package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
  171. package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
  172. package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
  173. package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
  174. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  175. package/lib/cjs/geometry3d/Matrix3d.d.ts +2 -2
  176. package/lib/cjs/geometry3d/Matrix3d.js +2 -2
  177. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  178. package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
  179. package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
  180. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  181. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.d.ts +36 -32
  182. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.d.ts.map +1 -1
  183. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js +35 -32
  184. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  185. package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
  186. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  187. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  188. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  189. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  190. package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
  191. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  192. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  193. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
  194. package/lib/cjs/geometry3d/Range.d.ts +133 -93
  195. package/lib/cjs/geometry3d/Range.d.ts.map +1 -1
  196. package/lib/cjs/geometry3d/Range.js +296 -144
  197. package/lib/cjs/geometry3d/Range.js.map +1 -1
  198. package/lib/cjs/geometry3d/Ray3d.d.ts.map +1 -1
  199. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  200. package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
  201. package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
  202. package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
  203. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  204. package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
  205. package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
  206. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  207. package/lib/cjs/geometry4d/Map4d.js.map +1 -1
  208. package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
  209. package/lib/cjs/geometry4d/MomentData.js.map +1 -1
  210. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  211. package/lib/cjs/geometry4d/Point4d.js.map +1 -1
  212. package/lib/cjs/numerics/BandedSystem.js.map +1 -1
  213. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
  214. package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
  215. package/lib/cjs/numerics/Complex.js.map +1 -1
  216. package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
  217. package/lib/cjs/numerics/Newton.js.map +1 -1
  218. package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
  219. package/lib/cjs/numerics/PolarData.js.map +1 -1
  220. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  221. package/lib/cjs/numerics/Quadrature.js.map +1 -1
  222. package/lib/cjs/numerics/Range1dArray.js.map +1 -1
  223. package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
  224. package/lib/cjs/numerics/UnionFind.js.map +1 -1
  225. package/lib/cjs/numerics/UsageSums.js.map +1 -1
  226. package/lib/cjs/polyface/AuxData.js.map +1 -1
  227. package/lib/cjs/polyface/BoxTopology.js.map +1 -1
  228. package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
  229. package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
  230. package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
  231. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  232. package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
  233. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  234. package/lib/cjs/polyface/Polyface.js.map +1 -1
  235. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  236. package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
  237. package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
  238. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  239. package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
  240. package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
  241. package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
  242. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  243. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  244. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  245. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  246. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  247. package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  248. package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
  249. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  250. package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
  251. package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
  252. package/lib/cjs/serialization/BGFBReader.js.map +1 -1
  253. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  254. package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  255. package/lib/cjs/serialization/DeepCompare.js.map +1 -1
  256. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  257. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  258. package/lib/cjs/solid/Box.js.map +1 -1
  259. package/lib/cjs/solid/Cone.js.map +1 -1
  260. package/lib/cjs/solid/LinearSweep.js.map +1 -1
  261. package/lib/cjs/solid/RotationalSweep.js.map +1 -1
  262. package/lib/cjs/solid/RuledSweep.js.map +1 -1
  263. package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
  264. package/lib/cjs/solid/Sphere.js.map +1 -1
  265. package/lib/cjs/solid/SweepContour.js.map +1 -1
  266. package/lib/cjs/solid/TorusPipe.js.map +1 -1
  267. package/lib/cjs/topology/ChainMerge.js.map +1 -1
  268. package/lib/cjs/topology/Graph.js.map +1 -1
  269. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  270. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  271. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  272. package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
  273. package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
  274. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  275. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  276. package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
  277. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
  278. package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
  279. package/lib/cjs/topology/MaskManager.js.map +1 -1
  280. package/lib/cjs/topology/Merging.js.map +1 -1
  281. package/lib/cjs/topology/RegularizeFace.js.map +1 -1
  282. package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
  283. package/lib/cjs/topology/SpaceTriangulation.js.map +1 -1
  284. package/lib/cjs/topology/Triangulation.js.map +1 -1
  285. package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
  286. package/lib/esm/Constant.js.map +1 -1
  287. package/lib/esm/Geometry.js.map +1 -1
  288. package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
  289. package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
  290. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  291. package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
  292. package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
  293. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  294. package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
  295. package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
  296. package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
  297. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  298. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  299. package/lib/esm/bspline/KnotVector.js.map +1 -1
  300. package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
  301. package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
  302. package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
  303. package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
  304. package/lib/esm/clipping/ClipPlane.js.map +1 -1
  305. package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
  306. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  307. package/lib/esm/clipping/ClipVector.js.map +1 -1
  308. package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
  309. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  310. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  311. package/lib/esm/core-geometry.d.ts +1 -0
  312. package/lib/esm/core-geometry.d.ts.map +1 -1
  313. package/lib/esm/core-geometry.js +2 -0
  314. package/lib/esm/core-geometry.js.map +1 -1
  315. package/lib/esm/curve/Arc3d.d.ts +71 -86
  316. package/lib/esm/curve/Arc3d.d.ts.map +1 -1
  317. package/lib/esm/curve/Arc3d.js +110 -96
  318. package/lib/esm/curve/Arc3d.js.map +1 -1
  319. package/lib/esm/curve/ChainCollectorContext.js.map +1 -1
  320. package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
  321. package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
  322. package/lib/esm/curve/CurveChain.js.map +1 -1
  323. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +61 -41
  324. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  325. package/lib/esm/curve/CurveChainWithDistanceIndex.js +69 -46
  326. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  327. package/lib/esm/curve/CurveCollection.d.ts +73 -46
  328. package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
  329. package/lib/esm/curve/CurveCollection.js +100 -64
  330. package/lib/esm/curve/CurveCollection.js.map +1 -1
  331. package/lib/esm/curve/CurveCurve.d.ts.map +1 -1
  332. package/lib/esm/curve/CurveCurve.js.map +1 -1
  333. package/lib/esm/curve/CurveCurveCloseApproachXY.js.map +1 -1
  334. package/lib/esm/curve/CurveCurveIntersectXY.js.map +1 -1
  335. package/lib/esm/curve/CurveCurveIntersectXYZ.js.map +1 -1
  336. package/lib/esm/curve/CurveExtendMode.js.map +1 -1
  337. package/lib/esm/curve/CurveFactory.js.map +1 -1
  338. package/lib/esm/curve/CurveLocationDetail.d.ts +45 -46
  339. package/lib/esm/curve/CurveLocationDetail.d.ts.map +1 -1
  340. package/lib/esm/curve/CurveLocationDetail.js +39 -41
  341. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  342. package/lib/esm/curve/CurvePrimitive.d.ts +138 -92
  343. package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
  344. package/lib/esm/curve/CurvePrimitive.js +115 -75
  345. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  346. package/lib/esm/curve/CurveProcessor.js.map +1 -1
  347. package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
  348. package/lib/esm/curve/GeometryQuery.d.ts +26 -20
  349. package/lib/esm/curve/GeometryQuery.d.ts.map +1 -1
  350. package/lib/esm/curve/GeometryQuery.js +11 -9
  351. package/lib/esm/curve/GeometryQuery.js.map +1 -1
  352. package/lib/esm/curve/LineSegment3d.d.ts +38 -27
  353. package/lib/esm/curve/LineSegment3d.d.ts.map +1 -1
  354. package/lib/esm/curve/LineSegment3d.js +77 -39
  355. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  356. package/lib/esm/curve/LineString3d.d.ts +70 -51
  357. package/lib/esm/curve/LineString3d.d.ts.map +1 -1
  358. package/lib/esm/curve/LineString3d.js +120 -71
  359. package/lib/esm/curve/LineString3d.js.map +1 -1
  360. package/lib/esm/curve/Loop.d.ts +7 -5
  361. package/lib/esm/curve/Loop.d.ts.map +1 -1
  362. package/lib/esm/curve/Loop.js +18 -6
  363. package/lib/esm/curve/Loop.js.map +1 -1
  364. package/lib/esm/curve/ParityRegion.d.ts +7 -7
  365. package/lib/esm/curve/ParityRegion.d.ts.map +1 -1
  366. package/lib/esm/curve/ParityRegion.js +19 -11
  367. package/lib/esm/curve/ParityRegion.js.map +1 -1
  368. package/lib/esm/curve/Path.d.ts +6 -6
  369. package/lib/esm/curve/Path.d.ts.map +1 -1
  370. package/lib/esm/curve/Path.js +15 -9
  371. package/lib/esm/curve/Path.js.map +1 -1
  372. package/lib/esm/curve/PointString3d.js.map +1 -1
  373. package/lib/esm/curve/ProxyCurve.d.ts +4 -6
  374. package/lib/esm/curve/ProxyCurve.d.ts.map +1 -1
  375. package/lib/esm/curve/ProxyCurve.js +7 -7
  376. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  377. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  378. package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
  379. package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
  380. package/lib/esm/curve/Query/InOutTests.js.map +1 -1
  381. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  382. package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
  383. package/lib/esm/curve/Query/StrokeCountMap.d.ts +14 -13
  384. package/lib/esm/curve/Query/StrokeCountMap.d.ts.map +1 -1
  385. package/lib/esm/curve/Query/StrokeCountMap.js +9 -8
  386. package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
  387. package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
  388. package/lib/esm/curve/RegionOps.d.ts +69 -47
  389. package/lib/esm/curve/RegionOps.d.ts.map +1 -1
  390. package/lib/esm/curve/RegionOps.js +70 -47
  391. package/lib/esm/curve/RegionOps.js.map +1 -1
  392. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  393. package/lib/esm/curve/StrokeOptions.d.ts +29 -21
  394. package/lib/esm/curve/StrokeOptions.d.ts.map +1 -1
  395. package/lib/esm/curve/StrokeOptions.js +50 -24
  396. package/lib/esm/curve/StrokeOptions.js.map +1 -1
  397. package/lib/esm/curve/UnionRegion.d.ts +6 -5
  398. package/lib/esm/curve/UnionRegion.d.ts.map +1 -1
  399. package/lib/esm/curve/UnionRegion.js +17 -8
  400. package/lib/esm/curve/UnionRegion.js.map +1 -1
  401. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  402. package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  403. package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  404. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  405. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  406. package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
  407. package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  408. package/lib/esm/curve/internalContexts/GapSearchContext.d.ts +2 -1
  409. package/lib/esm/curve/internalContexts/GapSearchContext.d.ts.map +1 -1
  410. package/lib/esm/curve/internalContexts/GapSearchContext.js +6 -2
  411. package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
  412. package/lib/esm/curve/internalContexts/MultiChainCollector.d.ts +4 -0
  413. package/lib/esm/curve/internalContexts/MultiChainCollector.d.ts.map +1 -1
  414. package/lib/esm/curve/internalContexts/MultiChainCollector.js +5 -2
  415. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  416. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  417. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.d.ts +14 -8
  418. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.d.ts.map +1 -1
  419. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js +14 -8
  420. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  421. package/lib/esm/curve/internalContexts/PolygonOffsetContext.d.ts +56 -34
  422. package/lib/esm/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -1
  423. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js +152 -87
  424. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  425. package/lib/esm/curve/internalContexts/SumLengthsContext.d.ts.map +1 -1
  426. package/lib/esm/curve/internalContexts/SumLengthsContext.js +4 -1
  427. package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
  428. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  429. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  430. package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
  431. package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
  432. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  433. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  434. package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
  435. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  436. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  437. package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
  438. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  439. package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  440. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
  441. package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
  442. package/lib/esm/geometry3d/Angle.js.map +1 -1
  443. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  444. package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
  445. package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
  446. package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
  447. package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
  448. package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
  449. package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
  450. package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
  451. package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
  452. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
  453. package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
  454. package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
  455. package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
  456. package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
  457. package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
  458. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  459. package/lib/esm/geometry3d/Matrix3d.d.ts +2 -2
  460. package/lib/esm/geometry3d/Matrix3d.js +2 -2
  461. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  462. package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
  463. package/lib/esm/geometry3d/Plane3d.js.map +1 -1
  464. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  465. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.d.ts +36 -32
  466. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.d.ts.map +1 -1
  467. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js +35 -32
  468. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  469. package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
  470. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  471. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  472. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  473. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  474. package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
  475. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  476. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  477. package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
  478. package/lib/esm/geometry3d/Range.d.ts +133 -93
  479. package/lib/esm/geometry3d/Range.d.ts.map +1 -1
  480. package/lib/esm/geometry3d/Range.js +296 -144
  481. package/lib/esm/geometry3d/Range.js.map +1 -1
  482. package/lib/esm/geometry3d/Ray3d.d.ts.map +1 -1
  483. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  484. package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
  485. package/lib/esm/geometry3d/Segment1d.js.map +1 -1
  486. package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
  487. package/lib/esm/geometry3d/Transform.js.map +1 -1
  488. package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
  489. package/lib/esm/geometry3d/XYZProps.js.map +1 -1
  490. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  491. package/lib/esm/geometry4d/Map4d.js.map +1 -1
  492. package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
  493. package/lib/esm/geometry4d/MomentData.js.map +1 -1
  494. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  495. package/lib/esm/geometry4d/Point4d.js.map +1 -1
  496. package/lib/esm/numerics/BandedSystem.js.map +1 -1
  497. package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
  498. package/lib/esm/numerics/ClusterableArray.js.map +1 -1
  499. package/lib/esm/numerics/Complex.js.map +1 -1
  500. package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
  501. package/lib/esm/numerics/Newton.js.map +1 -1
  502. package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
  503. package/lib/esm/numerics/PolarData.js.map +1 -1
  504. package/lib/esm/numerics/Polynomials.js.map +1 -1
  505. package/lib/esm/numerics/Quadrature.js.map +1 -1
  506. package/lib/esm/numerics/Range1dArray.js.map +1 -1
  507. package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
  508. package/lib/esm/numerics/UnionFind.js.map +1 -1
  509. package/lib/esm/numerics/UsageSums.js.map +1 -1
  510. package/lib/esm/polyface/AuxData.js.map +1 -1
  511. package/lib/esm/polyface/BoxTopology.js.map +1 -1
  512. package/lib/esm/polyface/FacetFaceData.js.map +1 -1
  513. package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
  514. package/lib/esm/polyface/FacetOrientation.js.map +1 -1
  515. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  516. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
  517. package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  518. package/lib/esm/polyface/Polyface.js.map +1 -1
  519. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  520. package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
  521. package/lib/esm/polyface/PolyfaceData.js.map +1 -1
  522. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  523. package/lib/esm/polyface/RangeLengthData.js.map +1 -1
  524. package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
  525. package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
  526. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  527. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  528. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  529. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  530. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  531. package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  532. package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
  533. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  534. package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
  535. package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
  536. package/lib/esm/serialization/BGFBReader.js.map +1 -1
  537. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  538. package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  539. package/lib/esm/serialization/DeepCompare.js.map +1 -1
  540. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  541. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  542. package/lib/esm/solid/Box.js.map +1 -1
  543. package/lib/esm/solid/Cone.js.map +1 -1
  544. package/lib/esm/solid/LinearSweep.js.map +1 -1
  545. package/lib/esm/solid/RotationalSweep.js.map +1 -1
  546. package/lib/esm/solid/RuledSweep.js.map +1 -1
  547. package/lib/esm/solid/SolidPrimitive.js.map +1 -1
  548. package/lib/esm/solid/Sphere.js.map +1 -1
  549. package/lib/esm/solid/SweepContour.js.map +1 -1
  550. package/lib/esm/solid/TorusPipe.js.map +1 -1
  551. package/lib/esm/topology/ChainMerge.js.map +1 -1
  552. package/lib/esm/topology/Graph.js.map +1 -1
  553. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  554. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  555. package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  556. package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
  557. package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
  558. package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  559. package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  560. package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
  561. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
  562. package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
  563. package/lib/esm/topology/MaskManager.js.map +1 -1
  564. package/lib/esm/topology/Merging.js.map +1 -1
  565. package/lib/esm/topology/RegularizeFace.js.map +1 -1
  566. package/lib/esm/topology/SignedDataSummary.js.map +1 -1
  567. package/lib/esm/topology/SpaceTriangulation.js.map +1 -1
  568. package/lib/esm/topology/Triangulation.js.map +1 -1
  569. package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
  570. package/package.json +3 -3
@@ -8,7 +8,7 @@ import { CurvePrimitive } from "./CurvePrimitive";
8
8
  export declare enum CurveIntervalRole {
9
9
  /** This point is an isolated point NOT at a primary vertex. */
10
10
  isolated = 0,
11
- /** This point is an isolated vertex hit */
11
+ /** This point is an isolated vertex hit */
12
12
  isolatedAtVertex = 1,
13
13
  /** This is the beginning of an interval */
14
14
  intervalStart = 10,
@@ -22,11 +22,11 @@ export declare enum CurveIntervalRole {
22
22
  * @public
23
23
  */
24
24
  export declare enum CurveSearchStatus {
25
- /** unimplemented or zero length curve */
25
+ /** Unimplemented or zero length curve */
26
26
  error = 0,
27
- /** complete success of search */
27
+ /** Complete success of search */
28
28
  success = 1,
29
- /** search ended prematurely (e.g. at incomplete distance moved) at start or end of curve */
29
+ /** Search ended prematurely (e.g. at incomplete distance moved) at start or end of curve */
30
30
  stoppedAtBoundary = 2
31
31
  }
32
32
  /**
@@ -38,7 +38,7 @@ export declare enum CurveSearchStatus {
38
38
  export declare class CurveLocationDetail {
39
39
  /** The curve being evaluated */
40
40
  curve?: CurvePrimitive;
41
- /** optional ray */
41
+ /** Optional ray */
42
42
  ray?: Ray3d;
43
43
  /** The fractional position along the curve */
44
44
  fraction: number;
@@ -48,43 +48,49 @@ export declare class CurveLocationDetail {
48
48
  point: Point3d;
49
49
  /** A vector (e.g. tangent vector) in context */
50
50
  vectorInCurveLocationDetail?: Vector3d;
51
- /** A context-specific numeric value. (E.g. a distance) */
51
+ /** A context-specific numeric value. (e.g. a distance) */
52
52
  a: number;
53
- /** optional CurveLocationDetail with more detail of location. For instance, a detail for fractional position within
53
+ /**
54
+ * Optional CurveLocationDetail with more detail of location. For instance, a detail for fractional position within
54
55
  * a CurveChainWithDistanceIndex returns fraction and distance along the chain as its primary data and
55
56
  * further detail of the particular curve within the chain in the childDetail.
56
57
  */
57
58
  childDetail?: CurveLocationDetail;
58
- /** A status indicator for certain searches.
59
+ /**
60
+ * A status indicator for certain searches.
59
61
  * * e.g. CurvePrimitive.moveSignedDistanceFromFraction
60
62
  */
61
63
  curveSearchStatus?: CurveSearchStatus;
62
- /** (optional) second fraction, e.g. end of interval of coincident curves */
64
+ /** (Optional) second fraction, e.g. end of interval of coincident curves */
63
65
  fraction1?: number;
64
- /** (optional) second point, e.g. end of interval of coincident curves */
66
+ /** (Optional) second point, e.g. end of interval of coincident curves */
65
67
  point1?: Point3d;
66
68
  /** A context-specific additional point */
67
69
  pointQ: Point3d;
70
+ /** Constructor */
68
71
  constructor();
69
72
  /** Set the (optional) intervalRole field */
70
73
  setIntervalRole(value: CurveIntervalRole): void;
71
74
  /** Set the (optional) fraction1 and point1, using direct assignment (capture!) to point1 */
72
75
  captureFraction1Point1(fraction1: number, point1: Point3d): void;
73
- /** test if this pair has fraction1 defined */
76
+ /** Test if this pair has fraction1 defined */
74
77
  get hasFraction1(): boolean;
75
- /** test if this is an isolated point. This is true if intervalRole is any of (undefined, isolated, isolatedAtVertex) */
78
+ /** Test if this is an isolated point. This is true if intervalRole is any of (undefined, isolated, isolatedAtVertex) */
76
79
  get isIsolated(): boolean;
77
- /** return the fraction delta. (0 if no fraction1) */
80
+ /** Return the fraction delta. (0 if no fraction1) */
78
81
  get fractionDelta(): number;
79
- /** If (fraction1, point1) are defined, make them the primary (and only) data.
82
+ /**
83
+ * If (fraction1, point1) are defined, make them the primary (and only) data.
80
84
  * * No action if undefined.
81
85
  */
82
86
  collapseToEnd(): void;
83
- /** make (fraction, point) the primary (and only) data.
87
+ /**
88
+ * Make (fraction, point) the primary (and only) data.
84
89
  * * No action if undefined.
85
90
  */
86
91
  collapseToStart(): void;
87
- /** Return a complete copy, WITH CAVEATS . . .
92
+ /**
93
+ * Return a complete copy, WITH CAVEATS . . .
88
94
  * * curve member is copied as a reference.
89
95
  * * point and vector members are cloned.
90
96
  */
@@ -108,41 +114,30 @@ export declare class CurveLocationDetail {
108
114
  * @param a (optional) numeric value to install.
109
115
  */
110
116
  setFR(fraction: number, ray: Ray3d, a?: number): void;
111
- /** Set the CurvePrimitive pointer, leaving all other properties untouched.
112
- */
117
+ /** Set the CurvePrimitive pointer, leaving all other properties untouched. */
113
118
  setCurve(curve: CurvePrimitive): void;
114
- /** record the distance from the CurveLocationDetail's point to the parameter point. */
119
+ /** Record the distance from the CurveLocationDetail's point to the parameter point. */
115
120
  setDistanceTo(point: Point3d): void;
116
- /** create with a CurvePrimitive pointer but no coordinate data.
117
- */
121
+ /** Create with a CurvePrimitive pointer but no coordinate data. */
118
122
  static create(curve?: CurvePrimitive, result?: CurveLocationDetail): CurveLocationDetail;
119
- /** create with CurvePrimitive pointer, fraction, and point coordinates.
120
- */
123
+ /** Create with CurvePrimitive pointer, fraction, and point coordinates. */
121
124
  static createCurveFractionPoint(curve: CurvePrimitive | undefined, fraction: number, point: Point3d, result?: CurveLocationDetail): CurveLocationDetail;
122
- /**
123
- * Create a new detail with only ray, fraction, and point.
124
- */
125
+ /** Create a new detail with only ray, fraction, and point. */
125
126
  static createRayFractionPoint(ray: Ray3d, fraction: number, point: Point3d, result?: CurveLocationDetail): CurveLocationDetail;
126
- /** create with CurvePrimitive pointer, fraction, and point coordinates
127
- */
127
+ /** Create with CurvePrimitive pointer, fraction, and point coordinates */
128
128
  static createCurveFractionPointDistanceCurveSearchStatus(curve: CurvePrimitive | undefined, fraction: number, point: Point3d, distance: number, status: CurveSearchStatus, result?: CurveLocationDetail): CurveLocationDetail;
129
- /** create with curveSearchStatus affected by allowExtension.
130
- * *
131
- */
129
+ /** Create with curveSearchStatus affected by allowExtension. */
132
130
  static createConditionalMoveSignedDistance(allowExtension: boolean, curve: CurvePrimitive, startFraction: number, endFraction: number, requestedSignedDistance: number, result?: CurveLocationDetail): CurveLocationDetail;
133
- /** create with CurvePrimitive pointer and fraction for evaluation.
134
- */
131
+ /** Create with CurvePrimitive pointer and fraction for evaluation. */
135
132
  static createCurveEvaluatedFraction(curve: CurvePrimitive, fraction: number, result?: CurveLocationDetail): CurveLocationDetail;
136
- /** create with CurvePrimitive pointer and fraction for evaluation.
137
- */
133
+ /** Create with CurvePrimitive pointer and fraction for evaluation. */
138
134
  static createCurveEvaluatedFractionPointAndDerivative(curve: CurvePrimitive, fraction: number, result?: CurveLocationDetail): CurveLocationDetail;
139
- /** create with CurvePrimitive pointer and 2 fractions for evaluation.
140
- */
135
+ /** Create with CurvePrimitive pointer and 2 fractions for evaluation. */
141
136
  static createCurveEvaluatedFractionFraction(curve: CurvePrimitive, fraction0: number, fraction1: number, result?: CurveLocationDetail): CurveLocationDetail;
142
- /** create with CurvePrimitive pointer, fraction, and point coordinates.
143
- */
137
+ /** Create with CurvePrimitive pointer, fraction, and point coordinates. */
144
138
  static createCurveFractionPointDistance(curve: CurvePrimitive, fraction: number, point: Point3d, a: number, result?: CurveLocationDetail): CurveLocationDetail;
145
- /** update or create if closer than current contents.
139
+ /**
140
+ * Update or create if closer than current contents.
146
141
  * @param curve candidate curve
147
142
  * @param fraction candidate fraction
148
143
  * @param point candidate point
@@ -151,12 +146,12 @@ export declare class CurveLocationDetail {
151
146
  */
152
147
  updateIfCloserCurveFractionPointDistance(curve: CurvePrimitive, fraction: number, point: Point3d, a: number): boolean;
153
148
  /**
154
- * * Exchange the (fraction,fraction1) and (point, point1) pairs.
149
+ * Exchange the (fraction,fraction1) and (point, point1) pairs.
155
150
  * * (Skip each swap if its "1" value is undefined)
156
151
  */
157
152
  swapFractionsAndPoints(): void;
158
153
  /**
159
- * * return the fraction where f falls between fraction and fraction1.
154
+ * Return the fraction where f falls between fraction and fraction1.
160
155
  * * ASSUME fraction1 defined
161
156
  */
162
157
  inverseInterpolateFraction(f: number, defaultFraction?: number): number;
@@ -167,7 +162,8 @@ export declare class CurveLocationDetail {
167
162
  */
168
163
  static chooseSmallerA(detailA: CurveLocationDetail | undefined, detailB: CurveLocationDetail | undefined): CurveLocationDetail | undefined;
169
164
  }
170
- /** Enumeration of configurations for intersections and min/max distance-between-curve
165
+ /**
166
+ * Enumeration of configurations for intersections and min/max distance-between-curve
171
167
  * @public
172
168
  */
173
169
  export declare enum CurveCurveApproachType {
@@ -180,7 +176,8 @@ export declare enum CurveCurveApproachType {
180
176
  /** Completely parallel geometry. */
181
177
  ParallelGeometry = 3
182
178
  }
183
- /** A pair of CurveLocationDetail.
179
+ /**
180
+ * A pair of CurveLocationDetail.
184
181
  * @public
185
182
  */
186
183
  export declare class CurveLocationDetailPair {
@@ -188,14 +185,16 @@ export declare class CurveLocationDetailPair {
188
185
  detailA: CurveLocationDetail;
189
186
  /** The second of the two details ... */
190
187
  detailB: CurveLocationDetail;
191
- /** enumeration of how the detail pairs relate.
188
+ /**
189
+ * Enumeration of how the detail pairs relate.
192
190
  * * This is set only by certain closeApproach calculations.
193
191
  */
194
192
  approachType?: CurveCurveApproachType;
195
193
  constructor(detailA?: CurveLocationDetail, detailB?: CurveLocationDetail);
196
194
  /** Create a curve detail pair using references to two CurveLocationDetails */
197
195
  static createCapture(detailA: CurveLocationDetail, detailB: CurveLocationDetail, result?: CurveLocationDetailPair): CurveLocationDetailPair;
198
- /** Create a curve detail pair using references to two CurveLocationDetails.
196
+ /**
197
+ * Create a curve detail pair using references to two CurveLocationDetails.
199
198
  * * optionally install in reversed positions
200
199
  */
201
200
  static createCaptureOptionalReverse(detailA: CurveLocationDetail, detailB: CurveLocationDetail, reversed: boolean, result?: CurveLocationDetailPair): CurveLocationDetailPair;
@@ -1 +1 @@
1
- {"version":3,"file":"CurveLocationDetail.d.ts","sourceRoot":"","sources":["../../../src/curve/CurveLocationDetail.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CurveLocationDetail.d.ts","sourceRoot":"","sources":["../../../src/curve/CurveLocationDetail.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ export var CurveIntervalRole;
15
15
  (function (CurveIntervalRole) {
16
16
  /** This point is an isolated point NOT at a primary vertex. */
17
17
  CurveIntervalRole[CurveIntervalRole["isolated"] = 0] = "isolated";
18
- /** This point is an isolated vertex hit */
18
+ /** This point is an isolated vertex hit */
19
19
  CurveIntervalRole[CurveIntervalRole["isolatedAtVertex"] = 1] = "isolatedAtVertex";
20
20
  /** This is the beginning of an interval */
21
21
  CurveIntervalRole[CurveIntervalRole["intervalStart"] = 10] = "intervalStart";
@@ -30,15 +30,15 @@ export var CurveIntervalRole;
30
30
  */
31
31
  export var CurveSearchStatus;
32
32
  (function (CurveSearchStatus) {
33
- /** unimplemented or zero length curve */
33
+ /** Unimplemented or zero length curve */
34
34
  CurveSearchStatus[CurveSearchStatus["error"] = 0] = "error";
35
- /** complete success of search */
35
+ /** Complete success of search */
36
36
  CurveSearchStatus[CurveSearchStatus["success"] = 1] = "success";
37
- /** search ended prematurely (e.g. at incomplete distance moved) at start or end of curve */
37
+ /** Search ended prematurely (e.g. at incomplete distance moved) at start or end of curve */
38
38
  CurveSearchStatus[CurveSearchStatus["stoppedAtBoundary"] = 2] = "stoppedAtBoundary";
39
39
  })(CurveSearchStatus || (CurveSearchStatus = {}));
40
40
  /**
41
- * use to update a vector in case where source and prior result are both possibly undefined.
41
+ * Use to update a vector in case where source and prior result are both possibly undefined.
42
42
  * * Any undefined source returns undefined.
43
43
  * * For defined source, reuse optional result if available.
44
44
  * @param source optional source
@@ -57,6 +57,7 @@ function optionalVectorUpdate(source, result) {
57
57
  * @public
58
58
  */
59
59
  export class CurveLocationDetail {
60
+ /** Constructor */
60
61
  constructor() {
61
62
  this.pointQ = Point3d.createZero();
62
63
  this.fraction = 0;
@@ -72,21 +73,22 @@ export class CurveLocationDetail {
72
73
  this.fraction1 = fraction1;
73
74
  this.point1 = point1;
74
75
  }
75
- /** test if this pair has fraction1 defined */
76
+ /** Test if this pair has fraction1 defined */
76
77
  get hasFraction1() {
77
78
  return this.fraction1 !== undefined;
78
79
  }
79
- /** test if this is an isolated point. This is true if intervalRole is any of (undefined, isolated, isolatedAtVertex) */
80
+ /** Test if this is an isolated point. This is true if intervalRole is any of (undefined, isolated, isolatedAtVertex) */
80
81
  get isIsolated() {
81
82
  return this.intervalRole === undefined
82
83
  || this.intervalRole === CurveIntervalRole.isolated
83
84
  || this.intervalRole === CurveIntervalRole.isolatedAtVertex;
84
85
  }
85
- /** return the fraction delta. (0 if no fraction1) */
86
+ /** Return the fraction delta. (0 if no fraction1) */
86
87
  get fractionDelta() {
87
88
  return this.fraction1 !== undefined ? this.fraction1 - this.fraction : 0.0;
88
89
  }
89
- /** If (fraction1, point1) are defined, make them the primary (and only) data.
90
+ /**
91
+ * If (fraction1, point1) are defined, make them the primary (and only) data.
90
92
  * * No action if undefined.
91
93
  */
92
94
  collapseToEnd() {
@@ -99,14 +101,16 @@ export class CurveLocationDetail {
99
101
  this.point1 = undefined;
100
102
  }
101
103
  }
102
- /** make (fraction, point) the primary (and only) data.
104
+ /**
105
+ * Make (fraction, point) the primary (and only) data.
103
106
  * * No action if undefined.
104
107
  */
105
108
  collapseToStart() {
106
109
  this.fraction1 = undefined;
107
110
  this.point1 = undefined;
108
111
  }
109
- /** Return a complete copy, WITH CAVEATS . . .
112
+ /**
113
+ * Return a complete copy, WITH CAVEATS . . .
110
114
  * * curve member is copied as a reference.
111
115
  * * point and vector members are cloned.
112
116
  */
@@ -150,22 +154,21 @@ export class CurveLocationDetail {
150
154
  setFR(fraction, ray, a = 0) {
151
155
  return this.setFP(fraction, ray.origin, ray.direction, a);
152
156
  }
153
- /** Set the CurvePrimitive pointer, leaving all other properties untouched.
154
- */
155
- setCurve(curve) { this.curve = curve; }
156
- /** record the distance from the CurveLocationDetail's point to the parameter point. */
157
+ /** Set the CurvePrimitive pointer, leaving all other properties untouched. */
158
+ setCurve(curve) {
159
+ this.curve = curve;
160
+ }
161
+ /** Record the distance from the CurveLocationDetail's point to the parameter point. */
157
162
  setDistanceTo(point) {
158
163
  this.a = this.point.distance(point);
159
164
  }
160
- /** create with a CurvePrimitive pointer but no coordinate data.
161
- */
165
+ /** Create with a CurvePrimitive pointer but no coordinate data. */
162
166
  static create(curve, result) {
163
167
  result = result ? result : new CurveLocationDetail();
164
168
  result.curve = curve;
165
169
  return result;
166
170
  }
167
- /** create with CurvePrimitive pointer, fraction, and point coordinates.
168
- */
171
+ /** Create with CurvePrimitive pointer, fraction, and point coordinates. */
169
172
  static createCurveFractionPoint(curve, fraction, point, result) {
170
173
  result = result ? result : new CurveLocationDetail();
171
174
  result.curve = curve;
@@ -176,9 +179,7 @@ export class CurveLocationDetail {
176
179
  result.curveSearchStatus = undefined;
177
180
  return result;
178
181
  }
179
- /**
180
- * Create a new detail with only ray, fraction, and point.
181
- */
182
+ /** Create a new detail with only ray, fraction, and point. */
182
183
  static createRayFractionPoint(ray, fraction, point, result) {
183
184
  result = result ? result : new CurveLocationDetail();
184
185
  result.fraction = fraction;
@@ -186,8 +187,7 @@ export class CurveLocationDetail {
186
187
  result.point.setFromPoint3d(point);
187
188
  return result;
188
189
  }
189
- /** create with CurvePrimitive pointer, fraction, and point coordinates
190
- */
190
+ /** Create with CurvePrimitive pointer, fraction, and point coordinates */
191
191
  static createCurveFractionPointDistanceCurveSearchStatus(curve, fraction, point, distance, status, result) {
192
192
  result = result ? result : new CurveLocationDetail();
193
193
  result.curve = curve;
@@ -198,9 +198,7 @@ export class CurveLocationDetail {
198
198
  result.curveSearchStatus = status;
199
199
  return result;
200
200
  }
201
- /** create with curveSearchStatus affected by allowExtension.
202
- * *
203
- */
201
+ /** Create with curveSearchStatus affected by allowExtension. */
204
202
  static createConditionalMoveSignedDistance(allowExtension, curve, startFraction, endFraction, requestedSignedDistance, result) {
205
203
  let a = requestedSignedDistance;
206
204
  let status = CurveSearchStatus.success;
@@ -226,8 +224,7 @@ export class CurveLocationDetail {
226
224
  result.curveSearchStatus = status;
227
225
  return result;
228
226
  }
229
- /** create with CurvePrimitive pointer and fraction for evaluation.
230
- */
227
+ /** Create with CurvePrimitive pointer and fraction for evaluation. */
231
228
  static createCurveEvaluatedFraction(curve, fraction, result) {
232
229
  result = result ? result : new CurveLocationDetail();
233
230
  result.curve = curve;
@@ -238,8 +235,7 @@ export class CurveLocationDetail {
238
235
  result.a = 0.0;
239
236
  return result;
240
237
  }
241
- /** create with CurvePrimitive pointer and fraction for evaluation.
242
- */
238
+ /** Create with CurvePrimitive pointer and fraction for evaluation. */
243
239
  static createCurveEvaluatedFractionPointAndDerivative(curve, fraction, result) {
244
240
  result = result ? result : new CurveLocationDetail();
245
241
  result.curve = curve;
@@ -251,8 +247,7 @@ export class CurveLocationDetail {
251
247
  result.a = 0.0;
252
248
  return result;
253
249
  }
254
- /** create with CurvePrimitive pointer and 2 fractions for evaluation.
255
- */
250
+ /** Create with CurvePrimitive pointer and 2 fractions for evaluation. */
256
251
  static createCurveEvaluatedFractionFraction(curve, fraction0, fraction1, result) {
257
252
  result = result ? result : new CurveLocationDetail();
258
253
  result.curve = curve;
@@ -265,8 +260,7 @@ export class CurveLocationDetail {
265
260
  result.a = 0.0;
266
261
  return result;
267
262
  }
268
- /** create with CurvePrimitive pointer, fraction, and point coordinates.
269
- */
263
+ /** Create with CurvePrimitive pointer, fraction, and point coordinates. */
270
264
  static createCurveFractionPointDistance(curve, fraction, point, a, result) {
271
265
  result = result ? result : new CurveLocationDetail();
272
266
  result.curve = curve;
@@ -277,7 +271,8 @@ export class CurveLocationDetail {
277
271
  result.curveSearchStatus = undefined;
278
272
  return result;
279
273
  }
280
- /** update or create if closer than current contents.
274
+ /**
275
+ * Update or create if closer than current contents.
281
276
  * @param curve candidate curve
282
277
  * @param fraction candidate fraction
283
278
  * @param point candidate point
@@ -291,7 +286,7 @@ export class CurveLocationDetail {
291
286
  return true;
292
287
  }
293
288
  /**
294
- * * Exchange the (fraction,fraction1) and (point, point1) pairs.
289
+ * Exchange the (fraction,fraction1) and (point, point1) pairs.
295
290
  * * (Skip each swap if its "1" value is undefined)
296
291
  */
297
292
  swapFractionsAndPoints() {
@@ -307,7 +302,7 @@ export class CurveLocationDetail {
307
302
  }
308
303
  }
309
304
  /**
310
- * * return the fraction where f falls between fraction and fraction1.
305
+ * Return the fraction where f falls between fraction and fraction1.
311
306
  * * ASSUME fraction1 defined
312
307
  */
313
308
  inverseInterpolateFraction(f, defaultFraction = 0) {
@@ -330,7 +325,8 @@ export class CurveLocationDetail {
330
325
  return detailB;
331
326
  }
332
327
  }
333
- /** Enumeration of configurations for intersections and min/max distance-between-curve
328
+ /**
329
+ * Enumeration of configurations for intersections and min/max distance-between-curve
334
330
  * @public
335
331
  */
336
332
  export var CurveCurveApproachType;
@@ -344,7 +340,8 @@ export var CurveCurveApproachType;
344
340
  /** Completely parallel geometry. */
345
341
  CurveCurveApproachType[CurveCurveApproachType["ParallelGeometry"] = 3] = "ParallelGeometry";
346
342
  })(CurveCurveApproachType || (CurveCurveApproachType = {}));
347
- /** A pair of CurveLocationDetail.
343
+ /**
344
+ * A pair of CurveLocationDetail.
348
345
  * @public
349
346
  */
350
347
  export class CurveLocationDetailPair {
@@ -359,7 +356,8 @@ export class CurveLocationDetailPair {
359
356
  result.detailB = detailB;
360
357
  return result;
361
358
  }
362
- /** Create a curve detail pair using references to two CurveLocationDetails.
359
+ /**
360
+ * Create a curve detail pair using references to two CurveLocationDetails.
363
361
  * * optionally install in reversed positions
364
362
  */
365
363
  static createCaptureOptionalReverse(detailA, detailB, reversed, result) {
@@ -1 +1 @@
1
- {"version":3,"file":"CurveLocationDetail.js","sourceRoot":"","sources":["../../../src/curve/CurveLocationDetail.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Curve\r\n */\r\nimport { Geometry } from \"../Geometry\";\r\nimport { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\r\nimport { Ray3d } from \"../geometry3d/Ray3d\";\r\nimport { CurvePrimitive } from \"./CurvePrimitive\";\r\n\r\n/**\r\n * An enumeration of special conditions being described by a CurveLocationDetail.\r\n * @public\r\n */\r\nexport enum CurveIntervalRole {\r\n /** This point is an isolated point NOT at a primary vertex. */\r\n isolated = 0,\r\n /** This point is an isolated vertex hit */\r\n isolatedAtVertex = 1,\r\n /** This is the beginning of an interval */\r\n intervalStart = 10,\r\n /** This is an interior point of an interval. */\r\n intervalInterior = 11,\r\n /** This is the end of an interval */\r\n intervalEnd = 12,\r\n}\r\n/**\r\n * Return code for CurvePrimitive method `moveSignedDistanceFromFraction`\r\n * @public\r\n */\r\nexport enum CurveSearchStatus {\r\n /** unimplemented or zero length curve */\r\n error,\r\n /** complete success of search */\r\n success = 1,\r\n /** search ended prematurely (e.g. at incomplete distance moved) at start or end of curve */\r\n stoppedAtBoundary = 2,\r\n}\r\n\r\n/**\r\n * use to update a vector in case where source and prior result are both possibly undefined.\r\n * * Any undefined source returns undefined.\r\n * * For defined source, reuse optional result if available.\r\n * @param source optional source\r\n * @param result optional result\r\n */\r\nfunction optionalVectorUpdate(source: Vector3d | undefined, result: Vector3d | undefined): Vector3d | undefined {\r\n if (source) {\r\n return source.clone(result);\r\n }\r\n return undefined;\r\n}\r\n/**\r\n * CurveLocationDetail carries point and parameter data about a point evaluated on a curve.\r\n * * These are returned by a variety of queries.\r\n * * Particular contents can vary among the queries.\r\n * @public\r\n */\r\nexport class CurveLocationDetail {\r\n /** The curve being evaluated */\r\n public curve?: CurvePrimitive;\r\n /** optional ray */\r\n public ray?: Ray3d;\r\n /** The fractional position along the curve */\r\n public fraction: number;\r\n /** Detail condition of the role this point has in some context */\r\n public intervalRole?: CurveIntervalRole;\r\n /** The point on the curve */\r\n public point: Point3d;\r\n /** A vector (e.g. tangent vector) in context */\r\n public vectorInCurveLocationDetail?: Vector3d;\r\n /** A context-specific numeric value. (E.g. a distance) */\r\n public a: number;\r\n /** optional CurveLocationDetail with more detail of location. For instance, a detail for fractional position within\r\n * a CurveChainWithDistanceIndex returns fraction and distance along the chain as its primary data and\r\n * further detail of the particular curve within the chain in the childDetail.\r\n */\r\n public childDetail?: CurveLocationDetail;\r\n /** A status indicator for certain searches.\r\n * * e.g. CurvePrimitive.moveSignedDistanceFromFraction\r\n */\r\n public curveSearchStatus?: CurveSearchStatus;\r\n /** (optional) second fraction, e.g. end of interval of coincident curves */\r\n public fraction1?: number;\r\n /** (optional) second point, e.g. end of interval of coincident curves */\r\n public point1?: Point3d;\r\n /** A context-specific additional point */\r\n public pointQ: Point3d; // extra point for use in computations\r\n\r\n public constructor() {\r\n this.pointQ = Point3d.createZero();\r\n this.fraction = 0;\r\n this.point = Point3d.createZero();\r\n this.a = 0.0;\r\n }\r\n /** Set the (optional) intervalRole field */\r\n public setIntervalRole(value: CurveIntervalRole): void {\r\n this.intervalRole = value;\r\n }\r\n /** Set the (optional) fraction1 and point1, using direct assignment (capture!) to point1 */\r\n public captureFraction1Point1(fraction1: number, point1: Point3d): void {\r\n this.fraction1 = fraction1;\r\n this.point1 = point1;\r\n }\r\n\r\n /** test if this pair has fraction1 defined */\r\n public get hasFraction1(): boolean {\r\n return this.fraction1 !== undefined;\r\n }\r\n\r\n /** test if this is an isolated point. This is true if intervalRole is any of (undefined, isolated, isolatedAtVertex) */\r\n public get isIsolated(): boolean {\r\n return this.intervalRole === undefined\r\n || this.intervalRole === CurveIntervalRole.isolated\r\n || this.intervalRole === CurveIntervalRole.isolatedAtVertex;\r\n }\r\n\r\n /** return the fraction delta. (0 if no fraction1) */\r\n public get fractionDelta(): number {\r\n return this.fraction1 !== undefined ? this.fraction1 - this.fraction : 0.0;\r\n }\r\n\r\n /** If (fraction1, point1) are defined, make them the primary (and only) data.\r\n * * No action if undefined.\r\n */\r\n public collapseToEnd() {\r\n if (this.fraction1 !== undefined) {\r\n this.fraction = this.fraction1;\r\n this.fraction1 = undefined;\r\n }\r\n if (this.point1) {\r\n this.point = this.point1;\r\n this.point1 = undefined;\r\n }\r\n }\r\n\r\n /** make (fraction, point) the primary (and only) data.\r\n * * No action if undefined.\r\n */\r\n public collapseToStart() {\r\n this.fraction1 = undefined;\r\n this.point1 = undefined;\r\n }\r\n\r\n /** Return a complete copy, WITH CAVEATS . . .\r\n * * curve member is copied as a reference.\r\n * * point and vector members are cloned.\r\n */\r\n public clone(result?: CurveLocationDetail): CurveLocationDetail {\r\n if (result === this)\r\n return result;\r\n result = result ? result : new CurveLocationDetail();\r\n result.curve = this.curve;\r\n result.fraction = this.fraction;\r\n result.fraction1 = this.fraction1;\r\n result.point1 = this.point1;\r\n result.point.setFromPoint3d(this.point);\r\n result.vectorInCurveLocationDetail = optionalVectorUpdate(this.vectorInCurveLocationDetail, result.vectorInCurveLocationDetail);\r\n result.a = this.a;\r\n result.curveSearchStatus = this.curveSearchStatus;\r\n return result;\r\n }\r\n\r\n /**\r\n * Updated in this instance.\r\n * * Note that if caller omits `vector` and `a`, those fields are updated to the call-list defaults (NOT left as-is)\r\n * * point and vector updates are by data copy (not capture of pointers)\r\n * @param fraction (required) fraction to install\r\n * @param point (required) point to install\r\n * @param vector (optional) vector to install.\r\n * @param a (optional) numeric value to install.\r\n */\r\n public setFP(fraction: number, point: Point3d, vector?: Vector3d, a: number = 0.0) {\r\n this.fraction = fraction;\r\n this.point.setFrom(point);\r\n this.vectorInCurveLocationDetail = optionalVectorUpdate(vector, this.vectorInCurveLocationDetail);\r\n this.a = a;\r\n }\r\n\r\n /**\r\n * Updated in this instance.\r\n * * Note that if caller omits a`, that field is updated to the call-list default (NOT left as-is)\r\n * * point and vector updates are by data copy (not capture of the ray members)\r\n * @param fraction (required) fraction to install\r\n * @param ray (required) point and vector to install\r\n * @param a (optional) numeric value to install.\r\n */\r\n public setFR(fraction: number, ray: Ray3d, a: number = 0) {\r\n return this.setFP(fraction, ray.origin, ray.direction, a);\r\n }\r\n /** Set the CurvePrimitive pointer, leaving all other properties untouched.\r\n */\r\n public setCurve(curve: CurvePrimitive) { this.curve = curve; }\r\n\r\n /** record the distance from the CurveLocationDetail's point to the parameter point. */\r\n public setDistanceTo(point: Point3d) {\r\n this.a = this.point.distance(point);\r\n }\r\n\r\n /** create with a CurvePrimitive pointer but no coordinate data.\r\n */\r\n public static create(\r\n curve?: CurvePrimitive,\r\n result?: CurveLocationDetail): CurveLocationDetail {\r\n result = result ? result : new CurveLocationDetail();\r\n result.curve = curve;\r\n return result;\r\n }\r\n\r\n /** create with CurvePrimitive pointer, fraction, and point coordinates.\r\n */\r\n public static createCurveFractionPoint(\r\n curve: CurvePrimitive | undefined,\r\n fraction: number,\r\n point: Point3d,\r\n result?: CurveLocationDetail): CurveLocationDetail {\r\n result = result ? result : new CurveLocationDetail();\r\n result.curve = curve;\r\n result.fraction = fraction;\r\n result.point.setFromPoint3d(point);\r\n result.vectorInCurveLocationDetail = undefined;\r\n result.a = 0.0;\r\n result.curveSearchStatus = undefined;\r\n return result;\r\n }\r\n /**\r\n * Create a new detail with only ray, fraction, and point.\r\n */\r\n public static createRayFractionPoint(ray: Ray3d, fraction: number, point: Point3d, result?: CurveLocationDetail): CurveLocationDetail {\r\n result = result ? result : new CurveLocationDetail();\r\n result.fraction = fraction;\r\n result.ray = ray;\r\n result.point.setFromPoint3d(point);\r\n return result;\r\n }\r\n\r\n /** create with CurvePrimitive pointer, fraction, and point coordinates\r\n */\r\n public static createCurveFractionPointDistanceCurveSearchStatus(\r\n curve: CurvePrimitive | undefined,\r\n fraction: number,\r\n point: Point3d,\r\n distance: number,\r\n status: CurveSearchStatus,\r\n result?: CurveLocationDetail): CurveLocationDetail {\r\n result = result ? result : new CurveLocationDetail();\r\n result.curve = curve;\r\n result.fraction = fraction;\r\n result.point.setFromPoint3d(point);\r\n result.vectorInCurveLocationDetail = undefined;\r\n result.a = distance;\r\n result.curveSearchStatus = status;\r\n return result;\r\n }\r\n /** create with curveSearchStatus affected by allowExtension.\r\n * *\r\n */\r\n public static createConditionalMoveSignedDistance(\r\n allowExtension: boolean,\r\n curve: CurvePrimitive,\r\n startFraction: number,\r\n endFraction: number,\r\n requestedSignedDistance: number,\r\n result?: CurveLocationDetail): CurveLocationDetail {\r\n let a = requestedSignedDistance;\r\n let status = CurveSearchStatus.success;\r\n if (!allowExtension && !Geometry.isIn01(endFraction)) {\r\n // cap the movement at the endpoint\r\n if (endFraction < 0.0) {\r\n a = - curve.curveLengthBetweenFractions(startFraction, 0.0);\r\n endFraction = 0.0;\r\n status = CurveSearchStatus.stoppedAtBoundary;\r\n } else if (endFraction > 1.0) {\r\n endFraction = 1.0;\r\n a = curve.curveLengthBetweenFractions(startFraction, 1.0);\r\n status = CurveSearchStatus.stoppedAtBoundary;\r\n }\r\n }\r\n result = result ? result : new CurveLocationDetail();\r\n result.curve = curve;\r\n result.fraction = endFraction;\r\n result.point = curve.fractionToPoint(endFraction, result.point);\r\n result.vectorInCurveLocationDetail = undefined;\r\n result.a = a;\r\n result.curveSearchStatus = status;\r\n return result;\r\n }\r\n\r\n /** create with CurvePrimitive pointer and fraction for evaluation.\r\n */\r\n public static createCurveEvaluatedFraction(\r\n curve: CurvePrimitive,\r\n fraction: number,\r\n result?: CurveLocationDetail): CurveLocationDetail {\r\n result = result ? result : new CurveLocationDetail();\r\n result.curve = curve;\r\n result.fraction = fraction;\r\n result.point = curve.fractionToPoint(fraction);\r\n result.vectorInCurveLocationDetail = undefined;\r\n result.curveSearchStatus = undefined;\r\n result.a = 0.0;\r\n return result;\r\n }\r\n /** create with CurvePrimitive pointer and fraction for evaluation.\r\n */\r\n public static createCurveEvaluatedFractionPointAndDerivative(\r\n curve: CurvePrimitive,\r\n fraction: number,\r\n result?: CurveLocationDetail): CurveLocationDetail {\r\n result = result ? result : new CurveLocationDetail();\r\n result.curve = curve;\r\n result.fraction = fraction;\r\n const ray = curve.fractionToPointAndDerivative(fraction);\r\n result.point = ray.origin;\r\n result.vectorInCurveLocationDetail = ray.direction;\r\n result.curveSearchStatus = undefined;\r\n result.a = 0.0;\r\n return result;\r\n }\r\n\r\n /** create with CurvePrimitive pointer and 2 fractions for evaluation.\r\n */\r\n public static createCurveEvaluatedFractionFraction(\r\n curve: CurvePrimitive,\r\n fraction0: number,\r\n fraction1: number,\r\n result?: CurveLocationDetail): CurveLocationDetail {\r\n result = result ? result : new CurveLocationDetail();\r\n result.curve = curve;\r\n result.fraction = fraction0;\r\n result.point = curve.fractionToPoint(fraction0);\r\n result.fraction1 = fraction1;\r\n result.point1 = curve.fractionToPoint(fraction1);\r\n result.vectorInCurveLocationDetail = undefined;\r\n result.curveSearchStatus = undefined;\r\n result.a = 0.0;\r\n return result;\r\n }\r\n\r\n /** create with CurvePrimitive pointer, fraction, and point coordinates.\r\n */\r\n public static createCurveFractionPointDistance(\r\n curve: CurvePrimitive,\r\n fraction: number,\r\n point: Point3d,\r\n a: number,\r\n result?: CurveLocationDetail): CurveLocationDetail {\r\n result = result ? result : new CurveLocationDetail();\r\n result.curve = curve;\r\n result.fraction = fraction;\r\n result.point.setFromPoint3d(point);\r\n result.vectorInCurveLocationDetail = undefined;\r\n result.a = a;\r\n result.curveSearchStatus = undefined;\r\n return result;\r\n }\r\n\r\n /** update or create if closer than current contents.\r\n * @param curve candidate curve\r\n * @param fraction candidate fraction\r\n * @param point candidate point\r\n * @param a candidate distance\r\n * @returns true if the given distance is smaller (and hence this detail was updated.)\r\n */\r\n public updateIfCloserCurveFractionPointDistance(\r\n curve: CurvePrimitive,\r\n fraction: number,\r\n point: Point3d,\r\n a: number): boolean {\r\n if (this.a < a)\r\n return false;\r\n CurveLocationDetail.createCurveFractionPointDistance(curve, fraction, point, a, this);\r\n return true;\r\n }\r\n /**\r\n * * Exchange the (fraction,fraction1) and (point, point1) pairs.\r\n * * (Skip each swap if its \"1\" value is undefined)\r\n */\r\n public swapFractionsAndPoints() {\r\n if (this.fraction1 !== undefined) {\r\n const f = this.fraction; this.fraction = this.fraction1; this.fraction1 = f;\r\n }\r\n if (this.point1 !== undefined) {\r\n const p = this.point; this.point = this.point1; this.point1 = p;\r\n }\r\n }\r\n /**\r\n * * return the fraction where f falls between fraction and fraction1.\r\n * * ASSUME fraction1 defined\r\n */\r\n public inverseInterpolateFraction(f: number, defaultFraction: number = 0): number {\r\n const a = Geometry.inverseInterpolate01(this.fraction, this.fraction1!, f);\r\n if (a === undefined)\r\n return defaultFraction;\r\n return a;\r\n }\r\n /**\r\n * Return the detail with smaller `a` value -- detailA returned if equal.\r\n * @param detailA first candidate\r\n * @param detailB second candidate\r\n */\r\n public static chooseSmallerA(detailA: CurveLocationDetail | undefined, detailB: CurveLocationDetail | undefined): CurveLocationDetail | undefined {\r\n if (detailA) {\r\n if (!detailB)\r\n return detailA;\r\n return detailA.a <= detailB.a ? detailA : detailB;\r\n }\r\n return detailB;\r\n }\r\n}\r\n/** Enumeration of configurations for intersections and min/max distance-between-curve\r\n * @public\r\n */\r\nexport enum CurveCurveApproachType {\r\n /** Intersection at a single point */\r\n Intersection = 0,\r\n /** Distinct points on the two curves, with each curve's tangent perpendicular to the chord between the points */\r\n PerpendicularChord = 1,\r\n /** Completely coincident geometry */\r\n CoincidentGeometry = 2,\r\n /** Completely parallel geometry. */\r\n ParallelGeometry = 3,\r\n}\r\n/** A pair of CurveLocationDetail.\r\n * @public\r\n */\r\nexport class CurveLocationDetailPair {\r\n /** The first of the two details ... */\r\n public detailA: CurveLocationDetail;\r\n /** The second of the two details ... */\r\n public detailB: CurveLocationDetail;\r\n /** enumeration of how the detail pairs relate.\r\n * * This is set only by certain closeApproach calculations.\r\n */\r\n public approachType?: CurveCurveApproachType;\r\n\r\n public constructor(detailA?: CurveLocationDetail, detailB?: CurveLocationDetail) {\r\n this.detailA = detailA ? detailA : new CurveLocationDetail();\r\n this.detailB = detailB ? detailB : new CurveLocationDetail();\r\n }\r\n\r\n /** Create a curve detail pair using references to two CurveLocationDetails */\r\n public static createCapture(detailA: CurveLocationDetail, detailB: CurveLocationDetail, result?: CurveLocationDetailPair): CurveLocationDetailPair {\r\n result = result ? result : new CurveLocationDetailPair();\r\n result.detailA = detailA;\r\n result.detailB = detailB;\r\n return result;\r\n }\r\n /** Create a curve detail pair using references to two CurveLocationDetails.\r\n * * optionally install in reversed positions\r\n */\r\n public static createCaptureOptionalReverse(detailA: CurveLocationDetail, detailB: CurveLocationDetail,\r\n reversed: boolean,\r\n result?: CurveLocationDetailPair): CurveLocationDetailPair {\r\n result = result ? result : new CurveLocationDetailPair();\r\n if (reversed) {\r\n result.detailA = detailA;\r\n result.detailB = detailB;\r\n\r\n } else {\r\n result.detailA = detailA;\r\n result.detailB = detailB;\r\n }\r\n return result;\r\n }\r\n\r\n /** Make a deep copy of this CurveLocationDetailPair */\r\n public clone(result?: CurveLocationDetailPair): CurveLocationDetailPair {\r\n result = result ? result : new CurveLocationDetailPair();\r\n result.detailA = this.detailA.clone();\r\n result.detailB = this.detailB.clone();\r\n result.approachType = this.approachType;\r\n return result;\r\n }\r\n /** Swap the details of A, B */\r\n public swapDetails() {\r\n const q = this.detailA;\r\n this.detailA = this.detailB;\r\n this.detailB = q;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"CurveLocationDetail.js","sourceRoot":"","sources":["../../../src/curve/CurveLocationDetail.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 Curve\n */\nimport { Geometry } from \"../Geometry\";\nimport { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\nimport { Ray3d } from \"../geometry3d/Ray3d\";\nimport { CurvePrimitive } from \"./CurvePrimitive\";\n\n/**\n * An enumeration of special conditions being described by a CurveLocationDetail.\n * @public\n */\nexport enum CurveIntervalRole {\n /** This point is an isolated point NOT at a primary vertex. */\n isolated = 0,\n /** This point is an isolated vertex hit */\n isolatedAtVertex = 1,\n /** This is the beginning of an interval */\n intervalStart = 10,\n /** This is an interior point of an interval. */\n intervalInterior = 11,\n /** This is the end of an interval */\n intervalEnd = 12,\n}\n\n/**\n * Return code for CurvePrimitive method `moveSignedDistanceFromFraction`\n * @public\n */\nexport enum CurveSearchStatus {\n /** Unimplemented or zero length curve */\n error,\n /** Complete success of search */\n success = 1,\n /** Search ended prematurely (e.g. at incomplete distance moved) at start or end of curve */\n stoppedAtBoundary = 2,\n}\n\n/**\n * Use to update a vector in case where source and prior result are both possibly undefined.\n * * Any undefined source returns undefined.\n * * For defined source, reuse optional result if available.\n * @param source optional source\n * @param result optional result\n */\nfunction optionalVectorUpdate(source: Vector3d | undefined, result: Vector3d | undefined): Vector3d | undefined {\n if (source) {\n return source.clone(result);\n }\n return undefined;\n}\n\n/**\n * CurveLocationDetail carries point and parameter data about a point evaluated on a curve.\n * * These are returned by a variety of queries.\n * * Particular contents can vary among the queries.\n * @public\n */\nexport class CurveLocationDetail {\n /** The curve being evaluated */\n public curve?: CurvePrimitive;\n /** Optional ray */\n public ray?: Ray3d;\n /** The fractional position along the curve */\n public fraction: number;\n /** Detail condition of the role this point has in some context */\n public intervalRole?: CurveIntervalRole;\n /** The point on the curve */\n public point: Point3d;\n /** A vector (e.g. tangent vector) in context */\n public vectorInCurveLocationDetail?: Vector3d;\n /** A context-specific numeric value. (e.g. a distance) */\n public a: number;\n /**\n * Optional CurveLocationDetail with more detail of location. For instance, a detail for fractional position within\n * a CurveChainWithDistanceIndex returns fraction and distance along the chain as its primary data and\n * further detail of the particular curve within the chain in the childDetail.\n */\n public childDetail?: CurveLocationDetail;\n /**\n * A status indicator for certain searches.\n * * e.g. CurvePrimitive.moveSignedDistanceFromFraction\n */\n public curveSearchStatus?: CurveSearchStatus;\n /** (Optional) second fraction, e.g. end of interval of coincident curves */\n public fraction1?: number;\n /** (Optional) second point, e.g. end of interval of coincident curves */\n public point1?: Point3d;\n /** A context-specific additional point */\n public pointQ: Point3d; // extra point for use in computations\n /** Constructor */\n public constructor() {\n this.pointQ = Point3d.createZero();\n this.fraction = 0;\n this.point = Point3d.createZero();\n this.a = 0.0;\n }\n /** Set the (optional) intervalRole field */\n public setIntervalRole(value: CurveIntervalRole): void {\n this.intervalRole = value;\n }\n /** Set the (optional) fraction1 and point1, using direct assignment (capture!) to point1 */\n public captureFraction1Point1(fraction1: number, point1: Point3d): void {\n this.fraction1 = fraction1;\n this.point1 = point1;\n }\n /** Test if this pair has fraction1 defined */\n public get hasFraction1(): boolean {\n return this.fraction1 !== undefined;\n }\n /** Test if this is an isolated point. This is true if intervalRole is any of (undefined, isolated, isolatedAtVertex) */\n public get isIsolated(): boolean {\n return this.intervalRole === undefined\n || this.intervalRole === CurveIntervalRole.isolated\n || this.intervalRole === CurveIntervalRole.isolatedAtVertex;\n }\n /** Return the fraction delta. (0 if no fraction1) */\n public get fractionDelta(): number {\n return this.fraction1 !== undefined ? this.fraction1 - this.fraction : 0.0;\n }\n /**\n * If (fraction1, point1) are defined, make them the primary (and only) data.\n * * No action if undefined.\n */\n public collapseToEnd() {\n if (this.fraction1 !== undefined) {\n this.fraction = this.fraction1;\n this.fraction1 = undefined;\n }\n if (this.point1) {\n this.point = this.point1;\n this.point1 = undefined;\n }\n }\n /**\n * Make (fraction, point) the primary (and only) data.\n * * No action if undefined.\n */\n public collapseToStart() {\n this.fraction1 = undefined;\n this.point1 = undefined;\n }\n /**\n * Return a complete copy, WITH CAVEATS . . .\n * * curve member is copied as a reference.\n * * point and vector members are cloned.\n */\n public clone(result?: CurveLocationDetail): CurveLocationDetail {\n if (result === this)\n return result;\n result = result ? result : new CurveLocationDetail();\n result.curve = this.curve;\n result.fraction = this.fraction;\n result.fraction1 = this.fraction1;\n result.point1 = this.point1;\n result.point.setFromPoint3d(this.point);\n result.vectorInCurveLocationDetail = optionalVectorUpdate(\n this.vectorInCurveLocationDetail, result.vectorInCurveLocationDetail\n );\n result.a = this.a;\n result.curveSearchStatus = this.curveSearchStatus;\n return result;\n }\n /**\n * Updated in this instance.\n * * Note that if caller omits `vector` and `a`, those fields are updated to the call-list defaults (NOT left as-is)\n * * point and vector updates are by data copy (not capture of pointers)\n * @param fraction (required) fraction to install\n * @param point (required) point to install\n * @param vector (optional) vector to install.\n * @param a (optional) numeric value to install.\n */\n public setFP(fraction: number, point: Point3d, vector?: Vector3d, a: number = 0.0): void {\n this.fraction = fraction;\n this.point.setFrom(point);\n this.vectorInCurveLocationDetail = optionalVectorUpdate(vector, this.vectorInCurveLocationDetail);\n this.a = a;\n }\n /**\n * Updated in this instance.\n * * Note that if caller omits a`, that field is updated to the call-list default (NOT left as-is)\n * * point and vector updates are by data copy (not capture of the ray members)\n * @param fraction (required) fraction to install\n * @param ray (required) point and vector to install\n * @param a (optional) numeric value to install.\n */\n public setFR(fraction: number, ray: Ray3d, a: number = 0): void {\n return this.setFP(fraction, ray.origin, ray.direction, a);\n }\n /** Set the CurvePrimitive pointer, leaving all other properties untouched. */\n public setCurve(curve: CurvePrimitive) {\n this.curve = curve;\n }\n /** Record the distance from the CurveLocationDetail's point to the parameter point. */\n public setDistanceTo(point: Point3d) {\n this.a = this.point.distance(point);\n }\n /** Create with a CurvePrimitive pointer but no coordinate data. */\n public static create(curve?: CurvePrimitive, result?: CurveLocationDetail): CurveLocationDetail {\n result = result ? result : new CurveLocationDetail();\n result.curve = curve;\n return result;\n }\n /** Create with CurvePrimitive pointer, fraction, and point coordinates. */\n public static createCurveFractionPoint(\n curve: CurvePrimitive | undefined, fraction: number, point: Point3d, result?: CurveLocationDetail\n ): CurveLocationDetail {\n result = result ? result : new CurveLocationDetail();\n result.curve = curve;\n result.fraction = fraction;\n result.point.setFromPoint3d(point);\n result.vectorInCurveLocationDetail = undefined;\n result.a = 0.0;\n result.curveSearchStatus = undefined;\n return result;\n }\n /** Create a new detail with only ray, fraction, and point. */\n public static createRayFractionPoint(\n ray: Ray3d, fraction: number, point: Point3d, result?: CurveLocationDetail\n ): CurveLocationDetail {\n result = result ? result : new CurveLocationDetail();\n result.fraction = fraction;\n result.ray = ray;\n result.point.setFromPoint3d(point);\n return result;\n }\n /** Create with CurvePrimitive pointer, fraction, and point coordinates */\n public static createCurveFractionPointDistanceCurveSearchStatus(\n curve: CurvePrimitive | undefined,\n fraction: number,\n point: Point3d,\n distance: number,\n status: CurveSearchStatus,\n result?: CurveLocationDetail\n ): CurveLocationDetail {\n result = result ? result : new CurveLocationDetail();\n result.curve = curve;\n result.fraction = fraction;\n result.point.setFromPoint3d(point);\n result.vectorInCurveLocationDetail = undefined;\n result.a = distance;\n result.curveSearchStatus = status;\n return result;\n }\n /** Create with curveSearchStatus affected by allowExtension. */\n public static createConditionalMoveSignedDistance(\n allowExtension: boolean,\n curve: CurvePrimitive,\n startFraction: number,\n endFraction: number,\n requestedSignedDistance: number,\n result?: CurveLocationDetail\n ): CurveLocationDetail {\n let a = requestedSignedDistance;\n let status = CurveSearchStatus.success;\n if (!allowExtension && !Geometry.isIn01(endFraction)) {\n // cap the movement at the endpoint\n if (endFraction < 0.0) {\n a = - curve.curveLengthBetweenFractions(startFraction, 0.0);\n endFraction = 0.0;\n status = CurveSearchStatus.stoppedAtBoundary;\n } else if (endFraction > 1.0) {\n endFraction = 1.0;\n a = curve.curveLengthBetweenFractions(startFraction, 1.0);\n status = CurveSearchStatus.stoppedAtBoundary;\n }\n }\n result = result ? result : new CurveLocationDetail();\n result.curve = curve;\n result.fraction = endFraction;\n result.point = curve.fractionToPoint(endFraction, result.point);\n result.vectorInCurveLocationDetail = undefined;\n result.a = a;\n result.curveSearchStatus = status;\n return result;\n }\n /** Create with CurvePrimitive pointer and fraction for evaluation. */\n public static createCurveEvaluatedFraction(\n curve: CurvePrimitive, fraction: number, result?: CurveLocationDetail\n ): CurveLocationDetail {\n result = result ? result : new CurveLocationDetail();\n result.curve = curve;\n result.fraction = fraction;\n result.point = curve.fractionToPoint(fraction);\n result.vectorInCurveLocationDetail = undefined;\n result.curveSearchStatus = undefined;\n result.a = 0.0;\n return result;\n }\n /** Create with CurvePrimitive pointer and fraction for evaluation. */\n public static createCurveEvaluatedFractionPointAndDerivative(\n curve: CurvePrimitive, fraction: number, result?: CurveLocationDetail\n ): CurveLocationDetail {\n result = result ? result : new CurveLocationDetail();\n result.curve = curve;\n result.fraction = fraction;\n const ray = curve.fractionToPointAndDerivative(fraction);\n result.point = ray.origin;\n result.vectorInCurveLocationDetail = ray.direction;\n result.curveSearchStatus = undefined;\n result.a = 0.0;\n return result;\n }\n /** Create with CurvePrimitive pointer and 2 fractions for evaluation. */\n public static createCurveEvaluatedFractionFraction(\n curve: CurvePrimitive, fraction0: number, fraction1: number, result?: CurveLocationDetail\n ): CurveLocationDetail {\n result = result ? result : new CurveLocationDetail();\n result.curve = curve;\n result.fraction = fraction0;\n result.point = curve.fractionToPoint(fraction0);\n result.fraction1 = fraction1;\n result.point1 = curve.fractionToPoint(fraction1);\n result.vectorInCurveLocationDetail = undefined;\n result.curveSearchStatus = undefined;\n result.a = 0.0;\n return result;\n }\n /** Create with CurvePrimitive pointer, fraction, and point coordinates. */\n public static createCurveFractionPointDistance(\n curve: CurvePrimitive,\n fraction: number,\n point: Point3d,\n a: number,\n result?: CurveLocationDetail\n ): CurveLocationDetail {\n result = result ? result : new CurveLocationDetail();\n result.curve = curve;\n result.fraction = fraction;\n result.point.setFromPoint3d(point);\n result.vectorInCurveLocationDetail = undefined;\n result.a = a;\n result.curveSearchStatus = undefined;\n return result;\n }\n /**\n * Update or create if closer than current contents.\n * @param curve candidate curve\n * @param fraction candidate fraction\n * @param point candidate point\n * @param a candidate distance\n * @returns true if the given distance is smaller (and hence this detail was updated.)\n */\n public updateIfCloserCurveFractionPointDistance(\n curve: CurvePrimitive, fraction: number, point: Point3d, a: number\n ): boolean {\n if (this.a < a)\n return false;\n CurveLocationDetail.createCurveFractionPointDistance(curve, fraction, point, a, this);\n return true;\n }\n /**\n * Exchange the (fraction,fraction1) and (point, point1) pairs.\n * * (Skip each swap if its \"1\" value is undefined)\n */\n public swapFractionsAndPoints(): void {\n if (this.fraction1 !== undefined) {\n const f = this.fraction;\n this.fraction = this.fraction1;\n this.fraction1 = f;\n }\n if (this.point1 !== undefined) {\n const p = this.point;\n this.point = this.point1;\n this.point1 = p;\n }\n }\n /**\n * Return the fraction where f falls between fraction and fraction1.\n * * ASSUME fraction1 defined\n */\n public inverseInterpolateFraction(f: number, defaultFraction: number = 0): number {\n const a = Geometry.inverseInterpolate01(this.fraction, this.fraction1!, f);\n if (a === undefined)\n return defaultFraction;\n return a;\n }\n /**\n * Return the detail with smaller `a` value -- detailA returned if equal.\n * @param detailA first candidate\n * @param detailB second candidate\n */\n public static chooseSmallerA(\n detailA: CurveLocationDetail | undefined, detailB: CurveLocationDetail | undefined\n ): CurveLocationDetail | undefined {\n if (detailA) {\n if (!detailB)\n return detailA;\n return detailA.a <= detailB.a ? detailA : detailB;\n }\n return detailB;\n }\n}\n\n/**\n * Enumeration of configurations for intersections and min/max distance-between-curve\n * @public\n */\nexport enum CurveCurveApproachType {\n /** Intersection at a single point */\n Intersection = 0,\n /** Distinct points on the two curves, with each curve's tangent perpendicular to the chord between the points */\n PerpendicularChord = 1,\n /** Completely coincident geometry */\n CoincidentGeometry = 2,\n /** Completely parallel geometry. */\n ParallelGeometry = 3,\n}\n\n/**\n * A pair of CurveLocationDetail.\n * @public\n */\nexport class CurveLocationDetailPair {\n /** The first of the two details ... */\n public detailA: CurveLocationDetail;\n /** The second of the two details ... */\n public detailB: CurveLocationDetail;\n /**\n * Enumeration of how the detail pairs relate.\n * * This is set only by certain closeApproach calculations.\n */\n public approachType?: CurveCurveApproachType;\n\n public constructor(detailA?: CurveLocationDetail, detailB?: CurveLocationDetail) {\n this.detailA = detailA ? detailA : new CurveLocationDetail();\n this.detailB = detailB ? detailB : new CurveLocationDetail();\n }\n /** Create a curve detail pair using references to two CurveLocationDetails */\n public static createCapture(\n detailA: CurveLocationDetail, detailB: CurveLocationDetail, result?: CurveLocationDetailPair\n ): CurveLocationDetailPair {\n result = result ? result : new CurveLocationDetailPair();\n result.detailA = detailA;\n result.detailB = detailB;\n return result;\n }\n /**\n * Create a curve detail pair using references to two CurveLocationDetails.\n * * optionally install in reversed positions\n */\n public static createCaptureOptionalReverse(\n detailA: CurveLocationDetail, detailB: CurveLocationDetail, reversed: boolean, result?: CurveLocationDetailPair\n ): CurveLocationDetailPair {\n result = result ? result : new CurveLocationDetailPair();\n if (reversed) {\n result.detailA = detailA;\n result.detailB = detailB;\n\n } else {\n result.detailA = detailA;\n result.detailB = detailB;\n }\n return result;\n }\n /** Make a deep copy of this CurveLocationDetailPair */\n public clone(result?: CurveLocationDetailPair): CurveLocationDetailPair {\n result = result ? result : new CurveLocationDetailPair();\n result.detailA = this.detailA.clone();\n result.detailB = this.detailB.clone();\n result.approachType = this.approachType;\n return result;\n }\n /** Swap the details of A, B */\n public swapDetails() {\n const q = this.detailA;\n this.detailA = this.detailB;\n this.detailB = q;\n }\n}\n"]}