@itwin/core-geometry 4.10.0-dev.2 → 4.10.0-dev.20

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 (540) hide show
  1. package/CHANGELOG.md +31 -1
  2. package/lib/cjs/Constant.js.map +1 -1
  3. package/lib/cjs/Geometry.d.ts +2 -2
  4. package/lib/cjs/Geometry.js +2 -2
  5. package/lib/cjs/Geometry.js.map +1 -1
  6. package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
  7. package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
  8. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  9. package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
  10. package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
  11. package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
  12. package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
  13. package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
  14. package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
  15. package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
  16. package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
  17. package/lib/cjs/bspline/KnotVector.js.map +1 -1
  18. package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -1
  19. package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
  20. package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -1
  21. package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
  22. package/lib/cjs/clipping/ClipPlane.js.map +1 -1
  23. package/lib/cjs/clipping/ClipPrimitive.d.ts +7 -7
  24. package/lib/cjs/clipping/ClipPrimitive.d.ts.map +1 -1
  25. package/lib/cjs/clipping/ClipPrimitive.js +1 -1
  26. package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
  27. package/lib/cjs/clipping/ClipUtils.js.map +1 -1
  28. package/lib/cjs/clipping/ClipVector.js.map +1 -1
  29. package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
  30. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  31. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  32. package/lib/cjs/core-geometry.js.map +1 -1
  33. package/lib/cjs/curve/Arc3d.d.ts +21 -10
  34. package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
  35. package/lib/cjs/curve/Arc3d.js +64 -37
  36. package/lib/cjs/curve/Arc3d.js.map +1 -1
  37. package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
  38. package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
  39. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +27 -8
  40. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  41. package/lib/cjs/curve/CurveChainWithDistanceIndex.js +44 -25
  42. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  43. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  44. package/lib/cjs/curve/CurveCurve.js.map +1 -1
  45. package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
  46. package/lib/cjs/curve/CurveFactory.d.ts +10 -12
  47. package/lib/cjs/curve/CurveFactory.d.ts.map +1 -1
  48. package/lib/cjs/curve/CurveFactory.js +16 -43
  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.js.map +1 -1
  53. package/lib/cjs/curve/CurveProcessor.js.map +1 -1
  54. package/lib/cjs/curve/CurveTypes.js.map +1 -1
  55. package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
  56. package/lib/cjs/curve/GeometryQuery.js.map +1 -1
  57. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  58. package/lib/cjs/curve/LineString3d.js.map +1 -1
  59. package/lib/cjs/curve/Loop.js.map +1 -1
  60. package/lib/cjs/curve/OffsetOptions.js.map +1 -1
  61. package/lib/cjs/curve/ParityRegion.js.map +1 -1
  62. package/lib/cjs/curve/Path.js.map +1 -1
  63. package/lib/cjs/curve/PointString3d.js.map +1 -1
  64. package/lib/cjs/curve/ProxyCurve.js.map +1 -1
  65. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  66. package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
  67. package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
  68. package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
  69. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  70. package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
  71. package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
  72. package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
  73. package/lib/cjs/curve/RegionOps.js.map +1 -1
  74. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  75. package/lib/cjs/curve/StrokeOptions.js.map +1 -1
  76. package/lib/cjs/curve/UnionRegion.js.map +1 -1
  77. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  78. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  79. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  80. package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  81. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  82. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  83. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js +2 -2
  84. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  85. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts +1 -0
  86. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
  87. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js +33 -59
  88. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  89. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.d.ts +22 -7
  90. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.d.ts.map +1 -1
  91. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js +128 -68
  92. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  93. package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
  94. package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  95. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.d.ts.map +1 -1
  96. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js +14 -11
  97. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  98. package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
  99. package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
  100. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  101. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  102. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  103. package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
  104. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  105. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  106. package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
  107. package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
  108. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  109. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  110. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
  111. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  112. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  113. package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
  114. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  115. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  116. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
  117. package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
  118. package/lib/cjs/geometry3d/Angle.d.ts +5 -5
  119. package/lib/cjs/geometry3d/Angle.js +5 -5
  120. package/lib/cjs/geometry3d/Angle.js.map +1 -1
  121. package/lib/cjs/geometry3d/AngleSweep.d.ts +101 -13
  122. package/lib/cjs/geometry3d/AngleSweep.d.ts.map +1 -1
  123. package/lib/cjs/geometry3d/AngleSweep.js +156 -57
  124. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
  125. package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
  126. package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
  127. package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
  128. package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
  129. package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
  130. package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
  131. package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
  132. package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
  133. package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
  134. package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
  135. package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
  136. package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
  137. package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
  138. package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
  139. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  140. package/lib/cjs/geometry3d/Matrix3d.d.ts +9 -15
  141. package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -1
  142. package/lib/cjs/geometry3d/Matrix3d.js +21 -15
  143. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  144. package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
  145. package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
  146. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  147. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  148. package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
  149. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  150. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  151. package/lib/cjs/geometry3d/Point3dVector3d.d.ts +6 -5
  152. package/lib/cjs/geometry3d/Point3dVector3d.d.ts.map +1 -1
  153. package/lib/cjs/geometry3d/Point3dVector3d.js +6 -5
  154. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  155. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  156. package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
  157. package/lib/cjs/geometry3d/PolygonOps.js +2 -2
  158. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  159. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  160. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
  161. package/lib/cjs/geometry3d/Range.js.map +1 -1
  162. package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
  163. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  164. package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
  165. package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
  166. package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
  167. package/lib/cjs/geometry3d/Transform.d.ts +4 -2
  168. package/lib/cjs/geometry3d/Transform.d.ts.map +1 -1
  169. package/lib/cjs/geometry3d/Transform.js +4 -2
  170. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  171. package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
  172. package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
  173. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  174. package/lib/cjs/geometry4d/Map4d.d.ts +5 -5
  175. package/lib/cjs/geometry4d/Map4d.js +5 -5
  176. package/lib/cjs/geometry4d/Map4d.js.map +1 -1
  177. package/lib/cjs/geometry4d/Matrix4d.d.ts +4 -7
  178. package/lib/cjs/geometry4d/Matrix4d.d.ts.map +1 -1
  179. package/lib/cjs/geometry4d/Matrix4d.js +4 -7
  180. package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
  181. package/lib/cjs/geometry4d/MomentData.js.map +1 -1
  182. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  183. package/lib/cjs/geometry4d/Point4d.js.map +1 -1
  184. package/lib/cjs/numerics/BandedSystem.js.map +1 -1
  185. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
  186. package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
  187. package/lib/cjs/numerics/Complex.js.map +1 -1
  188. package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
  189. package/lib/cjs/numerics/Newton.js.map +1 -1
  190. package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
  191. package/lib/cjs/numerics/PolarData.js.map +1 -1
  192. package/lib/cjs/numerics/Polynomials.d.ts +37 -36
  193. package/lib/cjs/numerics/Polynomials.d.ts.map +1 -1
  194. package/lib/cjs/numerics/Polynomials.js +90 -105
  195. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  196. package/lib/cjs/numerics/Quadrature.js.map +1 -1
  197. package/lib/cjs/numerics/Range1dArray.js.map +1 -1
  198. package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
  199. package/lib/cjs/numerics/UnionFind.js.map +1 -1
  200. package/lib/cjs/numerics/UsageSums.js.map +1 -1
  201. package/lib/cjs/polyface/AuxData.js.map +1 -1
  202. package/lib/cjs/polyface/BoxTopology.js.map +1 -1
  203. package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
  204. package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
  205. package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
  206. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  207. package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
  208. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  209. package/lib/cjs/polyface/Polyface.js.map +1 -1
  210. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  211. package/lib/cjs/polyface/PolyfaceClip.d.ts +3 -3
  212. package/lib/cjs/polyface/PolyfaceClip.d.ts.map +1 -1
  213. package/lib/cjs/polyface/PolyfaceClip.js +1 -1
  214. package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
  215. package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
  216. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  217. package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
  218. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  219. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  220. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  221. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  222. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  223. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  224. package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
  225. package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
  226. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  227. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  228. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  229. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  230. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  231. package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  232. package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
  233. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  234. package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
  235. package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
  236. package/lib/cjs/serialization/BGFBReader.js.map +1 -1
  237. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  238. package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  239. package/lib/cjs/serialization/DeepCompare.js.map +1 -1
  240. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  241. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  242. package/lib/cjs/serialization/SerializationHelpers.js.map +1 -1
  243. package/lib/cjs/solid/Box.js.map +1 -1
  244. package/lib/cjs/solid/Cone.js.map +1 -1
  245. package/lib/cjs/solid/LinearSweep.js.map +1 -1
  246. package/lib/cjs/solid/RotationalSweep.js.map +1 -1
  247. package/lib/cjs/solid/RuledSweep.js.map +1 -1
  248. package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
  249. package/lib/cjs/solid/Sphere.js.map +1 -1
  250. package/lib/cjs/solid/SweepContour.js.map +1 -1
  251. package/lib/cjs/solid/TorusPipe.js.map +1 -1
  252. package/lib/cjs/topology/ChainMerge.js.map +1 -1
  253. package/lib/cjs/topology/Graph.js.map +1 -1
  254. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  255. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  256. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  257. package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
  258. package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
  259. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  260. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  261. package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
  262. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
  263. package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
  264. package/lib/cjs/topology/MaskManager.js.map +1 -1
  265. package/lib/cjs/topology/Merging.js.map +1 -1
  266. package/lib/cjs/topology/RegularizeFace.js.map +1 -1
  267. package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
  268. package/lib/cjs/topology/SpaceTriangulation.js.map +1 -1
  269. package/lib/cjs/topology/Triangulation.js.map +1 -1
  270. package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
  271. package/lib/esm/Constant.js.map +1 -1
  272. package/lib/esm/Geometry.d.ts +2 -2
  273. package/lib/esm/Geometry.js +2 -2
  274. package/lib/esm/Geometry.js.map +1 -1
  275. package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
  276. package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
  277. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  278. package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
  279. package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
  280. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  281. package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
  282. package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
  283. package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
  284. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  285. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  286. package/lib/esm/bspline/KnotVector.js.map +1 -1
  287. package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
  288. package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
  289. package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
  290. package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
  291. package/lib/esm/clipping/ClipPlane.js.map +1 -1
  292. package/lib/esm/clipping/ClipPrimitive.d.ts +7 -7
  293. package/lib/esm/clipping/ClipPrimitive.d.ts.map +1 -1
  294. package/lib/esm/clipping/ClipPrimitive.js +1 -1
  295. package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
  296. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  297. package/lib/esm/clipping/ClipVector.js.map +1 -1
  298. package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
  299. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  300. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  301. package/lib/esm/core-geometry.js.map +1 -1
  302. package/lib/esm/curve/Arc3d.d.ts +21 -10
  303. package/lib/esm/curve/Arc3d.d.ts.map +1 -1
  304. package/lib/esm/curve/Arc3d.js +64 -37
  305. package/lib/esm/curve/Arc3d.js.map +1 -1
  306. package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
  307. package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
  308. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +27 -8
  309. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  310. package/lib/esm/curve/CurveChainWithDistanceIndex.js +44 -25
  311. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  312. package/lib/esm/curve/CurveCollection.js.map +1 -1
  313. package/lib/esm/curve/CurveCurve.js.map +1 -1
  314. package/lib/esm/curve/CurveExtendMode.js.map +1 -1
  315. package/lib/esm/curve/CurveFactory.d.ts +10 -12
  316. package/lib/esm/curve/CurveFactory.d.ts.map +1 -1
  317. package/lib/esm/curve/CurveFactory.js +16 -43
  318. package/lib/esm/curve/CurveFactory.js.map +1 -1
  319. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  320. package/lib/esm/curve/CurveOps.js.map +1 -1
  321. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  322. package/lib/esm/curve/CurveProcessor.js.map +1 -1
  323. package/lib/esm/curve/CurveTypes.js.map +1 -1
  324. package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
  325. package/lib/esm/curve/GeometryQuery.js.map +1 -1
  326. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  327. package/lib/esm/curve/LineString3d.js.map +1 -1
  328. package/lib/esm/curve/Loop.js.map +1 -1
  329. package/lib/esm/curve/OffsetOptions.js.map +1 -1
  330. package/lib/esm/curve/ParityRegion.js.map +1 -1
  331. package/lib/esm/curve/Path.js.map +1 -1
  332. package/lib/esm/curve/PointString3d.js.map +1 -1
  333. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  334. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  335. package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
  336. package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
  337. package/lib/esm/curve/Query/InOutTests.js.map +1 -1
  338. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  339. package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
  340. package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
  341. package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
  342. package/lib/esm/curve/RegionOps.js.map +1 -1
  343. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  344. package/lib/esm/curve/StrokeOptions.js.map +1 -1
  345. package/lib/esm/curve/UnionRegion.js.map +1 -1
  346. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  347. package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  348. package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  349. package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  350. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  351. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  352. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js +2 -2
  353. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  354. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts +1 -0
  355. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
  356. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js +33 -59
  357. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  358. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.d.ts +22 -7
  359. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.d.ts.map +1 -1
  360. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js +128 -68
  361. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  362. package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
  363. package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  364. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.d.ts.map +1 -1
  365. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js +14 -11
  366. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  367. package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
  368. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  369. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  370. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  371. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  372. package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
  373. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  374. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  375. package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
  376. package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
  377. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  378. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  379. package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
  380. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  381. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  382. package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
  383. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  384. package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  385. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
  386. package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
  387. package/lib/esm/geometry3d/Angle.d.ts +5 -5
  388. package/lib/esm/geometry3d/Angle.js +5 -5
  389. package/lib/esm/geometry3d/Angle.js.map +1 -1
  390. package/lib/esm/geometry3d/AngleSweep.d.ts +101 -13
  391. package/lib/esm/geometry3d/AngleSweep.d.ts.map +1 -1
  392. package/lib/esm/geometry3d/AngleSweep.js +156 -57
  393. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  394. package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
  395. package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
  396. package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
  397. package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
  398. package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
  399. package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
  400. package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
  401. package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
  402. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
  403. package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
  404. package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
  405. package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
  406. package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
  407. package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
  408. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  409. package/lib/esm/geometry3d/Matrix3d.d.ts +9 -15
  410. package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -1
  411. package/lib/esm/geometry3d/Matrix3d.js +21 -15
  412. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  413. package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
  414. package/lib/esm/geometry3d/Plane3d.js.map +1 -1
  415. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  416. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  417. package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
  418. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  419. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  420. package/lib/esm/geometry3d/Point3dVector3d.d.ts +6 -5
  421. package/lib/esm/geometry3d/Point3dVector3d.d.ts.map +1 -1
  422. package/lib/esm/geometry3d/Point3dVector3d.js +6 -5
  423. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  424. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  425. package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
  426. package/lib/esm/geometry3d/PolygonOps.js +2 -2
  427. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  428. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  429. package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
  430. package/lib/esm/geometry3d/Range.js.map +1 -1
  431. package/lib/esm/geometry3d/Ray2d.js.map +1 -1
  432. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  433. package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
  434. package/lib/esm/geometry3d/Segment1d.js.map +1 -1
  435. package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
  436. package/lib/esm/geometry3d/Transform.d.ts +4 -2
  437. package/lib/esm/geometry3d/Transform.d.ts.map +1 -1
  438. package/lib/esm/geometry3d/Transform.js +4 -2
  439. package/lib/esm/geometry3d/Transform.js.map +1 -1
  440. package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
  441. package/lib/esm/geometry3d/XYZProps.js.map +1 -1
  442. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  443. package/lib/esm/geometry4d/Map4d.d.ts +5 -5
  444. package/lib/esm/geometry4d/Map4d.js +5 -5
  445. package/lib/esm/geometry4d/Map4d.js.map +1 -1
  446. package/lib/esm/geometry4d/Matrix4d.d.ts +4 -7
  447. package/lib/esm/geometry4d/Matrix4d.d.ts.map +1 -1
  448. package/lib/esm/geometry4d/Matrix4d.js +4 -7
  449. package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
  450. package/lib/esm/geometry4d/MomentData.js.map +1 -1
  451. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  452. package/lib/esm/geometry4d/Point4d.js.map +1 -1
  453. package/lib/esm/numerics/BandedSystem.js.map +1 -1
  454. package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
  455. package/lib/esm/numerics/ClusterableArray.js.map +1 -1
  456. package/lib/esm/numerics/Complex.js.map +1 -1
  457. package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
  458. package/lib/esm/numerics/Newton.js.map +1 -1
  459. package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
  460. package/lib/esm/numerics/PolarData.js.map +1 -1
  461. package/lib/esm/numerics/Polynomials.d.ts +37 -36
  462. package/lib/esm/numerics/Polynomials.d.ts.map +1 -1
  463. package/lib/esm/numerics/Polynomials.js +90 -105
  464. package/lib/esm/numerics/Polynomials.js.map +1 -1
  465. package/lib/esm/numerics/Quadrature.js.map +1 -1
  466. package/lib/esm/numerics/Range1dArray.js.map +1 -1
  467. package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
  468. package/lib/esm/numerics/UnionFind.js.map +1 -1
  469. package/lib/esm/numerics/UsageSums.js.map +1 -1
  470. package/lib/esm/polyface/AuxData.js.map +1 -1
  471. package/lib/esm/polyface/BoxTopology.js.map +1 -1
  472. package/lib/esm/polyface/FacetFaceData.js.map +1 -1
  473. package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
  474. package/lib/esm/polyface/FacetOrientation.js.map +1 -1
  475. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  476. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
  477. package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  478. package/lib/esm/polyface/Polyface.js.map +1 -1
  479. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  480. package/lib/esm/polyface/PolyfaceClip.d.ts +3 -3
  481. package/lib/esm/polyface/PolyfaceClip.d.ts.map +1 -1
  482. package/lib/esm/polyface/PolyfaceClip.js +1 -1
  483. package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
  484. package/lib/esm/polyface/PolyfaceData.js.map +1 -1
  485. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  486. package/lib/esm/polyface/RangeLengthData.js.map +1 -1
  487. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  488. package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  489. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  490. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  491. package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  492. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  493. package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
  494. package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
  495. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  496. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  497. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  498. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  499. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  500. package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  501. package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
  502. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  503. package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
  504. package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
  505. package/lib/esm/serialization/BGFBReader.js.map +1 -1
  506. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  507. package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  508. package/lib/esm/serialization/DeepCompare.js.map +1 -1
  509. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  510. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  511. package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
  512. package/lib/esm/solid/Box.js.map +1 -1
  513. package/lib/esm/solid/Cone.js.map +1 -1
  514. package/lib/esm/solid/LinearSweep.js.map +1 -1
  515. package/lib/esm/solid/RotationalSweep.js.map +1 -1
  516. package/lib/esm/solid/RuledSweep.js.map +1 -1
  517. package/lib/esm/solid/SolidPrimitive.js.map +1 -1
  518. package/lib/esm/solid/Sphere.js.map +1 -1
  519. package/lib/esm/solid/SweepContour.js.map +1 -1
  520. package/lib/esm/solid/TorusPipe.js.map +1 -1
  521. package/lib/esm/topology/ChainMerge.js.map +1 -1
  522. package/lib/esm/topology/Graph.js.map +1 -1
  523. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  524. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  525. package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  526. package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
  527. package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
  528. package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  529. package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  530. package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
  531. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
  532. package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
  533. package/lib/esm/topology/MaskManager.js.map +1 -1
  534. package/lib/esm/topology/Merging.js.map +1 -1
  535. package/lib/esm/topology/RegularizeFace.js.map +1 -1
  536. package/lib/esm/topology/SignedDataSummary.js.map +1 -1
  537. package/lib/esm/topology/SpaceTriangulation.js.map +1 -1
  538. package/lib/esm/topology/Triangulation.js.map +1 -1
  539. package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
  540. package/package.json +7 -19
