@itwin/core-geometry 5.3.0-dev.16 → 5.3.0-dev.18

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 (536) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/lib/cjs/Constant.js.map +1 -1
  3. package/lib/cjs/Geometry.js.map +1 -1
  4. package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
  5. package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
  6. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  7. package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
  8. package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
  9. package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
  10. package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
  11. package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
  12. package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
  13. package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
  14. package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
  15. package/lib/cjs/bspline/KnotVector.js.map +1 -1
  16. package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -1
  17. package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
  18. package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -1
  19. package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
  20. package/lib/cjs/clipping/ClipPlane.js.map +1 -1
  21. package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
  22. package/lib/cjs/clipping/ClipUtils.js.map +1 -1
  23. package/lib/cjs/clipping/ClipVector.js.map +1 -1
  24. package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
  25. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  26. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  27. package/lib/cjs/core-geometry.js.map +1 -1
  28. package/lib/cjs/curve/Arc3d.d.ts +15 -1
  29. package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
  30. package/lib/cjs/curve/Arc3d.js +31 -2
  31. package/lib/cjs/curve/Arc3d.js.map +1 -1
  32. package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
  33. package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
  34. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  35. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  36. package/lib/cjs/curve/CurveCurve.js.map +1 -1
  37. package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
  38. package/lib/cjs/curve/CurveFactory.js.map +1 -1
  39. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  40. package/lib/cjs/curve/CurveOps.js.map +1 -1
  41. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  42. package/lib/cjs/curve/CurveProcessor.js.map +1 -1
  43. package/lib/cjs/curve/CurveTypes.js.map +1 -1
  44. package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
  45. package/lib/cjs/curve/GeometryQuery.js.map +1 -1
  46. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  47. package/lib/cjs/curve/LineString3d.js.map +1 -1
  48. package/lib/cjs/curve/Loop.js.map +1 -1
  49. package/lib/cjs/curve/OffsetOptions.js.map +1 -1
  50. package/lib/cjs/curve/ParityRegion.js.map +1 -1
  51. package/lib/cjs/curve/Path.js.map +1 -1
  52. package/lib/cjs/curve/PointString3d.js.map +1 -1
  53. package/lib/cjs/curve/ProxyCurve.js.map +1 -1
  54. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  55. package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
  56. package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
  57. package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
  58. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  59. package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
  60. package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
  61. package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
  62. package/lib/cjs/curve/RegionOps.js.map +1 -1
  63. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  64. package/lib/cjs/curve/StrokeOptions.js.map +1 -1
  65. package/lib/cjs/curve/UnionRegion.js.map +1 -1
  66. package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
  67. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  68. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  69. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  70. package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  71. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  72. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  73. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  74. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  75. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  76. package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
  77. package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  78. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  79. package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
  80. package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
  81. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  82. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  83. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  84. package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
  85. package/lib/cjs/curve/internalContexts/TransferWithSplitArcs.js.map +1 -1
  86. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  87. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.d.ts +10 -13
  88. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.d.ts.map +1 -1
  89. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js +23 -22
  90. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  91. package/lib/cjs/curve/spiral/ClothoidSeries.d.ts +5 -5
  92. package/lib/cjs/curve/spiral/ClothoidSeries.d.ts.map +1 -1
  93. package/lib/cjs/curve/spiral/ClothoidSeries.js +28 -16
  94. package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
  95. package/lib/cjs/curve/spiral/CubicEvaluator.d.ts +7 -6
  96. package/lib/cjs/curve/spiral/CubicEvaluator.d.ts.map +1 -1
  97. package/lib/cjs/curve/spiral/CubicEvaluator.js +29 -14
  98. package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
  99. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.d.ts +30 -40
  100. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.d.ts.map +1 -1
  101. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js +43 -49
  102. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  103. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.d.ts +2 -2
  104. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.d.ts.map +1 -1
  105. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js +17 -7
  106. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  107. package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts +103 -95
  108. package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts.map +1 -1
  109. package/lib/cjs/curve/spiral/DirectSpiral3d.js +132 -106
  110. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
  111. package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts +70 -52
  112. package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -1
  113. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js +97 -65
  114. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  115. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.d.ts +7 -11
  116. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.d.ts.map +1 -1
  117. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js +10 -12
  118. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  119. package/lib/cjs/curve/spiral/NormalizedTransition.d.ts +29 -24
  120. package/lib/cjs/curve/spiral/NormalizedTransition.d.ts.map +1 -1
  121. package/lib/cjs/curve/spiral/NormalizedTransition.js +53 -35
  122. package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
  123. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.d.ts +12 -17
  124. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.d.ts.map +1 -1
  125. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js +20 -23
  126. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  127. package/lib/cjs/curve/spiral/TransitionConditionalProperties.d.ts +25 -23
  128. package/lib/cjs/curve/spiral/TransitionConditionalProperties.d.ts.map +1 -1
  129. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js +34 -29
  130. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  131. package/lib/cjs/curve/spiral/TransitionSpiral3d.d.ts +43 -33
  132. package/lib/cjs/curve/spiral/TransitionSpiral3d.d.ts.map +1 -1
  133. package/lib/cjs/curve/spiral/TransitionSpiral3d.js +56 -38
  134. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
  135. package/lib/cjs/curve/spiral/XYCurveEvaluator.d.ts +27 -21
  136. package/lib/cjs/curve/spiral/XYCurveEvaluator.d.ts.map +1 -1
  137. package/lib/cjs/curve/spiral/XYCurveEvaluator.js +23 -18
  138. package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
  139. package/lib/cjs/geometry3d/Angle.js.map +1 -1
  140. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
  141. package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
  142. package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
  143. package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
  144. package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
  145. package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
  146. package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
  147. package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
  148. package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
  149. package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
  150. package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
  151. package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
  152. package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
  153. package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
  154. package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
  155. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  156. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  157. package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
  158. package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
  159. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  160. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  161. package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
  162. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  163. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  164. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  165. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  166. package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
  167. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  168. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  169. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
  170. package/lib/cjs/geometry3d/Range.js.map +1 -1
  171. package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
  172. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  173. package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
  174. package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
  175. package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
  176. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  177. package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
  178. package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
  179. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  180. package/lib/cjs/geometry4d/Map4d.js.map +1 -1
  181. package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
  182. package/lib/cjs/geometry4d/MomentData.js.map +1 -1
  183. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  184. package/lib/cjs/geometry4d/Point4d.js.map +1 -1
  185. package/lib/cjs/numerics/BandedSystem.js.map +1 -1
  186. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
  187. package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
  188. package/lib/cjs/numerics/Complex.js.map +1 -1
  189. package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
  190. package/lib/cjs/numerics/Newton.js.map +1 -1
  191. package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
  192. package/lib/cjs/numerics/PolarData.js.map +1 -1
  193. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  194. package/lib/cjs/numerics/Quadrature.js.map +1 -1
  195. package/lib/cjs/numerics/Range1dArray.js.map +1 -1
  196. package/lib/cjs/numerics/SmallSystem.js.map +1 -1
  197. package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
  198. package/lib/cjs/numerics/UnionFind.js.map +1 -1
  199. package/lib/cjs/numerics/UsageSums.js.map +1 -1
  200. package/lib/cjs/polyface/AuxData.js.map +1 -1
  201. package/lib/cjs/polyface/BoxTopology.js.map +1 -1
  202. package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
  203. package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
  204. package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
  205. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  206. package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
  207. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  208. package/lib/cjs/polyface/IndexedPolyfaceWalker.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.js.map +1 -1
  212. package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
  213. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  214. package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
  215. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  216. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  217. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  218. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  219. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  220. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  221. package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
  222. package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
  223. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  224. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  225. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  226. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  227. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  228. package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  229. package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
  230. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  231. package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
  232. package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
  233. package/lib/cjs/serialization/BGFBReader.js.map +1 -1
  234. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  235. package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  236. package/lib/cjs/serialization/DeepCompare.js.map +1 -1
  237. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  238. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  239. package/lib/cjs/serialization/SerializationHelpers.js.map +1 -1
  240. package/lib/cjs/solid/Box.js.map +1 -1
  241. package/lib/cjs/solid/Cone.js.map +1 -1
  242. package/lib/cjs/solid/LinearSweep.js.map +1 -1
  243. package/lib/cjs/solid/RotationalSweep.js.map +1 -1
  244. package/lib/cjs/solid/RuledSweep.js.map +1 -1
  245. package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
  246. package/lib/cjs/solid/Sphere.js.map +1 -1
  247. package/lib/cjs/solid/SweepContour.js.map +1 -1
  248. package/lib/cjs/solid/TorusPipe.js.map +1 -1
  249. package/lib/cjs/topology/ChainMerge.js.map +1 -1
  250. package/lib/cjs/topology/Graph.js.map +1 -1
  251. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  252. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  253. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  254. package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
  255. package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
  256. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  257. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  258. package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
  259. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
  260. package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
  261. package/lib/cjs/topology/MaskManager.js.map +1 -1
  262. package/lib/cjs/topology/Merging.js.map +1 -1
  263. package/lib/cjs/topology/RegularizeFace.js.map +1 -1
  264. package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
  265. package/lib/cjs/topology/SpaceTriangulation.js.map +1 -1
  266. package/lib/cjs/topology/Triangulation.js.map +1 -1
  267. package/lib/cjs/topology/Voronoi.js.map +1 -1
  268. package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
  269. package/lib/esm/Constant.js.map +1 -1
  270. package/lib/esm/Geometry.js.map +1 -1
  271. package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
  272. package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
  273. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  274. package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
  275. package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
  276. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  277. package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
  278. package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
  279. package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
  280. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  281. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  282. package/lib/esm/bspline/KnotVector.js.map +1 -1
  283. package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
  284. package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
  285. package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
  286. package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
  287. package/lib/esm/clipping/ClipPlane.js.map +1 -1
  288. package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
  289. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  290. package/lib/esm/clipping/ClipVector.js.map +1 -1
  291. package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
  292. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  293. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  294. package/lib/esm/core-geometry.js.map +1 -1
  295. package/lib/esm/curve/Arc3d.d.ts +15 -1
  296. package/lib/esm/curve/Arc3d.d.ts.map +1 -1
  297. package/lib/esm/curve/Arc3d.js +31 -2
  298. package/lib/esm/curve/Arc3d.js.map +1 -1
  299. package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
  300. package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
  301. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  302. package/lib/esm/curve/CurveCollection.js.map +1 -1
  303. package/lib/esm/curve/CurveCurve.js.map +1 -1
  304. package/lib/esm/curve/CurveExtendMode.js.map +1 -1
  305. package/lib/esm/curve/CurveFactory.js.map +1 -1
  306. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  307. package/lib/esm/curve/CurveOps.js.map +1 -1
  308. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  309. package/lib/esm/curve/CurveProcessor.js.map +1 -1
  310. package/lib/esm/curve/CurveTypes.js.map +1 -1
  311. package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
  312. package/lib/esm/curve/GeometryQuery.js.map +1 -1
  313. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  314. package/lib/esm/curve/LineString3d.js.map +1 -1
  315. package/lib/esm/curve/Loop.js.map +1 -1
  316. package/lib/esm/curve/OffsetOptions.js.map +1 -1
  317. package/lib/esm/curve/ParityRegion.js.map +1 -1
  318. package/lib/esm/curve/Path.js.map +1 -1
  319. package/lib/esm/curve/PointString3d.js.map +1 -1
  320. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  321. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  322. package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
  323. package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
  324. package/lib/esm/curve/Query/InOutTests.js.map +1 -1
  325. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  326. package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
  327. package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
  328. package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
  329. package/lib/esm/curve/RegionOps.js.map +1 -1
  330. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  331. package/lib/esm/curve/StrokeOptions.js.map +1 -1
  332. package/lib/esm/curve/UnionRegion.js.map +1 -1
  333. package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
  334. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  335. package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  336. package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  337. package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  338. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  339. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  340. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  341. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  342. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  343. package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
  344. package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  345. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  346. package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
  347. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  348. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  349. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  350. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  351. package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
  352. package/lib/esm/curve/internalContexts/TransferWithSplitArcs.js.map +1 -1
  353. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  354. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.d.ts +10 -13
  355. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.d.ts.map +1 -1
  356. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js +23 -22
  357. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  358. package/lib/esm/curve/spiral/ClothoidSeries.d.ts +5 -5
  359. package/lib/esm/curve/spiral/ClothoidSeries.d.ts.map +1 -1
  360. package/lib/esm/curve/spiral/ClothoidSeries.js +28 -16
  361. package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
  362. package/lib/esm/curve/spiral/CubicEvaluator.d.ts +7 -6
  363. package/lib/esm/curve/spiral/CubicEvaluator.d.ts.map +1 -1
  364. package/lib/esm/curve/spiral/CubicEvaluator.js +29 -14
  365. package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
  366. package/lib/esm/curve/spiral/CzechSpiralEvaluator.d.ts +30 -40
  367. package/lib/esm/curve/spiral/CzechSpiralEvaluator.d.ts.map +1 -1
  368. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js +43 -49
  369. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  370. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.d.ts +2 -2
  371. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.d.ts.map +1 -1
  372. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js +17 -7
  373. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  374. package/lib/esm/curve/spiral/DirectSpiral3d.d.ts +103 -95
  375. package/lib/esm/curve/spiral/DirectSpiral3d.d.ts.map +1 -1
  376. package/lib/esm/curve/spiral/DirectSpiral3d.js +132 -106
  377. package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
  378. package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts +70 -52
  379. package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -1
  380. package/lib/esm/curve/spiral/IntegratedSpiral3d.js +97 -65
  381. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  382. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.d.ts +7 -11
  383. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.d.ts.map +1 -1
  384. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js +10 -12
  385. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  386. package/lib/esm/curve/spiral/NormalizedTransition.d.ts +29 -24
  387. package/lib/esm/curve/spiral/NormalizedTransition.d.ts.map +1 -1
  388. package/lib/esm/curve/spiral/NormalizedTransition.js +53 -35
  389. package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
  390. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.d.ts +12 -17
  391. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.d.ts.map +1 -1
  392. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js +20 -23
  393. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  394. package/lib/esm/curve/spiral/TransitionConditionalProperties.d.ts +25 -23
  395. package/lib/esm/curve/spiral/TransitionConditionalProperties.d.ts.map +1 -1
  396. package/lib/esm/curve/spiral/TransitionConditionalProperties.js +34 -29
  397. package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  398. package/lib/esm/curve/spiral/TransitionSpiral3d.d.ts +43 -33
  399. package/lib/esm/curve/spiral/TransitionSpiral3d.d.ts.map +1 -1
  400. package/lib/esm/curve/spiral/TransitionSpiral3d.js +56 -38
  401. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
  402. package/lib/esm/curve/spiral/XYCurveEvaluator.d.ts +27 -21
  403. package/lib/esm/curve/spiral/XYCurveEvaluator.d.ts.map +1 -1
  404. package/lib/esm/curve/spiral/XYCurveEvaluator.js +23 -18
  405. package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
  406. package/lib/esm/geometry3d/Angle.js.map +1 -1
  407. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  408. package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
  409. package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
  410. package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
  411. package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
  412. package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
  413. package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
  414. package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
  415. package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
  416. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
  417. package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
  418. package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
  419. package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
  420. package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
  421. package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
  422. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  423. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  424. package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
  425. package/lib/esm/geometry3d/Plane3d.js.map +1 -1
  426. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  427. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  428. package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
  429. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  430. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  431. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  432. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  433. package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
  434. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  435. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  436. package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
  437. package/lib/esm/geometry3d/Range.js.map +1 -1
  438. package/lib/esm/geometry3d/Ray2d.js.map +1 -1
  439. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  440. package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
  441. package/lib/esm/geometry3d/Segment1d.js.map +1 -1
  442. package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
  443. package/lib/esm/geometry3d/Transform.js.map +1 -1
  444. package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
  445. package/lib/esm/geometry3d/XYZProps.js.map +1 -1
  446. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  447. package/lib/esm/geometry4d/Map4d.js.map +1 -1
  448. package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
  449. package/lib/esm/geometry4d/MomentData.js.map +1 -1
  450. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  451. package/lib/esm/geometry4d/Point4d.js.map +1 -1
  452. package/lib/esm/numerics/BandedSystem.js.map +1 -1
  453. package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
  454. package/lib/esm/numerics/ClusterableArray.js.map +1 -1
  455. package/lib/esm/numerics/Complex.js.map +1 -1
  456. package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
  457. package/lib/esm/numerics/Newton.js.map +1 -1
  458. package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
  459. package/lib/esm/numerics/PolarData.js.map +1 -1
  460. package/lib/esm/numerics/Polynomials.js.map +1 -1
  461. package/lib/esm/numerics/Quadrature.js.map +1 -1
  462. package/lib/esm/numerics/Range1dArray.js.map +1 -1
  463. package/lib/esm/numerics/SmallSystem.js.map +1 -1
  464. package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
  465. package/lib/esm/numerics/UnionFind.js.map +1 -1
  466. package/lib/esm/numerics/UsageSums.js.map +1 -1
  467. package/lib/esm/polyface/AuxData.js.map +1 -1
  468. package/lib/esm/polyface/BoxTopology.js.map +1 -1
  469. package/lib/esm/polyface/FacetFaceData.js.map +1 -1
  470. package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
  471. package/lib/esm/polyface/FacetOrientation.js.map +1 -1
  472. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  473. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
  474. package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  475. package/lib/esm/polyface/IndexedPolyfaceWalker.js.map +1 -1
  476. package/lib/esm/polyface/Polyface.js.map +1 -1
  477. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  478. package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
  479. package/lib/esm/polyface/PolyfaceData.js.map +1 -1
  480. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  481. package/lib/esm/polyface/RangeLengthData.js.map +1 -1
  482. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  483. package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  484. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  485. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  486. package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  487. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  488. package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
  489. package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
  490. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  491. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  492. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  493. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  494. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  495. package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  496. package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
  497. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  498. package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
  499. package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
  500. package/lib/esm/serialization/BGFBReader.js.map +1 -1
  501. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  502. package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  503. package/lib/esm/serialization/DeepCompare.js.map +1 -1
  504. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  505. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  506. package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
  507. package/lib/esm/solid/Box.js.map +1 -1
  508. package/lib/esm/solid/Cone.js.map +1 -1
  509. package/lib/esm/solid/LinearSweep.js.map +1 -1
  510. package/lib/esm/solid/RotationalSweep.js.map +1 -1
  511. package/lib/esm/solid/RuledSweep.js.map +1 -1
  512. package/lib/esm/solid/SolidPrimitive.js.map +1 -1
  513. package/lib/esm/solid/Sphere.js.map +1 -1
  514. package/lib/esm/solid/SweepContour.js.map +1 -1
  515. package/lib/esm/solid/TorusPipe.js.map +1 -1
  516. package/lib/esm/topology/ChainMerge.js.map +1 -1
  517. package/lib/esm/topology/Graph.js.map +1 -1
  518. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  519. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  520. package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  521. package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
  522. package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
  523. package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  524. package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  525. package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
  526. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
  527. package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
  528. package/lib/esm/topology/MaskManager.js.map +1 -1
  529. package/lib/esm/topology/Merging.js.map +1 -1
  530. package/lib/esm/topology/RegularizeFace.js.map +1 -1
  531. package/lib/esm/topology/SignedDataSummary.js.map +1 -1
  532. package/lib/esm/topology/SpaceTriangulation.js.map +1 -1
  533. package/lib/esm/topology/Triangulation.js.map +1 -1
  534. package/lib/esm/topology/Voronoi.js.map +1 -1
  535. package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
  536. package/package.json +3 -3
