@itwin/core-geometry 5.8.0-dev.9 → 5.9.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (576) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/lib/cjs/Constant.js.map +1 -1
  3. package/lib/cjs/Geometry.d.ts +24 -14
  4. package/lib/cjs/Geometry.d.ts.map +1 -1
  5. package/lib/cjs/Geometry.js +34 -14
  6. package/lib/cjs/Geometry.js.map +1 -1
  7. package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
  8. package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
  9. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  10. package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
  11. package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
  12. package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
  13. package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
  14. package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
  15. package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
  16. package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
  17. package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
  18. package/lib/cjs/bspline/KnotVector.js.map +1 -1
  19. package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -1
  20. package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
  21. package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -1
  22. package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
  23. package/lib/cjs/clipping/ClipPlane.js.map +1 -1
  24. package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
  25. package/lib/cjs/clipping/ClipUtils.js.map +1 -1
  26. package/lib/cjs/clipping/ClipVector.js.map +1 -1
  27. package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
  28. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  29. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  30. package/lib/cjs/core-geometry.d.ts +1 -0
  31. package/lib/cjs/core-geometry.d.ts.map +1 -1
  32. package/lib/cjs/core-geometry.js +1 -0
  33. package/lib/cjs/core-geometry.js.map +1 -1
  34. package/lib/cjs/curve/Arc3d.d.ts +4 -0
  35. package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
  36. package/lib/cjs/curve/Arc3d.js +14 -0
  37. package/lib/cjs/curve/Arc3d.js.map +1 -1
  38. package/lib/cjs/curve/ConstrainedCurve2d.d.ts +149 -0
  39. package/lib/cjs/curve/ConstrainedCurve2d.d.ts.map +1 -0
  40. package/lib/cjs/curve/ConstrainedCurve2d.js +317 -0
  41. package/lib/cjs/curve/ConstrainedCurve2d.js.map +1 -0
  42. package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
  43. package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
  44. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  45. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  46. package/lib/cjs/curve/CurveCurve.js.map +1 -1
  47. package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
  48. package/lib/cjs/curve/CurveFactory.d.ts.map +1 -1
  49. package/lib/cjs/curve/CurveFactory.js.map +1 -1
  50. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  51. package/lib/cjs/curve/CurveOps.js.map +1 -1
  52. package/lib/cjs/curve/CurvePrimitive.d.ts +2 -2
  53. package/lib/cjs/curve/CurvePrimitive.js +2 -2
  54. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  55. package/lib/cjs/curve/CurveProcessor.js.map +1 -1
  56. package/lib/cjs/curve/CurveTypes.js.map +1 -1
  57. package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
  58. package/lib/cjs/curve/GeometryQuery.js.map +1 -1
  59. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  60. package/lib/cjs/curve/LineString3d.js.map +1 -1
  61. package/lib/cjs/curve/Loop.js.map +1 -1
  62. package/lib/cjs/curve/OffsetOptions.js.map +1 -1
  63. package/lib/cjs/curve/ParityRegion.js.map +1 -1
  64. package/lib/cjs/curve/Path.js.map +1 -1
  65. package/lib/cjs/curve/PointString3d.js.map +1 -1
  66. package/lib/cjs/curve/ProxyCurve.js.map +1 -1
  67. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  68. package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
  69. package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
  70. package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
  71. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  72. package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
  73. package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
  74. package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
  75. package/lib/cjs/curve/RegionOps.js.map +1 -1
  76. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  77. package/lib/cjs/curve/StrokeOptions.js.map +1 -1
  78. package/lib/cjs/curve/UnionRegion.js.map +1 -1
  79. package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
  80. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  81. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  82. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  83. package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  84. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  85. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  86. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  87. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  88. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  89. package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
  90. package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  91. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  92. package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
  93. package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
  94. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  95. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  96. package/lib/cjs/curve/internalContexts/PointToCurveTangentHandler.d.ts +26 -0
  97. package/lib/cjs/curve/internalContexts/PointToCurveTangentHandler.d.ts.map +1 -0
  98. package/lib/cjs/curve/internalContexts/PointToCurveTangentHandler.js +78 -0
  99. package/lib/cjs/curve/internalContexts/PointToCurveTangentHandler.js.map +1 -0
  100. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  101. package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
  102. package/lib/cjs/curve/internalContexts/TransferWithSplitArcs.js.map +1 -1
  103. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  104. package/lib/cjs/curve/internalContexts/geometry2d/ConstrainedImplicitCurve2d.d.ts +152 -0
  105. package/lib/cjs/curve/internalContexts/geometry2d/ConstrainedImplicitCurve2d.d.ts.map +1 -0
  106. package/lib/cjs/curve/internalContexts/geometry2d/ConstrainedImplicitCurve2d.js +843 -0
  107. package/lib/cjs/curve/internalContexts/geometry2d/ConstrainedImplicitCurve2d.js.map +1 -0
  108. package/lib/cjs/curve/internalContexts/geometry2d/ConstraintSet.d.ts +97 -0
  109. package/lib/cjs/curve/internalContexts/geometry2d/ConstraintSet.d.ts.map +1 -0
  110. package/lib/cjs/curve/internalContexts/geometry2d/ConstraintSet.js +300 -0
  111. package/lib/cjs/curve/internalContexts/geometry2d/ConstraintSet.js.map +1 -0
  112. package/lib/cjs/curve/internalContexts/geometry2d/ImplicitCurve2d.d.ts +105 -0
  113. package/lib/cjs/curve/internalContexts/geometry2d/ImplicitCurve2d.d.ts.map +1 -0
  114. package/lib/cjs/curve/internalContexts/geometry2d/ImplicitCurve2d.js +141 -0
  115. package/lib/cjs/curve/internalContexts/geometry2d/ImplicitCurve2d.js.map +1 -0
  116. package/lib/cjs/curve/internalContexts/geometry2d/ImplicitCurve2dConverter.d.ts +27 -0
  117. package/lib/cjs/curve/internalContexts/geometry2d/ImplicitCurve2dConverter.d.ts.map +1 -0
  118. package/lib/cjs/curve/internalContexts/geometry2d/ImplicitCurve2dConverter.js +152 -0
  119. package/lib/cjs/curve/internalContexts/geometry2d/ImplicitCurve2dConverter.js.map +1 -0
  120. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedCircle2d.d.ts +81 -0
  121. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedCircle2d.d.ts.map +1 -0
  122. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedCircle2d.js +170 -0
  123. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedCircle2d.js.map +1 -0
  124. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedEllipse2d.d.ts +96 -0
  125. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedEllipse2d.d.ts.map +1 -0
  126. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedEllipse2d.js +187 -0
  127. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedEllipse2d.js.map +1 -0
  128. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedHyperbola2d.d.ts +91 -0
  129. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedHyperbola2d.d.ts.map +1 -0
  130. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedHyperbola2d.js +197 -0
  131. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedHyperbola2d.js.map +1 -0
  132. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedLine2d.d.ts +129 -0
  133. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedLine2d.d.ts.map +1 -0
  134. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedLine2d.js +208 -0
  135. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedLine2d.js.map +1 -0
  136. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedParabola2d.d.ts +87 -0
  137. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedParabola2d.d.ts.map +1 -0
  138. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedParabola2d.js +193 -0
  139. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedParabola2d.js.map +1 -0
  140. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  141. package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
  142. package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
  143. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  144. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  145. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
  146. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  147. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  148. package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
  149. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  150. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  151. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
  152. package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
  153. package/lib/cjs/geometry3d/Angle.js.map +1 -1
  154. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
  155. package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
  156. package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
  157. package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
  158. package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
  159. package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
  160. package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
  161. package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
  162. package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
  163. package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
  164. package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
  165. package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
  166. package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
  167. package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
  168. package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
  169. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  170. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  171. package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
  172. package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
  173. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  174. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  175. package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
  176. package/lib/cjs/geometry3d/Point2dVector2d.d.ts +7 -0
  177. package/lib/cjs/geometry3d/Point2dVector2d.d.ts.map +1 -1
  178. package/lib/cjs/geometry3d/Point2dVector2d.js +9 -0
  179. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  180. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  181. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  182. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  183. package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
  184. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  185. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  186. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
  187. package/lib/cjs/geometry3d/Range.js.map +1 -1
  188. package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
  189. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  190. package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
  191. package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
  192. package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
  193. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  194. package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
  195. package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
  196. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  197. package/lib/cjs/geometry4d/Map4d.js.map +1 -1
  198. package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
  199. package/lib/cjs/geometry4d/MomentData.js.map +1 -1
  200. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  201. package/lib/cjs/geometry4d/Point4d.js.map +1 -1
  202. package/lib/cjs/numerics/BandedSystem.js.map +1 -1
  203. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
  204. package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
  205. package/lib/cjs/numerics/Complex.js.map +1 -1
  206. package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
  207. package/lib/cjs/numerics/Newton.js.map +1 -1
  208. package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
  209. package/lib/cjs/numerics/PolarData.js.map +1 -1
  210. package/lib/cjs/numerics/Polynomials.d.ts.map +1 -1
  211. package/lib/cjs/numerics/Polynomials.js +8 -6
  212. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  213. package/lib/cjs/numerics/Quadrature.js.map +1 -1
  214. package/lib/cjs/numerics/Range1dArray.js.map +1 -1
  215. package/lib/cjs/numerics/SmallSystem.js.map +1 -1
  216. package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
  217. package/lib/cjs/numerics/UnionFind.js.map +1 -1
  218. package/lib/cjs/numerics/UsageSums.js.map +1 -1
  219. package/lib/cjs/polyface/AuxData.js.map +1 -1
  220. package/lib/cjs/polyface/BoxTopology.js.map +1 -1
  221. package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
  222. package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
  223. package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
  224. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  225. package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
  226. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  227. package/lib/cjs/polyface/IndexedPolyfaceWalker.js.map +1 -1
  228. package/lib/cjs/polyface/Polyface.js.map +1 -1
  229. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  230. package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
  231. package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
  232. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  233. package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
  234. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  235. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  236. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  237. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  238. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  239. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.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/IModelJsonSchema.js.map +1 -1
  257. package/lib/cjs/serialization/SerializationHelpers.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.d.ts.map +1 -1
  272. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js +3 -1
  273. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  274. package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
  275. package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
  276. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  277. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  278. package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
  279. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
  280. package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
  281. package/lib/cjs/topology/MaskManager.js.map +1 -1
  282. package/lib/cjs/topology/Merging.js.map +1 -1
  283. package/lib/cjs/topology/RegularizeFace.js.map +1 -1
  284. package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
  285. package/lib/cjs/topology/SpaceTriangulation.js.map +1 -1
  286. package/lib/cjs/topology/Triangulation.js.map +1 -1
  287. package/lib/cjs/topology/Voronoi.js.map +1 -1
  288. package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
  289. package/lib/esm/Constant.js.map +1 -1
  290. package/lib/esm/Geometry.d.ts +24 -14
  291. package/lib/esm/Geometry.d.ts.map +1 -1
  292. package/lib/esm/Geometry.js +34 -14
  293. package/lib/esm/Geometry.js.map +1 -1
  294. package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
  295. package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
  296. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  297. package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
  298. package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
  299. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  300. package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
  301. package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
  302. package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
  303. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  304. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  305. package/lib/esm/bspline/KnotVector.js.map +1 -1
  306. package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
  307. package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
  308. package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
  309. package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
  310. package/lib/esm/clipping/ClipPlane.js.map +1 -1
  311. package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
  312. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  313. package/lib/esm/clipping/ClipVector.js.map +1 -1
  314. package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
  315. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  316. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  317. package/lib/esm/core-geometry.d.ts +1 -0
  318. package/lib/esm/core-geometry.d.ts.map +1 -1
  319. package/lib/esm/core-geometry.js +1 -0
  320. package/lib/esm/core-geometry.js.map +1 -1
  321. package/lib/esm/curve/Arc3d.d.ts +4 -0
  322. package/lib/esm/curve/Arc3d.d.ts.map +1 -1
  323. package/lib/esm/curve/Arc3d.js +14 -0
  324. package/lib/esm/curve/Arc3d.js.map +1 -1
  325. package/lib/esm/curve/ConstrainedCurve2d.d.ts +149 -0
  326. package/lib/esm/curve/ConstrainedCurve2d.d.ts.map +1 -0
  327. package/lib/esm/curve/ConstrainedCurve2d.js +313 -0
  328. package/lib/esm/curve/ConstrainedCurve2d.js.map +1 -0
  329. package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
  330. package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
  331. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  332. package/lib/esm/curve/CurveCollection.js.map +1 -1
  333. package/lib/esm/curve/CurveCurve.js.map +1 -1
  334. package/lib/esm/curve/CurveExtendMode.js.map +1 -1
  335. package/lib/esm/curve/CurveFactory.d.ts.map +1 -1
  336. package/lib/esm/curve/CurveFactory.js.map +1 -1
  337. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  338. package/lib/esm/curve/CurveOps.js.map +1 -1
  339. package/lib/esm/curve/CurvePrimitive.d.ts +2 -2
  340. package/lib/esm/curve/CurvePrimitive.js +2 -2
  341. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  342. package/lib/esm/curve/CurveProcessor.js.map +1 -1
  343. package/lib/esm/curve/CurveTypes.js.map +1 -1
  344. package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
  345. package/lib/esm/curve/GeometryQuery.js.map +1 -1
  346. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  347. package/lib/esm/curve/LineString3d.js.map +1 -1
  348. package/lib/esm/curve/Loop.js.map +1 -1
  349. package/lib/esm/curve/OffsetOptions.js.map +1 -1
  350. package/lib/esm/curve/ParityRegion.js.map +1 -1
  351. package/lib/esm/curve/Path.js.map +1 -1
  352. package/lib/esm/curve/PointString3d.js.map +1 -1
  353. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  354. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  355. package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
  356. package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
  357. package/lib/esm/curve/Query/InOutTests.js.map +1 -1
  358. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  359. package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
  360. package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
  361. package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
  362. package/lib/esm/curve/RegionOps.js.map +1 -1
  363. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  364. package/lib/esm/curve/StrokeOptions.js.map +1 -1
  365. package/lib/esm/curve/UnionRegion.js.map +1 -1
  366. package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
  367. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  368. package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  369. package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  370. package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  371. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  372. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  373. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  374. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  375. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  376. package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
  377. package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  378. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  379. package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
  380. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  381. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  382. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  383. package/lib/esm/curve/internalContexts/PointToCurveTangentHandler.d.ts +26 -0
  384. package/lib/esm/curve/internalContexts/PointToCurveTangentHandler.d.ts.map +1 -0
  385. package/lib/esm/curve/internalContexts/PointToCurveTangentHandler.js +74 -0
  386. package/lib/esm/curve/internalContexts/PointToCurveTangentHandler.js.map +1 -0
  387. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  388. package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
  389. package/lib/esm/curve/internalContexts/TransferWithSplitArcs.js.map +1 -1
  390. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  391. package/lib/esm/curve/internalContexts/geometry2d/ConstrainedImplicitCurve2d.d.ts +152 -0
  392. package/lib/esm/curve/internalContexts/geometry2d/ConstrainedImplicitCurve2d.d.ts.map +1 -0
  393. package/lib/esm/curve/internalContexts/geometry2d/ConstrainedImplicitCurve2d.js +839 -0
  394. package/lib/esm/curve/internalContexts/geometry2d/ConstrainedImplicitCurve2d.js.map +1 -0
  395. package/lib/esm/curve/internalContexts/geometry2d/ConstraintSet.d.ts +97 -0
  396. package/lib/esm/curve/internalContexts/geometry2d/ConstraintSet.d.ts.map +1 -0
  397. package/lib/esm/curve/internalContexts/geometry2d/ConstraintSet.js +295 -0
  398. package/lib/esm/curve/internalContexts/geometry2d/ConstraintSet.js.map +1 -0
  399. package/lib/esm/curve/internalContexts/geometry2d/ImplicitCurve2d.d.ts +105 -0
  400. package/lib/esm/curve/internalContexts/geometry2d/ImplicitCurve2d.d.ts.map +1 -0
  401. package/lib/esm/curve/internalContexts/geometry2d/ImplicitCurve2d.js +135 -0
  402. package/lib/esm/curve/internalContexts/geometry2d/ImplicitCurve2d.js.map +1 -0
  403. package/lib/esm/curve/internalContexts/geometry2d/ImplicitCurve2dConverter.d.ts +27 -0
  404. package/lib/esm/curve/internalContexts/geometry2d/ImplicitCurve2dConverter.d.ts.map +1 -0
  405. package/lib/esm/curve/internalContexts/geometry2d/ImplicitCurve2dConverter.js +148 -0
  406. package/lib/esm/curve/internalContexts/geometry2d/ImplicitCurve2dConverter.js.map +1 -0
  407. package/lib/esm/curve/internalContexts/geometry2d/UnboundedCircle2d.d.ts +81 -0
  408. package/lib/esm/curve/internalContexts/geometry2d/UnboundedCircle2d.d.ts.map +1 -0
  409. package/lib/esm/curve/internalContexts/geometry2d/UnboundedCircle2d.js +166 -0
  410. package/lib/esm/curve/internalContexts/geometry2d/UnboundedCircle2d.js.map +1 -0
  411. package/lib/esm/curve/internalContexts/geometry2d/UnboundedEllipse2d.d.ts +96 -0
  412. package/lib/esm/curve/internalContexts/geometry2d/UnboundedEllipse2d.d.ts.map +1 -0
  413. package/lib/esm/curve/internalContexts/geometry2d/UnboundedEllipse2d.js +183 -0
  414. package/lib/esm/curve/internalContexts/geometry2d/UnboundedEllipse2d.js.map +1 -0
  415. package/lib/esm/curve/internalContexts/geometry2d/UnboundedHyperbola2d.d.ts +91 -0
  416. package/lib/esm/curve/internalContexts/geometry2d/UnboundedHyperbola2d.d.ts.map +1 -0
  417. package/lib/esm/curve/internalContexts/geometry2d/UnboundedHyperbola2d.js +193 -0
  418. package/lib/esm/curve/internalContexts/geometry2d/UnboundedHyperbola2d.js.map +1 -0
  419. package/lib/esm/curve/internalContexts/geometry2d/UnboundedLine2d.d.ts +129 -0
  420. package/lib/esm/curve/internalContexts/geometry2d/UnboundedLine2d.d.ts.map +1 -0
  421. package/lib/esm/curve/internalContexts/geometry2d/UnboundedLine2d.js +204 -0
  422. package/lib/esm/curve/internalContexts/geometry2d/UnboundedLine2d.js.map +1 -0
  423. package/lib/esm/curve/internalContexts/geometry2d/UnboundedParabola2d.d.ts +87 -0
  424. package/lib/esm/curve/internalContexts/geometry2d/UnboundedParabola2d.d.ts.map +1 -0
  425. package/lib/esm/curve/internalContexts/geometry2d/UnboundedParabola2d.js +189 -0
  426. package/lib/esm/curve/internalContexts/geometry2d/UnboundedParabola2d.js.map +1 -0
  427. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  428. package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
  429. package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
  430. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  431. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  432. package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
  433. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  434. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  435. package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
  436. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  437. package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  438. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
  439. package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
  440. package/lib/esm/geometry3d/Angle.js.map +1 -1
  441. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  442. package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
  443. package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
  444. package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
  445. package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
  446. package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
  447. package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
  448. package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
  449. package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
  450. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
  451. package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
  452. package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
  453. package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
  454. package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
  455. package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
  456. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  457. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  458. package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
  459. package/lib/esm/geometry3d/Plane3d.js.map +1 -1
  460. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  461. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  462. package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
  463. package/lib/esm/geometry3d/Point2dVector2d.d.ts +7 -0
  464. package/lib/esm/geometry3d/Point2dVector2d.d.ts.map +1 -1
  465. package/lib/esm/geometry3d/Point2dVector2d.js +9 -0
  466. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  467. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  468. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  469. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  470. package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
  471. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  472. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  473. package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
  474. package/lib/esm/geometry3d/Range.js.map +1 -1
  475. package/lib/esm/geometry3d/Ray2d.js.map +1 -1
  476. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  477. package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
  478. package/lib/esm/geometry3d/Segment1d.js.map +1 -1
  479. package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
  480. package/lib/esm/geometry3d/Transform.js.map +1 -1
  481. package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
  482. package/lib/esm/geometry3d/XYZProps.js.map +1 -1
  483. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  484. package/lib/esm/geometry4d/Map4d.js.map +1 -1
  485. package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
  486. package/lib/esm/geometry4d/MomentData.js.map +1 -1
  487. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  488. package/lib/esm/geometry4d/Point4d.js.map +1 -1
  489. package/lib/esm/numerics/BandedSystem.js.map +1 -1
  490. package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
  491. package/lib/esm/numerics/ClusterableArray.js.map +1 -1
  492. package/lib/esm/numerics/Complex.js.map +1 -1
  493. package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
  494. package/lib/esm/numerics/Newton.js.map +1 -1
  495. package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
  496. package/lib/esm/numerics/PolarData.js.map +1 -1
  497. package/lib/esm/numerics/Polynomials.d.ts.map +1 -1
  498. package/lib/esm/numerics/Polynomials.js +8 -6
  499. package/lib/esm/numerics/Polynomials.js.map +1 -1
  500. package/lib/esm/numerics/Quadrature.js.map +1 -1
  501. package/lib/esm/numerics/Range1dArray.js.map +1 -1
  502. package/lib/esm/numerics/SmallSystem.js.map +1 -1
  503. package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
  504. package/lib/esm/numerics/UnionFind.js.map +1 -1
  505. package/lib/esm/numerics/UsageSums.js.map +1 -1
  506. package/lib/esm/polyface/AuxData.js.map +1 -1
  507. package/lib/esm/polyface/BoxTopology.js.map +1 -1
  508. package/lib/esm/polyface/FacetFaceData.js.map +1 -1
  509. package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
  510. package/lib/esm/polyface/FacetOrientation.js.map +1 -1
  511. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  512. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
  513. package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  514. package/lib/esm/polyface/IndexedPolyfaceWalker.js.map +1 -1
  515. package/lib/esm/polyface/Polyface.js.map +1 -1
  516. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  517. package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
  518. package/lib/esm/polyface/PolyfaceData.js.map +1 -1
  519. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  520. package/lib/esm/polyface/RangeLengthData.js.map +1 -1
  521. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  522. package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  523. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  524. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  525. package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  526. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  527. package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
  528. package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
  529. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  530. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  531. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  532. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  533. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  534. package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  535. package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
  536. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  537. package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
  538. package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
  539. package/lib/esm/serialization/BGFBReader.js.map +1 -1
  540. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  541. package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  542. package/lib/esm/serialization/DeepCompare.js.map +1 -1
  543. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  544. package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
  545. package/lib/esm/solid/Box.js.map +1 -1
  546. package/lib/esm/solid/Cone.js.map +1 -1
  547. package/lib/esm/solid/LinearSweep.js.map +1 -1
  548. package/lib/esm/solid/RotationalSweep.js.map +1 -1
  549. package/lib/esm/solid/RuledSweep.js.map +1 -1
  550. package/lib/esm/solid/SolidPrimitive.js.map +1 -1
  551. package/lib/esm/solid/Sphere.js.map +1 -1
  552. package/lib/esm/solid/SweepContour.js.map +1 -1
  553. package/lib/esm/solid/TorusPipe.js.map +1 -1
  554. package/lib/esm/topology/ChainMerge.js.map +1 -1
  555. package/lib/esm/topology/Graph.js.map +1 -1
  556. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  557. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  558. package/lib/esm/topology/HalfEdgeGraphSpineContext.d.ts.map +1 -1
  559. package/lib/esm/topology/HalfEdgeGraphSpineContext.js +3 -1
  560. package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  561. package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
  562. package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
  563. package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  564. package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  565. package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
  566. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
  567. package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
  568. package/lib/esm/topology/MaskManager.js.map +1 -1
  569. package/lib/esm/topology/Merging.js.map +1 -1
  570. package/lib/esm/topology/RegularizeFace.js.map +1 -1
  571. package/lib/esm/topology/SignedDataSummary.js.map +1 -1
  572. package/lib/esm/topology/SpaceTriangulation.js.map +1 -1
  573. package/lib/esm/topology/Triangulation.js.map +1 -1
  574. package/lib/esm/topology/Voronoi.js.map +1 -1
  575. package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
  576. package/package.json +3 -3
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ /** @packageDocumentation
7
+ * @module CartesianGeometry
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.UnboundedCircle2dByCenterAndRadius = void 0;
11
+ const Geometry_1 = require("../../../Geometry");
12
+ const Point2dVector2d_1 = require("../../../geometry3d/Point2dVector2d");
13
+ const Polynomials_1 = require("../../../numerics/Polynomials");
14
+ const ImplicitCurve2d_1 = require("./ImplicitCurve2d");
15
+ /**
16
+ * Internal class for a complete circle in the xy plane, with center and radius stored.
17
+ * @internal
18
+ */
19
+ class UnboundedCircle2dByCenterAndRadius extends ImplicitCurve2d_1.ImplicitCurve2d {
20
+ /** The circle's center. */
21
+ center;
22
+ /** The circle radius. */
23
+ radius;
24
+ /* Constructor - CAPTURE given center and normal */
25
+ constructor(center, radius) {
26
+ super();
27
+ this.center = center;
28
+ this.radius = radius;
29
+ }
30
+ /** Return a clone of this circle. */
31
+ clone() {
32
+ // the create method clones the inputs
33
+ return UnboundedCircle2dByCenterAndRadius.createPointRadius(this.center, this.radius);
34
+ }
35
+ /** Return a clone of this circle, with radius negated. */
36
+ cloneNegateRadius() {
37
+ // the create method clones the inputs
38
+ return UnboundedCircle2dByCenterAndRadius.createPointRadius(this.center, -this.radius);
39
+ }
40
+ /**
41
+ * Create an ImplicitCircle2d from XY parts of its center and its radius.
42
+ * @param centerX x coordinate of center
43
+ * @param centerY y coordinate of center
44
+ * @param radius circle radius
45
+ * @returns newly created circle object
46
+ */
47
+ static createXYRadius(centerX, centerY, radius) {
48
+ return new UnboundedCircle2dByCenterAndRadius(Point2dVector2d_1.Point2d.create(centerX, centerY), radius);
49
+ }
50
+ /**
51
+ * Create an ImplicitCircle2d from an xy object and a radius.
52
+ * * Zero radius is valid.
53
+ * * The input coordinates are copied -- the center is NOT captured.
54
+ * @param center xy coordinates of center
55
+ * @param radius circle radius
56
+ * @returns newly created circle object
57
+ */
58
+ static createPointRadius(center, radius) {
59
+ return new UnboundedCircle2dByCenterAndRadius(Point2dVector2d_1.Point2d.create(center.x, center.y), radius);
60
+ }
61
+ /**
62
+ * Returns gradient of the implicit function.
63
+ * @param xy space point
64
+ * @returns squared distance to center minus squared radius.
65
+ */
66
+ functionValue(xy) {
67
+ return Geometry_1.Geometry.distanceSquaredXYXY(xy.x, xy.y, this.center.x, this.center.y) - this.radius * this.radius;
68
+ }
69
+ /**
70
+ * Returns gradient of the implicit function.
71
+ * @param xy space point
72
+ */
73
+ gradient(xy) {
74
+ return Point2dVector2d_1.Vector2d.create(2 * (xy.x - this.center.x), 2 * (xy.y - this.center.y));
75
+ }
76
+ /**
77
+ * Emit circle points for which a vector to the space point is perpendicular to the circle.
78
+ * * For a non-zero radius circle, there are two perpendiculars. The one on the side of the space point is emitted first.
79
+ * * For a zero radius circle, the vector from center to the space point is the only perpendicular.
80
+ * @param spacePoint the space point.
81
+ * @handler the handler to receive all the points on the curve and radians where perpendicular happens.
82
+ */
83
+ emitPerpendiculars(spacePoint, handler) {
84
+ // Make a vector from center to space point, scaled so length equals radius.
85
+ // Add and subtract it to/from center to get to circumference point.
86
+ const radialVector = Point2dVector2d_1.Vector2d.createStartEnd(this.center, spacePoint).scaleToLength(this.radius);
87
+ if (radialVector !== undefined) {
88
+ handler(this.center.plus(radialVector), undefined);
89
+ handler(this.center.minus(radialVector), undefined);
90
+ }
91
+ }
92
+ /**
93
+ * Returns true if the circle radius is near zero.
94
+ */
95
+ // eslint-disable-next-line @itwin/prefer-get
96
+ isDegenerate() {
97
+ return Geometry_1.Geometry.isSameCoordinate(this.radius, 0);
98
+ }
99
+ /**
100
+ * Test if the centers and radii of two circles are close.
101
+ * @param other second circle
102
+ * @returns true if identical to tolerance.
103
+ */
104
+ isSameCircle(other, negatedRadiiAreEqual) {
105
+ if (negatedRadiiAreEqual)
106
+ return Geometry_1.Geometry.isSameCoordinate(Math.abs(this.radius), Math.abs(other.radius))
107
+ && Geometry_1.Geometry.isSamePoint2d(this.center, other.center);
108
+ return Geometry_1.Geometry.isSameCoordinate(this.radius, other.radius)
109
+ && Geometry_1.Geometry.isSamePoint2d(this.center, other.center);
110
+ }
111
+ /**
112
+ * Compute intersections with another circle.
113
+ * @param other second circle
114
+ * @return array of 0, 1, or 2 points of intersection
115
+ */
116
+ intersectCircle(other) {
117
+ const vectorAB = Point2dVector2d_1.Vector2d.createStartEnd(this.center, other.center);
118
+ const unitAB = vectorAB.normalize();
119
+ if (unitAB === undefined)
120
+ return [];
121
+ const d = vectorAB.magnitude();
122
+ const rA2 = Geometry_1.Geometry.square(this.radius);
123
+ const rB2 = Geometry_1.Geometry.square(other.radius);
124
+ // if intersection points are called i1 and i2 and the mid point of the line connecting i1 and i2 is called m
125
+ // then we can form 2 triangles: <this.center, m, i1> and <other.center, m, i2>
126
+ // now if a is distance from this.center to m and h is distance from m to i1, we get rA2 = a^2 + h^2
127
+ // similarly we get rB2 = (d-a)^2 + h^2 and from those 2 equations we can solve for a and h
128
+ const a = Geometry_1.Geometry.conditionalDivideCoordinate(rA2 - rB2 + d * d, 2 * d);
129
+ const points = [];
130
+ if (a !== undefined) {
131
+ const h2 = rA2 - a * a;
132
+ if (Math.abs(h2) < Geometry_1.Geometry.smallMetricDistanceSquared)
133
+ points.push(this.center.plusScaled(unitAB, a));
134
+ else if (h2 > 0) {
135
+ const h = Math.sqrt(h2);
136
+ points.push(this.center.addForwardLeft(a, h, unitAB));
137
+ points.push(this.center.addForwardLeft(a, -h, unitAB));
138
+ }
139
+ }
140
+ return points;
141
+ }
142
+ /**
143
+ * Compute intersections with a line
144
+ * @param line the line.
145
+ * @return array of 0, 1, or 2 points of intersection
146
+ */
147
+ intersectLine(line) {
148
+ // a point on line is X = P + frac*U where P is line.point and U is the vector along line
149
+ // vector from X to center is X-C = (P-C) + frac*U
150
+ // now defined P-C = V to get X-C = V + frac*U
151
+ // when distance squared from X to center is equal to this.radius squared, we have intersection:
152
+ // (V + frac*U) dot (V + frac*U) = r^2
153
+ // (U.U)*frac^2 + (2U.V)*frac + (V.V-r^2) = 0
154
+ // now solve for frac
155
+ const vectorU = line.vectorAlongLine();
156
+ const vectorV = Point2dVector2d_1.Vector2d.createStartEnd(this.center, line.point);
157
+ const uDotV = vectorU.dotProduct(vectorV);
158
+ const vDotV = vectorV.dotProduct(vectorV);
159
+ const uDotU = vectorU.dotProduct(vectorU);
160
+ const fractions = Polynomials_1.Degree2PowerPolynomial.solveQuadratic(uDotU, 2 * uDotV, vDotV - this.radius * this.radius);
161
+ const points = [];
162
+ if (fractions !== undefined)
163
+ for (const f of fractions) {
164
+ points.push(line.point.plusScaled(vectorU, f));
165
+ }
166
+ return points;
167
+ }
168
+ }
169
+ exports.UnboundedCircle2dByCenterAndRadius = UnboundedCircle2dByCenterAndRadius;
170
+ //# sourceMappingURL=UnboundedCircle2d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnboundedCircle2d.js","sourceRoot":"","sources":["../../../../../src/curve/internalContexts/geometry2d/UnboundedCircle2d.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module CartesianGeometry\n */\n\nimport { Geometry } from \"../../../Geometry\";\nimport { Point2d, Vector2d } from \"../../../geometry3d/Point2dVector2d\";\nimport { XAndY } from \"../../../geometry3d/XYZProps\";\nimport { Degree2PowerPolynomial } from \"../../../numerics/Polynomials\";\nimport { ImplicitCurve2d } from \"./ImplicitCurve2d\";\nimport { UnboundedLine2dByPointAndNormal } from \"./UnboundedLine2d\";\n\n/**\n * Internal class for a complete circle in the xy plane, with center and radius stored.\n * @internal\n */\nexport class UnboundedCircle2dByCenterAndRadius extends ImplicitCurve2d {\n /** The circle's center. */\n public center: Point2d;\n /** The circle radius. */\n public radius: number;\n /* Constructor - CAPTURE given center and normal */\n private constructor(center: Point2d, radius: number) {\n super();\n this.center = center;\n this.radius = radius;\n }\n /** Return a clone of this circle. */\n public clone(): UnboundedCircle2dByCenterAndRadius {\n // the create method clones the inputs\n return UnboundedCircle2dByCenterAndRadius.createPointRadius(this.center, this.radius);\n }\n /** Return a clone of this circle, with radius negated. */\n public cloneNegateRadius(): UnboundedCircle2dByCenterAndRadius {\n // the create method clones the inputs\n return UnboundedCircle2dByCenterAndRadius.createPointRadius(this.center, -this.radius);\n }\n /**\n * Create an ImplicitCircle2d from XY parts of its center and its radius.\n * @param centerX x coordinate of center\n * @param centerY y coordinate of center\n * @param radius circle radius\n * @returns newly created circle object\n */\n public static createXYRadius(centerX: number, centerY: number, radius: number): UnboundedCircle2dByCenterAndRadius {\n return new UnboundedCircle2dByCenterAndRadius(Point2d.create(centerX, centerY), radius);\n }\n /**\n * Create an ImplicitCircle2d from an xy object and a radius.\n * * Zero radius is valid.\n * * The input coordinates are copied -- the center is NOT captured.\n * @param center xy coordinates of center\n * @param radius circle radius\n * @returns newly created circle object\n */\n public static createPointRadius(center: XAndY, radius: number): UnboundedCircle2dByCenterAndRadius {\n return new UnboundedCircle2dByCenterAndRadius(Point2d.create(center.x, center.y), radius);\n }\n /**\n * Returns gradient of the implicit function.\n * @param xy space point\n * @returns squared distance to center minus squared radius.\n */\n public override functionValue(xy: XAndY): number {\n return Geometry.distanceSquaredXYXY(xy.x, xy.y, this.center.x, this.center.y) - this.radius * this.radius;\n }\n /**\n * Returns gradient of the implicit function.\n * @param xy space point\n */\n public override gradient(xy: XAndY): Vector2d {\n return Vector2d.create(2 * (xy.x - this.center.x), 2 * (xy.y - this.center.y));\n }\n /**\n * Emit circle points for which a vector to the space point is perpendicular to the circle.\n * * For a non-zero radius circle, there are two perpendiculars. The one on the side of the space point is emitted first.\n * * For a zero radius circle, the vector from center to the space point is the only perpendicular.\n * @param spacePoint the space point.\n * @handler the handler to receive all the points on the curve and radians where perpendicular happens.\n */\n public override emitPerpendiculars(\n spacePoint: Point2d, handler: (curvePoint: Point2d, radians: number | undefined) => any,\n ) {\n // Make a vector from center to space point, scaled so length equals radius.\n // Add and subtract it to/from center to get to circumference point.\n const radialVector = Vector2d.createStartEnd(this.center, spacePoint).scaleToLength(this.radius);\n if (radialVector !== undefined) {\n handler(this.center.plus(radialVector), undefined);\n handler(this.center.minus(radialVector), undefined);\n }\n }\n /**\n * Returns true if the circle radius is near zero.\n */\n // eslint-disable-next-line @itwin/prefer-get\n public override isDegenerate(): boolean {\n return Geometry.isSameCoordinate(this.radius, 0);\n }\n /**\n * Test if the centers and radii of two circles are close.\n * @param other second circle\n * @returns true if identical to tolerance.\n */\n public isSameCircle(other: UnboundedCircle2dByCenterAndRadius, negatedRadiiAreEqual: boolean): boolean {\n if (negatedRadiiAreEqual)\n return Geometry.isSameCoordinate(Math.abs(this.radius), Math.abs(other.radius))\n && Geometry.isSamePoint2d(this.center, other.center);\n return Geometry.isSameCoordinate(this.radius, other.radius)\n && Geometry.isSamePoint2d(this.center, other.center);\n }\n /**\n * Compute intersections with another circle.\n * @param other second circle\n * @return array of 0, 1, or 2 points of intersection\n */\n public intersectCircle(other: UnboundedCircle2dByCenterAndRadius): Point2d[] {\n const vectorAB = Vector2d.createStartEnd(this.center, other.center);\n const unitAB = vectorAB.normalize();\n if (unitAB === undefined)\n return [];\n const d = vectorAB.magnitude();\n const rA2 = Geometry.square(this.radius);\n const rB2 = Geometry.square(other.radius);\n // if intersection points are called i1 and i2 and the mid point of the line connecting i1 and i2 is called m\n // then we can form 2 triangles: <this.center, m, i1> and <other.center, m, i2>\n // now if a is distance from this.center to m and h is distance from m to i1, we get rA2 = a^2 + h^2\n // similarly we get rB2 = (d-a)^2 + h^2 and from those 2 equations we can solve for a and h\n const a = Geometry.conditionalDivideCoordinate(rA2 - rB2 + d * d, 2 * d);\n const points = [];\n if (a !== undefined) {\n const h2 = rA2 - a * a;\n if (Math.abs(h2) < Geometry.smallMetricDistanceSquared)\n points.push(this.center.plusScaled(unitAB, a));\n else if (h2 > 0) {\n const h = Math.sqrt(h2);\n points.push(this.center.addForwardLeft(a, h, unitAB));\n points.push(this.center.addForwardLeft(a, -h, unitAB));\n }\n }\n return points;\n }\n /**\n * Compute intersections with a line\n * @param line the line.\n * @return array of 0, 1, or 2 points of intersection\n */\n public intersectLine(line: UnboundedLine2dByPointAndNormal): Point2d[] {\n // a point on line is X = P + frac*U where P is line.point and U is the vector along line\n // vector from X to center is X-C = (P-C) + frac*U\n // now defined P-C = V to get X-C = V + frac*U\n // when distance squared from X to center is equal to this.radius squared, we have intersection:\n // (V + frac*U) dot (V + frac*U) = r^2\n // (U.U)*frac^2 + (2U.V)*frac + (V.V-r^2) = 0\n // now solve for frac\n const vectorU = line.vectorAlongLine();\n const vectorV = Vector2d.createStartEnd(this.center, line.point);\n const uDotV = vectorU.dotProduct(vectorV);\n const vDotV = vectorV.dotProduct(vectorV);\n const uDotU = vectorU.dotProduct(vectorU);\n const fractions = Degree2PowerPolynomial.solveQuadratic(uDotU, 2 * uDotV, vDotV - this.radius * this.radius);\n const points = [];\n if (fractions !== undefined)\n for (const f of fractions) {\n points.push(line.point.plusScaled(vectorU, f));\n }\n return points;\n }\n}\n"]}
@@ -0,0 +1,96 @@
1
+ /** @packageDocumentation
2
+ * @module CartesianGeometry
3
+ */
4
+ import { Point2d, Vector2d } from "../../../geometry3d/Point2dVector2d";
5
+ import { XAndY } from "../../../geometry3d/XYZProps";
6
+ import { ImplicitCurve2d } from "./ImplicitCurve2d";
7
+ /**
8
+ * Class for an ellipse in the xy plane.The ellipse equation in angular parameterization is
9
+ * * X = A + U * cos(theta) + V * sin(theta)
10
+ * which means that in the (skewed and scaled) coordinate system with origin at A and local u and v as
11
+ * multiples of U and V the implicit equation is u^2 + v^2 = 1
12
+ * * Note that the U and V vectors DO NOT need to be perpendicular or have any particular length relationship.
13
+ * * If U and V ARE perpendicular, their lengths are commonly called the major and minor axis lengths,
14
+ * and the major and minor axis points are in the U and V directions.
15
+ * * If U and V are NOT perpendicular, the major and minor axis points are at other directions.
16
+ * @internal
17
+ */
18
+ export declare class UnboundedEllipse2d extends ImplicitCurve2d {
19
+ /** The Cartesian coordinates of any center on the line. */
20
+ center: Point2d;
21
+ /** The local u axis direction. */
22
+ vectorU: Vector2d;
23
+ /** The local v axis direction. */
24
+ vectorV: Vector2d;
25
+ private constructor();
26
+ /** Return a clone of this circle. */
27
+ clone(): UnboundedEllipse2d;
28
+ /**
29
+ * Create an axis-aligned UnboundedEllipse2d with axis lengths.
30
+ * * The implicit equation is (x/scaleU)^2 + (y/scaleV)^2 = 1
31
+ * @param centerX x coordinate of center
32
+ * @param centerY y coordinate of center
33
+ * @param scaleX x axis radius
34
+ * @param scaleY y axis radius
35
+ */
36
+ static createFromCenterAndScales(centerX: number, centerY: number, scaleX: number, scaleY: number): UnboundedEllipse2d;
37
+ /**
38
+ * Create an UnboundedEllipse2d from xy coordinates and axis vectors.
39
+ * @param center xy coordinates of center
40
+ * @param vectorU vector from center to to theta=0 point
41
+ * @param vectorV vector from center to the theta=90 point
42
+ */
43
+ static createCenterAndAxisVectors(center: XAndY, vectorU: XAndY, vectorV: XAndY): UnboundedEllipse2d;
44
+ /**
45
+ * Convert the coordinates of spacePoint to local coordinates relative to the ellipse vectors.
46
+ * @param spacePoint point for coordinate conversion
47
+ */
48
+ globalToLocal(spacePoint: XAndY): Vector2d | undefined;
49
+ /**
50
+ * Return the implicit function value at xy.
51
+ * @param xy space point
52
+ * @returns squared local (uv) coordinates minus 1
53
+ */
54
+ functionValue(xy: XAndY): number;
55
+ /**
56
+ * Returns gradient of the implicit function.
57
+ * @param xy space point
58
+ */
59
+ gradient(xy: XAndY): Vector2d;
60
+ /**
61
+ * Find points that are on the ellipse at foot of perpendiculars to the space point.
62
+ * Pass each point to the handler.
63
+ * * 0 to 4 handler calls are possible.
64
+ * @param spacePoint the space point.
65
+ * @handler the handler to receive all the points on the curve and radians where perpendicular happens.
66
+ */
67
+ emitPerpendiculars(spacePoint: Point2d, handler: (curvePoint: Point2d, radians: number | undefined) => void): void;
68
+ /**
69
+ * Evaluate the curve point at parametric angle given in radians.
70
+ * * Note that the radians is as it appears in sin(radians) and cos( radians),
71
+ * and this is NOT a geometric angle in the xy plane.
72
+ * * The radians value is only geometric if the U and V are perpendicular and of equal length,
73
+ * i.e., the ellipse is a circle.
74
+ * @param radians angular coordinate in the ellipse.
75
+ */
76
+ radiansToPoint2d(radians: number): Point2d | undefined;
77
+ /**
78
+ * Returns the tangent at given radians value.
79
+ * @param radians parametric angle on the ellipse
80
+ */
81
+ radiansToTangentVector2d(radians: number): Vector2d | undefined;
82
+ /** Returns true if the ellipse is collapsed to a point or line.*/
83
+ isDegenerate(): boolean;
84
+ /**
85
+ * Test if the centers and axes of the vectors are close
86
+ * @param other second hyperbola
87
+ * @param negatedAndExchangedAxesAreEqual
88
+ * * if false, a strong equality test requiring both U and V vectors to match.
89
+ * * This strong test is a test for identical parameterization.
90
+ * * if true, a weak equality test that allows U and V to be negated and or exchanged.
91
+ * * The weak test is a test for the same implicit set.
92
+ * @returns true if identical to tolerance.
93
+ */
94
+ isSameEllipse(other: UnboundedEllipse2d, negatedAndExchangedAxesAreEqual?: boolean): boolean;
95
+ }
96
+ //# sourceMappingURL=UnboundedEllipse2d.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnboundedEllipse2d.d.ts","sourceRoot":"","sources":["../../../../../src/curve/internalContexts/geometry2d/UnboundedEllipse2d.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,qBAAa,kBAAmB,SAAQ,eAAe;IACrD,2DAA2D;IACpD,MAAM,EAAE,OAAO,CAAC;IACvB,kCAAkC;IAC3B,OAAO,EAAE,QAAQ,CAAC;IACzB,kCAAkC;IAC3B,OAAO,EAAE,QAAQ,CAAC;IAEzB,OAAO;IAMP,qCAAqC;IAC9B,KAAK,IAAI,kBAAkB;IAIlC;;;;;;;OAOG;WACW,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,kBAAkB;IAI7H;;;;;OAKG;WACW,0BAA0B,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,GAAG,kBAAkB;IAO3G;;;OAGG;IACI,aAAa,CAAC,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS;IAU7D;;;;OAIG;IACa,aAAa,CAAC,EAAE,EAAE,KAAK,GAAG,MAAM;IAMhD;;;OAGG;IACa,QAAQ,CAAC,EAAE,EAAE,KAAK,GAAG,QAAQ;IAM7C;;;;;;OAMG;IACa,kBAAkB,CAChC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,GACvF,IAAI;IAwBP;;;;;;;OAOG;IACa,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAGtE;;;OAGG;IACa,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAK/E,kEAAkE;IAElD,YAAY,IAAI,OAAO;IAGvC;;;;;;;;;OASG;IACI,aAAa,CAAC,KAAK,EAAE,kBAAkB,EAAE,+BAA+B,GAAE,OAAe,GAAG,OAAO;CAsB3G"}
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ /** @packageDocumentation
7
+ * @module CartesianGeometry
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.UnboundedEllipse2d = void 0;
11
+ const SmallSystem_1 = require("../../../numerics/SmallSystem");
12
+ const Geometry_1 = require("../../../Geometry");
13
+ const Point2dVector2d_1 = require("../../../geometry3d/Point2dVector2d");
14
+ const Polynomials_1 = require("../../../numerics/Polynomials");
15
+ const ImplicitCurve2d_1 = require("./ImplicitCurve2d");
16
+ /**
17
+ * Class for an ellipse in the xy plane.The ellipse equation in angular parameterization is
18
+ * * X = A + U * cos(theta) + V * sin(theta)
19
+ * which means that in the (skewed and scaled) coordinate system with origin at A and local u and v as
20
+ * multiples of U and V the implicit equation is u^2 + v^2 = 1
21
+ * * Note that the U and V vectors DO NOT need to be perpendicular or have any particular length relationship.
22
+ * * If U and V ARE perpendicular, their lengths are commonly called the major and minor axis lengths,
23
+ * and the major and minor axis points are in the U and V directions.
24
+ * * If U and V are NOT perpendicular, the major and minor axis points are at other directions.
25
+ * @internal
26
+ */
27
+ class UnboundedEllipse2d extends ImplicitCurve2d_1.ImplicitCurve2d {
28
+ /** The Cartesian coordinates of any center on the line. */
29
+ center;
30
+ /** The local u axis direction. */
31
+ vectorU;
32
+ /** The local v axis direction. */
33
+ vectorV;
34
+ /* Constructor - CAPTURE given center and axis vectors */
35
+ constructor(center, vectorU, vectorV) {
36
+ super();
37
+ this.center = center;
38
+ this.vectorU = vectorU;
39
+ this.vectorV = vectorV;
40
+ }
41
+ /** Return a clone of this circle. */
42
+ clone() {
43
+ // the create method clones the inputs
44
+ return UnboundedEllipse2d.createCenterAndAxisVectors(this.center, this.vectorU, this.vectorV);
45
+ }
46
+ /**
47
+ * Create an axis-aligned UnboundedEllipse2d with axis lengths.
48
+ * * The implicit equation is (x/scaleU)^2 + (y/scaleV)^2 = 1
49
+ * @param centerX x coordinate of center
50
+ * @param centerY y coordinate of center
51
+ * @param scaleX x axis radius
52
+ * @param scaleY y axis radius
53
+ */
54
+ static createFromCenterAndScales(centerX, centerY, scaleX, scaleY) {
55
+ return new UnboundedEllipse2d(Point2dVector2d_1.Point2d.create(centerX, centerY), Point2dVector2d_1.Vector2d.create(scaleX, 0), Point2dVector2d_1.Vector2d.create(0, scaleY));
56
+ }
57
+ /**
58
+ * Create an UnboundedEllipse2d from xy coordinates and axis vectors.
59
+ * @param center xy coordinates of center
60
+ * @param vectorU vector from center to to theta=0 point
61
+ * @param vectorV vector from center to the theta=90 point
62
+ */
63
+ static createCenterAndAxisVectors(center, vectorU, vectorV) {
64
+ return new UnboundedEllipse2d(Point2dVector2d_1.Point2d.create(center.x, center.y), Point2dVector2d_1.Vector2d.create(vectorU.x, vectorU.y), Point2dVector2d_1.Vector2d.create(vectorV.x, vectorV.y));
65
+ }
66
+ /**
67
+ * Convert the coordinates of spacePoint to local coordinates relative to the ellipse vectors.
68
+ * @param spacePoint point for coordinate conversion
69
+ */
70
+ globalToLocal(spacePoint) {
71
+ const result = Point2dVector2d_1.Vector2d.create();
72
+ if (SmallSystem_1.SmallSystem.linearSystem2d(this.vectorU.x, this.vectorV.x, this.vectorU.y, this.vectorV.y, spacePoint.x - this.center.x, spacePoint.y - this.center.y, result))
73
+ return result;
74
+ return undefined;
75
+ }
76
+ /**
77
+ * Return the implicit function value at xy.
78
+ * @param xy space point
79
+ * @returns squared local (uv) coordinates minus 1
80
+ */
81
+ functionValue(xy) {
82
+ const vectorUV = this.globalToLocal(xy);
83
+ if (vectorUV === undefined)
84
+ return 0;
85
+ return vectorUV.x * vectorUV.x + vectorUV.y * vectorUV.y - 1.0;
86
+ }
87
+ /**
88
+ * Returns gradient of the implicit function.
89
+ * @param xy space point
90
+ */
91
+ gradient(xy) {
92
+ const vectorUV = this.globalToLocal(xy);
93
+ if (vectorUV === undefined)
94
+ return Point2dVector2d_1.Vector2d.create(0, 0);
95
+ return ImplicitCurve2d_1.ImplicitCurve2d.gradientLocalToGlobal(2 * vectorUV.x, 2 * vectorUV.y, this.vectorU, this.vectorV);
96
+ }
97
+ /**
98
+ * Find points that are on the ellipse at foot of perpendiculars to the space point.
99
+ * Pass each point to the handler.
100
+ * * 0 to 4 handler calls are possible.
101
+ * @param spacePoint the space point.
102
+ * @handler the handler to receive all the points on the curve and radians where perpendicular happens.
103
+ */
104
+ emitPerpendiculars(spacePoint, handler) {
105
+ const vectorW = Point2dVector2d_1.Vector2d.createStartEnd(spacePoint, this.center);
106
+ // vector from space point to point on ellipse is
107
+ // R = center + U*c + V * s - spacePoint
108
+ // = W + Uc * Vs where W = center - spacePOInt
109
+ // curve tangent is X' = (-U*s + V * c)
110
+ // dot product R and X' is
111
+ // 0 = (W + Uc + Vs ) dot (-Us + Vc)
112
+ // coefficients of c and s and combinations are:
113
+ const coffC = vectorW.dotProduct(this.vectorV);
114
+ const coffS = -vectorW.dotProduct(this.vectorU);
115
+ const coff1 = 0;
116
+ const dotUV = this.vectorU.dotProduct(this.vectorV);
117
+ const coffCC = dotUV;
118
+ const coffSC = this.vectorV.dotProduct(this.vectorV) - this.vectorU.dotProduct(this.vectorU);
119
+ const coffSS = -dotUV;
120
+ const radiansSolutions = [];
121
+ Polynomials_1.TrigPolynomial.solveUnitCircleImplicitQuadricIntersection(coffCC, coffSC, coffSS, coffC, coffS, coff1, radiansSolutions);
122
+ for (const radians of radiansSolutions) {
123
+ const curvePoint = this.radiansToPoint2d(radians);
124
+ if (curvePoint !== undefined)
125
+ handler(curvePoint, radians);
126
+ }
127
+ }
128
+ /**
129
+ * Evaluate the curve point at parametric angle given in radians.
130
+ * * Note that the radians is as it appears in sin(radians) and cos( radians),
131
+ * and this is NOT a geometric angle in the xy plane.
132
+ * * The radians value is only geometric if the U and V are perpendicular and of equal length,
133
+ * i.e., the ellipse is a circle.
134
+ * @param radians angular coordinate in the ellipse.
135
+ */
136
+ radiansToPoint2d(radians) {
137
+ return this.center.plus2Scaled(this.vectorU, Math.cos(radians), this.vectorV, Math.sin(radians));
138
+ }
139
+ /**
140
+ * Returns the tangent at given radians value.
141
+ * @param radians parametric angle on the ellipse
142
+ */
143
+ radiansToTangentVector2d(radians) {
144
+ const c = Math.cos(radians);
145
+ const s = Math.sin(radians);
146
+ return Point2dVector2d_1.Vector2d.createAdd2Scaled(this.vectorU, -s, this.vectorV, c);
147
+ }
148
+ /** Returns true if the ellipse is collapsed to a point or line.*/
149
+ // eslint-disable-next-line @itwin/prefer-get
150
+ isDegenerate() {
151
+ return undefined === this.globalToLocal(Point2dVector2d_1.Point2d.create(0, 0));
152
+ }
153
+ /**
154
+ * Test if the centers and axes of the vectors are close
155
+ * @param other second hyperbola
156
+ * @param negatedAndExchangedAxesAreEqual
157
+ * * if false, a strong equality test requiring both U and V vectors to match.
158
+ * * This strong test is a test for identical parameterization.
159
+ * * if true, a weak equality test that allows U and V to be negated and or exchanged.
160
+ * * The weak test is a test for the same implicit set.
161
+ * @returns true if identical to tolerance.
162
+ */
163
+ isSameEllipse(other, negatedAndExchangedAxesAreEqual = false) {
164
+ const almostEqualOrNegated = (vectorU, vectorV) => {
165
+ if (Geometry_1.Geometry.isSameCoordinate(vectorU.x, vectorV.x) && Geometry_1.Geometry.isSameCoordinate(vectorU.y, vectorV.y))
166
+ return 1;
167
+ if (Geometry_1.Geometry.isSameCoordinate(vectorU.x, -vectorV.x) && Geometry_1.Geometry.isSameCoordinate(vectorU.y, -vectorV.y))
168
+ return -1;
169
+ return 0;
170
+ };
171
+ if (Geometry_1.Geometry.isSamePoint2d(this.center, other.center)) {
172
+ if (!negatedAndExchangedAxesAreEqual)
173
+ return this.vectorU.isAlmostEqualMetric(other.vectorU) && this.vectorV.isAlmostEqualMetric(other.vectorV);
174
+ const uuCode = almostEqualOrNegated(this.vectorU, other.vectorU);
175
+ const vvCode = almostEqualOrNegated(this.vectorV, other.vectorV);
176
+ if (uuCode !== 0 && vvCode !== 0)
177
+ return true;
178
+ const uvCode = almostEqualOrNegated(this.vectorU, other.vectorV);
179
+ const vuCode = almostEqualOrNegated(this.vectorV, other.vectorU);
180
+ if (uvCode !== 0 && vuCode !== 0)
181
+ return true;
182
+ }
183
+ return false;
184
+ }
185
+ }
186
+ exports.UnboundedEllipse2d = UnboundedEllipse2d;
187
+ //# sourceMappingURL=UnboundedEllipse2d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnboundedEllipse2d.js","sourceRoot":"","sources":["../../../../../src/curve/internalContexts/geometry2d/UnboundedEllipse2d.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module CartesianGeometry\n */\n\nimport { SmallSystem } from \"../../../numerics/SmallSystem\";\nimport { Geometry } from \"../../../Geometry\";\nimport { Point2d, Vector2d } from \"../../../geometry3d/Point2dVector2d\";\nimport { XAndY } from \"../../../geometry3d/XYZProps\";\nimport { TrigPolynomial } from \"../../../numerics/Polynomials\";\nimport { ImplicitCurve2d } from \"./ImplicitCurve2d\";\n\n/**\n * Class for an ellipse in the xy plane.The ellipse equation in angular parameterization is\n * * X = A + U * cos(theta) + V * sin(theta)\n * which means that in the (skewed and scaled) coordinate system with origin at A and local u and v as\n * multiples of U and V the implicit equation is u^2 + v^2 = 1\n * * Note that the U and V vectors DO NOT need to be perpendicular or have any particular length relationship.\n * * If U and V ARE perpendicular, their lengths are commonly called the major and minor axis lengths,\n * and the major and minor axis points are in the U and V directions.\n * * If U and V are NOT perpendicular, the major and minor axis points are at other directions.\n * @internal\n */\nexport class UnboundedEllipse2d extends ImplicitCurve2d {\n /** The Cartesian coordinates of any center on the line. */\n public center: Point2d;\n /** The local u axis direction. */\n public vectorU: Vector2d;\n /** The local v axis direction. */\n public vectorV: Vector2d;\n /* Constructor - CAPTURE given center and axis vectors */\n private constructor(center: Point2d, vectorU: Vector2d, vectorV: Vector2d) {\n super();\n this.center = center;\n this.vectorU = vectorU;\n this.vectorV = vectorV;\n }\n /** Return a clone of this circle. */\n public clone(): UnboundedEllipse2d {\n // the create method clones the inputs\n return UnboundedEllipse2d.createCenterAndAxisVectors(this.center, this.vectorU, this.vectorV);\n }\n /**\n * Create an axis-aligned UnboundedEllipse2d with axis lengths.\n * * The implicit equation is (x/scaleU)^2 + (y/scaleV)^2 = 1\n * @param centerX x coordinate of center\n * @param centerY y coordinate of center\n * @param scaleX x axis radius\n * @param scaleY y axis radius\n */\n public static createFromCenterAndScales(centerX: number, centerY: number, scaleX: number, scaleY: number): UnboundedEllipse2d {\n return new UnboundedEllipse2d(Point2d.create(centerX, centerY),\n Vector2d.create(scaleX, 0), Vector2d.create(0, scaleY));\n }\n /**\n * Create an UnboundedEllipse2d from xy coordinates and axis vectors.\n * @param center xy coordinates of center\n * @param vectorU vector from center to to theta=0 point\n * @param vectorV vector from center to the theta=90 point\n */\n public static createCenterAndAxisVectors(center: XAndY, vectorU: XAndY, vectorV: XAndY): UnboundedEllipse2d {\n return new UnboundedEllipse2d(\n Point2d.create(center.x, center.y),\n Vector2d.create(vectorU.x, vectorU.y),\n Vector2d.create(vectorV.x, vectorV.y),\n );\n }\n /**\n * Convert the coordinates of spacePoint to local coordinates relative to the ellipse vectors.\n * @param spacePoint point for coordinate conversion\n */\n public globalToLocal(spacePoint: XAndY): Vector2d | undefined {\n const result = Vector2d.create();\n if (SmallSystem.linearSystem2d(\n this.vectorU.x, this.vectorV.x,\n this.vectorU.y, this.vectorV.y,\n spacePoint.x - this.center.x, spacePoint.y - this.center.y,\n result))\n return result;\n return undefined;\n }\n /**\n * Return the implicit function value at xy.\n * @param xy space point\n * @returns squared local (uv) coordinates minus 1\n */\n public override functionValue(xy: XAndY): number {\n const vectorUV = this.globalToLocal(xy);\n if (vectorUV === undefined)\n return 0;\n return vectorUV.x * vectorUV.x + vectorUV.y * vectorUV.y - 1.0;\n }\n /**\n * Returns gradient of the implicit function.\n * @param xy space point\n */\n public override gradient(xy: XAndY): Vector2d {\n const vectorUV = this.globalToLocal(xy);\n if (vectorUV === undefined)\n return Vector2d.create(0, 0);\n return ImplicitCurve2d.gradientLocalToGlobal(2 * vectorUV.x, 2 * vectorUV.y, this.vectorU, this.vectorV);\n }\n /**\n * Find points that are on the ellipse at foot of perpendiculars to the space point.\n * Pass each point to the handler.\n * * 0 to 4 handler calls are possible.\n * @param spacePoint the space point.\n * @handler the handler to receive all the points on the curve and radians where perpendicular happens.\n */\n public override emitPerpendiculars(\n spacePoint: Point2d, handler: (curvePoint: Point2d, radians: number | undefined) => void,\n ): void {\n const vectorW = Vector2d.createStartEnd(spacePoint, this.center);\n // vector from space point to point on ellipse is\n // R = center + U*c + V * s - spacePoint\n // = W + Uc * Vs where W = center - spacePOInt\n // curve tangent is X' = (-U*s + V * c)\n // dot product R and X' is\n // 0 = (W + Uc + Vs ) dot (-Us + Vc)\n // coefficients of c and s and combinations are:\n const coffC = vectorW.dotProduct(this.vectorV);\n const coffS = -vectorW.dotProduct(this.vectorU);\n const coff1 = 0;\n const dotUV = this.vectorU.dotProduct(this.vectorV);\n const coffCC = dotUV;\n const coffSC = this.vectorV.dotProduct(this.vectorV) - this.vectorU.dotProduct(this.vectorU);\n const coffSS = -dotUV;\n const radiansSolutions: number[] = [];\n TrigPolynomial.solveUnitCircleImplicitQuadricIntersection(coffCC, coffSC, coffSS, coffC, coffS, coff1, radiansSolutions);\n for (const radians of radiansSolutions) {\n const curvePoint = this.radiansToPoint2d(radians);\n if (curvePoint !== undefined)\n handler(curvePoint, radians);\n }\n }\n /**\n * Evaluate the curve point at parametric angle given in radians.\n * * Note that the radians is as it appears in sin(radians) and cos( radians),\n * and this is NOT a geometric angle in the xy plane.\n * * The radians value is only geometric if the U and V are perpendicular and of equal length,\n * i.e., the ellipse is a circle.\n * @param radians angular coordinate in the ellipse.\n */\n public override radiansToPoint2d(radians: number): Point2d | undefined {\n return this.center.plus2Scaled(this.vectorU, Math.cos(radians), this.vectorV, Math.sin(radians));\n }\n /**\n * Returns the tangent at given radians value.\n * @param radians parametric angle on the ellipse\n */\n public override radiansToTangentVector2d(radians: number): Vector2d | undefined {\n const c = Math.cos(radians);\n const s = Math.sin(radians);\n return Vector2d.createAdd2Scaled(this.vectorU, -s, this.vectorV, c);\n }\n /** Returns true if the ellipse is collapsed to a point or line.*/\n // eslint-disable-next-line @itwin/prefer-get\n public override isDegenerate(): boolean {\n return undefined === this.globalToLocal(Point2d.create(0, 0));\n }\n /**\n * Test if the centers and axes of the vectors are close\n * @param other second hyperbola\n * @param negatedAndExchangedAxesAreEqual\n * * if false, a strong equality test requiring both U and V vectors to match.\n * * This strong test is a test for identical parameterization.\n * * if true, a weak equality test that allows U and V to be negated and or exchanged.\n * * The weak test is a test for the same implicit set.\n * @returns true if identical to tolerance.\n */\n public isSameEllipse(other: UnboundedEllipse2d, negatedAndExchangedAxesAreEqual: boolean = false): boolean {\n const almostEqualOrNegated = (vectorU: Vector2d, vectorV: Vector2d): -1 | 0 | 1 => {\n if (Geometry.isSameCoordinate(vectorU.x, vectorV.x) && Geometry.isSameCoordinate(vectorU.y, vectorV.y))\n return 1;\n if (Geometry.isSameCoordinate(vectorU.x, -vectorV.x) && Geometry.isSameCoordinate(vectorU.y, -vectorV.y))\n return -1;\n return 0;\n }\n if (Geometry.isSamePoint2d(this.center, other.center)) {\n if (!negatedAndExchangedAxesAreEqual)\n return this.vectorU.isAlmostEqualMetric(other.vectorU) && this.vectorV.isAlmostEqualMetric(other.vectorV);\n const uuCode = almostEqualOrNegated(this.vectorU, other.vectorU);\n const vvCode = almostEqualOrNegated(this.vectorV, other.vectorV);\n if (uuCode !== 0 && vvCode !== 0)\n return true\n const uvCode = almostEqualOrNegated(this.vectorU, other.vectorV);\n const vuCode = almostEqualOrNegated(this.vectorV, other.vectorU);\n if (uvCode !== 0 && vuCode !== 0)\n return true;\n }\n return false;\n }\n}\n"]}
@@ -0,0 +1,91 @@
1
+ /** @packageDocumentation
2
+ * @module CartesianGeometry
3
+ */
4
+ import { Point2d, Vector2d } from "../../../geometry3d/Point2dVector2d";
5
+ import { XAndY } from "../../../geometry3d/XYZProps";
6
+ import { ImplicitCurve2d } from "./ImplicitCurve2d";
7
+ /**
8
+ * Internal class for hyperbola in the xy plane. The hyperbola equation in angular parameterization is
9
+ * * X = A + U * sec(theta) + V * tan(theta)
10
+ * which means that in the (skewed and scaled) coordinate system with origin at A and local u and v as
11
+ * multiples of U and V the implicit equation is u^2 - v^2 = 1
12
+ * which means the hyperbola opens along the positive and negative U axis with asymptotes at 45 degrees,
13
+ * i.e., along the directions (U+V) and (U-V)
14
+ * @internal
15
+ */
16
+ export declare class UnboundedHyperbola2d extends ImplicitCurve2d {
17
+ /** The Cartesian coordinates of any center on the line. */
18
+ center: Point2d;
19
+ /** The local u axis direction. */
20
+ vectorU: Vector2d;
21
+ /** The local v axis direction. */
22
+ vectorV: Vector2d;
23
+ private constructor();
24
+ /** Return a clone of this hyperbola. */
25
+ clone(): UnboundedHyperbola2d;
26
+ /**
27
+ * Create UnboundedHyperbola2d with scale factors.
28
+ * * The implicit equation is (x/a)^2 - (y/b)^2 = 1
29
+ * @param centerX x coordinate of center
30
+ * @param centerY y coordinate of center
31
+ * @param scaleU scale factor along the U axis
32
+ * @param scaleV scale factor along the V axis
33
+ * @returns newly created hyperbola object
34
+ */
35
+ static createFromCenterAndScales(centerX: number, centerY: number, scaleU: number, scaleV: number): UnboundedHyperbola2d;
36
+ /**
37
+ * Create an UnboundedHyperbola2d from an xy object and a radius.
38
+ * @param center xy coordinates of center
39
+ * @param vectorU vector from center to to theta=0 vertex, i.e. along axis on the "inside" of the curve
40
+ * @param vectorV vector from center to the transverse direction
41
+ */
42
+ static createCenterAndAxisVectors(center: XAndY, vectorU: XAndY, vectorV: XAndY): UnboundedHyperbola2d;
43
+ /**
44
+ * Return the local (uv) coordinate of a global point.
45
+ * @param spacePoint point for coordinate conversion
46
+ */
47
+ globalToLocal(spacePoint: XAndY): Vector2d | undefined;
48
+ /**
49
+ * Returns xy coordinate on the hyperbola.
50
+ * @param radians parametric angle on the hyperbola
51
+ */
52
+ radiansToPoint2d(radians: number): Point2d | undefined;
53
+ /**
54
+ * Returns the tangent at given radians value.
55
+ * @param radians parametric angle on the hyperbola
56
+ */
57
+ radiansToTangentVector2d(radians: number): Vector2d | undefined;
58
+ /**
59
+ * Return the implicit function value at xy.
60
+ * @param xy space point
61
+ * @returns squared local (uv) coordinates minus 1.
62
+ */
63
+ functionValue(xy: XAndY): number;
64
+ /**
65
+ * Evaluate the gradient (steepest descent) of the implicit function.
66
+ * @param xy space point
67
+ * @returns gradient vector for the implicit function
68
+ */
69
+ gradient(xy: XAndY): Vector2d;
70
+ /**
71
+ * Solve for parametric radians at hyperbola points which are perpendicular projections of spacePoint.
72
+ * * Up to 4 solutions are possible.
73
+ * @param spacePoint the space point.
74
+ * @handler the handler to receive all the points on the curve and radians where perpendicular happens.
75
+ */
76
+ emitPerpendiculars(spacePoint: Point2d, handler: (curvePoint: Point2d, radians: number | undefined) => any): any;
77
+ /** Returns true if the circle radius is near zero. */
78
+ isDegenerate(): boolean;
79
+ /**
80
+ * Test if the centers and axes of the vectors are close
81
+ * @param other second hyperbola
82
+ * @param negatedAndExchangedAxesAreEqual
83
+ * * if false, a strong equality test requiring both U and V vectors to match
84
+ * * This strong test is a test for identical parameterization
85
+ * * if true, a weak equality test that allows U and V to be negated and or exchanged.
86
+ * * The weak test is a test for the same implicit set
87
+ * @returns true if identical to tolerance.
88
+ */
89
+ isSameHyperbola(other: UnboundedHyperbola2d, negatedAndExchangedAxesAreEqual?: boolean): boolean;
90
+ }
91
+ //# sourceMappingURL=UnboundedHyperbola2d.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnboundedHyperbola2d.d.ts","sourceRoot":"","sources":["../../../../../src/curve/internalContexts/geometry2d/UnboundedHyperbola2d.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;;;;;GAQG;AACH,qBAAa,oBAAqB,SAAQ,eAAe;IACvD,2DAA2D;IACpD,MAAM,EAAE,OAAO,CAAC;IACvB,kCAAkC;IAC3B,OAAO,EAAE,QAAQ,CAAC;IACzB,kCAAkC;IAC3B,OAAO,EAAE,QAAQ,CAAC;IAEzB,OAAO;IAMP,wCAAwC;IACjC,KAAK,IAAI,oBAAoB;IAIpC;;;;;;;;OAQG;WACW,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,oBAAoB;IAK/H;;;;;OAKG;WACW,0BAA0B,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,GAAG,oBAAoB;IAM7G;;;OAGG;IACI,aAAa,CAAC,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS;IAU7D;;;OAGG;IACa,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAOtE;;;OAGG;IACa,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAY/E;;;;OAIG;IACa,aAAa,CAAC,EAAE,EAAE,KAAK,GAAG,MAAM;IAMhD;;;;OAIG;IACa,QAAQ,CAAC,EAAE,EAAE,KAAK,GAAG,QAAQ;IAY7C;;;;;OAKG;IACa,kBAAkB,CAChC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,KAAK,GAAG,GACtF,GAAG;IA0BN,sDAAsD;IAEtC,YAAY,IAAI,OAAO;IAGvC;;;;;;;;;OASG;IACI,eAAe,CAAC,KAAK,EAAE,oBAAoB,EAAE,+BAA+B,GAAE,OAAe,GAAG,OAAO;CAsB/G"}