@@ -1 +1 @@
1
- {"version":3,"file":"PolarData.js","sourceRoot":"","sources":["../../../src/numerics/PolarData.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\nimport { Arc3d } from \"../curve/Arc3d\";\r\nimport { CoordinateXYZ } from \"../curve/CoordinateXYZ\";\r\nimport { GeometryQuery } from \"../curve/GeometryQuery\";\r\nimport { LineSegment3d } from \"../curve/LineSegment3d\";\r\nimport { Geometry } from \"../Geometry\";\r\nimport { Angle } from \"../geometry3d/Angle\";\r\nimport { Point3d } from \"../geometry3d/Point3dVector3d\";\r\n\r\n/** Enumeration of how constraints have been resolved\r\n * @internal\r\n */\r\nexport enum ConstraintState {\r\n unknown = 0,\r\n singlePoint = 1,\r\n impossibleValues = -1,\r\n onCurve = 2,\r\n\r\n}\r\n\r\n/**\r\n * PolarData carries (possibly incomplete) data for converting among polar and cartesian coordinates.\r\n * @internal\r\n */\r\nexport class PolarData {\r\n private static _defaultRadius = 1.0;\r\n public static get defaultRadius(): number { return PolarData._defaultRadius; }\r\n /** x coordinate, possibly unknown */\r\n public x?: number;\r\n /** y coordinate, possibly unknown */\r\n public y?: number;\r\n /** radius, possibly unknown */\r\n public r?: number;\r\n /** angle, possibly unknown */\r\n public theta?: Angle;\r\n /** point, line, or arc geometry, as determined by solveFromScalars */\r\n public geometry?: GeometryQuery;\r\n /** enumeration of resolved state validity conditions. */\r\n public state?: ConstraintState;\r\n /** Count the number of defined values among x,y,r, theta */\r\n public get numberOfConstrainedScalars(): number {\r\n let n = 0;\r\n if (this.x !== undefined) n++;\r\n if (this.y !== undefined) n++;\r\n if (this.r !== undefined) n++;\r\n if (this.theta !== undefined) n++;\r\n return n;\r\n }\r\n /** Create with any combination of known and unknown scalars. */\r\n public static createMixedScalars(state?: ConstraintState, x?: number, y?: number, r?: number, theta?: Angle): PolarData {\r\n const result = new PolarData();\r\n result.x = x;\r\n result.y = y;\r\n result.r = r;\r\n result.theta = theta !== undefined ? theta.clone() : undefined;\r\n result.state = state;\r\n return result;\r\n }\r\n\r\n /** Clone the scalar data, replace the state.\r\n * * Geometry is NOT cloned.\r\n */\r\n public cloneScalarsWithState(newState: ConstraintState): PolarData {\r\n const result = new PolarData();\r\n result.x = this.x;\r\n result.y = this.y;\r\n result.r = this.r;\r\n result.theta = this.theta !== undefined ? this.theta.clone() : undefined;\r\n result.state = newState;\r\n return result;\r\n }\r\n\r\n /** Given a possibly incomplete set of x,y,r,theta, determine the possible completions. */\r\n public static solveFromScalars(known: PolarData): PolarData[] {\r\n const result = [];\r\n // .. fill out known combinations (x,y) (x,r) etc.\r\n // .. any \"singlePoints\" gets created with no geometry, but geometry fills in at end.\r\n // .. \"free on curve\" has curve filled in, with finite curve range controlled by PolarData.defaultRadius.\r\n if (known.x !== undefined) {\r\n if (known.y !== undefined) {\r\n result.push(PolarData.createMixedScalars(ConstraintState.singlePoint, known.x, known.y, Geometry.hypotenuseXY(known.x, known.y), Angle.createAtan2(known.y, known.x)));\r\n } else if (known.r !== undefined) {\r\n const rr = known.r * known.r;\r\n const xx = known.x * known.x;\r\n const yy = rr - xx;\r\n if (yy < 0.0) {\r\n result.push(known.cloneScalarsWithState(ConstraintState.impossibleValues));\r\n } else {\r\n const y = Math.sqrt(yy);\r\n result.push(PolarData.createMixedScalars(ConstraintState.singlePoint, known.x, y, known.r, Angle.createAtan2(y, known.x)));\r\n result.push(PolarData.createMixedScalars(ConstraintState.singlePoint, known.x, -y, known.r, Angle.createAtan2(-y, known.x)));\r\n }\r\n } else if (known.theta !== undefined) {\r\n const r = Geometry.conditionalDivideFraction(known.x, known.theta.cos());\r\n // test 4*theta to isolate either positive or negative PI/2 case ...\r\n if (r === undefined) {\r\n // Anywhere on y axis does has x=0, this angle . . .\r\n const q = known.cloneScalarsWithState(ConstraintState.onCurve);\r\n q.geometry = LineSegment3d.createXYXY(0, PolarData._defaultRadius, 0, PolarData._defaultRadius);\r\n } else {\r\n const y = r * known.theta.sin();\r\n result.push(PolarData.createMixedScalars(ConstraintState.singlePoint, known.x, y, r, known.theta));\r\n }\r\n } else { // only x known --- fill out a vertical line\r\n const q = known.cloneScalarsWithState(ConstraintState.onCurve);\r\n q.geometry = LineSegment3d.createXYZXYZ(known.x, PolarData._defaultRadius, 0, known.x, PolarData._defaultRadius, 0);\r\n }\r\n } else if (known.y !== undefined) { // and we already know x is undefined .....\r\n if (known.r !== undefined) {\r\n const rr = known.r * known.r;\r\n const yy = known.y * known.y;\r\n const xx = rr - yy;\r\n if (xx < 0.0) {\r\n result.push(known.cloneScalarsWithState(ConstraintState.impossibleValues));\r\n } else {\r\n const x = Math.sqrt(xx);\r\n result.push(PolarData.createMixedScalars(ConstraintState.singlePoint, x, known.y, known.r, Angle.createAtan2(known.y, x)));\r\n result.push(PolarData.createMixedScalars(ConstraintState.singlePoint, -x, known.y, known.r, Angle.createAtan2(known.y, -x)));\r\n }\r\n } else if (known.theta !== undefined) {\r\n const r = Geometry.conditionalDivideFraction(known.y, known.theta.sin());\r\n // test 4*theta to isolate either positive or negative PI/2 case ...\r\n if (r === undefined) {\r\n // Anywhere on y axis does has x=0, this angle . . .\r\n const q = known.cloneScalarsWithState(ConstraintState.onCurve);\r\n q.geometry = LineSegment3d.createXYZXYZ(0, PolarData._defaultRadius, 0, 0, PolarData._defaultRadius, 0);\r\n } else {\r\n const x = r * known.theta.cos();\r\n result.push(PolarData.createMixedScalars(ConstraintState.singlePoint, x, known.y, r, known.theta));\r\n }\r\n } else { // only x known --- fill out a horizontal line\r\n const q = known.cloneScalarsWithState(ConstraintState.onCurve);\r\n q.geometry = LineSegment3d.createXYZXYZ(PolarData._defaultRadius, known.y, 0, PolarData._defaultRadius, known.y, 0);\r\n }\r\n } else if (known.r !== undefined) {\r\n if (known.theta !== undefined) {\r\n result.push(PolarData.createMixedScalars(ConstraintState.singlePoint, known.r * known.theta.cos(), known.r * known.theta.sin(), known.r, known.theta));\r\n } else {\r\n const q = known.cloneScalarsWithState(ConstraintState.onCurve);\r\n q.geometry = Arc3d.createXY(Point3d.create(0, 0, 0), known.r);\r\n result.push(q);\r\n }\r\n } else if (known.theta !== undefined) {\r\n const q = known.cloneScalarsWithState(ConstraintState.onCurve);\r\n const x = PolarData._defaultRadius * known.theta.cos();\r\n const y = PolarData._defaultRadius * known.theta.sin();\r\n q.geometry = LineSegment3d.createXYXY(-x, -y, x, y);\r\n result.push(q);\r\n }\r\n // ----------------------------------------------------------------------------------------\r\n // add tangible geometry to single points ...\r\n for (const r of result) {\r\n if (r.state === ConstraintState.singlePoint && r.geometry === undefined)\r\n r.geometry = CoordinateXYZ.createXYZ(r.x, r.y, 0.0);\r\n }\r\n return result;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"PolarData.js","sourceRoot":"","sources":["../../../src/numerics/PolarData.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*--------------------------------------------------------------------------------------------*/\nimport { Arc3d } from \"../curve/Arc3d\";\nimport { CoordinateXYZ } from \"../curve/CoordinateXYZ\";\nimport { GeometryQuery } from \"../curve/GeometryQuery\";\nimport { LineSegment3d } from \"../curve/LineSegment3d\";\nimport { Geometry } from \"../Geometry\";\nimport { Angle } from \"../geometry3d/Angle\";\nimport { Point3d } from \"../geometry3d/Point3dVector3d\";\n\n/** Enumeration of how constraints have been resolved\n * @internal\n */\nexport enum ConstraintState {\n unknown = 0,\n singlePoint = 1,\n impossibleValues = -1,\n onCurve = 2,\n\n}\n\n/**\n * PolarData carries (possibly incomplete) data for converting among polar and cartesian coordinates.\n * @internal\n */\nexport class PolarData {\n private static _defaultRadius = 1.0;\n public static get defaultRadius(): number { return PolarData._defaultRadius; }\n /** x coordinate, possibly unknown */\n public x?: number;\n /** y coordinate, possibly unknown */\n public y?: number;\n /** radius, possibly unknown */\n public r?: number;\n /** angle, possibly unknown */\n public theta?: Angle;\n /** point, line, or arc geometry, as determined by solveFromScalars */\n public geometry?: GeometryQuery;\n /** enumeration of resolved state validity conditions. */\n public state?: ConstraintState;\n /** Count the number of defined values among x,y,r, theta */\n public get numberOfConstrainedScalars(): number {\n let n = 0;\n if (this.x !== undefined) n++;\n if (this.y !== undefined) n++;\n if (this.r !== undefined) n++;\n if (this.theta !== undefined) n++;\n return n;\n }\n /** Create with any combination of known and unknown scalars. */\n public static createMixedScalars(state?: ConstraintState, x?: number, y?: number, r?: number, theta?: Angle): PolarData {\n const result = new PolarData();\n result.x = x;\n result.y = y;\n result.r = r;\n result.theta = theta !== undefined ? theta.clone() : undefined;\n result.state = state;\n return result;\n }\n\n /** Clone the scalar data, replace the state.\n * * Geometry is NOT cloned.\n */\n public cloneScalarsWithState(newState: ConstraintState): PolarData {\n const result = new PolarData();\n result.x = this.x;\n result.y = this.y;\n result.r = this.r;\n result.theta = this.theta !== undefined ? this.theta.clone() : undefined;\n result.state = newState;\n return result;\n }\n\n /** Given a possibly incomplete set of x,y,r,theta, determine the possible completions. */\n public static solveFromScalars(known: PolarData): PolarData[] {\n const result = [];\n // .. fill out known combinations (x,y) (x,r) etc.\n // .. any \"singlePoints\" gets created with no geometry, but geometry fills in at end.\n // .. \"free on curve\" has curve filled in, with finite curve range controlled by PolarData.defaultRadius.\n if (known.x !== undefined) {\n if (known.y !== undefined) {\n result.push(PolarData.createMixedScalars(ConstraintState.singlePoint, known.x, known.y, Geometry.hypotenuseXY(known.x, known.y), Angle.createAtan2(known.y, known.x)));\n } else if (known.r !== undefined) {\n const rr = known.r * known.r;\n const xx = known.x * known.x;\n const yy = rr - xx;\n if (yy < 0.0) {\n result.push(known.cloneScalarsWithState(ConstraintState.impossibleValues));\n } else {\n const y = Math.sqrt(yy);\n result.push(PolarData.createMixedScalars(ConstraintState.singlePoint, known.x, y, known.r, Angle.createAtan2(y, known.x)));\n result.push(PolarData.createMixedScalars(ConstraintState.singlePoint, known.x, -y, known.r, Angle.createAtan2(-y, known.x)));\n }\n } else if (known.theta !== undefined) {\n const r = Geometry.conditionalDivideFraction(known.x, known.theta.cos());\n // test 4*theta to isolate either positive or negative PI/2 case ...\n if (r === undefined) {\n // Anywhere on y axis does has x=0, this angle . . .\n const q = known.cloneScalarsWithState(ConstraintState.onCurve);\n q.geometry = LineSegment3d.createXYXY(0, PolarData._defaultRadius, 0, PolarData._defaultRadius);\n } else {\n const y = r * known.theta.sin();\n result.push(PolarData.createMixedScalars(ConstraintState.singlePoint, known.x, y, r, known.theta));\n }\n } else { // only x known --- fill out a vertical line\n const q = known.cloneScalarsWithState(ConstraintState.onCurve);\n q.geometry = LineSegment3d.createXYZXYZ(known.x, PolarData._defaultRadius, 0, known.x, PolarData._defaultRadius, 0);\n }\n } else if (known.y !== undefined) { // and we already know x is undefined .....\n if (known.r !== undefined) {\n const rr = known.r * known.r;\n const yy = known.y * known.y;\n const xx = rr - yy;\n if (xx < 0.0) {\n result.push(known.cloneScalarsWithState(ConstraintState.impossibleValues));\n } else {\n const x = Math.sqrt(xx);\n result.push(PolarData.createMixedScalars(ConstraintState.singlePoint, x, known.y, known.r, Angle.createAtan2(known.y, x)));\n result.push(PolarData.createMixedScalars(ConstraintState.singlePoint, -x, known.y, known.r, Angle.createAtan2(known.y, -x)));\n }\n } else if (known.theta !== undefined) {\n const r = Geometry.conditionalDivideFraction(known.y, known.theta.sin());\n // test 4*theta to isolate either positive or negative PI/2 case ...\n if (r === undefined) {\n // Anywhere on y axis does has x=0, this angle . . .\n const q = known.cloneScalarsWithState(ConstraintState.onCurve);\n q.geometry = LineSegment3d.createXYZXYZ(0, PolarData._defaultRadius, 0, 0, PolarData._defaultRadius, 0);\n } else {\n const x = r * known.theta.cos();\n result.push(PolarData.createMixedScalars(ConstraintState.singlePoint, x, known.y, r, known.theta));\n }\n } else { // only x known --- fill out a horizontal line\n const q = known.cloneScalarsWithState(ConstraintState.onCurve);\n q.geometry = LineSegment3d.createXYZXYZ(PolarData._defaultRadius, known.y, 0, PolarData._defaultRadius, known.y, 0);\n }\n } else if (known.r !== undefined) {\n if (known.theta !== undefined) {\n result.push(PolarData.createMixedScalars(ConstraintState.singlePoint, known.r * known.theta.cos(), known.r * known.theta.sin(), known.r, known.theta));\n } else {\n const q = known.cloneScalarsWithState(ConstraintState.onCurve);\n q.geometry = Arc3d.createXY(Point3d.create(0, 0, 0), known.r);\n result.push(q);\n }\n } else if (known.theta !== undefined) {\n const q = known.cloneScalarsWithState(ConstraintState.onCurve);\n const x = PolarData._defaultRadius * known.theta.cos();\n const y = PolarData._defaultRadius * known.theta.sin();\n q.geometry = LineSegment3d.createXYXY(-x, -y, x, y);\n result.push(q);\n }\n // ----------------------------------------------------------------------------------------\n // add tangible geometry to single points ...\n for (const r of result) {\n if (r.state === ConstraintState.singlePoint && r.geometry === undefined)\n r.geometry = CoordinateXYZ.createXYZ(r.x, r.y, 0.0);\n }\n return result;\n }\n}\n"]}
@@ -12,7 +12,7 @@ import { Point4d } from "../geometry4d/Point4d";
12
12
  * @internal
