@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
@@ -14,21 +14,17 @@ const Newton_1 = require("../../numerics/Newton");
14
14
  /**
15
15
  * Czech cubic.
16
16
  * This is y= m*x^3 with
17
- * * x any point on the x axis
18
- * * `fraction` along the spiral goes to `x = fraction * L`
19
- * * m is gamma / (6RL)
17
+ * * x any point on the x axis.
18
+ * * `fraction` along the spiral goes to `x = fraction * L`.
19
+ * * m is gamma / (6RL).
20
20
  * * 1/(6RL) is the leading term of the sine series.
21
21
  * * `gamma = 2R/sqrt (4RR-LL)` pushes y down a little bit to simulate the lost series terms.
22
- * @param localToWorld
23
- * @param nominalL1
24
- * @param nominalR1
25
- * @param activeInterval
26
22
  * @internal
27
23
  */
28
24
  class CzechSpiralEvaluator extends CubicEvaluator_1.CubicEvaluator {
29
25
  nominalLength1;
30
26
  nominalRadius1;
31
- /** Constructor is private. Caller responsible for cubicM validity. */
27
+ /** Constructor is private. Caller responsible for cubicM validity. */
32
28
  constructor(length1, radius1, cubicM) {
33
29
  super(length1, cubicM);
34
30
  this.nominalLength1 = length1;
@@ -38,8 +34,6 @@ class CzechSpiralEvaluator extends CubicEvaluator_1.CubicEvaluator {
38
34
  * Return the scale factor between simple x^3 / (6RL) cubic and the czech correction.
39
35
  * * For typical case with l1/R1 smallish, this is just less than 1.0:
40
36
  * (0.25==>0.99215), (0.15==>0.997184), (0.10==>0.998749), (0.05==>999687)
41
- * @param length1
42
- * @param radius1
43
37
  */
44
38
  static gammaConstant(length1, radius1) {
45
39
  return 2.0 * radius1 / Math.sqrt(4.0 * radius1 * radius1 - length1 * length1);
@@ -47,10 +41,10 @@ class CzechSpiralEvaluator extends CubicEvaluator_1.CubicEvaluator {
47
41
  /** Compute the czech cubic constant. */
48
42
  static computeCubicM(length1, radius1) {
49
43
  const gamma = CzechSpiralEvaluator.gammaConstant(length1, radius1);
50
- // In the private update method, the LR values should have been vetted.
44
+ // in the private update method, the LR values should have been vetted
51
45
  if (gamma === undefined)
52
46
  return undefined;
53
- // If radius is negative, it shows up in gamma. But the a signed denominator undoes it. So take abs of denominator.
47
+ // if radius is negative, it shows up in gamma; but the a signed denominator undoes it so take abs of denominator
54
48
  return gamma / Math.abs((6.0 * radius1 * length1));
55
49
  }
56
50
  static create(length1, radius1) {
@@ -64,9 +58,11 @@ class CzechSpiralEvaluator extends CubicEvaluator_1.CubicEvaluator {
64
58
  this.nominalRadius1 *= scaleFactor;
65
59
  super.scaleInPlace(scaleFactor);
66
60
  }
67
- /** return a deep copy of the evaluator */
68
- clone() { return new CzechSpiralEvaluator(this.nominalLength1, this.nominalRadius1, this.cubicM); }
69
- /** Member by member matchup ... */
61
+ /** Return a deep copy of the evaluator. */
62
+ clone() {
63
+ return new CzechSpiralEvaluator(this.nominalLength1, this.nominalRadius1, this.cubicM);
64
+ }
65
+ /** Member by member matchup. */
70
66
  isAlmostEqual(other) {
71
67
  if (other instanceof CzechSpiralEvaluator) {
72
68
  return Geometry_1.Geometry.isSameCoordinate(this.nominalLength1, other.nominalLength1)
@@ -77,7 +73,8 @@ class CzechSpiralEvaluator extends CubicEvaluator_1.CubicEvaluator {
77
73
  /**
78
74
  * Return a (fast but mediocre) approximation of spiral length as a function of x axis position.
79
75
  * * This x-to-distance relation is not as precise as the CurvePrimitive method moveSignedDistanceFromFraction.
80
- * * It is supported here for users interested in replicating the Czech distance mapping rather than the more accurate CurvePrimitive measurements.
76
+ * * It is supported here for users interested in replicating the Czech distance mapping rather than the more accurate
77
+ * CurvePrimitive measurements.
81
78
  * @param x distance along the x axis.
82
79
  */
83
80
  xToCzechApproximateDistance(x) {
@@ -86,16 +83,15 @@ class CzechSpiralEvaluator extends CubicEvaluator_1.CubicEvaluator {
86
83
  /**
87
84
  * Return the inverse of the `forwardL2R2Map` function.
88
85
  * * The undefined result can only occur for distances outside the usual spirals.
89
- * @param s (approximate) distance along the spiral.
90
- *
86
+ * @param d (approximate) distance along the spiral.
91
87
  */
92
88
  czechApproximateDistanceToX(d) {
93
89
  return CzechSpiralEvaluator.inverseL2R2Map(d, 1.0, this.nominalLength1, this.nominalRadius1);
94
90
  }
95
91
  /**
96
- * evaluate a series expansion that is used with varying signs (plus or minus 1) in czech and italian spirals.
97
- * @param x distance along the x axis.
98
- */
92
+ * Evaluate a series expansion that is used with varying signs (plus or minus 1) in czech and italian spirals.
93
+ * @param x distance along the x axis.
94
+ */
99
95
  static forwardL2R2Map(x, sign, length, radius) {
100
96
  const l2 = length * length;
101
97
  const r2 = radius * radius;
@@ -106,17 +102,16 @@ class CzechSpiralEvaluator extends CubicEvaluator_1.CubicEvaluator {
106
102
  /**
107
103
  * Return the inverse of the `forwardL2R2Map` function.
108
104
  * * The undefined result can only occur for distances outside the usual spirals.
109
- * @param s (approximate) distance along the spiral.
110
- *
105
+ * @param d (approximate) distance along the spiral.
111
106
  */
112
- static inverseL2R2Map(b, sign, length, radius) {
107
+ static inverseL2R2Map(d, sign, length, radius) {
113
108
  const l2 = length * length;
114
109
  const r2 = radius * radius;
115
110
  const Q = 4.0 * r2 - l2;
116
111
  const a = sign / (10.0 * Q * l2);
117
- return Newton_1.SimpleNewton.runNewton1D(b, (x) => {
112
+ return Newton_1.SimpleNewton.runNewton1D(d, (x) => {
118
113
  const xx = x * x;
119
- return x * (1.0 + xx * xx * a) - b;
114
+ return x * (1.0 + xx * xx * a) - d;
120
115
  }, (x) => {
121
116
  const xx = x * x;
122
117
  return 1.0 + 5 * xx * xx * a;
@@ -127,39 +122,36 @@ exports.CzechSpiralEvaluator = CzechSpiralEvaluator;
127
122
  /**
128
123
  * Italian cubic.
129
124
  * This is y= m*x^3 with
130
- * * x any point on the x axis
131
- * * `fraction` along the spiral goes to `x = fraction * L`
132
- * * m is gamma / (6RL)
125
+ * * x any point on the x axis.
126
+ * * `fraction` along the spiral goes to `x = fraction * L`.
127
+ * * m is gamma / (6RL).
133
128
  * * 1/(6RL) is the leading term of the sine series.
134
129
  * * `gamma = 2R/sqrt (4RR-LL)` pushes y down a little bit to simulate the lost series terms.
135
- * @param localToWorld
136
- * @param nominalL1
137
- * @param nominalR1
138
- * @param activeInterval
139
130
  * @internal
140
131
  */
141
132
  class ItalianSpiralEvaluator extends CubicEvaluator_1.CubicEvaluator {
142
133
  nominalLength1;
143
134
  nominalRadius1;
144
- /** Compute the czech cubic constant.
145
- * ** funky mixture of lengths ....
135
+ /**
136
+ * Compute the czech cubic constant.
137
+ * * Funky mixture of lengths.
146
138
  */
147
139
  static computeCubicM(lengthXByForward, radius1) {
148
140
  const gamma = CzechSpiralEvaluator.gammaConstant(lengthXByForward, radius1);
149
- // In the private update method, the LR values should have been vetted.
141
+ // in the private update method, the LR values should have been vetted
150
142
  if (gamma === undefined)
151
143
  return undefined;
152
- // If radius is negative, it shows up in gamma. But the a signed denominator undoes it. So take abs of denominator.
144
+ // if radius is negative, it shows up in gamma; but the a signed denominator undoes it so take abs of denominator
153
145
  return gamma / Math.abs((6.0 * radius1 * lengthXByForward));
154
146
  }
155
- /** Constructor is private. Caller responsible for cubicM validity. */
147
+ /** Constructor is private. Caller responsible for cubicM validity. */
156
148
  constructor(length1, radius1, lengthX, cubicM) {
157
149
  super(lengthX, cubicM);
158
150
  this.nominalLength1 = length1;
159
151
  this.nominalRadius1 = radius1;
160
152
  }
161
153
  static create(length1, radius1) {
162
- // um ... this seems goofy. lengthX from forward, then invert for another . But that's what the native code does ...
154
+ // this seems goofy.; lengthX from forward, then invert for another but that's what the native code does too
163
155
  const lengthX = CzechSpiralEvaluator.forwardL2R2Map(length1, -1.0, length1, radius1);
164
156
  const lengthX1 = CzechSpiralEvaluator.inverseL2R2Map(length1, 1.0, lengthX, radius1);
165
157
  if (lengthX1 === undefined)
@@ -174,9 +166,11 @@ class ItalianSpiralEvaluator extends CubicEvaluator_1.CubicEvaluator {
174
166
  this.nominalRadius1 *= scaleFactor;
175
167
  super.scaleInPlace(scaleFactor);
176
168
  }
177
- /** return a deep copy of the evaluator */
178
- clone() { return new ItalianSpiralEvaluator(this.nominalLength1, this.nominalRadius1, super.axisLength, this.cubicM); }
179
- /** Member by member matchup ... */
169
+ /** Return a deep copy of the evaluator. */
170
+ clone() {
171
+ return new ItalianSpiralEvaluator(this.nominalLength1, this.nominalRadius1, super.axisLength, this.cubicM);
172
+ }
173
+ /** Member by member matchup. */
180
174
  isAlmostEqual(other) {
181
175
  if (other instanceof ItalianSpiralEvaluator) {
182
176
  return Geometry_1.Geometry.isSameCoordinate(this.nominalLength1, other.nominalLength1)
@@ -185,19 +179,19 @@ class ItalianSpiralEvaluator extends CubicEvaluator_1.CubicEvaluator {
185
179
  return false;
186
180
  }
187
181
  /**
188
- * Return a (fast but mediocre) approximation of spiral length as a function of x axis position.
189
- * * This x-to-distance relation is not as precise as the CurvePrimitive method moveSignedDistanceFromFraction.
190
- * * It is supported here for users interested in replicating the Czech distance mapping rather than the more accurate CurvePrimitive measurements.
191
- * @param x distance along the x axis.
192
- */
182
+ * Return a (fast but mediocre) approximation of spiral length as a function of x axis position.
183
+ * * This x-to-distance relation is not as precise as the CurvePrimitive method moveSignedDistanceFromFraction.
184
+ * * It is supported here for users interested in replicating the Czech distance mapping rather than the more accurate
185
+ * CurvePrimitive measurements.
186
+ * @param x distance along the x axis.
187
+ */
193
188
  distanceToItalianApproximateX(x) {
194
189
  return CzechSpiralEvaluator.forwardL2R2Map(x, -1.0, this.nominalLength1, this.nominalRadius1);
195
190
  }
196
191
  /**
197
192
  * Return the inverse of the `forwardL2R2Map` function.
198
193
  * * The undefined result can only occur for distances outside the usual spirals.
199
- * @param s (approximate) distance along the spiral.
200
- *
194
+ * @param d (approximate) distance along the spiral.
201
195
  */
202
196
  xToItalianApproximateDistance(d) {
203
197
  return CzechSpiralEvaluator.inverseL2R2Map(d, -1.0, this.nominalLength1, this.nominalRadius1);
@@ -1 +1 @@
1
- {"version":3,"file":"CzechSpiralEvaluator.js","sourceRoot":"","sources":["../../../../src/curve/spiral/CzechSpiralEvaluator.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F;;GAEG;AACH,6CAA0C;AAC1C,qDAAkD;AAClD,kDAAqD;AACrD;;;;;;;;;;;;;GAaG;AACH,MAAa,oBAAqB,SAAQ,+BAAc;IAC/C,cAAc,CAAS;IACvB,cAAc,CAAS;IAE9B,uEAAuE;IACvE,YAAoB,OAAe,EAAE,OAAe,EAAE,MAAc;QAClE,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAC9B,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;IAChC,CAAC;IACD;;;;;;OAMG;IACI,MAAM,CAAC,aAAa,CAAC,OAAe,EAAE,OAAe;QAC1D,OAAO,GAAG,GAAG,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,CAAC;IAChF,CAAC;IACD,wCAAwC;IACjC,MAAM,CAAC,aAAa,CAAC,OAAe,EAAE,OAAe;QAC1D,MAAM,KAAK,GAAG,oBAAoB,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACnE,uEAAuE;QACvE,IAAI,KAAK,KAAK,SAAS;YACrB,OAAO,SAAS,CAAC;QACnB,qHAAqH;QACrH,OAAO,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IACrD,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,OAAe,EAAE,OAAe;QACnD,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,SAAS;YACjB,OAAO,SAAS,CAAC;QACnB,OAAO,IAAI,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC;IAEe,YAAY,CAAC,WAAmB;QAC9C,IAAI,CAAC,cAAc,IAAI,WAAW,CAAC;QACnC,IAAI,CAAC,cAAc,IAAI,WAAW,CAAC;QACnC,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;IACD,0CAA0C;IACnC,KAAK,KAA2B,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAChI,mCAAmC;IAC5B,aAAa,CAAC,KAAU;QAC7B,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;YAC1C,OAAO,mBAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC;mBACtE,mBAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACI,2BAA2B,CAAC,CAAS;QAC1C,OAAO,oBAAoB,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC/F,CAAC;IACD;;;;;OAKG;IACI,2BAA2B,CAAC,CAAS;QAC1C,OAAO,oBAAoB,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC/F,CAAC;IAED;;;SAGK;IACE,MAAM,CAAC,cAAc,CAAC,CAAS,EAAE,IAAY,EAAE,MAAc,EAAE,MAAc;QAClF,MAAM,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC;QAC3B,MAAM,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC;QAC3B,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;QACxB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC;IACD;;;;;OAKG;IACI,MAAM,CAAC,cAAc,CAAC,CAAS,EAAE,IAAY,EAAE,MAAc,EAAE,MAAc;QAClF,MAAM,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC;QAC3B,MAAM,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC;QAC3B,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QACjC,OAAO,qBAAY,CAAC,WAAW,CAAC,CAAC,EAC/B,CAAC,CAAS,EAAE,EAAE;YACZ,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC,EACD,CAAC,CAAS,EAAE,EAAE;YACZ,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACP,CAAC;CACF;AAxGD,oDAwGC;AACD;;;;;;;;;;;;;GAaG;AACH,MAAa,sBAAuB,SAAQ,+BAAc;IACjD,cAAc,CAAS;IACvB,cAAc,CAAS;IAE9B;;OAEG;IACK,MAAM,CAAC,aAAa,CAAC,gBAAwB,EAAE,OAAe;QACpE,MAAM,KAAK,GAAG,oBAAoB,CAAC,aAAa,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAC5E,uEAAuE;QACvE,IAAI,KAAK,KAAK,SAAS;YACrB,OAAO,SAAS,CAAC;QACnB,qHAAqH;QACrH,OAAO,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,uEAAuE;IACvE,YAAoB,OAAe,EAAE,OAAe,EAAE,OAAe,EAAE,MAAc;QACnF,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAC9B,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;IAChC,CAAC;IACM,MAAM,CAAC,MAAM,CAAC,OAAe,EAAE,OAAe;QACnD,uHAAuH;QACvH,MAAM,OAAO,GAAG,oBAAoB,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACrF,MAAM,QAAQ,GAAG,oBAAoB,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACrF,IAAI,QAAQ,KAAK,SAAS;YACxB,OAAO,SAAS,CAAC;QACnB,MAAM,CAAC,GAAG,sBAAsB,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,SAAS;YACjB,OAAO,SAAS,CAAC;QACnB,OAAO,IAAI,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;IAEe,YAAY,CAAC,WAAmB;QAC9C,IAAI,CAAC,cAAc,IAAI,WAAW,CAAC;QACnC,IAAI,CAAC,cAAc,IAAI,WAAW,CAAC;QACnC,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;IACD,0CAA0C;IACnC,KAAK,KAA6B,OAAO,IAAI,sBAAsB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACtJ,mCAAmC;IAC5B,aAAa,CAAC,KAAU;QAC7B,IAAI,KAAK,YAAY,sBAAsB,EAAE,CAAC;YAC5C,OAAO,mBAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC;mBACtE,mBAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD;;;;;SAKK;IACE,6BAA6B,CAAC,CAAS;QAC5C,OAAO,oBAAoB,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAChG,CAAC;IACD;;;;;OAKG;IACI,6BAA6B,CAAC,CAAS;QAC5C,OAAO,oBAAoB,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAChG,CAAC;CACF;AAnED,wDAmEC","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 { Geometry } from \"../../Geometry\";\r\nimport { CubicEvaluator } from \"./CubicEvaluator\";\r\nimport { SimpleNewton } from \"../../numerics/Newton\";\r\n/**\r\n * Czech cubic.\r\n * This is y= m*x^3 with\r\n * * x any point on the x axis\r\n * * `fraction` along the spiral goes to `x = fraction * L`\r\n * * m is gamma / (6RL)\r\n * * 1/(6RL) is the leading term of the sine series.\r\n * * `gamma = 2R/sqrt (4RR-LL)` pushes y down a little bit to simulate the lost series terms.\r\n * @param localToWorld\r\n * @param nominalL1\r\n * @param nominalR1\r\n * @param activeInterval\r\n * @internal\r\n */\r\nexport class CzechSpiralEvaluator extends CubicEvaluator {\r\n public nominalLength1: number;\r\n public nominalRadius1: number;\r\n\r\n /** Constructor is private. Caller responsible for cubicM validity. */\r\n private constructor(length1: number, radius1: number, cubicM: number) {\r\n super(length1, cubicM);\r\n this.nominalLength1 = length1;\r\n this.nominalRadius1 = radius1;\r\n }\r\n /**\r\n * Return the scale factor between simple x^3 / (6RL) cubic and the czech correction.\r\n * * For typical case with l1/R1 smallish, this is just less than 1.0:\r\n * (0.25==>0.99215), (0.15==>0.997184), (0.10==>0.998749), (0.05==>999687)\r\n * @param length1\r\n * @param radius1\r\n */\r\n public static gammaConstant(length1: number, radius1: number): number | undefined {\r\n return 2.0 * radius1 / Math.sqrt(4.0 * radius1 * radius1 - length1 * length1);\r\n }\r\n /** Compute the czech cubic constant. */\r\n public static computeCubicM(length1: number, radius1: number): number | undefined {\r\n const gamma = CzechSpiralEvaluator.gammaConstant(length1, radius1);\r\n // In the private update method, the LR values should have been vetted.\r\n if (gamma === undefined)\r\n return undefined;\r\n // If radius is negative, it shows up in gamma. But the a signed denominator undoes it. So take abs of denominator.\r\n return gamma / Math.abs((6.0 * radius1 * length1));\r\n }\r\n\r\n public static create(length1: number, radius1: number): CzechSpiralEvaluator | undefined {\r\n const m = this.computeCubicM(length1, radius1);\r\n if (m === undefined)\r\n return undefined;\r\n return new CzechSpiralEvaluator(length1, radius1, m);\r\n }\r\n\r\n public override scaleInPlace(scaleFactor: number) {\r\n this.nominalLength1 *= scaleFactor;\r\n this.nominalRadius1 *= scaleFactor;\r\n super.scaleInPlace(scaleFactor);\r\n }\r\n /** return a deep copy of the evaluator */\r\n public clone(): CzechSpiralEvaluator { return new CzechSpiralEvaluator(this.nominalLength1, this.nominalRadius1, this.cubicM); }\r\n /** Member by member matchup ... */\r\n public isAlmostEqual(other: any): boolean {\r\n if (other instanceof CzechSpiralEvaluator) {\r\n return Geometry.isSameCoordinate(this.nominalLength1, other.nominalLength1)\r\n && Geometry.isSameCoordinate(this.nominalRadius1, other.nominalRadius1);\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Return a (fast but mediocre) approximation of spiral length as a function of x axis position.\r\n * * This x-to-distance relation is not as precise as the CurvePrimitive method moveSignedDistanceFromFraction.\r\n * * It is supported here for users interested in replicating the Czech distance mapping rather than the more accurate CurvePrimitive measurements.\r\n * @param x distance along the x axis.\r\n */\r\n public xToCzechApproximateDistance(x: number): number {\r\n return CzechSpiralEvaluator.forwardL2R2Map(x, 1.0, this.nominalLength1, this.nominalRadius1);\r\n }\r\n /**\r\n * Return the inverse of the `forwardL2R2Map` function.\r\n * * The undefined result can only occur for distances outside the usual spirals.\r\n * @param s (approximate) distance along the spiral.\r\n *\r\n */\r\n public czechApproximateDistanceToX(d: number): number | undefined {\r\n return CzechSpiralEvaluator.inverseL2R2Map(d, 1.0, this.nominalLength1, this.nominalRadius1);\r\n }\r\n\r\n /**\r\n * evaluate a series expansion that is used with varying signs (plus or minus 1) in czech and italian spirals.\r\n * @param x distance along the x axis.\r\n */\r\n public static forwardL2R2Map(x: number, sign: number, length: number, radius: number): number {\r\n const l2 = length * length;\r\n const r2 = radius * radius;\r\n const Q = 4.0 * r2 - l2;\r\n const xx = x * x;\r\n return x * (1.0 + sign * xx * xx / (10.0 * Q * l2));\r\n }\r\n /**\r\n * Return the inverse of the `forwardL2R2Map` function.\r\n * * The undefined result can only occur for distances outside the usual spirals.\r\n * @param s (approximate) distance along the spiral.\r\n *\r\n */\r\n public static inverseL2R2Map(b: number, sign: number, length: number, radius: number): number | undefined {\r\n const l2 = length * length;\r\n const r2 = radius * radius;\r\n const Q = 4.0 * r2 - l2;\r\n const a = sign / (10.0 * Q * l2);\r\n return SimpleNewton.runNewton1D(b,\r\n (x: number) => {\r\n const xx = x * x;\r\n return x * (1.0 + xx * xx * a) - b;\r\n },\r\n (x: number) => {\r\n const xx = x * x;\r\n return 1.0 + 5 * xx * xx * a;\r\n });\r\n }\r\n}\r\n/**\r\n * Italian cubic.\r\n * This is y= m*x^3 with\r\n * * x any point on the x axis\r\n * * `fraction` along the spiral goes to `x = fraction * L`\r\n * * m is gamma / (6RL)\r\n * * 1/(6RL) is the leading term of the sine series.\r\n * * `gamma = 2R/sqrt (4RR-LL)` pushes y down a little bit to simulate the lost series terms.\r\n * @param localToWorld\r\n * @param nominalL1\r\n * @param nominalR1\r\n * @param activeInterval\r\n * @internal\r\n */\r\nexport class ItalianSpiralEvaluator extends CubicEvaluator {\r\n public nominalLength1: number;\r\n public nominalRadius1: number;\r\n\r\n /** Compute the czech cubic constant.\r\n * ** funky mixture of lengths ....\r\n */\r\n private static computeCubicM(lengthXByForward: number, radius1: number): number | undefined {\r\n const gamma = CzechSpiralEvaluator.gammaConstant(lengthXByForward, radius1);\r\n // In the private update method, the LR values should have been vetted.\r\n if (gamma === undefined)\r\n return undefined;\r\n // If radius is negative, it shows up in gamma. But the a signed denominator undoes it. So take abs of denominator.\r\n return gamma / Math.abs((6.0 * radius1 * lengthXByForward));\r\n }\r\n\r\n /** Constructor is private. Caller responsible for cubicM validity. */\r\n private constructor(length1: number, radius1: number, lengthX: number, cubicM: number) {\r\n super(lengthX, cubicM);\r\n this.nominalLength1 = length1;\r\n this.nominalRadius1 = radius1;\r\n }\r\n public static create(length1: number, radius1: number): ItalianSpiralEvaluator | undefined {\r\n // um ... this seems goofy. lengthX from forward, then invert for another . But that's what the native code does ...\r\n const lengthX = CzechSpiralEvaluator.forwardL2R2Map(length1, -1.0, length1, radius1);\r\n const lengthX1 = CzechSpiralEvaluator.inverseL2R2Map(length1, 1.0, lengthX, radius1);\r\n if (lengthX1 === undefined)\r\n return undefined;\r\n const m = ItalianSpiralEvaluator.computeCubicM(lengthX, radius1);\r\n if (m === undefined)\r\n return undefined;\r\n return new ItalianSpiralEvaluator(length1, radius1, lengthX1, m);\r\n }\r\n\r\n public override scaleInPlace(scaleFactor: number) {\r\n this.nominalLength1 *= scaleFactor;\r\n this.nominalRadius1 *= scaleFactor;\r\n super.scaleInPlace(scaleFactor);\r\n }\r\n /** return a deep copy of the evaluator */\r\n public clone(): ItalianSpiralEvaluator { return new ItalianSpiralEvaluator(this.nominalLength1, this.nominalRadius1, super.axisLength, this.cubicM); }\r\n /** Member by member matchup ... */\r\n public isAlmostEqual(other: any): boolean {\r\n if (other instanceof ItalianSpiralEvaluator) {\r\n return Geometry.isSameCoordinate(this.nominalLength1, other.nominalLength1)\r\n && Geometry.isSameCoordinate(this.nominalRadius1, other.nominalRadius1);\r\n }\r\n return false;\r\n }\r\n /**\r\n * Return a (fast but mediocre) approximation of spiral length as a function of x axis position.\r\n * * This x-to-distance relation is not as precise as the CurvePrimitive method moveSignedDistanceFromFraction.\r\n * * It is supported here for users interested in replicating the Czech distance mapping rather than the more accurate CurvePrimitive measurements.\r\n * @param x distance along the x axis.\r\n */\r\n public distanceToItalianApproximateX(x: number): number {\r\n return CzechSpiralEvaluator.forwardL2R2Map(x, -1.0, this.nominalLength1, this.nominalRadius1);\r\n }\r\n /**\r\n * Return the inverse of the `forwardL2R2Map` function.\r\n * * The undefined result can only occur for distances outside the usual spirals.\r\n * @param s (approximate) distance along the spiral.\r\n *\r\n */\r\n public xToItalianApproximateDistance(d: number): number | undefined {\r\n return CzechSpiralEvaluator.inverseL2R2Map(d, -1.0, this.nominalLength1, this.nominalRadius1);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"CzechSpiralEvaluator.js","sourceRoot":"","sources":["../../../../src/curve/spiral/CzechSpiralEvaluator.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 */\nimport { Geometry } from \"../../Geometry\";\nimport { CubicEvaluator } from \"./CubicEvaluator\";\nimport { SimpleNewton } from \"../../numerics/Newton\";\n\n/**\n * Czech cubic.\n * This is y= m*x^3 with\n * * x any point on the x axis.\n * * `fraction` along the spiral goes to `x = fraction * L`.\n * * m is gamma / (6RL).\n * * 1/(6RL) is the leading term of the sine series.\n * * `gamma = 2R/sqrt (4RR-LL)` pushes y down a little bit to simulate the lost series terms.\n * @internal\n */\nexport class CzechSpiralEvaluator extends CubicEvaluator {\n public nominalLength1: number;\n public nominalRadius1: number;\n /** Constructor is private. Caller responsible for cubicM validity. */\n private constructor(length1: number, radius1: number, cubicM: number) {\n super(length1, cubicM);\n this.nominalLength1 = length1;\n this.nominalRadius1 = radius1;\n }\n /**\n * Return the scale factor between simple x^3 / (6RL) cubic and the czech correction.\n * * For typical case with l1/R1 smallish, this is just less than 1.0:\n * (0.25==>0.99215), (0.15==>0.997184), (0.10==>0.998749), (0.05==>999687)\n */\n public static gammaConstant(length1: number, radius1: number): number | undefined {\n return 2.0 * radius1 / Math.sqrt(4.0 * radius1 * radius1 - length1 * length1);\n }\n /** Compute the czech cubic constant. */\n public static computeCubicM(length1: number, radius1: number): number | undefined {\n const gamma = CzechSpiralEvaluator.gammaConstant(length1, radius1);\n // in the private update method, the LR values should have been vetted\n if (gamma === undefined)\n return undefined;\n // if radius is negative, it shows up in gamma; but the a signed denominator undoes it so take abs of denominator\n return gamma / Math.abs((6.0 * radius1 * length1));\n }\n public static create(length1: number, radius1: number): CzechSpiralEvaluator | undefined {\n const m = this.computeCubicM(length1, radius1);\n if (m === undefined)\n return undefined;\n return new CzechSpiralEvaluator(length1, radius1, m);\n }\n public override scaleInPlace(scaleFactor: number) {\n this.nominalLength1 *= scaleFactor;\n this.nominalRadius1 *= scaleFactor;\n super.scaleInPlace(scaleFactor);\n }\n /** Return a deep copy of the evaluator. */\n public clone(): CzechSpiralEvaluator {\n return new CzechSpiralEvaluator(this.nominalLength1, this.nominalRadius1, this.cubicM);\n }\n /** Member by member matchup. */\n public isAlmostEqual(other: any): boolean {\n if (other instanceof CzechSpiralEvaluator) {\n return Geometry.isSameCoordinate(this.nominalLength1, other.nominalLength1)\n && Geometry.isSameCoordinate(this.nominalRadius1, other.nominalRadius1);\n }\n return false;\n }\n /**\n * Return a (fast but mediocre) approximation of spiral length as a function of x axis position.\n * * This x-to-distance relation is not as precise as the CurvePrimitive method moveSignedDistanceFromFraction.\n * * It is supported here for users interested in replicating the Czech distance mapping rather than the more accurate\n * CurvePrimitive measurements.\n * @param x distance along the x axis.\n */\n public xToCzechApproximateDistance(x: number): number {\n return CzechSpiralEvaluator.forwardL2R2Map(x, 1.0, this.nominalLength1, this.nominalRadius1);\n }\n /**\n * Return the inverse of the `forwardL2R2Map` function.\n * * The undefined result can only occur for distances outside the usual spirals.\n * @param d (approximate) distance along the spiral.\n */\n public czechApproximateDistanceToX(d: number): number | undefined {\n return CzechSpiralEvaluator.inverseL2R2Map(d, 1.0, this.nominalLength1, this.nominalRadius1);\n }\n /**\n * Evaluate a series expansion that is used with varying signs (plus or minus 1) in czech and italian spirals.\n * @param x distance along the x axis.\n */\n public static forwardL2R2Map(x: number, sign: number, length: number, radius: number): number {\n const l2 = length * length;\n const r2 = radius * radius;\n const Q = 4.0 * r2 - l2;\n const xx = x * x;\n return x * (1.0 + sign * xx * xx / (10.0 * Q * l2));\n }\n /**\n * Return the inverse of the `forwardL2R2Map` function.\n * * The undefined result can only occur for distances outside the usual spirals.\n * @param d (approximate) distance along the spiral.\n */\n public static inverseL2R2Map(d: number, sign: number, length: number, radius: number): number | undefined {\n const l2 = length * length;\n const r2 = radius * radius;\n const Q = 4.0 * r2 - l2;\n const a = sign / (10.0 * Q * l2);\n return SimpleNewton.runNewton1D(\n d,\n (x: number) => {\n const xx = x * x;\n return x * (1.0 + xx * xx * a) - d;\n },\n (x: number) => {\n const xx = x * x;\n return 1.0 + 5 * xx * xx * a;\n },\n );\n }\n}\n\n/**\n * Italian cubic.\n * This is y= m*x^3 with\n * * x any point on the x axis.\n * * `fraction` along the spiral goes to `x = fraction * L`.\n * * m is gamma / (6RL).\n * * 1/(6RL) is the leading term of the sine series.\n * * `gamma = 2R/sqrt (4RR-LL)` pushes y down a little bit to simulate the lost series terms.\n * @internal\n */\nexport class ItalianSpiralEvaluator extends CubicEvaluator {\n public nominalLength1: number;\n public nominalRadius1: number;\n\n /**\n * Compute the czech cubic constant.\n * * Funky mixture of lengths.\n */\n private static computeCubicM(lengthXByForward: number, radius1: number): number | undefined {\n const gamma = CzechSpiralEvaluator.gammaConstant(lengthXByForward, radius1);\n // in the private update method, the LR values should have been vetted\n if (gamma === undefined)\n return undefined;\n // if radius is negative, it shows up in gamma; but the a signed denominator undoes it so take abs of denominator\n return gamma / Math.abs((6.0 * radius1 * lengthXByForward));\n }\n /** Constructor is private. Caller responsible for cubicM validity. */\n private constructor(length1: number, radius1: number, lengthX: number, cubicM: number) {\n super(lengthX, cubicM);\n this.nominalLength1 = length1;\n this.nominalRadius1 = radius1;\n }\n public static create(length1: number, radius1: number): ItalianSpiralEvaluator | undefined {\n // this seems goofy.; lengthX from forward, then invert for another but that's what the native code does too\n const lengthX = CzechSpiralEvaluator.forwardL2R2Map(length1, -1.0, length1, radius1);\n const lengthX1 = CzechSpiralEvaluator.inverseL2R2Map(length1, 1.0, lengthX, radius1);\n if (lengthX1 === undefined)\n return undefined;\n const m = ItalianSpiralEvaluator.computeCubicM(lengthX, radius1);\n if (m === undefined)\n return undefined;\n return new ItalianSpiralEvaluator(length1, radius1, lengthX1, m);\n }\n public override scaleInPlace(scaleFactor: number) {\n this.nominalLength1 *= scaleFactor;\n this.nominalRadius1 *= scaleFactor;\n super.scaleInPlace(scaleFactor);\n }\n /** Return a deep copy of the evaluator. */\n public clone(): ItalianSpiralEvaluator {\n return new ItalianSpiralEvaluator(this.nominalLength1, this.nominalRadius1, super.axisLength, this.cubicM);\n }\n /** Member by member matchup. */\n public isAlmostEqual(other: any): boolean {\n if (other instanceof ItalianSpiralEvaluator) {\n return Geometry.isSameCoordinate(this.nominalLength1, other.nominalLength1)\n && Geometry.isSameCoordinate(this.nominalRadius1, other.nominalRadius1);\n }\n return false;\n }\n /**\n * Return a (fast but mediocre) approximation of spiral length as a function of x axis position.\n * * This x-to-distance relation is not as precise as the CurvePrimitive method moveSignedDistanceFromFraction.\n * * It is supported here for users interested in replicating the Czech distance mapping rather than the more accurate\n * CurvePrimitive measurements.\n * @param x distance along the x axis.\n */\n public distanceToItalianApproximateX(x: number): number {\n return CzechSpiralEvaluator.forwardL2R2Map(x, -1.0, this.nominalLength1, this.nominalRadius1);\n }\n /**\n * Return the inverse of the `forwardL2R2Map` function.\n * * The undefined result can only occur for distances outside the usual spirals.\n * @param d (approximate) distance along the spiral.\n */\n public xToItalianApproximateDistance(d: number): number | undefined {\n return CzechSpiralEvaluator.inverseL2R2Map(d, -1.0, this.nominalLength1, this.nominalRadius1);\n }\n}\n"]}
@@ -11,9 +11,9 @@ export declare class DirectHalfCosineSpiralEvaluator extends XYCurveEvaluator {
11
11
  constructor(length1: number, radius1: number);
12
12
  private updateConstants;
13
13
  scaleInPlace(scaleFactor: number): void;
14
- /** return a deep copy of the evaluator */
14
+ /** Return a deep copy of the evaluator. */
15
15
  clone(): DirectHalfCosineSpiralEvaluator;
16
- /** Member by member matchup ... */
16
+ /** Member by member matchup. */
17
17
  isAlmostEqual(other: any): boolean;
18
18
  /** Evaluate X at fractional position. */
19
19
  fractionToX(fraction: number): number;
@@ -1 +1 @@
1
- {"version":3,"file":"DirectHalfCosineSpiralEvaluator.d.ts","sourceRoot":"","sources":["../../../../src/curve/spiral/DirectHalfCosineSpiralEvaluator.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;GAEG;AACH,qBAAa,+BAAgC,SAAQ,gBAAgB;IAC5D,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,GAAG,CAAS;gBACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAWnD,OAAO,CAAC,eAAe;IAGhB,YAAY,CAAC,WAAW,EAAE,MAAM;IAKvC,0CAA0C;IACnC,KAAK,IAAI,+BAA+B;IAC/C,mCAAmC;IAC5B,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAQzC,yCAAyC;IAClC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAC5C,yCAAyC;IAClC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI5C,gFAAgF;IACzE,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAE9C,gFAAgF;IAEzE,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAK7C,uFAAuF;IAChF,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAE/C,sFAAsF;IAE/E,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAK9C,uFAAuF;IAChF,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAE/C,sFAAsF;IAE/E,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAM9C,yEAAyE;IAEzD,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAIpE,mDAAmD;IAC5C,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAUlD"}
1
+ {"version":3,"file":"DirectHalfCosineSpiralEvaluator.d.ts","sourceRoot":"","sources":["../../../../src/curve/spiral/DirectHalfCosineSpiralEvaluator.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD;;GAEG;AACH,qBAAa,+BAAgC,SAAQ,gBAAgB;IAC5D,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,GAAG,CAAS;gBACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAUnD,OAAO,CAAC,eAAe;IAGhB,YAAY,CAAC,WAAW,EAAE,MAAM;IAKvC,2CAA2C;IACpC,KAAK,IAAI,+BAA+B;IAG/C,gCAAgC;IACzB,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAQzC,yCAAyC;IAClC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAG5C,yCAAyC;IAClC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI5C,gFAAgF;IACzE,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAG9C,gFAAgF;IACzE,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAK7C,uFAAuF;IAChF,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAG/C,sFAAsF;IAC/E,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAK9C,uFAAuF;IAChF,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAG/C,sFAAsF;IAC/E,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAK9C,yEAAyE;IACzD,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAGpE,mDAAmD;IAC5C,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAWlD"}
@@ -38,9 +38,11 @@ class DirectHalfCosineSpiralEvaluator extends XYCurveEvaluator_1.XYCurveEvaluato
38
38
  this.nominalRadius1 *= scaleFactor;
39
39
  this.updateConstants();
40
40
  }
41
- /** return a deep copy of the evaluator */
42
- clone() { return new DirectHalfCosineSpiralEvaluator(this.nominalLength1, this.nominalRadius1); }
43
- /** Member by member matchup ... */
41
+ /** Return a deep copy of the evaluator. */
42
+ clone() {
43
+ return new DirectHalfCosineSpiralEvaluator(this.nominalLength1, this.nominalRadius1);
44
+ }
45
+ /** Member by member matchup. */
44
46
  isAlmostEqual(other) {
45
47
  if (other instanceof DirectHalfCosineSpiralEvaluator) {
46
48
  return Geometry_1.Geometry.isSameCoordinate(this.nominalLength1, other.nominalLength1)
@@ -50,14 +52,18 @@ class DirectHalfCosineSpiralEvaluator extends XYCurveEvaluator_1.XYCurveEvaluato
50
52
  return false;
51
53
  }
52
54
  /** Evaluate X at fractional position. */
53
- fractionToX(fraction) { return fraction * this.nominalLength1; }
55
+ fractionToX(fraction) {
56
+ return fraction * this.nominalLength1;
57
+ }
54
58
  /** Evaluate Y at fractional position. */
55
59
  fractionToY(fraction) {
56
60
  const theta = fraction * Math.PI;
57
61
  return this._c * (this._c2 * fraction * fraction - this._c1 * (1.0 - Math.cos(theta)));
58
62
  }
59
63
  /** Evaluate derivative of X with respect to fraction at fractional position. */
60
- fractionToDX(_fraction) { return this.nominalLength1; }
64
+ fractionToDX(_fraction) {
65
+ return this.nominalLength1;
66
+ }
61
67
  /** Evaluate derivative of Y with respect to fraction at fractional position. */
62
68
  fractionToDY(fraction) {
63
69
  const pi = Math.PI;
@@ -65,7 +71,9 @@ class DirectHalfCosineSpiralEvaluator extends XYCurveEvaluator_1.XYCurveEvaluato
65
71
  return this._c * (2.0 * this._c2 * fraction - this._c1 * pi * Math.sin(theta));
66
72
  }
67
73
  /** Evaluate second derivative of X with respect to fraction at fractional position. */
68
- fractionToDDX(_fraction) { return 0.0; }
74
+ fractionToDDX(_fraction) {
75
+ return 0.0;
76
+ }
69
77
  /** Evaluate third derivative of Y with respect to fraction at fractional position. */
70
78
  fractionToDDY(fraction) {
71
79
  const pi = Math.PI;
@@ -73,7 +81,9 @@ class DirectHalfCosineSpiralEvaluator extends XYCurveEvaluator_1.XYCurveEvaluato
73
81
  return this._c * (2.0 * this._c2 - this._c1 * pi * pi * Math.cos(theta));
74
82
  }
75
83
  /** Evaluate second derivative of X with respect to fraction at fractional position. */
76
- fractionToD3X(_fraction) { return 0.0; }
84
+ fractionToD3X(_fraction) {
85
+ return 0.0;
86
+ }
77
87
  /** Evaluate third derivative of Y with respect to fraction at fractional position. */
78
88
  fractionToD3Y(fraction) {
79
89
  const pi = Math.PI;
@@ -1 +1 @@
1
- {"version":3,"file":"DirectHalfCosineSpiralEvaluator.js","sourceRoot":"","sources":["../../../../src/curve/spiral/DirectHalfCosineSpiralEvaluator.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\nimport { Geometry } from \"../../Geometry\";\r\nimport { XYCurveEvaluator } from \"./XYCurveEvaluator\";\r\nimport { SimpleNewton } from \"../../numerics/Newton\";\r\n/**\r\n * @internal\r\n */\r\nexport class DirectHalfCosineSpiralEvaluator extends XYCurveEvaluator {\r\n public nominalLength1: number;\r\n public nominalRadius1: number;\r\n private _c: number;\r\n private _c1: number;\r\n private _c2: number;\r\n public constructor(length1: number, radius1: number) {\r\n super();\r\n this.nominalLength1 = length1;\r\n this.nominalRadius1 = radius1;\r\n const pi = Math.PI;\r\n this._c1 = 1.0 / (2.0 * pi * pi);\r\n this._c2 = 0.25;\r\n this._c = 0.0; // TO BE UPDATED BELOW\r\n this.updateConstants();\r\n }\r\n\r\n private updateConstants() {\r\n this._c = this.nominalLength1 * this.nominalLength1 / this.nominalRadius1;\r\n }\r\n public scaleInPlace(scaleFactor: number) {\r\n this.nominalLength1 *= scaleFactor;\r\n this.nominalRadius1 *= scaleFactor;\r\n this.updateConstants();\r\n }\r\n /** return a deep copy of the evaluator */\r\n public clone(): DirectHalfCosineSpiralEvaluator { return new DirectHalfCosineSpiralEvaluator(this.nominalLength1, this.nominalRadius1); }\r\n /** Member by member matchup ... */\r\n public isAlmostEqual(other: any): boolean {\r\n if (other instanceof DirectHalfCosineSpiralEvaluator) {\r\n return Geometry.isSameCoordinate(this.nominalLength1, other.nominalLength1)\r\n && Geometry.isSameCoordinate(this.nominalRadius1, other.nominalRadius1);\r\n // remark: c,c1,c2 are computed, need not be tested.\r\n }\r\n return false;\r\n }\r\n /** Evaluate X at fractional position. */\r\n public fractionToX(fraction: number): number { return fraction * this.nominalLength1; }\r\n /** Evaluate Y at fractional position. */\r\n public fractionToY(fraction: number): number {\r\n const theta = fraction * Math.PI;\r\n return this._c * (this._c2 * fraction * fraction - this._c1 * (1.0 - Math.cos(theta)));\r\n }\r\n /** Evaluate derivative of X with respect to fraction at fractional position. */\r\n public fractionToDX(_fraction: number): number { return this.nominalLength1; }\r\n\r\n /** Evaluate derivative of Y with respect to fraction at fractional position. */\r\n\r\n public fractionToDY(fraction: number): number {\r\n const pi = Math.PI;\r\n const theta = fraction * pi;\r\n return this._c * (2.0 * this._c2 * fraction - this._c1 * pi * Math.sin(theta));\r\n }\r\n /** Evaluate second derivative of X with respect to fraction at fractional position. */\r\n public fractionToDDX(_fraction: number): number { return 0.0; }\r\n\r\n /** Evaluate third derivative of Y with respect to fraction at fractional position. */\r\n\r\n public fractionToDDY(fraction: number): number {\r\n const pi = Math.PI;\r\n const theta = fraction * pi;\r\n return this._c * (2.0 * this._c2 - this._c1 * pi * pi * Math.cos(theta));\r\n }\r\n /** Evaluate second derivative of X with respect to fraction at fractional position. */\r\n public fractionToD3X(_fraction: number): number { return 0.0; }\r\n\r\n /** Evaluate third derivative of Y with respect to fraction at fractional position. */\r\n\r\n public fractionToD3Y(fraction: number): number {\r\n const pi = Math.PI;\r\n const theta = fraction * pi;\r\n return this._c * this._c1 * pi * pi * pi * Math.sin(theta);\r\n }\r\n\r\n /** Return the magnitude of the first vector at fractional coordinate. */\r\n\r\n public override fractionToTangentMagnitude(fraction: number): number {\r\n return Geometry.hypotenuseXY(this.fractionToDX(fraction), this.fractionToDY(fraction));\r\n\r\n }\r\n /** Invert the fractionToX function for given X. */\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}\r\n"]}
1
+ {"version":3,"file":"DirectHalfCosineSpiralEvaluator.js","sourceRoot":"","sources":["../../../../src/curve/spiral/DirectHalfCosineSpiralEvaluator.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 */\nimport { Geometry } from \"../../Geometry\";\nimport { XYCurveEvaluator } from \"./XYCurveEvaluator\";\nimport { SimpleNewton } from \"../../numerics/Newton\";\n\n/**\n * @internal\n */\nexport class DirectHalfCosineSpiralEvaluator extends XYCurveEvaluator {\n public nominalLength1: number;\n public nominalRadius1: number;\n private _c: number;\n private _c1: number;\n private _c2: number;\n public constructor(length1: number, radius1: number) {\n super();\n this.nominalLength1 = length1;\n this.nominalRadius1 = radius1;\n const pi = Math.PI;\n this._c1 = 1.0 / (2.0 * pi * pi);\n this._c2 = 0.25;\n this._c = 0.0; // TO BE UPDATED BELOW\n this.updateConstants();\n }\n private updateConstants() {\n this._c = this.nominalLength1 * this.nominalLength1 / this.nominalRadius1;\n }\n public scaleInPlace(scaleFactor: number) {\n this.nominalLength1 *= scaleFactor;\n this.nominalRadius1 *= scaleFactor;\n this.updateConstants();\n }\n /** Return a deep copy of the evaluator. */\n public clone(): DirectHalfCosineSpiralEvaluator {\n return new DirectHalfCosineSpiralEvaluator(this.nominalLength1, this.nominalRadius1);\n }\n /** Member by member matchup. */\n public isAlmostEqual(other: any): boolean {\n if (other instanceof DirectHalfCosineSpiralEvaluator) {\n return Geometry.isSameCoordinate(this.nominalLength1, other.nominalLength1)\n && Geometry.isSameCoordinate(this.nominalRadius1, other.nominalRadius1);\n // remark: c,c1,c2 are computed, need not be tested.\n }\n return false;\n }\n /** Evaluate X at fractional position. */\n public fractionToX(fraction: number): number {\n return fraction * this.nominalLength1;\n }\n /** Evaluate Y at fractional position. */\n public fractionToY(fraction: number): number {\n const theta = fraction * Math.PI;\n return this._c * (this._c2 * fraction * fraction - this._c1 * (1.0 - Math.cos(theta)));\n }\n /** Evaluate derivative of X with respect to fraction at fractional position. */\n public fractionToDX(_fraction: number): number {\n return this.nominalLength1;\n }\n /** Evaluate derivative of Y with respect to fraction at fractional position. */\n public fractionToDY(fraction: number): number {\n const pi = Math.PI;\n const theta = fraction * pi;\n return this._c * (2.0 * this._c2 * fraction - this._c1 * pi * Math.sin(theta));\n }\n /** Evaluate second derivative of X with respect to fraction at fractional position. */\n public fractionToDDX(_fraction: number): number {\n return 0.0;\n }\n /** Evaluate third derivative of Y with respect to fraction at fractional position. */\n public fractionToDDY(fraction: number): number {\n const pi = Math.PI;\n const theta = fraction * pi;\n return this._c * (2.0 * this._c2 - this._c1 * pi * pi * Math.cos(theta));\n }\n /** Evaluate second derivative of X with respect to fraction at fractional position. */\n public fractionToD3X(_fraction: number): number {\n return 0.0;\n }\n /** Evaluate third derivative of Y with respect to fraction at fractional position. */\n public fractionToD3Y(fraction: number): number {\n const pi = Math.PI;\n const theta = fraction * pi;\n return this._c * this._c1 * pi * pi * pi * Math.sin(theta);\n }\n /** Return the magnitude of the first vector at fractional coordinate. */\n public override fractionToTangentMagnitude(fraction: number): number {\n return Geometry.hypotenuseXY(this.fractionToDX(fraction), this.fractionToDY(fraction));\n }\n /** Invert the fractionToX function for given X. */\n public xToFraction(x: number): number | undefined {\n const fraction0 = x / this.nominalLength1;\n const fraction1 = SimpleNewton.runNewton1D(\n fraction0,\n (f: number) => (this.fractionToX(f) - x),\n (f: number) => this.fractionToDX(f),\n );\n if (fraction1 === undefined)\n return undefined;\n return fraction1;\n }\n}\n"]}