@@ -10,10 +10,10 @@ import { XYCurveEvaluator } from "./XYCurveEvaluator";
10
10
  import { SimpleNewton } from "../../numerics/Newton";
11
11
  /**
12
12
  * Methods to evaluate caller-specified number of terms of the x and y series for a clothoid.
13
- * Each instance has
14
- * * Number of x and y terms to use.
15
- * * constant for theta=c * x * x
16
- * * This value is c=1/(2 R L) for curve length L measured from inflection to point with radius R.
13
+ * Each instance has:
14
+ * * number of x and y terms to use.
15
+ * * constant for theta = c*x*x.
16
+ * * This value is c = 1/(2*R*L) for curve length L measured from inflection to point with radius R.
17
17
  * @internal
18
18
  */
19
19
  export class ClothoidSeriesRLEvaluator extends XYCurveEvaluator {
@@ -36,7 +36,7 @@ export class ClothoidSeriesRLEvaluator extends XYCurveEvaluator {
36
36
  this.nominalLength1 *= scaleFactor;
37
37
  this.constantDiv2LR /= (scaleFactor * scaleFactor);
38
38
  }
39
- /** Member by member matchup ... */
39
+ /** Member by member matchup. */
40
40
  isAlmostEqual(other) {
41
41
  if (other instanceof ClothoidSeriesRLEvaluator) {
42
42
  return this.numXTerms === other.numXTerms
@@ -50,43 +50,55 @@ export class ClothoidSeriesRLEvaluator extends XYCurveEvaluator {
50
50
  * Evaluate the X series at a nominal distance along the curve.
51
51
  * @param fraction fractional position along the curve.
52
52
  */
53
- fractionToX(fraction) { return this.fractionToXGo(fraction, this.numXTerms); }
53
+ fractionToX(fraction) {
54
+ return this.fractionToXGo(fraction, this.numXTerms);
55
+ }
54
56
  /**
55
57
  * Evaluate the Y series at a nominal distance along the curve.
56
58
  * @param fraction fractional position along the curve.
57
59
  */
58
- fractionToY(fraction) { return this.fractionToYGo(fraction, this.numYTerms); }
60
+ fractionToY(fraction) {
61
+ return this.fractionToYGo(fraction, this.numYTerms);
62
+ }
59
63
  /**
60
64
  * Evaluate the derivative of the X series at a nominal distance along the curve.
61
65
  * @param fraction fractional position along the curve.
62
66
  */
63
- fractionToDX(fraction) { return this.fractionToDXGo(fraction, this.numXTerms); }
67
+ fractionToDX(fraction) {
68
+ return this.fractionToDXGo(fraction, this.numXTerms);
69
+ }
64
70
  /**
65
71
  * Evaluate the derivative of the Y series at a nominal distance along the curve.
66
72
  * @param fraction fractional position along the curve.
67
73
  */
68
- fractionToDY(fraction) { return this.fractionToDYGo(fraction, this.numYTerms); }
74
+ fractionToDY(fraction) {
75
+ return this.fractionToDYGo(fraction, this.numYTerms);
76
+ }
69
77
  /**
70
78
  * Evaluate the derivative of the X series at a nominal distance along the curve.
71
79
  * @param fraction fractional position along the curve.
72
80
  */
73
- fractionToDDX(fraction) { return this.fractionToDDXGo(fraction, this.numXTerms); }
81
+ fractionToDDX(fraction) {
82
+ return this.fractionToDDXGo(fraction, this.numXTerms);
83
+ }
74
84
  /**
75
85
  * Evaluate the derivative of the Y series at a nominal distance along the curve.
76
86
  * @param fraction fractional position along the curve.
77
87
  */
78
- fractionToDDY(fraction) { return this.fractionToDDYGo(fraction, this.numYTerms); }
88
+ fractionToDDY(fraction) {
89
+ return this.fractionToDDYGo(fraction, this.numYTerms);
90
+ }
79
91
  /**
80
92
  * Evaluate the X series at a nominal distance along the curve.
81
93
  * @param fraction fractional position along the curve.
82
94
  * @param numTerms number of terms to use.
83
95
  */
84
96
  fractionToXGo(fraction, numTerms) {
85
- // Write the series for cos (theta)
97
+ // write the series for cos(theta)
86
98
  // replace theta by s*s*c
87
99
  // integrate wrt s
88
100
  // x = s - s^5 c^4/ 2 + s^9 c^8/(4!) - s^13 c^12 / 6!
89
- // x = s(1 - (s^4 c^2/2) ( 1/5 -s^4 c^2 / (3*4) ( 1/9 - ....) ) )
101
+ // x = s(1 - (s^4 c^2/2) ( 1/5 -s^4 c^2 / (3*4) (1/9 - ...) ) )
90
102
  const s = fraction * this.nominalLength1;
91
103
  let result = s;
92
104
  if (numTerms < 2)
@@ -105,7 +117,7 @@ export class ClothoidSeriesRLEvaluator extends XYCurveEvaluator {
105
117
  return result;
106
118
  }
107
119
  fractionToYGo(fraction, numTerms) {
108
- // Write the series for sin (theta)
120
+ // write the series for sin(theta)
109
121
  // replace theta by s*s*c
110
122
  // integrate wrt s
111
123
  // x = s^3 c^2/ 3( (1/3)) - s^7 c^6/(3!) ((1/7)) - s^11 c^10 / 5! ((1/9) - ...)
@@ -127,7 +139,7 @@ export class ClothoidSeriesRLEvaluator extends XYCurveEvaluator {
127
139
  return result;
128
140
  }
129
141
  fractionToDXGo(fraction, numTerms) {
130
- // Yes -- this does happen during derivatives of cosines with more than 0 terms !!
142
+ // yes -- this does happen during derivatives of cosines with more than 0 terms
131
143
  if (numTerms <= 0)
132
144
  return 0;
133
145
  // dX = 1 - s^4c^2/2 + s^8 c^4 / 4! -
@@ -182,7 +194,7 @@ export class ClothoidSeriesRLEvaluator extends XYCurveEvaluator {
182
194
  fractionToDDYGo(fraction, numTerms) {
183
195
  // DY is "sine"
184
196
  // DDY is "cosine" series times chain rule dTheta/ds = 2 * s * this.constantDivLR
185
- // BUT .... derivative of the cosine series leading term is zero ... use one less term!
197
+ // BUT .... derivative of the cosine series leading term is zero ... use one less term
186
198
  const s = fraction * this.nominalLength1;
187
199
  const dTheta = 2 * this.constantDiv2LR * s;
188
200
  const cosine = this.fractionToDXGo(fraction, numTerms);
@@ -1 +1 @@
1
- {"version":3,"file":"ClothoidSeries.js","sourceRoot":"","sources":["../../../../src/curve/spiral/ClothoidSeries.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Curve\r\n */\r\n\r\nimport { Geometry } from \"../../Geometry\";\r\nimport { XYCurveEvaluator } from \"./XYCurveEvaluator\";\r\nimport { SimpleNewton } from \"../../numerics/Newton\";\r\n/**\r\n * Methods to evaluate caller-specified number of terms of the x and y series for a clothoid.\r\n * Each instance has\r\n * * Number of x and y terms to use.\r\n * * constant for theta=c * x * x\r\n * * This value is c=1/(2 R L) for curve length L measured from inflection to point with radius R.\r\n * @internal\r\n */\r\nexport class ClothoidSeriesRLEvaluator extends XYCurveEvaluator {\r\n public numXTerms: number;\r\n public numYTerms: number;\r\n public constantDiv2LR: number;\r\n public nominalLength1: number;\r\n public constructor(nominalLength1: number, constantDiv2LR: number, numXTerms: number = 4, numYTerms: number = 4) {\r\n super();\r\n this.nominalLength1 = nominalLength1;\r\n this.constantDiv2LR = constantDiv2LR;\r\n this.numXTerms = numXTerms;\r\n this.numYTerms = numYTerms;\r\n }\r\n /** Return a deep clone. */\r\n public clone(): ClothoidSeriesRLEvaluator {\r\n return new ClothoidSeriesRLEvaluator(this.nominalLength1, this.constantDiv2LR, this.numXTerms, this.numYTerms);\r\n }\r\n public scaleInPlace(scaleFactor: number) {\r\n this.nominalLength1 *= scaleFactor;\r\n this.constantDiv2LR /= (scaleFactor * scaleFactor);\r\n }\r\n /** Member by member matchup ... */\r\n public isAlmostEqual(other: any): boolean {\r\n if (other instanceof ClothoidSeriesRLEvaluator) {\r\n return this.numXTerms === other.numXTerms\r\n && this.numYTerms === other.numYTerms\r\n && Geometry.isAlmostEqualNumber(this.constantDiv2LR, other.constantDiv2LR)\r\n && Geometry.isSameCoordinate(this.nominalLength1, other.nominalLength1);\r\n }\r\n return false;\r\n }\r\n /**\r\n * Evaluate the X series at a nominal distance along the curve.\r\n * @param fraction fractional position along the curve.\r\n */\r\n public fractionToX(fraction: number): number { return this.fractionToXGo(fraction, this.numXTerms); }\r\n /**\r\n * Evaluate the Y series at a nominal distance along the curve.\r\n * @param fraction fractional position along the curve.\r\n */\r\n public fractionToY(fraction: number): number { return this.fractionToYGo(fraction, this.numYTerms); }\r\n\r\n /**\r\n * Evaluate the derivative of the X series at a nominal distance along the curve.\r\n * @param fraction fractional position along the curve.\r\n */\r\n public fractionToDX(fraction: number): number { return this.fractionToDXGo(fraction, this.numXTerms); }\r\n /**\r\n * Evaluate the derivative of the Y series at a nominal distance along the curve.\r\n * @param fraction fractional position along the curve.\r\n */\r\n public fractionToDY(fraction: number): number { return this.fractionToDYGo(fraction, this.numYTerms); }\r\n\r\n /**\r\n * Evaluate the derivative of the X series at a nominal distance along the curve.\r\n * @param fraction fractional position along the curve.\r\n */\r\n public fractionToDDX(fraction: number): number { return this.fractionToDDXGo(fraction, this.numXTerms); }\r\n /**\r\n * Evaluate the derivative of the Y series at a nominal distance along the curve.\r\n * @param fraction fractional position along the curve.\r\n */\r\n public fractionToDDY(fraction: number): number { return this.fractionToDDYGo(fraction, this.numYTerms); }\r\n\r\n /**\r\n * Evaluate the X series at a nominal distance along the curve.\r\n * @param fraction fractional position along the curve.\r\n * @param numTerms number of terms to use.\r\n */\r\n public fractionToXGo(fraction: number, numTerms: number): number {\r\n // Write the series for cos (theta)\r\n // replace theta by s*s*c\r\n // integrate wrt s\r\n // x = s - s^5 c^4/ 2 + s^9 c^8/(4!) - s^13 c^12 / 6!\r\n // x = s(1 - (s^4 c^2/2) ( 1/5 -s^4 c^2 / (3*4) ( 1/9 - ....) ) )\r\n const s = fraction * this.nominalLength1;\r\n let result = s;\r\n if (numTerms < 2)\r\n return result;\r\n const q1 = s * s * this.constantDiv2LR;\r\n const beta = - q1 * q1;\r\n let alpha = s;\r\n let m = 1;\r\n let n = 5;\r\n for (let i = 1; i < numTerms; i++) {\r\n alpha *= beta / (m * (m + 1));\r\n result += alpha / n;\r\n m += 2;\r\n n += 4;\r\n }\r\n return result;\r\n }\r\n public fractionToYGo(fraction: number, numTerms: number): number {\r\n // Write the series for sin (theta)\r\n // replace theta by s*s*c\r\n // integrate wrt s\r\n // x = s^3 c^2/ 3( (1/3)) - s^7 c^6/(3!) ((1/7)) - s^11 c^10 / 5! ((1/9) - ...)\r\n const s = fraction * this.nominalLength1;\r\n const q1 = s * s * this.constantDiv2LR;\r\n let result = q1 * s / 3;\r\n if (numTerms < 2)\r\n return result;\r\n const beta = - q1 * q1;\r\n let alpha = q1 * s;\r\n let m = 2;\r\n let n = 7;\r\n for (let i = 1; i < numTerms; i++) {\r\n alpha *= beta / (m * (m + 1));\r\n result += alpha / n;\r\n m += 2;\r\n n += 4;\r\n }\r\n return result;\r\n }\r\n public fractionToDXGo(fraction: number, numTerms: number): number {\r\n // Yes -- this does happen during derivatives of cosines with more than 0 terms !!\r\n if (numTerms <= 0)\r\n return 0;\r\n // dX = 1 - s^4c^2/2 + s^8 c^4 / 4! -\r\n // new Term = old Term * beta / (m(m+1))\r\n const s = fraction * this.nominalLength1;\r\n let result = 1;\r\n if (numTerms < 2) {\r\n return result * this.nominalLength1;\r\n }\r\n const q1 = s * s * this.constantDiv2LR;\r\n const beta = - q1 * q1;\r\n let alpha = 1.0;\r\n let m = 1;\r\n for (let i = 1; i < numTerms; i++) {\r\n alpha *= beta / (m * (m + 1));\r\n result += alpha;\r\n m += 2;\r\n }\r\n return result * this.nominalLength1;\r\n }\r\n public fractionToDYGo(fraction: number, numTerms: number): number {\r\n if (numTerms <= 0)\r\n return 0;\r\n // dY = q - q^3/3!\r\n // q = s^2 c\r\n // dY = s^2 c - s^6 c^3/3! + s^10 c^5/ 5!\r\n // recurrence advancing m by 2 alpha *= -(s^4 c^2) / (m(m+1))\r\n const s = fraction * this.nominalLength1;\r\n const q1 = s * s * this.constantDiv2LR;\r\n let result = q1;\r\n if (numTerms < 2)\r\n return result * this.nominalLength1;\r\n const beta = - q1 * q1;\r\n let alpha = q1;\r\n let m = 2;\r\n for (let i = 1; i < numTerms; i++) {\r\n alpha *= beta / (m * (m + 1));\r\n result += alpha;\r\n m += 2;\r\n }\r\n return result * this.nominalLength1;\r\n }\r\n\r\n public fractionToDDXGo(fraction: number, numTerms: number): number {\r\n // DX is \"cosine\"\r\n // DDX is \"- sine\" series times chain rule dTheta/ds = 2 * s * this.constantDivLR\r\n const s = fraction * this.nominalLength1;\r\n\r\n const dTheta = 2 * this.constantDiv2LR * s;\r\n const sine = this.fractionToDYGo(fraction, numTerms - 1);\r\n const resultA = (- dTheta * sine * this.nominalLength1);\r\n return resultA;\r\n }\r\n public fractionToDDYGo(fraction: number, numTerms: number): number {\r\n // DY is \"sine\"\r\n // DDY is \"cosine\" series times chain rule dTheta/ds = 2 * s * this.constantDivLR\r\n // BUT .... derivative of the cosine series leading term is zero ... use one less term!\r\n const s = fraction * this.nominalLength1;\r\n const dTheta = 2 * this.constantDiv2LR * s;\r\n const cosine = this.fractionToDXGo(fraction, numTerms);\r\n return cosine * dTheta * this.nominalLength1;\r\n }\r\n\r\n public fractionToD3X(fraction: number): number {\r\n if (this.numXTerms <= 1)\r\n return 0.0;\r\n // DX is \"cosine\"\r\n // DDX is \"- sine\" series times chain rule dTheta/ds = 2 * s * this.constantDivLR\r\n const s = fraction * this.nominalLength1;\r\n const dTheta = 2.0 * this.constantDiv2LR * s;\r\n const d2Theta = 2.0 * this.constantDiv2LR;\r\n const sine = this.fractionToDYGo(fraction, this.numXTerms - 1);\r\n const cosine = this.fractionToDXGo(fraction, this.numXTerms - 1);\r\n return (- cosine * dTheta * dTheta - sine * d2Theta) * this.nominalLength1 * this.nominalLength1;\r\n }\r\n public fractionToD3Y(fraction: number): number {\r\n // DY is \"sine\"\r\n // DDY is \"cosine\" series times chain rule dTheta/ds = 2 * s * this.constantDivLR\r\n const s = fraction * this.nominalLength1;\r\n const dTheta = 2.0 * this.constantDiv2LR * s;\r\n const d2Theta = 2.0 * this.constantDiv2LR;\r\n // dY is sine series with numYTerms.\r\n // ddY is cosine series. Leading term of sine series is non-constant, so numYTerms here also\r\n // d3Y is sine series. Derivative of preceding cosine killed first term.\r\n const cosine = this.fractionToDXGo(fraction, this.numYTerms);\r\n const sine = this.fractionToDYGo(fraction, this.numYTerms - 1);\r\n return (-sine * dTheta * dTheta + cosine * d2Theta) * this.nominalLength1 * this.nominalLength1;\r\n }\r\n\r\n public xToFraction(x: number): number | undefined {\r\n const fraction0 = x / this.nominalLength1;\r\n const fraction1 = SimpleNewton.runNewton1D(fraction0,\r\n (f: number) => (this.fractionToX(f) - x),\r\n (f: number) => this.fractionToDX(f));\r\n if (fraction1 === undefined)\r\n return undefined;\r\n return fraction1;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ClothoidSeries.js","sourceRoot":"","sources":["../../../../src/curve/spiral/ClothoidSeries.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Curve\n */\n\nimport { Geometry } from \"../../Geometry\";\nimport { XYCurveEvaluator } from \"./XYCurveEvaluator\";\nimport { SimpleNewton } from \"../../numerics/Newton\";\n\n/**\n * Methods to evaluate caller-specified number of terms of the x and y series for a clothoid.\n * Each instance has:\n * * number of x and y terms to use.\n * * constant for theta = c*x*x.\n * * This value is c = 1/(2*R*L) for curve length L measured from inflection to point with radius R.\n * @internal\n */\nexport class ClothoidSeriesRLEvaluator extends XYCurveEvaluator {\n public numXTerms: number;\n public numYTerms: number;\n public constantDiv2LR: number;\n public nominalLength1: number;\n public constructor(nominalLength1: number, constantDiv2LR: number, numXTerms: number = 4, numYTerms: number = 4) {\n super();\n this.nominalLength1 = nominalLength1;\n this.constantDiv2LR = constantDiv2LR;\n this.numXTerms = numXTerms;\n this.numYTerms = numYTerms;\n }\n /** Return a deep clone. */\n public clone(): ClothoidSeriesRLEvaluator {\n return new ClothoidSeriesRLEvaluator(this.nominalLength1, this.constantDiv2LR, this.numXTerms, this.numYTerms);\n }\n public scaleInPlace(scaleFactor: number): void {\n this.nominalLength1 *= scaleFactor;\n this.constantDiv2LR /= (scaleFactor * scaleFactor);\n }\n /** Member by member matchup. */\n public isAlmostEqual(other: any): boolean {\n if (other instanceof ClothoidSeriesRLEvaluator) {\n return this.numXTerms === other.numXTerms\n && this.numYTerms === other.numYTerms\n && Geometry.isAlmostEqualNumber(this.constantDiv2LR, other.constantDiv2LR)\n && Geometry.isSameCoordinate(this.nominalLength1, other.nominalLength1);\n }\n return false;\n }\n /**\n * Evaluate the X series at a nominal distance along the curve.\n * @param fraction fractional position along the curve.\n */\n public fractionToX(fraction: number): number {\n return this.fractionToXGo(fraction, this.numXTerms);\n }\n /**\n * Evaluate the Y series at a nominal distance along the curve.\n * @param fraction fractional position along the curve.\n */\n public fractionToY(fraction: number): number {\n return this.fractionToYGo(fraction, this.numYTerms);\n }\n /**\n * Evaluate the derivative of the X series at a nominal distance along the curve.\n * @param fraction fractional position along the curve.\n */\n public fractionToDX(fraction: number): number {\n return this.fractionToDXGo(fraction, this.numXTerms);\n }\n /**\n * Evaluate the derivative of the Y series at a nominal distance along the curve.\n * @param fraction fractional position along the curve.\n */\n public fractionToDY(fraction: number): number {\n return this.fractionToDYGo(fraction, this.numYTerms);\n }\n /**\n * Evaluate the derivative of the X series at a nominal distance along the curve.\n * @param fraction fractional position along the curve.\n */\n public fractionToDDX(fraction: number): number {\n return this.fractionToDDXGo(fraction, this.numXTerms);\n }\n /**\n * Evaluate the derivative of the Y series at a nominal distance along the curve.\n * @param fraction fractional position along the curve.\n */\n public fractionToDDY(fraction: number): number {\n return this.fractionToDDYGo(fraction, this.numYTerms);\n }\n /**\n * Evaluate the X series at a nominal distance along the curve.\n * @param fraction fractional position along the curve.\n * @param numTerms number of terms to use.\n */\n public fractionToXGo(fraction: number, numTerms: number): number {\n // write the series for cos(theta)\n // replace theta by s*s*c\n // integrate wrt s\n // x = s - s^5 c^4/ 2 + s^9 c^8/(4!) - s^13 c^12 / 6!\n // x = s(1 - (s^4 c^2/2) ( 1/5 -s^4 c^2 / (3*4) (1/9 - ...) ) )\n const s = fraction * this.nominalLength1;\n let result = s;\n if (numTerms < 2)\n return result;\n const q1 = s * s * this.constantDiv2LR;\n const beta = - q1 * q1;\n let alpha = s;\n let m = 1;\n let n = 5;\n for (let i = 1; i < numTerms; i++) {\n alpha *= beta / (m * (m + 1));\n result += alpha / n;\n m += 2;\n n += 4;\n }\n return result;\n }\n public fractionToYGo(fraction: number, numTerms: number): number {\n // write the series for sin(theta)\n // replace theta by s*s*c\n // integrate wrt s\n // x = s^3 c^2/ 3( (1/3)) - s^7 c^6/(3!) ((1/7)) - s^11 c^10 / 5! ((1/9) - ...)\n const s = fraction * this.nominalLength1;\n const q1 = s * s * this.constantDiv2LR;\n let result = q1 * s / 3;\n if (numTerms < 2)\n return result;\n const beta = - q1 * q1;\n let alpha = q1 * s;\n let m = 2;\n let n = 7;\n for (let i = 1; i < numTerms; i++) {\n alpha *= beta / (m * (m + 1));\n result += alpha / n;\n m += 2;\n n += 4;\n }\n return result;\n }\n public fractionToDXGo(fraction: number, numTerms: number): number {\n // yes -- this does happen during derivatives of cosines with more than 0 terms\n if (numTerms <= 0)\n return 0;\n // dX = 1 - s^4c^2/2 + s^8 c^4 / 4! -\n // new Term = old Term * beta / (m(m+1))\n const s = fraction * this.nominalLength1;\n let result = 1;\n if (numTerms < 2) {\n return result * this.nominalLength1;\n }\n const q1 = s * s * this.constantDiv2LR;\n const beta = - q1 * q1;\n let alpha = 1.0;\n let m = 1;\n for (let i = 1; i < numTerms; i++) {\n alpha *= beta / (m * (m + 1));\n result += alpha;\n m += 2;\n }\n return result * this.nominalLength1;\n }\n public fractionToDYGo(fraction: number, numTerms: number): number {\n if (numTerms <= 0)\n return 0;\n // dY = q - q^3/3!\n // q = s^2 c\n // dY = s^2 c - s^6 c^3/3! + s^10 c^5/ 5!\n // recurrence advancing m by 2 alpha *= -(s^4 c^2) / (m(m+1))\n const s = fraction * this.nominalLength1;\n const q1 = s * s * this.constantDiv2LR;\n let result = q1;\n if (numTerms < 2)\n return result * this.nominalLength1;\n const beta = - q1 * q1;\n let alpha = q1;\n let m = 2;\n for (let i = 1; i < numTerms; i++) {\n alpha *= beta / (m * (m + 1));\n result += alpha;\n m += 2;\n }\n return result * this.nominalLength1;\n }\n public fractionToDDXGo(fraction: number, numTerms: number): number {\n // DX is \"cosine\"\n // DDX is \"- sine\" series times chain rule dTheta/ds = 2 * s * this.constantDivLR\n const s = fraction * this.nominalLength1;\n const dTheta = 2 * this.constantDiv2LR * s;\n const sine = this.fractionToDYGo(fraction, numTerms - 1);\n const resultA = (- dTheta * sine * this.nominalLength1);\n return resultA;\n }\n public fractionToDDYGo(fraction: number, numTerms: number): number {\n // DY is \"sine\"\n // DDY is \"cosine\" series times chain rule dTheta/ds = 2 * s * this.constantDivLR\n // BUT .... derivative of the cosine series leading term is zero ... use one less term\n const s = fraction * this.nominalLength1;\n const dTheta = 2 * this.constantDiv2LR * s;\n const cosine = this.fractionToDXGo(fraction, numTerms);\n return cosine * dTheta * this.nominalLength1;\n }\n public fractionToD3X(fraction: number): number {\n if (this.numXTerms <= 1)\n return 0.0;\n // DX is \"cosine\"\n // DDX is \"- sine\" series times chain rule dTheta/ds = 2 * s * this.constantDivLR\n const s = fraction * this.nominalLength1;\n const dTheta = 2.0 * this.constantDiv2LR * s;\n const d2Theta = 2.0 * this.constantDiv2LR;\n const sine = this.fractionToDYGo(fraction, this.numXTerms - 1);\n const cosine = this.fractionToDXGo(fraction, this.numXTerms - 1);\n return (- cosine * dTheta * dTheta - sine * d2Theta) * this.nominalLength1 * this.nominalLength1;\n }\n public fractionToD3Y(fraction: number): number {\n // DY is \"sine\"\n // DDY is \"cosine\" series times chain rule dTheta/ds = 2 * s * this.constantDivLR\n const s = fraction * this.nominalLength1;\n const dTheta = 2.0 * this.constantDiv2LR * s;\n const d2Theta = 2.0 * this.constantDiv2LR;\n // dY is sine series with numYTerms.\n // ddY is cosine series. Leading term of sine series is non-constant, so numYTerms here also\n // d3Y is sine series. Derivative of preceding cosine killed first term.\n const cosine = this.fractionToDXGo(fraction, this.numYTerms);\n const sine = this.fractionToDYGo(fraction, this.numYTerms - 1);\n return (-sine * dTheta * dTheta + cosine * d2Theta) * this.nominalLength1 * this.nominalLength1;\n }\n public xToFraction(x: number): number | undefined {\n const fraction0 = x / this.nominalLength1;\n const fraction1 = SimpleNewton.runNewton1D(fraction0,\n (f: number) => (this.fractionToX(f) - x),\n (f: number) => this.fractionToDX(f));\n if (fraction1 === undefined)\n return undefined;\n return fraction1;\n }\n}\n"]}
@@ -2,9 +2,11 @@
2
2
  * @module Curve
3
3
  */
4
4
  import { XYCurveEvaluator } from "./XYCurveEvaluator";
5
- /** Intermediate class for evaluation of bare cubic spirals `y = m ^x^3` with x axis from [0..xLength]
5
+ /**
6
+ * Intermediate class for evaluation of bare cubic spirals `y = m ^x^3` with x axis from [0..xLength]
6
7
  * * This implements all the computations among fraction, x, and y.
7
- * * Derived classes implement specialized logic such as (a) precomputing `m` and (b) domain-specific fraction-to-distance approximations.
8
+ * * Derived classes implement specialized logic such as (a) precomputing `m` and (b) domain-specific fraction-to-distance
9
+ * approximations.
8
10
  * @internal
9
11
  */
10
12
  export declare abstract class CubicEvaluator extends XYCurveEvaluator {
@@ -18,16 +20,15 @@ export declare abstract class CubicEvaluator extends XYCurveEvaluator {
18
20
  /**
19
21
  * Apply `scaleFactor` to the xLength and cubicM.
20
22
  * * Derived classes commonly call this as `super.scaleInPlace()`, and additionally apply the scale to their members.
21
- * @param scaleFactor
22
23
  */
23
24
  scaleInPlace(scaleFactor: number): void;
24
25
  /** Evaluate X at fraction. */
25
26
  fractionToX(fraction: number): number;
26
- /** Evaluate derivative of X with respect to fraction */
27
+ /** Evaluate derivative of X with respect to fraction. */
27
28
  fractionToDX(_fraction: number): number;
28
- /** Evaluate second derivative of X with respect to fraction */
29
+ /** Evaluate second derivative of X with respect to fraction. */
29
30
  fractionToDDX(_fraction: number): number;
30
- /** Evaluate third derivative of X with respect to fraction */
31
+ /** Evaluate third derivative of X with respect to fraction. */
31
32
  fractionToD3X(_fraction: number): number;
32
33
  /** Evaluate Y at fraction. */
33
34
  fractionToY(fraction: number): number;
@@ -1 +1 @@
1
- {"version":3,"file":"CubicEvaluator.d.ts","sourceRoot":"","sources":["../../../../src/curve/spiral/CubicEvaluator.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD;;;;GAIG;AACH,8BAAsB,cAAe,SAAQ,gBAAgB;IAC3D,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;IAC9B,SAAS,aAAa,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAKxD,6BAA6B;IACtB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAItD,IAAW,UAAU,WAA+B;IACpD,IAAW,MAAM,WAA2B;IAC5C;;;;OAIG;IACI,YAAY,CAAC,WAAW,EAAE,MAAM;IAKvC,8BAA8B;IACvB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAC5C,wDAAwD;IACjD,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAC9C,+DAA+D;IACxD,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAC/C,8DAA8D;IACvD,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAC/C,8BAA8B;IACvB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI5C,yDAAyD;IAClD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI7C,gEAAgE;IACzD,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI9C,+DAA+D;IACxD,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAG/C,8BAA8B;IACvB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;CACtC"}
1
+ {"version":3,"file":"CubicEvaluator.d.ts","sourceRoot":"","sources":["../../../../src/curve/spiral/CubicEvaluator.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;;;GAMG;AACH,8BAAsB,cAAe,SAAQ,gBAAgB;IAC3D,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;IAC9B,SAAS,aAAa,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAKxD,6BAA6B;IACtB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAItD,IAAW,UAAU,WAEpB;IACD,IAAW,MAAM,WAEhB;IACD;;;OAGG;IACI,YAAY,CAAC,WAAW,EAAE,MAAM;IAKvC,8BAA8B;IACvB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAG5C,yDAAyD;IAClD,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAG9C,gEAAgE;IACzD,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAG/C,+DAA+D;IACxD,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAG/C,8BAA8B;IACvB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI5C,yDAAyD;IAClD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI7C,gEAAgE;IACzD,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI9C,+DAA+D;IACxD,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAG/C,8BAA8B;IACvB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;CAGtC"}
@@ -6,9 +6,11 @@
6
6
  * @module Curve
7
7
  */
8
8
  import { XYCurveEvaluator } from "./XYCurveEvaluator";
9
- /** Intermediate class for evaluation of bare cubic spirals `y = m ^x^3` with x axis from [0..xLength]
9
+ /**
10
+ * Intermediate class for evaluation of bare cubic spirals `y = m ^x^3` with x axis from [0..xLength]
10
11
  * * This implements all the computations among fraction, x, and y.
11
- * * Derived classes implement specialized logic such as (a) precomputing `m` and (b) domain-specific fraction-to-distance approximations.
12
+ * * Derived classes implement specialized logic such as (a) precomputing `m` and (b) domain-specific fraction-to-distance
13
+ * approximations.
12
14
  * @internal
13
15
  */
14
16
  export class CubicEvaluator extends XYCurveEvaluator {
@@ -24,26 +26,37 @@ export class CubicEvaluator extends XYCurveEvaluator {
24
26
  this._axisLength = axisLength;
25
27
  this._cubicM = cubicM;
26
28
  }
27
- get axisLength() { return this._axisLength; }
28
- get cubicM() { return this._cubicM; }
29
+ get axisLength() {
30
+ return this._axisLength;
31
+ }
32
+ get cubicM() {
33
+ return this._cubicM;
34
+ }
29
35
  /**
30
36
  * Apply `scaleFactor` to the xLength and cubicM.
31
37
  * * Derived classes commonly call this as `super.scaleInPlace()`, and additionally apply the scale to their members.
32
- * @param scaleFactor
33
38
  */
34
39
  scaleInPlace(scaleFactor) {
35
40
  this._axisLength *= scaleFactor;
36
- // "x" arriving at "m * x^3" will be scaled. "m" has to be divided by the scale to cancel 2 of the 3 . .
41
+ // "x" arriving at "m * x^3" will be scaled. "m" has to be divided by the scale to cancel 2 of the 3
37
42
  this._cubicM /= (scaleFactor * scaleFactor);
38
43
  }
39
44
  /** Evaluate X at fraction. */
40
- fractionToX(fraction) { return fraction * this._axisLength; }
41
- /** Evaluate derivative of X with respect to fraction */
42
- fractionToDX(_fraction) { return this._axisLength; }
43
- /** Evaluate second derivative of X with respect to fraction */
44
- fractionToDDX(_fraction) { return 0.0; }
45
- /** Evaluate third derivative of X with respect to fraction */
46
- fractionToD3X(_fraction) { return 0.0; }
45
+ fractionToX(fraction) {
46
+ return fraction * this._axisLength;
47
+ }
48
+ /** Evaluate derivative of X with respect to fraction. */
49
+ fractionToDX(_fraction) {
50
+ return this._axisLength;
51
+ }
52
+ /** Evaluate second derivative of X with respect to fraction. */
53
+ fractionToDDX(_fraction) {
54
+ return 0.0;
55
+ }
56
+ /** Evaluate third derivative of X with respect to fraction. */
57
+ fractionToD3X(_fraction) {
58
+ return 0.0;
59
+ }
47
60
  /** Evaluate Y at fraction. */
48
61
  fractionToY(fraction) {
49
62
  const x = fraction * this._axisLength;
@@ -64,6 +77,8 @@ export class CubicEvaluator extends XYCurveEvaluator {
64
77
  return 6.0 * this._cubicM * this._axisLength * this._axisLength * this._axisLength;
65
78
  }
66
79
  /** Evaluate fraction at x. */
67
- xToFraction(x) { return x / this._axisLength; }
80
+ xToFraction(x) {
81
+ return x / this._axisLength;
82
+ }
68
83
  }
69
84
  //# sourceMappingURL=CubicEvaluator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CubicEvaluator.js","sourceRoot":"","sources":["../../../../src/curve/spiral/CubicEvaluator.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F;;GAEG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD;;;;GAIG;AACH,MAAM,OAAgB,cAAe,SAAQ,gBAAgB;IACjD,OAAO,CAAS;IAChB,WAAW,CAAS;IAC9B,YAAsB,UAAkB,EAAE,MAAc;QACtD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;IACD,6BAA6B;IACtB,YAAY,CAAC,UAAkB,EAAE,MAAc;QACpD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IACD,IAAW,UAAU,KAAK,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACpD,IAAW,MAAM,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5C;;;;OAIG;IACI,YAAY,CAAC,WAAmB;QACrC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC;QAChC,wGAAwG;QACxG,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC;IAC9C,CAAC;IACD,8BAA8B;IACvB,WAAW,CAAC,QAAgB,IAAY,OAAO,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACpF,wDAAwD;IACjD,YAAY,CAAC,SAAiB,IAAY,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC3E,+DAA+D;IACxD,aAAa,CAAC,SAAiB,IAAY,OAAO,GAAG,CAAC,CAAC,CAAC;IAC/D,8DAA8D;IACvD,aAAa,CAAC,SAAiB,IAAY,OAAO,GAAG,CAAC,CAAC,CAAC;IAC/D,8BAA8B;IACvB,WAAW,CAAC,QAAgB;QACjC,MAAM,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;QACtC,OAAO,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IACD,yDAAyD;IAClD,YAAY,CAAC,QAAgB;QAClC,MAAM,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;QACtC,OAAO,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;IACvD,CAAC;IACD,gEAAgE;IACzD,aAAa,CAAC,QAAgB;QACnC,MAAM,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;QACtC,OAAO,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IACtE,CAAC;IACD,+DAA+D;IACxD,aAAa,CAAC,SAAiB;QACpC,OAAO,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IACrF,CAAC;IACD,8BAA8B;IACvB,WAAW,CAAC,CAAS,IAAY,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;CACvE","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Curve\r\n */\r\nimport { XYCurveEvaluator } from \"./XYCurveEvaluator\";\r\n/** Intermediate class for evaluation of bare cubic spirals `y = m ^x^3` with x axis from [0..xLength]\r\n * * This implements all the computations among fraction, x, and y.\r\n * * Derived classes implement specialized logic such as (a) precomputing `m` and (b) domain-specific fraction-to-distance approximations.\r\n * @internal\r\n */\r\nexport abstract class CubicEvaluator extends XYCurveEvaluator {\r\n protected _cubicM: number;\r\n protected _axisLength: number;\r\n protected constructor(axisLength: number, cubicM: number) {\r\n super();\r\n this._cubicM = cubicM;\r\n this._axisLength = axisLength;\r\n }\r\n /** Update both constants. */\r\n public setConstants(axisLength: number, cubicM: number) {\r\n this._axisLength = axisLength;\r\n this._cubicM = cubicM;\r\n }\r\n public get axisLength() { return this._axisLength; }\r\n public get cubicM() { return this._cubicM; }\r\n /**\r\n * Apply `scaleFactor` to the xLength and cubicM.\r\n * * Derived classes commonly call this as `super.scaleInPlace()`, and additionally apply the scale to their members.\r\n * @param scaleFactor\r\n */\r\n public scaleInPlace(scaleFactor: number) {\r\n this._axisLength *= scaleFactor;\r\n // \"x\" arriving at \"m * x^3\" will be scaled. \"m\" has to be divided by the scale to cancel 2 of the 3 . .\r\n this._cubicM /= (scaleFactor * scaleFactor);\r\n }\r\n /** Evaluate X at fraction. */\r\n public fractionToX(fraction: number): number { return fraction * this._axisLength; }\r\n /** Evaluate derivative of X with respect to fraction */\r\n public fractionToDX(_fraction: number): number { return this._axisLength; }\r\n /** Evaluate second derivative of X with respect to fraction */\r\n public fractionToDDX(_fraction: number): number { return 0.0; }\r\n /** Evaluate third derivative of X with respect to fraction */\r\n public fractionToD3X(_fraction: number): number { return 0.0; }\r\n /** Evaluate Y at fraction. */\r\n public fractionToY(fraction: number): number {\r\n const x = fraction * this._axisLength;\r\n return this._cubicM * x * x * x;\r\n }\r\n /** Evaluate derivative of Y with respect to fraction. */\r\n public fractionToDY(fraction: number): number {\r\n const x = fraction * this._axisLength;\r\n return 3.0 * this._cubicM * x * x * this._axisLength;\r\n }\r\n /** Evaluate second derivative of Y with respect to fraction. */\r\n public fractionToDDY(fraction: number): number {\r\n const x = fraction * this._axisLength;\r\n return 6.0 * this._cubicM * x * this._axisLength * this._axisLength;\r\n }\r\n /** Evaluate third derivative of Y with respect to fraction. */\r\n public fractionToD3Y(_fraction: number): number {\r\n return 6.0 * this._cubicM * this._axisLength * this._axisLength * this._axisLength;\r\n }\r\n /** Evaluate fraction at x. */\r\n public xToFraction(x: number): number { return x / this._axisLength; }\r\n}\r\n"]}
1
+ {"version":3,"file":"CubicEvaluator.js","sourceRoot":"","sources":["../../../../src/curve/spiral/CubicEvaluator.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F;;GAEG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,OAAgB,cAAe,SAAQ,gBAAgB;IACjD,OAAO,CAAS;IAChB,WAAW,CAAS;IAC9B,YAAsB,UAAkB,EAAE,MAAc;QACtD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;IACD,6BAA6B;IACtB,YAAY,CAAC,UAAkB,EAAE,MAAc;QACpD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IACD,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IACD,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACD;;;OAGG;IACI,YAAY,CAAC,WAAmB;QACrC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC;QAChC,oGAAoG;QACpG,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC;IAC9C,CAAC;IACD,8BAA8B;IACvB,WAAW,CAAC,QAAgB;QACjC,OAAO,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;IACrC,CAAC;IACD,yDAAyD;IAClD,YAAY,CAAC,SAAiB;QACnC,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IACD,gEAAgE;IACzD,aAAa,CAAC,SAAiB;QACpC,OAAO,GAAG,CAAC;IACb,CAAC;IACD,+DAA+D;IACxD,aAAa,CAAC,SAAiB;QACpC,OAAO,GAAG,CAAC;IACb,CAAC;IACD,8BAA8B;IACvB,WAAW,CAAC,QAAgB;QACjC,MAAM,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;QACtC,OAAO,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IACD,yDAAyD;IAClD,YAAY,CAAC,QAAgB;QAClC,MAAM,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;QACtC,OAAO,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;IACvD,CAAC;IACD,gEAAgE;IACzD,aAAa,CAAC,QAAgB;QACnC,MAAM,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;QACtC,OAAO,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IACtE,CAAC;IACD,+DAA+D;IACxD,aAAa,CAAC,SAAiB;QACpC,OAAO,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IACrF,CAAC;IACD,8BAA8B;IACvB,WAAW,CAAC,CAAS;QAC1B,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;IAC9B,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Curve\n */\nimport { XYCurveEvaluator } from \"./XYCurveEvaluator\";\n\n/**\n * Intermediate class for evaluation of bare cubic spirals `y = m ^x^3` with x axis from [0..xLength]\n * * This implements all the computations among fraction, x, and y.\n * * Derived classes implement specialized logic such as (a) precomputing `m` and (b) domain-specific fraction-to-distance\n * approximations.\n * @internal\n */\nexport abstract class CubicEvaluator extends XYCurveEvaluator {\n protected _cubicM: number;\n protected _axisLength: number;\n protected constructor(axisLength: number, cubicM: number) {\n super();\n this._cubicM = cubicM;\n this._axisLength = axisLength;\n }\n /** Update both constants. */\n public setConstants(axisLength: number, cubicM: number) {\n this._axisLength = axisLength;\n this._cubicM = cubicM;\n }\n public get axisLength() {\n return this._axisLength;\n }\n public get cubicM() {\n return this._cubicM;\n }\n /**\n * Apply `scaleFactor` to the xLength and cubicM.\n * * Derived classes commonly call this as `super.scaleInPlace()`, and additionally apply the scale to their members.\n */\n public scaleInPlace(scaleFactor: number) {\n this._axisLength *= scaleFactor;\n // \"x\" arriving at \"m * x^3\" will be scaled. \"m\" has to be divided by the scale to cancel 2 of the 3\n this._cubicM /= (scaleFactor * scaleFactor);\n }\n /** Evaluate X at fraction. */\n public fractionToX(fraction: number): number {\n return fraction * this._axisLength;\n }\n /** Evaluate derivative of X with respect to fraction. */\n public fractionToDX(_fraction: number): number {\n return this._axisLength;\n }\n /** Evaluate second derivative of X with respect to fraction. */\n public fractionToDDX(_fraction: number): number {\n return 0.0;\n }\n /** Evaluate third derivative of X with respect to fraction. */\n public fractionToD3X(_fraction: number): number {\n return 0.0;\n }\n /** Evaluate Y at fraction. */\n public fractionToY(fraction: number): number {\n const x = fraction * this._axisLength;\n return this._cubicM * x * x * x;\n }\n /** Evaluate derivative of Y with respect to fraction. */\n public fractionToDY(fraction: number): number {\n const x = fraction * this._axisLength;\n return 3.0 * this._cubicM * x * x * this._axisLength;\n }\n /** Evaluate second derivative of Y with respect to fraction. */\n public fractionToDDY(fraction: number): number {\n const x = fraction * this._axisLength;\n return 6.0 * this._cubicM * x * this._axisLength * this._axisLength;\n }\n /** Evaluate third derivative of Y with respect to fraction. */\n public fractionToD3Y(_fraction: number): number {\n return 6.0 * this._cubicM * this._axisLength * this._axisLength * this._axisLength;\n }\n /** Evaluate fraction at x. */\n public xToFraction(x: number): number {\n return x / this._axisLength;\n }\n}\n"]}
@@ -2,106 +2,96 @@ import { CubicEvaluator } from "./CubicEvaluator";
2
2
  /**
3
3
  * Czech cubic.
4
4
  * This is y= m*x^3 with
5
- * * x any point on the x axis
6
- * * `fraction` along the spiral goes to `x = fraction * L`
7
- * * m is gamma / (6RL)
5
+ * * x any point on the x axis.
6
+ * * `fraction` along the spiral goes to `x = fraction * L`.
7
+ * * m is gamma / (6RL).
8
8
  * * 1/(6RL) is the leading term of the sine series.
9
9
  * * `gamma = 2R/sqrt (4RR-LL)` pushes y down a little bit to simulate the lost series terms.
10
- * @param localToWorld
11
- * @param nominalL1
12
- * @param nominalR1
13
- * @param activeInterval
14
10
  * @internal
15
11
  */
16
12
  export declare class CzechSpiralEvaluator extends CubicEvaluator {
17
13
  nominalLength1: number;
18
14
  nominalRadius1: number;
19
- /** Constructor is private. Caller responsible for cubicM validity. */
15
+ /** Constructor is private. Caller responsible for cubicM validity. */
20
16
  private constructor();
21
17
  /**
22
18
  * Return the scale factor between simple x^3 / (6RL) cubic and the czech correction.
23
19
  * * For typical case with l1/R1 smallish, this is just less than 1.0:
24
20
  * (0.25==>0.99215), (0.15==>0.997184), (0.10==>0.998749), (0.05==>999687)
25
- * @param length1
26
- * @param radius1
27
21
  */
28
22
  static gammaConstant(length1: number, radius1: number): number | undefined;
29
23
  /** Compute the czech cubic constant. */
30
24
  static computeCubicM(length1: number, radius1: number): number | undefined;
31
25
  static create(length1: number, radius1: number): CzechSpiralEvaluator | undefined;
32
26
  scaleInPlace(scaleFactor: number): void;
33
- /** return a deep copy of the evaluator */
27
+ /** Return a deep copy of the evaluator. */
34
28
  clone(): CzechSpiralEvaluator;
35
- /** Member by member matchup ... */
29
+ /** Member by member matchup. */
36
30
  isAlmostEqual(other: any): boolean;
37
31
  /**
38
32
  * Return a (fast but mediocre) approximation of spiral length as a function of x axis position.
39
33
  * * This x-to-distance relation is not as precise as the CurvePrimitive method moveSignedDistanceFromFraction.
40
- * * It is supported here for users interested in replicating the Czech distance mapping rather than the more accurate CurvePrimitive measurements.
34
+ * * It is supported here for users interested in replicating the Czech distance mapping rather than the more accurate
35
+ * CurvePrimitive measurements.
41
36
  * @param x distance along the x axis.
42
37
  */
43
38
  xToCzechApproximateDistance(x: number): number;
44
39
  /**
45
40
  * Return the inverse of the `forwardL2R2Map` function.
46
41
  * * The undefined result can only occur for distances outside the usual spirals.
47
- * @param s (approximate) distance along the spiral.
48
- *
42
+ * @param d (approximate) distance along the spiral.
49
43
  */
50
44
  czechApproximateDistanceToX(d: number): number | undefined;
51
45
  /**
52
- * evaluate a series expansion that is used with varying signs (plus or minus 1) in czech and italian spirals.
53
- * @param x distance along the x axis.
54
- */
46
+ * Evaluate a series expansion that is used with varying signs (plus or minus 1) in czech and italian spirals.
47
+ * @param x distance along the x axis.
48
+ */
55
49
  static forwardL2R2Map(x: number, sign: number, length: number, radius: number): number;
56
50
  /**
57
51
  * Return the inverse of the `forwardL2R2Map` function.
58
52
  * * The undefined result can only occur for distances outside the usual spirals.
59
- * @param s (approximate) distance along the spiral.
60
- *
53
+ * @param d (approximate) distance along the spiral.
61
54
  */
62
- static inverseL2R2Map(b: number, sign: number, length: number, radius: number): number | undefined;
55
+ static inverseL2R2Map(d: number, sign: number, length: number, radius: number): number | undefined;
63
56
  }
64
57
  /**
65
58
  * Italian cubic.
66
59
  * This is y= m*x^3 with
67
- * * x any point on the x axis
68
- * * `fraction` along the spiral goes to `x = fraction * L`
69
- * * m is gamma / (6RL)
60
+ * * x any point on the x axis.
61
+ * * `fraction` along the spiral goes to `x = fraction * L`.
62
+ * * m is gamma / (6RL).
70
63
  * * 1/(6RL) is the leading term of the sine series.
71
64
  * * `gamma = 2R/sqrt (4RR-LL)` pushes y down a little bit to simulate the lost series terms.
72
- * @param localToWorld
73
- * @param nominalL1
74
- * @param nominalR1
75
- * @param activeInterval
76
65
  * @internal
77
66
  */
78
67
  export declare class ItalianSpiralEvaluator extends CubicEvaluator {
79
68
  nominalLength1: number;
80
69
  nominalRadius1: number;
81
- /** Compute the czech cubic constant.
82
- * ** funky mixture of lengths ....
70
+ /**
71
+ * Compute the czech cubic constant.
72
+ * * Funky mixture of lengths.
83
73
  */
84
74
  private static computeCubicM;
85
- /** Constructor is private. Caller responsible for cubicM validity. */
75
+ /** Constructor is private. Caller responsible for cubicM validity. */
86
76
  private constructor();
87
77
  static create(length1: number, radius1: number): ItalianSpiralEvaluator | undefined;
88
78
  scaleInPlace(scaleFactor: number): void;
89
- /** return a deep copy of the evaluator */
79
+ /** Return a deep copy of the evaluator. */
90
80
  clone(): ItalianSpiralEvaluator;
91
- /** Member by member matchup ... */
81
+ /** Member by member matchup. */
92
82
  isAlmostEqual(other: any): boolean;
93
83
  /**
94
- * Return a (fast but mediocre) approximation of spiral length as a function of x axis position.
95
- * * This x-to-distance relation is not as precise as the CurvePrimitive method moveSignedDistanceFromFraction.
96
- * * It is supported here for users interested in replicating the Czech distance mapping rather than the more accurate CurvePrimitive measurements.
97
- * @param x distance along the x axis.
98
- */
84
+ * Return a (fast but mediocre) approximation of spiral length as a function of x axis position.
85
+ * * This x-to-distance relation is not as precise as the CurvePrimitive method moveSignedDistanceFromFraction.
86
+ * * It is supported here for users interested in replicating the Czech distance mapping rather than the more accurate
87
+ * CurvePrimitive measurements.
88
+ * @param x distance along the x axis.
89
+ */
99
90
  distanceToItalianApproximateX(x: number): number;
100
91
  /**
101
92
  * Return the inverse of the `forwardL2R2Map` function.
102
93
  * * The undefined result can only occur for distances outside the usual spirals.
103
- * @param s (approximate) distance along the spiral.
104
- *
94
+ * @param d (approximate) distance along the spiral.
105
95
  */
106
96
  xToItalianApproximateDistance(d: number): number | undefined;
107
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CzechSpiralEvaluator.d.ts","sourceRoot":"","sources":["../../../../src/curve/spiral/CzechSpiralEvaluator.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;;;;;;;;;;GAaG;AACH,qBAAa,oBAAqB,SAAQ,cAAc;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IAE9B,uEAAuE;IACvE,OAAO;IAKP;;;;;;OAMG;WACW,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAGjF,wCAAwC;WAC1B,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;WASnE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAOxE,YAAY,CAAC,WAAW,EAAE,MAAM;IAKhD,0CAA0C;IACnC,KAAK,IAAI,oBAAoB;IACpC,mCAAmC;IAC5B,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAQzC;;;;;OAKG;IACI,2BAA2B,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAGrD;;;;;OAKG;IACI,2BAA2B,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIjE;;;SAGK;WACS,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAO7F;;;;;OAKG;WACW,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAe1G;AACD;;;;;;;;;;;;;GAaG;AACH,qBAAa,sBAAuB,SAAQ,cAAc;IACjD,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAS5B,uEAAuE;IACvE,OAAO;WAKO,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS;IAY1E,YAAY,CAAC,WAAW,EAAE,MAAM;IAKhD,0CAA0C;IACnC,KAAK,IAAI,sBAAsB;IACtC,mCAAmC;IAC5B,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAOzC;;;;;SAKK;IACE,6BAA6B,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAGvD;;;;;OAKG;IACI,6BAA6B,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAGpE"}
1
+ {"version":3,"file":"CzechSpiralEvaluator.d.ts","sourceRoot":"","sources":["../../../../src/curve/spiral/CzechSpiralEvaluator.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD;;;;;;;;;GASG;AACH,qBAAa,oBAAqB,SAAQ,cAAc;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IAC9B,sEAAsE;IACtE,OAAO;IAKP;;;;OAIG;WACW,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAGjF,wCAAwC;WAC1B,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;WAQnE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAMxE,YAAY,CAAC,WAAW,EAAE,MAAM;IAKhD,2CAA2C;IACpC,KAAK,IAAI,oBAAoB;IAGpC,gCAAgC;IACzB,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAOzC;;;;;;OAMG;IACI,2BAA2B,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAGrD;;;;OAIG;IACI,2BAA2B,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAGjE;;;OAGG;WACW,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAO7F;;;;OAIG;WACW,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAiB1G;AAED;;;;;;;;;GASG;AACH,qBAAa,sBAAuB,SAAQ,cAAc;IACjD,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IAE9B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAQ5B,sEAAsE;IACtE,OAAO;WAKO,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS;IAW1E,YAAY,CAAC,WAAW,EAAE,MAAM;IAKhD,2CAA2C;IACpC,KAAK,IAAI,sBAAsB;IAGtC,gCAAgC;IACzB,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAOzC;;;;;;OAMG;IACI,6BAA6B,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAGvD;;;;OAIG;IACI,6BAA6B,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAGpE"}