13
13
  */
14
14
  export declare class Degree2PowerPolynomial {
15
- /** The three coefficients for the quartic */
15
+ /** The three coefficients for the quadratic */
16
16
  coffs: number[];
17
17
  constructor(c0?: number, c1?: number, c2?: number);
18
18
  /**
@@ -268,7 +268,7 @@ export declare class AnalyticRoots {
268
268
  private static appendFullCubicSolutions;
269
269
  /** Compute roots of cubic 'c[0] + c[1] * x + c[2] * x^2 + c[3] * x^3 */
270
270
  static appendCubicRoots(c: Float64Array | number[], results: GrowableFloat64Array): void;
271
- /** Compute roots of quartic 'c[0] + c[1] * x + c[2] * x^2 + c[3] * x^3 + c[4] * x^4 */
271
+ /** Compute roots of quartic `c[0] + c[1] * x + c[2] * x^2 + c[3] * x^3 + c[4] * x^4` */
272
272
  static appendQuarticRoots(c: Float64Array | number[], results: GrowableFloat64Array): void;
273
273
  private static appendCosSinRadians;
274
274
  /**
@@ -306,9 +306,9 @@ export declare class PowerPolynomial {
306
306
  /** Evaluate the standard basis polynomial of degree `coff.length` at `x` */
307
307
  static evaluate(coff: Float64Array, x: number): number;
308
308
  /**
309
- * * Accumulate Q*scale into P. Both are treated as full degree.
310
- * * (Expect Address exceptions if P is smaller than Q)
311
- * * Returns degree of result as determined by comparing trailing coefficients to zero
309
+ * Accumulate `coffQ*scaleQ` into `coffP`.
310
+ * * The length of `coffP` must be at least length of `coffQ`.
311
+ * * Returns degree of result as determined by comparing trailing coefficients to zero.
312
312
  */
313
313
  static accumulate(coffP: Float64Array, coffQ: Float64Array, scaleQ: number): number;
314
314
  /** Zero all coefficients */
@@ -320,55 +320,56 @@ export declare class PowerPolynomial {
320
320
  */
321
321
  export declare class TrigPolynomial {
322
322
  private static readonly _smallAngle;
323
- /** Standard Basis coefficients for rational sine numerator. */
323
+ /** Standard Basis coefficients for the numerator of the y-coordinate y(t) = S(t)/W(t) in the rational semicircle parameterization. */
324
324
  static readonly S: Float64Array;
325
- /** Standard Basis coefficients for rational cosine numerator. */
325
+ /** Standard Basis coefficients for the numerator of the x-coordinate x(t) = C(t)/W(t) in the rational semicircle parameterization. */
326
326
  static readonly C: Float64Array;
327
- /** Standard Basis coefficients for rational denominator. */
327
+ /** Standard Basis coefficients for the denominator of x(t) and y(t) in the rational semicircle parameterization. */
328
328
  static readonly W: Float64Array;
329
- /** Standard Basis coefficients for cosine*weight numerator */
329
+ /** Standard Basis coefficients for C(t) * W(t). */
330
330
  static readonly CW: Float64Array;
331
- /** Standard Basis coefficients for sine*weight numerator */
331
+ /** Standard Basis coefficients for S(t) * W(t). */
332
332
  static readonly SW: Float64Array;
333
- /** Standard Basis coefficients for sine*cosine numerator */
333
+ /** Standard Basis coefficients for S(t) * C(t). */
334
334
  static readonly SC: Float64Array;
335
- /** Standard Basis coefficients for sine^2 numerator */
335
+ /** Standard Basis coefficients for S(t) * S(t). */
336
336
  static readonly SS: Float64Array;
337
- /** Standard Basis coefficients for cosine^2 numerator */
337
+ /** Standard Basis coefficients for C(t) * C(t). */
338
338
  static readonly CC: Float64Array;
339
- /** Standard Basis coefficients for weight^2 */
339
+ /** Standard Basis coefficients for W(t) * W(t). */
340
340
  static readonly WW: Float64Array;
341
- /** Standard Basis coefficients for (Math.Cos^2 - sine^2) numerator */
341
+ /** Standard Basis coefficients for C(t) * C(t) - S(t) * S(t). */
342
342
  static readonly CCminusSS: Float64Array;
343
343
  /**
344
- * Solve a polynomial created from trigonometric condition using
345
- * Trig.S, Trig.C, Trig.W. Solution logic includes inferring angular roots
346
- * corresponding zero leading coefficients (roots at infinity)
347
- * @param coff Coefficients
348
- * @param nominalDegree degree of the polynomial under most complex
349
- * root case. If there are any zero coefficients up to this degree, a single root
350
- * "at infinity" is recorded as its corresponding angular parameter at negative pi/2
351
- * @param referenceCoefficient A number which represents the size of coefficients
352
- * at various stages of computation. A small fraction of this will be used as a zero
353
- * tolerance
354
- * @param radians Roots are placed here
344
+ * Solve a polynomial created from trigonometric condition using Trig.S, Trig.C, Trig.W.
345
+ * * Polynomial is of degree 4:
346
+ * `p(t) = coff[0] + coff[1] * t + coff[2] * t^2 + coff[3] * t^3 + coff[4] * t^4`
347
+ * * Solution logic includes inferring angular roots corresponding zero leading coefficients
348
+ * (roots at infinity).
349
+ * @param coff coefficients.
350
+ * @param nominalDegree degree of the polynomial under most complex root case. If there are
351
+ * any zero coefficients up to this degree, a single root "at infinity" is recorded as its
352
+ * corresponding angular parameter at negative pi/2.
353
+ * @param referenceCoefficient a number which represents the size of coefficients at various
354
+ * stages of computation. A small fraction of this will be used as a zero tolerance
355
+ * @param radians roots are placed here.
355
356
  * @return false if equation is all zeros. This usually means any angle is a solution.
356
357
  */
357
358
  static solveAngles(coff: Float64Array, nominalDegree: number, referenceCoefficient: number, radians: number[]): boolean;
358
359
  private static readonly _coefficientRelTol;
359
360
  /**
360
361
  * Compute intersections of unit circle `x^2 + y^2 = 1` with general quadric
361
- * `axx * x^2 + axy * x * y + ayy * y^2 + ax * x + ay * y + a1 = 0`
362
+ * `axx * x^2 + axy * x * y + ayy * y^2 + ax * x + ay * y + a = 0`
362
363
  * Solutions are returned as angles. Sine and Cosine of the angles are the x, y results.
363
- * @param axx Coefficient of x^2
364
- * @param axy Coefficient of xy
365
- * @param ayy Coefficient of y^2
366
- * @param ax Coefficient of x
367
- * @param ay Coefficient of y
368
- * @param a1 Constant coefficient
369
- * @param radians solution angles
364
+ * @param axx coefficient of x^2
365
+ * @param axy coefficient of xy
366
+ * @param ayy coefficient of y^2
367
+ * @param ax coefficient of x
368
+ * @param ay coefficient of y
369
+ * @param a constant coefficient
370
+ * @param radians solution angles
370
371
  */
371
- static solveUnitCircleImplicitQuadricIntersection(axx: number, axy: number, ayy: number, ax: number, ay: number, a1: number, radians: number[]): boolean;
372
+ static solveUnitCircleImplicitQuadricIntersection(axx: number, axy: number, ayy: number, ax: number, ay: number, a: number, radians: number[]): boolean;
372
373
  /**
373
374
  * Compute intersections of unit circle x^2 + y 2 = 1 with the ellipse
374
375
  * (x,y) = (cx + ux Math.Cos + vx sin, cy + uy Math.Cos + vy sin)
@@ -384,7 +385,7 @@ export declare class TrigPolynomial {
384
385
  */
385
386
  static solveUnitCircleEllipseIntersection(cx: number, cy: number, ux: number, uy: number, vx: number, vy: number, ellipseRadians: number[], circleRadians: number[]): boolean;
386
387
  /**
387
- * Compute intersections of unit circle `x^2 + y^2 = w^2` with the ellipse
388
+ * Compute intersections of unit circle `x^2 + y^2 = w^2` (in homogeneous coordinates) with the ellipse
388
389
  * `F(t) = (cx + ux cos(t) + vx sin(t), cy + uy cos(t) + vy sin(t)) / (cw + uw cos(t) + vw sin(t))`.
389
390
  * @param cx center x
390
391
  * @param cy center y
@@ -1 +1 @@
1
- {"version":3,"file":"Polynomials.d.ts","sourceRoot":"","sources":["../../../src/numerics/Polynomials.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Polynomials.d.ts","sourceRoot":"","sources":["../../../src/numerics/Polynomials.ts"],"names":[],"mappings":"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"}
@@ -820,7 +820,7 @@ export class AnalyticRoots {
820
820
  // EDL April 5, 2020 replace classic GraphicsGems solver by RWDNickalls.
821
821
  // Don't know if improveRoots is needed.
822
822
  // Breaks in AnalyticRoots.test.ts checkQuartic suggest it indeed converts many e-16 errors to zero.
823
- // e-13 cases are unaffected
823
+ // e-13 cases are unaffected
824
824
  this.improveRoots(c, 3, results, false);
825
825
  }
826
826
  else {
@@ -829,49 +829,46 @@ export class AnalyticRoots {
829
829
  // this.appendCubicRootsUnsorted(c, results);
830
830
  results.sort();
831
831
  }
832
- /** Compute roots of quartic 'c[0] + c[1] * x + c[2] * x^2 + c[3] * x^3 + c[4] * x^4 */
832
+ /** Compute roots of quartic `c[0] + c[1] * x + c[2] * x^2 + c[3] * x^3 + c[4] * x^4` */
833
833
  static appendQuarticRoots(c, results) {
834
- const coffs = new Float64Array(4); // at various times .. coefficients of quadratic an cubic intermediates.
834
+ // for details, see core\geometry\internaldocs\quarticRoots.md
835
+ const coffs = new Float64Array(4);
835
836
  let u;
836
837
  let v;
837
- // normal form: x^4 + Ax^3 + Bx^2 + Cx + D = 0
838
838
  const coffScale = new Float64Array(1);
839
839
  if (!this.safeDivide(coffScale, 1.0, c[4], 0.0, 0)) {
840
840
  this.appendCubicRoots(c, results);
841
841
  return;
842
842
  }
843
+ // normal form: x^4 + Ax^3 + Bx^2 + Cx + D = 0
843
844
  const A = c[3] * coffScale[0];
844
845
  const B = c[2] * coffScale[0];
845
846
  const C = c[1] * coffScale[0];
846
847
  const D = c[0] * coffScale[0];
847
848
  const origin = -0.25 * A;
848
- /* substitute x = y - A/4 to eliminate cubic term:
849
- x^4 + px^2 + qx + r = 0 */
849
+ // substitute x = y - A/4 to eliminate cubic term: y^4 + py^2 + qy + r = 0
850
850
  const sq_A = A * A;
851
- const p = -3.0 / 8 * sq_A + B;
851
+ const p = -0.375 * sq_A + B;
852
852
  const q = 0.125 * sq_A * A - 0.5 * A * B + C;
853
- const r = -3.0 / 256 * sq_A * sq_A + 1.0 / 16 * sq_A * B - 1.0 / 4 * A * C + D;
854
- const tempStack = new GrowableFloat64Array();
855
- if (this.isZero(r)) {
856
- // no absolute term: y(y^3 + py + q) = 0
853
+ const r = -0.01171875 * sq_A * sq_A + 0.0625 * sq_A * B - 0.25 * A * C + D;
854
+ const cubicSolutions = new GrowableFloat64Array();
855
+ if (this.isZero(r)) { // no absolute term: y(y^3 + py + q) = 0
857
856
  coffs[0] = q;
858
857
  coffs[1] = p;
859
858
  coffs[2] = 0;
860
859
  coffs[3] = 1;
861
860
  this.appendCubicRoots(coffs, results);
862
- results.push(0); // APPLY ORIGIN ....
863
- this.addConstant(origin, results);
861
+ results.push(0);
862
+ this.addConstant(origin, results); // apply origin
864
863
  return;
865
864
  }
866
- else {
867
- // Solve the resolvent cubic
868
- coffs[0] = 1.0 / 2 * r * p - 1.0 / 8 * q * q;
865
+ else { // solve the resolvent cubic
866
+ coffs[0] = 0.5 * r * p - 0.125 * q * q;
869
867
  coffs[1] = -r;
870
- coffs[2] = -1.0 / 2 * p;
868
+ coffs[2] = -0.5 * p;
871
869
  coffs[3] = 1;
872
- this.appendCubicRoots(coffs, tempStack);
873
- const z = this.mostDistantFromMean(tempStack);
874
- // ... to build two quadric equations
870
+ this.appendCubicRoots(coffs, cubicSolutions);
871
+ const z = this.mostDistantFromMean(cubicSolutions);
875
872
  u = z * z - r;
876
873
  v = 2 * z - p;
877
874
  if (this.isSmallRatio(u, r)) {
@@ -890,11 +887,9 @@ export class AnalyticRoots {
890
887
  v = Math.sqrt(v);
891
888
  }
892
889
  else {
893
- for (let i = 0; i < tempStack.length; i++) {
894
- results.push(tempStack.atUncheckedIndex(i));
895
- }
896
890
  return;
897
891
  }
892
+ // the two quadratic equations
898
893
  coffs[0] = z - u;
899
894
  coffs[1] = ((q < 0) ? (-v) : (v));
900
895
  coffs[2] = 1;
@@ -904,8 +899,7 @@ export class AnalyticRoots {
904
899
  coffs[2] = 1;
905
900
  this.appendQuadraticRoots(coffs, results);
906
901
  }
907
- // substitute
908
- this.addConstant(origin, results);
902
+ this.addConstant(origin, results); // apply origin
909
903
  results.sort();
910
904
  this.improveRoots(c, 4, results, true);
911
905
  return;
@@ -1009,19 +1003,17 @@ export class PowerPolynomial {
1009
1003
  return this.degreeKnownEvaluate(coff, degree, x);
1010
1004
  }
1011
1005
  /**
1012
- * * Accumulate Q*scale into P. Both are treated as full degree.
1013
- * * (Expect Address exceptions if P is smaller than Q)
1014
- * * Returns degree of result as determined by comparing trailing coefficients to zero
1006
+ * Accumulate `coffQ*scaleQ` into `coffP`.
1007
+ * * The length of `coffP` must be at least length of `coffQ`.
1008
+ * * Returns degree of result as determined by comparing trailing coefficients to zero.
1015
1009
  */
1016
1010
  static accumulate(coffP, coffQ, scaleQ) {
1017
1011
  let degreeP = coffP.length - 1;
1018
1012
  const degreeQ = coffQ.length - 1;
1019
- for (let i = 0; i <= degreeQ; i++) {
1013
+ for (let i = 0; i <= degreeQ; i++)
1020
1014
  coffP[i] += scaleQ * coffQ[i];
1021
- }
1022
- while (degreeP >= 0 && coffP[degreeP] === 0.0) {
1015
+ while (degreeP >= 0 && coffP[degreeP] === 0.0)
1023
1016
  degreeP--;
1024
- }
1025
1017
  return degreeP;
1026
1018
  }
1027
1019
  /** Zero all coefficients */
@@ -1037,17 +1029,18 @@ export class PowerPolynomial {
1037
1029
  */
1038
1030
  export class TrigPolynomial {
1039
1031
  /**
1040
- * Solve a polynomial created from trigonometric condition using
1041
- * Trig.S, Trig.C, Trig.W. Solution logic includes inferring angular roots
1042
- * corresponding zero leading coefficients (roots at infinity)
1043
- * @param coff Coefficients
1044
- * @param nominalDegree degree of the polynomial under most complex
1045
- * root case. If there are any zero coefficients up to this degree, a single root
1046
- * "at infinity" is recorded as its corresponding angular parameter at negative pi/2
1047
- * @param referenceCoefficient A number which represents the size of coefficients
1048
- * at various stages of computation. A small fraction of this will be used as a zero
1049
- * tolerance
1050
- * @param radians Roots are placed here
1032
+ * Solve a polynomial created from trigonometric condition using Trig.S, Trig.C, Trig.W.
1033
+ * * Polynomial is of degree 4:
1034
+ * `p(t) = coff[0] + coff[1] * t + coff[2] * t^2 + coff[3] * t^3 + coff[4] * t^4`
1035
+ * * Solution logic includes inferring angular roots corresponding zero leading coefficients
1036
+ * (roots at infinity).
1037
+ * @param coff coefficients.
1038
+ * @param nominalDegree degree of the polynomial under most complex root case. If there are
1039
+ * any zero coefficients up to this degree, a single root "at infinity" is recorded as its
1040
+ * corresponding angular parameter at negative pi/2.
1041
+ * @param referenceCoefficient a number which represents the size of coefficients at various
1042
+ * stages of computation. A small fraction of this will be used as a zero tolerance
1043
+ * @param radians roots are placed here.
1051
1044
  * @return false if equation is all zeros. This usually means any angle is a solution.
1052
1045
  */
1053
1046
  static solveAngles(coff, nominalDegree, referenceCoefficient, radians) {
@@ -1057,31 +1050,23 @@ export class TrigPolynomial {
1057
1050
  const relTol = this._smallAngle;
1058
1051
  for (let i = 0; i <= nominalDegree; i++) {
1059
1052
  a = Math.abs(coff[i]);
1060
- if (a > maxCoff) {
1053
+ if (a > maxCoff)
1061
1054
  maxCoff = a;
1062
- }
1063
1055
  }
1064
1056
  const coffTol = relTol * maxCoff;
1065
1057
  let degree = nominalDegree;
1066
- while (degree > 0 && (Math.abs(coff[degree]) <= coffTol)) {
1058
+ while (degree > 0 && (Math.abs(coff[degree]) <= coffTol))
1067
1059
  degree--;
1068
- }
1069
- // let status = false;
1070
1060
  const roots = new GrowableFloat64Array();
1071
1061
  if (degree === -1) {
1072
- // Umm. Dunno. Nothing there.
1073
- // status = false;
1062
+ // do nothing
1074
1063
  }
1075
1064
  else {
1076
- // status = true;
1077
1065
  if (degree === 0) {
1078
- // p(t) is a nonzero constant
1079
- // No roots, but not degenerate.
1080
- // status = true;
1066
+ // p(t) is a nonzero constant; no roots but not degenerate.
1081
1067
  }
1082
1068
  else if (degree === 1) {
1083
- // p(t) = coff[1] * t + coff[0]
1084
- roots.push(-coff[0] / coff[1]);
1069
+ roots.push(-coff[0] / coff[1]); // p(t) = coff[0] + coff[1] * t
1085
1070
  }
1086
1071
  else if (degree === 2) {
1087
1072
  AnalyticRoots.appendQuadraticRoots(coff, roots);
@@ -1093,70 +1078,67 @@ export class TrigPolynomial {
1093
1078
  AnalyticRoots.appendQuarticRoots(coff, roots);
1094
1079
  }
1095
1080
  else {
1096
- // TODO: WILL WORK WITH BEZIER SOLVER
1097
- // status = false;
1081
+ // TODO: WORK WITH BEZIER SOLVER
1098
1082
  }
1099
1083
  if (roots.length > 0) {
1100
- // Each solution t represents an angle with
1101
- // Math.Cos(theta)=C(t)/W(t), ,sin(theta)=S(t)/W(t)
1102
- // Division by W has no effect on Atan2 calculations, so we just compute S(t),C(t)
1084
+ // Each solution t represents an angle with Math.Cos(theta) = C(t)/W(t) and sin(theta) = S(t)/W(t)
1085
+ // Division by W has no effect on atan2 calculations, so we just compute S(t),C(t)
1103
1086
  for (let i = 0; i < roots.length; i++) {
1104
1087
  const ss = PowerPolynomial.evaluate(this.S, roots.atUncheckedIndex(i));
1105
1088
  const cc = PowerPolynomial.evaluate(this.C, roots.atUncheckedIndex(i));
1106
1089
  radians.push(Math.atan2(ss, cc));
1107
1090
  }
1108
- // Each leading zero at the front of the coefficients corresponds to a root at -PI/2.
1109
- // Only make one entry....
1110
- // for (int i = degree; i < nominalDegree; i++)
1111
- if (degree < nominalDegree) {
1091
+ // each leading zero at the front of the coefficient array corresponds to a root at -PI/2.
1092
+ // only make one entry because we don't report multiplicity.
1093
+ if (degree < nominalDegree)
1112
1094
  radians.push(-0.5 * Math.PI);
1113
- }
1114
1095
  }
1115
1096
  }
1116
1097
  return radians.length > 0;
1117
1098
  }
1118
1099
  /**
1119
1100
  * Compute intersections of unit circle `x^2 + y^2 = 1` with general quadric
1120
- * `axx * x^2 + axy * x * y + ayy * y^2 + ax * x + ay * y + a1 = 0`
1101
+ * `axx * x^2 + axy * x * y + ayy * y^2 + ax * x + ay * y + a = 0`
1121
1102
  * Solutions are returned as angles. Sine and Cosine of the angles are the x, y results.
1122
- * @param axx Coefficient of x^2
1123
- * @param axy Coefficient of xy
1124
- * @param ayy Coefficient of y^2
1125
- * @param ax Coefficient of x
1126
- * @param ay Coefficient of y
1127
- * @param a1 Constant coefficient
1128
- * @param radians solution angles
1103
+ * @param axx coefficient of x^2
1104
+ * @param axy coefficient of xy
1105
+ * @param ayy coefficient of y^2
1106
+ * @param ax coefficient of x
1107
+ * @param ay coefficient of y
1108
+ * @param a constant coefficient
1109
+ * @param radians solution angles
1129
1110
  */
1130
- static solveUnitCircleImplicitQuadricIntersection(axx, axy, ayy, ax, ay, a1, radians) {
1131
- const Coffs = new Float64Array(5);
1132
- PowerPolynomial.zero(Coffs);
1111
+ static solveUnitCircleImplicitQuadricIntersection(axx, axy, ayy, ax, ay, a, radians) {
1112
+ const coffs = new Float64Array(5);
1113
+ PowerPolynomial.zero(coffs);
1133
1114
  let degree;
1134
- if (Geometry.hypotenuseXYZ(axx, axy, ayy) > TrigPolynomial._coefficientRelTol * Geometry.hypotenuseXYZ(ax, ay, a1)) {
1135
- PowerPolynomial.accumulate(Coffs, this.CW, ax);
1136
- PowerPolynomial.accumulate(Coffs, this.SW, ay);
1137
- PowerPolynomial.accumulate(Coffs, this.WW, a1);
1138
- PowerPolynomial.accumulate(Coffs, this.SS, ayy);
1139
- PowerPolynomial.accumulate(Coffs, this.CC, axx);
1140
- PowerPolynomial.accumulate(Coffs, this.SC, axy);
1115
+ // see core\geometry\internaldocs\unitCircleEllipseIntersection.md for derivation of these coefficients
1116
+ if (Geometry.hypotenuseXYZ(axx, axy, ayy) > TrigPolynomial._coefficientRelTol * Geometry.hypotenuseXYZ(ax, ay, a)) {
1117
+ PowerPolynomial.accumulate(coffs, this.CW, ax);
1118
+ PowerPolynomial.accumulate(coffs, this.SW, ay);
1119
+ PowerPolynomial.accumulate(coffs, this.WW, a);
1120
+ PowerPolynomial.accumulate(coffs, this.SS, ayy);
1121
+ PowerPolynomial.accumulate(coffs, this.CC, axx);
1122
+ PowerPolynomial.accumulate(coffs, this.SC, axy);
1141
1123
  degree = 4;
1142
1124
  }
1143
1125
  else {
1144
- PowerPolynomial.accumulate(Coffs, this.C, ax);
1145
- PowerPolynomial.accumulate(Coffs, this.S, ay);
1146
- PowerPolynomial.accumulate(Coffs, this.W, a1);
1126
+ PowerPolynomial.accumulate(coffs, this.C, ax);
1127
+ PowerPolynomial.accumulate(coffs, this.S, ay);
1128
+ PowerPolynomial.accumulate(coffs, this.W, a);
1147
1129
  degree = 2;
1148
1130
  }
1149
- let maxCoff = 0.0;
1150
- maxCoff = Math.max(maxCoff, Math.abs(axx), Math.abs(ayy), Math.abs(axy), Math.abs(ax), Math.abs(ay), Math.abs(a1));
1151
- const b = this.solveAngles(Coffs, degree, maxCoff, radians);
1131
+ const maxCoff = Math.max(Math.abs(axx), Math.abs(ayy), Math.abs(axy), Math.abs(ax), Math.abs(ay), Math.abs(a));
1132
+ const b = this.solveAngles(coffs, degree, maxCoff, radians);
1152
1133
  /*
1153
1134
  for (const theta of angles) {
1154
1135
  const c = theta.cos();
1155
1136
  const s = theta.sin();
1156
1137
  GeometryCoreTestIO.consoleLog({
1157
1138
  angle: theta, co: c, si: s,
1158
- f: axx * c * c + axy * c * s + ayy * s * s + ax * c + ay * s + a1});
1159
- } */
1139
+ f: axx * c * c + axy * c * s + ayy * s * s + ax * c + ay * s + a,
1140
+ });
1141
+ } */
1160
1142
  return b;
1161
1143
  }
1162
1144
  /**
@@ -1174,6 +1156,7 @@ export class TrigPolynomial {
1174
1156
  */
1175
1157
  static solveUnitCircleEllipseIntersection(cx, cy, ux, uy, vx, vy, ellipseRadians, circleRadians) {
1176
1158
  circleRadians.length = 0;
1159
+ // see core\geometry\internaldocs\unitCircleEllipseIntersection.md for derivation of these coefficients:
1177
1160
  const acc = ux * ux + uy * uy;
1178
1161
  const acs = 2.0 * (ux * vx + uy * vy);
1179
1162
  const ass = vx * vx + vy * vy;
@@ -1191,7 +1174,7 @@ export class TrigPolynomial {
1191
1174
  return status;
1192
1175
  }
1193
1176
  /**
1194
- * Compute intersections of unit circle `x^2 + y^2 = w^2` with the ellipse
1177
+ * Compute intersections of unit circle `x^2 + y^2 = w^2` (in homogeneous coordinates) with the ellipse
1195
1178
  * `F(t) = (cx + ux cos(t) + vx sin(t), cy + uy cos(t) + vy sin(t)) / (cw + uw cos(t) + vw sin(t))`.
1196
1179
  * @param cx center x
1197
1180
  * @param cy center y
@@ -1207,13 +1190,14 @@ export class TrigPolynomial {
1207
1190
  */
1208
1191
  static solveUnitCircleHomogeneousEllipseIntersection(cx, cy, cw, ux, uy, uw, vx, vy, vw, ellipseRadians, circleRadians) {
1209
1192
  circleRadians.length = 0;
1193
+ // see core\geometry\internaldocs\unitCircleEllipseIntersection.md for derivation of these coefficients:
1210
1194
  const acc = ux * ux + uy * uy - uw * uw;
1211
1195
  const acs = 2.0 * (ux * vx + uy * vy - uw * vw);
1212
1196
  const ass = vx * vx + vy * vy - vw * vw;
1213
1197
  const ac = 2.0 * (ux * cx + uy * cy - uw * cw);
1214
- const asi = 2.0 * (vx * cx + vy * cy - vw * cw);
1198
+ const as = 2.0 * (vx * cx + vy * cy - vw * cw);
1215
1199
  const a = cx * cx + cy * cy - cw * cw;
1216
- const status = this.solveUnitCircleImplicitQuadricIntersection(acc, acs, ass, ac, asi, a, ellipseRadians);
1200
+ const status = this.solveUnitCircleImplicitQuadricIntersection(acc, acs, ass, ac, as, a, ellipseRadians);
1217
1201
  for (const radians of ellipseRadians) {
1218
1202
  const cc = Math.cos(radians);
1219
1203
  const ss = Math.sin(radians);
@@ -1226,25 +1210,26 @@ export class TrigPolynomial {
1226
1210
  }
1227
1211
  // tolerance for small angle decision.
1228
1212
  TrigPolynomial._smallAngle = 1.0e-11;
1229
- /** Standard Basis coefficients for rational sine numerator. */
1213
+ // see core\geometry\internaldocs\unitCircleEllipseIntersection.md for derivation of these coefficients.
1214
+ /** Standard Basis coefficients for the numerator of the y-coordinate y(t) = S(t)/W(t) in the rational semicircle parameterization. */
1230
1215
  TrigPolynomial.S = Float64Array.from([0.0, 2.0, -2.0]);
1231
- /** Standard Basis coefficients for rational cosine numerator. */
1216
+ /** Standard Basis coefficients for the numerator of the x-coordinate x(t) = C(t)/W(t) in the rational semicircle parameterization. */
1232
1217
  TrigPolynomial.C = Float64Array.from([1.0, -2.0]);
1233
- /** Standard Basis coefficients for rational denominator. */
1218
+ /** Standard Basis coefficients for the denominator of x(t) and y(t) in the rational semicircle parameterization. */
1234
1219
  TrigPolynomial.W = Float64Array.from([1.0, -2.0, 2.0]);
1235
- /** Standard Basis coefficients for cosine*weight numerator */
1220
+ /** Standard Basis coefficients for C(t) * W(t). */
1236
1221
  TrigPolynomial.CW = Float64Array.from([1.0, -4.0, 6.0, -4.0]);
1237
- /** Standard Basis coefficients for sine*weight numerator */
1222
+ /** Standard Basis coefficients for S(t) * W(t). */
1238
1223
  TrigPolynomial.SW = Float64Array.from([0.0, 2.0, -6.0, 8.0, -4.0]);
1239
- /** Standard Basis coefficients for sine*cosine numerator */
1224
+ /** Standard Basis coefficients for S(t) * C(t). */
1240
1225
  TrigPolynomial.SC = Float64Array.from([0.0, 2.0, -6.0, 4.0]);
1241
- /** Standard Basis coefficients for sine^2 numerator */
1226
+ /** Standard Basis coefficients for S(t) * S(t). */
1242
1227
  TrigPolynomial.SS = Float64Array.from([0.0, 0.0, 4.0, -8.0, 4.0]);
1243
- /** Standard Basis coefficients for cosine^2 numerator */
1228
+ /** Standard Basis coefficients for C(t) * C(t). */
1244
1229
  TrigPolynomial.CC = Float64Array.from([1.0, -4.0, 4.0]);
1245
- /** Standard Basis coefficients for weight^2 */
1230
+ /** Standard Basis coefficients for W(t) * W(t). */
1246
1231
  TrigPolynomial.WW = Float64Array.from([1.0, -4.0, 8.0, -8.0, 4.0]);
1247
- /** Standard Basis coefficients for (Math.Cos^2 - sine^2) numerator */
1232
+ /** Standard Basis coefficients for C(t) * C(t) - S(t) * S(t). */
1248
1233
  TrigPolynomial.CCminusSS = Float64Array.from([1.0, -4.0, 0.0, 8.0, -4.0]);
1249
1234
  TrigPolynomial._coefficientRelTol = 1.0e-12;
1250
1235
  /**