@itwin/core-geometry 5.0.0-dev.61 → 5.0.0-dev.64

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 (485) hide show
  1. package/lib/cjs/Constant.js.map +1 -1
  2. package/lib/cjs/Geometry.js.map +1 -1
  3. package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
  4. package/lib/cjs/bspline/BSpline1dNd.d.ts +90 -54
  5. package/lib/cjs/bspline/BSpline1dNd.d.ts.map +1 -1
  6. package/lib/cjs/bspline/BSpline1dNd.js +134 -99
  7. package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
  8. package/lib/cjs/bspline/BSplineCurve.d.ts +193 -155
  9. package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -1
  10. package/lib/cjs/bspline/BSplineCurve.js +245 -181
  11. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  12. package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
  13. package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
  14. package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
  15. package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
  16. package/lib/cjs/bspline/BezierCurve3d.d.ts +3 -1
  17. package/lib/cjs/bspline/BezierCurve3d.d.ts.map +1 -1
  18. package/lib/cjs/bspline/BezierCurve3d.js +3 -5
  19. package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
  20. package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
  21. package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
  22. package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
  23. package/lib/cjs/bspline/KnotVector.d.ts +74 -54
  24. package/lib/cjs/bspline/KnotVector.d.ts.map +1 -1
  25. package/lib/cjs/bspline/KnotVector.js +127 -80
  26. package/lib/cjs/bspline/KnotVector.js.map +1 -1
  27. package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -1
  28. package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
  29. package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -1
  30. package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
  31. package/lib/cjs/clipping/ClipPlane.js.map +1 -1
  32. package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
  33. package/lib/cjs/clipping/ClipUtils.js.map +1 -1
  34. package/lib/cjs/clipping/ClipVector.js.map +1 -1
  35. package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
  36. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  37. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  38. package/lib/cjs/core-geometry.js.map +1 -1
  39. package/lib/cjs/curve/Arc3d.d.ts +2 -0
  40. package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
  41. package/lib/cjs/curve/Arc3d.js +2 -0
  42. package/lib/cjs/curve/Arc3d.js.map +1 -1
  43. package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
  44. package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
  45. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  46. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  47. package/lib/cjs/curve/CurveCurve.js.map +1 -1
  48. package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
  49. package/lib/cjs/curve/CurveFactory.js.map +1 -1
  50. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  51. package/lib/cjs/curve/CurveOps.js.map +1 -1
  52. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  53. package/lib/cjs/curve/CurveProcessor.js.map +1 -1
  54. package/lib/cjs/curve/CurveTypes.js.map +1 -1
  55. package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
  56. package/lib/cjs/curve/GeometryQuery.js.map +1 -1
  57. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  58. package/lib/cjs/curve/LineString3d.js.map +1 -1
  59. package/lib/cjs/curve/Loop.js.map +1 -1
  60. package/lib/cjs/curve/OffsetOptions.js.map +1 -1
  61. package/lib/cjs/curve/ParityRegion.js.map +1 -1
  62. package/lib/cjs/curve/Path.js.map +1 -1
  63. package/lib/cjs/curve/PointString3d.js.map +1 -1
  64. package/lib/cjs/curve/ProxyCurve.js.map +1 -1
  65. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  66. package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
  67. package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
  68. package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
  69. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  70. package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
  71. package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
  72. package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
  73. package/lib/cjs/curve/RegionOps.js.map +1 -1
  74. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  75. package/lib/cjs/curve/StrokeOptions.js.map +1 -1
  76. package/lib/cjs/curve/UnionRegion.js.map +1 -1
  77. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  78. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  79. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  80. package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  81. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  82. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  83. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  84. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  85. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  86. package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
  87. package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  88. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  89. package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
  90. package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
  91. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  92. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  93. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  94. package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
  95. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  96. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  97. package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
  98. package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
  99. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  100. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  101. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
  102. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  103. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  104. package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
  105. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  106. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  107. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
  108. package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
  109. package/lib/cjs/geometry3d/Angle.js.map +1 -1
  110. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
  111. package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
  112. package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
  113. package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
  114. package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
  115. package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
  116. package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
  117. package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
  118. package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
  119. package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
  120. package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
  121. package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
  122. package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
  123. package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
  124. package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
  125. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  126. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  127. package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
  128. package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
  129. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  130. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  131. package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
  132. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  133. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  134. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  135. package/lib/cjs/geometry3d/PointHelpers.d.ts +3 -3
  136. package/lib/cjs/geometry3d/PointHelpers.js +3 -3
  137. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  138. package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
  139. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  140. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  141. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
  142. package/lib/cjs/geometry3d/Range.js.map +1 -1
  143. package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
  144. package/lib/cjs/geometry3d/Ray3d.d.ts +2 -2
  145. package/lib/cjs/geometry3d/Ray3d.d.ts.map +1 -1
  146. package/lib/cjs/geometry3d/Ray3d.js +8 -11
  147. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  148. package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
  149. package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
  150. package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
  151. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  152. package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
  153. package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
  154. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  155. package/lib/cjs/geometry4d/Map4d.js.map +1 -1
  156. package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
  157. package/lib/cjs/geometry4d/MomentData.js.map +1 -1
  158. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  159. package/lib/cjs/geometry4d/Point4d.js.map +1 -1
  160. package/lib/cjs/numerics/BandedSystem.js.map +1 -1
  161. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
  162. package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
  163. package/lib/cjs/numerics/Complex.js.map +1 -1
  164. package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
  165. package/lib/cjs/numerics/Newton.js.map +1 -1
  166. package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
  167. package/lib/cjs/numerics/PolarData.js.map +1 -1
  168. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  169. package/lib/cjs/numerics/Quadrature.js.map +1 -1
  170. package/lib/cjs/numerics/Range1dArray.js.map +1 -1
  171. package/lib/cjs/numerics/SmallSystem.js.map +1 -1
  172. package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
  173. package/lib/cjs/numerics/UnionFind.js.map +1 -1
  174. package/lib/cjs/numerics/UsageSums.js.map +1 -1
  175. package/lib/cjs/polyface/AuxData.js.map +1 -1
  176. package/lib/cjs/polyface/BoxTopology.js.map +1 -1
  177. package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
  178. package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
  179. package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
  180. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  181. package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
  182. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  183. package/lib/cjs/polyface/IndexedPolyfaceWalker.js.map +1 -1
  184. package/lib/cjs/polyface/Polyface.js.map +1 -1
  185. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  186. package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
  187. package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
  188. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  189. package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
  190. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  191. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  192. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  193. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  194. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  195. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  196. package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
  197. package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
  198. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  199. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  200. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  201. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  202. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  203. package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  204. package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
  205. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  206. package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
  207. package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
  208. package/lib/cjs/serialization/BGFBReader.js.map +1 -1
  209. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  210. package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  211. package/lib/cjs/serialization/DeepCompare.js.map +1 -1
  212. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  213. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  214. package/lib/cjs/serialization/SerializationHelpers.js.map +1 -1
  215. package/lib/cjs/solid/Box.js.map +1 -1
  216. package/lib/cjs/solid/Cone.js.map +1 -1
  217. package/lib/cjs/solid/LinearSweep.js.map +1 -1
  218. package/lib/cjs/solid/RotationalSweep.js.map +1 -1
  219. package/lib/cjs/solid/RuledSweep.js.map +1 -1
  220. package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
  221. package/lib/cjs/solid/Sphere.js.map +1 -1
  222. package/lib/cjs/solid/SweepContour.js.map +1 -1
  223. package/lib/cjs/solid/TorusPipe.js.map +1 -1
  224. package/lib/cjs/topology/ChainMerge.js.map +1 -1
  225. package/lib/cjs/topology/Graph.js.map +1 -1
  226. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  227. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  228. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  229. package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
  230. package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
  231. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  232. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  233. package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
  234. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
  235. package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
  236. package/lib/cjs/topology/MaskManager.js.map +1 -1
  237. package/lib/cjs/topology/Merging.js.map +1 -1
  238. package/lib/cjs/topology/RegularizeFace.js.map +1 -1
  239. package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
  240. package/lib/cjs/topology/SpaceTriangulation.js.map +1 -1
  241. package/lib/cjs/topology/Triangulation.js.map +1 -1
  242. package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
  243. package/lib/esm/Constant.js.map +1 -1
  244. package/lib/esm/Geometry.js.map +1 -1
  245. package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
  246. package/lib/esm/bspline/BSpline1dNd.d.ts +90 -54
  247. package/lib/esm/bspline/BSpline1dNd.d.ts.map +1 -1
  248. package/lib/esm/bspline/BSpline1dNd.js +134 -99
  249. package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
  250. package/lib/esm/bspline/BSplineCurve.d.ts +193 -155
  251. package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
  252. package/lib/esm/bspline/BSplineCurve.js +245 -181
  253. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  254. package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
  255. package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
  256. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  257. package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
  258. package/lib/esm/bspline/BezierCurve3d.d.ts +3 -1
  259. package/lib/esm/bspline/BezierCurve3d.d.ts.map +1 -1
  260. package/lib/esm/bspline/BezierCurve3d.js +3 -5
  261. package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
  262. package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
  263. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  264. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  265. package/lib/esm/bspline/KnotVector.d.ts +74 -54
  266. package/lib/esm/bspline/KnotVector.d.ts.map +1 -1
  267. package/lib/esm/bspline/KnotVector.js +127 -80
  268. package/lib/esm/bspline/KnotVector.js.map +1 -1
  269. package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
  270. package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
  271. package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
  272. package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
  273. package/lib/esm/clipping/ClipPlane.js.map +1 -1
  274. package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
  275. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  276. package/lib/esm/clipping/ClipVector.js.map +1 -1
  277. package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
  278. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  279. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  280. package/lib/esm/core-geometry.js.map +1 -1
  281. package/lib/esm/curve/Arc3d.d.ts +2 -0
  282. package/lib/esm/curve/Arc3d.d.ts.map +1 -1
  283. package/lib/esm/curve/Arc3d.js +2 -0
  284. package/lib/esm/curve/Arc3d.js.map +1 -1
  285. package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
  286. package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
  287. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  288. package/lib/esm/curve/CurveCollection.js.map +1 -1
  289. package/lib/esm/curve/CurveCurve.js.map +1 -1
  290. package/lib/esm/curve/CurveExtendMode.js.map +1 -1
  291. package/lib/esm/curve/CurveFactory.js.map +1 -1
  292. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  293. package/lib/esm/curve/CurveOps.js.map +1 -1
  294. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  295. package/lib/esm/curve/CurveProcessor.js.map +1 -1
  296. package/lib/esm/curve/CurveTypes.js.map +1 -1
  297. package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
  298. package/lib/esm/curve/GeometryQuery.js.map +1 -1
  299. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  300. package/lib/esm/curve/LineString3d.js.map +1 -1
  301. package/lib/esm/curve/Loop.js.map +1 -1
  302. package/lib/esm/curve/OffsetOptions.js.map +1 -1
  303. package/lib/esm/curve/ParityRegion.js.map +1 -1
  304. package/lib/esm/curve/Path.js.map +1 -1
  305. package/lib/esm/curve/PointString3d.js.map +1 -1
  306. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  307. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  308. package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
  309. package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
  310. package/lib/esm/curve/Query/InOutTests.js.map +1 -1
  311. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  312. package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
  313. package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
  314. package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
  315. package/lib/esm/curve/RegionOps.js.map +1 -1
  316. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  317. package/lib/esm/curve/StrokeOptions.js.map +1 -1
  318. package/lib/esm/curve/UnionRegion.js.map +1 -1
  319. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  320. package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  321. package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  322. package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  323. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  324. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  325. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  326. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  327. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  328. package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
  329. package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  330. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  331. package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
  332. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  333. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  334. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  335. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  336. package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
  337. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  338. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  339. package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
  340. package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
  341. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  342. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  343. package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
  344. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  345. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  346. package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
  347. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  348. package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  349. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
  350. package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
  351. package/lib/esm/geometry3d/Angle.js.map +1 -1
  352. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  353. package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
  354. package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
  355. package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
  356. package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
  357. package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
  358. package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
  359. package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
  360. package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
  361. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
  362. package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
  363. package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
  364. package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
  365. package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
  366. package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
  367. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  368. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  369. package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
  370. package/lib/esm/geometry3d/Plane3d.js.map +1 -1
  371. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  372. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  373. package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
  374. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  375. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  376. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  377. package/lib/esm/geometry3d/PointHelpers.d.ts +3 -3
  378. package/lib/esm/geometry3d/PointHelpers.js +3 -3
  379. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  380. package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
  381. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  382. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  383. package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
  384. package/lib/esm/geometry3d/Range.js.map +1 -1
  385. package/lib/esm/geometry3d/Ray2d.js.map +1 -1
  386. package/lib/esm/geometry3d/Ray3d.d.ts +2 -2
  387. package/lib/esm/geometry3d/Ray3d.d.ts.map +1 -1
  388. package/lib/esm/geometry3d/Ray3d.js +8 -11
  389. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  390. package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
  391. package/lib/esm/geometry3d/Segment1d.js.map +1 -1
  392. package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
  393. package/lib/esm/geometry3d/Transform.js.map +1 -1
  394. package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
  395. package/lib/esm/geometry3d/XYZProps.js.map +1 -1
  396. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  397. package/lib/esm/geometry4d/Map4d.js.map +1 -1
  398. package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
  399. package/lib/esm/geometry4d/MomentData.js.map +1 -1
  400. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  401. package/lib/esm/geometry4d/Point4d.js.map +1 -1
  402. package/lib/esm/numerics/BandedSystem.js.map +1 -1
  403. package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
  404. package/lib/esm/numerics/ClusterableArray.js.map +1 -1
  405. package/lib/esm/numerics/Complex.js.map +1 -1
  406. package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
  407. package/lib/esm/numerics/Newton.js.map +1 -1
  408. package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
  409. package/lib/esm/numerics/PolarData.js.map +1 -1
  410. package/lib/esm/numerics/Polynomials.js.map +1 -1
  411. package/lib/esm/numerics/Quadrature.js.map +1 -1
  412. package/lib/esm/numerics/Range1dArray.js.map +1 -1
  413. package/lib/esm/numerics/SmallSystem.js.map +1 -1
  414. package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
  415. package/lib/esm/numerics/UnionFind.js.map +1 -1
  416. package/lib/esm/numerics/UsageSums.js.map +1 -1
  417. package/lib/esm/polyface/AuxData.js.map +1 -1
  418. package/lib/esm/polyface/BoxTopology.js.map +1 -1
  419. package/lib/esm/polyface/FacetFaceData.js.map +1 -1
  420. package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
  421. package/lib/esm/polyface/FacetOrientation.js.map +1 -1
  422. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  423. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
  424. package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  425. package/lib/esm/polyface/IndexedPolyfaceWalker.js.map +1 -1
  426. package/lib/esm/polyface/Polyface.js.map +1 -1
  427. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  428. package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
  429. package/lib/esm/polyface/PolyfaceData.js.map +1 -1
  430. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  431. package/lib/esm/polyface/RangeLengthData.js.map +1 -1
  432. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  433. package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  434. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  435. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  436. package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  437. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  438. package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
  439. package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
  440. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  441. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  442. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  443. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  444. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  445. package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  446. package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
  447. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  448. package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
  449. package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
  450. package/lib/esm/serialization/BGFBReader.js.map +1 -1
  451. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  452. package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  453. package/lib/esm/serialization/DeepCompare.js.map +1 -1
  454. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  455. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  456. package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
  457. package/lib/esm/solid/Box.js.map +1 -1
  458. package/lib/esm/solid/Cone.js.map +1 -1
  459. package/lib/esm/solid/LinearSweep.js.map +1 -1
  460. package/lib/esm/solid/RotationalSweep.js.map +1 -1
  461. package/lib/esm/solid/RuledSweep.js.map +1 -1
  462. package/lib/esm/solid/SolidPrimitive.js.map +1 -1
  463. package/lib/esm/solid/Sphere.js.map +1 -1
  464. package/lib/esm/solid/SweepContour.js.map +1 -1
  465. package/lib/esm/solid/TorusPipe.js.map +1 -1
  466. package/lib/esm/topology/ChainMerge.js.map +1 -1
  467. package/lib/esm/topology/Graph.js.map +1 -1
  468. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  469. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  470. package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  471. package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
  472. package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
  473. package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  474. package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  475. package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
  476. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
  477. package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
  478. package/lib/esm/topology/MaskManager.js.map +1 -1
  479. package/lib/esm/topology/Merging.js.map +1 -1
  480. package/lib/esm/topology/RegularizeFace.js.map +1 -1
  481. package/lib/esm/topology/SignedDataSummary.js.map +1 -1
  482. package/lib/esm/topology/SpaceTriangulation.js.map +1 -1
  483. package/lib/esm/topology/Triangulation.js.map +1 -1
  484. package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
  485. package/package.json +3 -3
@@ -3,108 +3,144 @@
3
3
  */
4
4
  import { Point3d } from "../geometry3d/Point3dVector3d";
5
5
  import { BSplineWrapMode, KnotVector } from "./KnotVector";
6
- /** Bspline knots and poles for 1d-to-Nd.
6
+ /**
7
+ * Knots and poles for a B-spline function mapping R to R^n.
7
8
  * * The "pole" (aka control point) of this class is a block of `poleLength` numbers.
8
9
  * * Derived classes (not this class) assign meaning such as x,y,z,w.
9
- * * for instance, an instance of this class with `poleLength===3` does not know if its poles are x,y,z or weighted 2D x,y,w
10
+ * * For instance, an instance of this class with `poleLength===3` does not know if its poles are x,y,z or
11
+ * weighted 2D x,y,w.
10
12
  * @public
11
13
  */
12
14
  export declare class BSpline1dNd {
13
- /** knots of the bspline */
15
+ /** Knots of the bspline. */
14
16
  knots: KnotVector;
15
- /** poles, packed in blocks of `poleLength` doubles. */
17
+ /** Poles packed in blocks of `poleLength` doubles. */
16
18
  packedData: Float64Array;
17
- /** (property accessor) Return the number of numeric values per pole. */
19
+ /** The number of numeric values per pole. */
18
20
  poleLength: number;
19
21
  /** (property accessor) Return the degree of the polynomials. */
20
22
  get degree(): number;
21
- /** (property accessor) Return the number of order (one more than degree) of the polynomials */
23
+ /** (property accessor) Return the order (one more than degree) of the polynomials. */
22
24
  get order(): number;
23
- /** (property accessor) Return the number of bezier spans (including null spans at multiple knots)*/
25
+ /** (property accessor) Return the number of bezier spans (including null spans at multiple knots). */
24
26
  get numSpan(): number;
25
- /** (property accessor) Return the number of poles*/
27
+ /** (property accessor) Return the number of poles. */
26
28
  get numPoles(): number;
27
- /** copy 3 values of pole `i` into a point.
29
+ /**
30
+ * Copy 3 values of pole `i` into a point.
28
31
  * * The calling class is responsible for knowing if this is an appropriate access to the blocked data.
29
32
  */
30
33
  getPoint3dPole(i: number, result?: Point3d): Point3d | undefined;
31
- /** preallocated array (length === `order`) used as temporary in evaluations */
34
+ /**
35
+ * Values of the `order` relevant B-spline basis functions at a parameter.
36
+ * * Preallocated to length `order` in the constructor and used as a temporary in evaluations.
37
+ */
32
38
  basisBuffer: Float64Array;
33
- /** preallocated array (length === `poleLength`) used as temporary in evaluations */
34
- poleBuffer: Float64Array;
35
- /** preallocated array (length === `order`) used as temporary in evaluations */
39
+ /**
40
+ * Derivatives of the `order` relevant B-spline basis functions at a parameter.
41
+ * * Preallocated to length `order` in the constructor and used as a temporary in evaluations.
42
+ */
36
43
  basisBuffer1: Float64Array;
37
- /** preallocated array (length === `order`) used as temporary in evaluations */
44
+ /**
45
+ * Second derivatives of the `order` relevant B-spline basis functions at a parameter.
46
+ * * Preallocated to length `order` in the constructor and used as a temporary in evaluations.
47
+ */
38
48
  basisBuffer2: Float64Array;
39
- /** preallocated array (length === `poleLength`) used as temporary in evaluations */
49
+ /**
50
+ * Temporary to hold a single point.
51
+ * * Preallocated to length `poleLength` in the constructor.
52
+ */
53
+ poleBuffer: Float64Array;
54
+ /**
55
+ * Temporary to hold a single derivative vector.
56
+ * * Preallocated to length `poleLength` in the constructor.
57
+ */
40
58
  poleBuffer1: Float64Array;
41
- /** preallocated array (length === `poleLength`) used as temporary in evaluations */
59
+ /**
60
+ * Temporary to hold a single second derivative vector.
61
+ * * Preallocated to length `poleLength` in the constructor.
62
+ */
42
63
  poleBuffer2: Float64Array;
43
64
  /**
44
- * initialize arrays for given spline dimensions.
45
- * @param numPoles number of poles
46
- * @param poleLength number of coordinates per pole (e.g.. 3 for 3D unweighted, 4 for 3d weighted, 2 for 2d unweighted, 3 for 2d weighted)
47
- * @param order number of poles in support for a section of the bspline
48
- * @param knots KnotVector. This is captured, not cloned.
65
+ * Initialize arrays for given spline dimensions.
66
+ * @param numPoles number of poles.
67
+ * @param poleLength number of coordinates per pole (e.g.. 3 for 3D unweighted, 4 for 3d weighted, 2 for 2d unweighted,
68
+ * 3 for 2d weighted).
69
+ * @param order number of poles defining a Bezier segment of the B-spline function.
70
+ * @param knots the KnotVector. This is captured, not cloned.
49
71
  */
50
72
  protected constructor(numPoles: number, poleLength: number, order: number, knots: KnotVector);
51
73
  /**
52
- * create a 1Bspline1dNd`
53
- * @param numPoles number of poles
54
- * @param poleLength number of coordinates per pole (e.g.. 3 for 3D unweighted, 4 for 3d weighted, 2 for 2d unweighted, 3 for 2d weighted)
55
- * @param order number of poles in support for a section of the bspline
56
- * @param knots KnotVector. This is captured, not cloned.
74
+ * Create a `BSpline1dNd`.
75
+ * @param numPoles number of poles.
76
+ * @param poleLength number of coordinates per pole (e.g.. 3 for 3D unweighted, 4 for 3d weighted, 2 for 2d unweighted,
77
+ * 3 for 2d weighted).
78
+ * @param order number of poles defining a Bezier segment of the B-spline function.
79
+ * @param knots the KnotVector. This is captured, not cloned.
57
80
  */
58
- static create(numPoles: number, poleLength: number, order: number, knots: KnotVector): BSpline1dNd | undefined;
59
- /** Map a span index and local fraction to knot value. */
60
- spanFractionToKnot(span: number, localFraction: number): number;
81
+ static create(numPoles: number, poleLength: number, order: number, knots: KnotVector): BSpline1dNd;
82
+ /** Map a span index and span fraction to knot value. */
83
+ spanFractionToKnot(spanIndex: number, spanFraction: number): number;
61
84
  /**
62
- * Evaluate the `order` basis functions (and optionally one or two derivatives) at a given fractional position within indexed span.
63
- * @returns true if and only if output arrays are sufficiently sized
85
+ * Evaluate the `order` basis functions (and optionally one or two derivatives) at a given fractional position within
86
+ * indexed span.
87
+ * @returns true if and only if output arrays are sufficiently sized.
64
88
  */
65
89
  evaluateBasisFunctionsInSpan(spanIndex: number, spanFraction: number, f: Float64Array, df?: Float64Array, ddf?: Float64Array): boolean;
90
+ /**
91
+ * Compute the linear combination of the given span's poles and the weights in `basisBuffer`, and store this point
92
+ * in `poleBuffer`.
93
+ */
94
+ sumPoleBufferForSpan(spanIndex: number): void;
95
+ /**
96
+ * Compute the linear combination of the given span's poles and the weights in `basisBuffer1`, and store this
97
+ * derivative vector in `poleBuffer1`.
98
+ */
99
+ sumPoleBuffer1ForSpan(spanIndex: number): void;
100
+ /**
101
+ * Compute the linear combination of the given span's poles and the weights in `basisBuffer2`, and store this
102
+ * second derivative vector in `poleBuffer2`.
103
+ */
104
+ sumPoleBuffer2ForSpan(spanIndex: number): void;
66
105
  /**
67
106
  * * Evaluate the basis functions at spanIndex and fraction.
68
- * * Evaluations are stored in the preallocated `this.basisBuffer`
69
- * * Immediately do the summations of the basis values times the respective control points
107
+ * * Evaluations are stored in the preallocated `this.basisBuffer`.
108
+ * * Immediately do the summations of the basis values times the respective poles.
70
109
  * * Summations are stored in the preallocated `this.poleBuffer`
71
110
  * */
72
111
  evaluateBuffersInSpan(spanIndex: number, spanFraction: number): void;
73
112
  /**
74
113
  * * Evaluate the basis functions and one derivative at spanIndex and fraction.
75
- * * Evaluations are stored in the preallocated `this.basisBuffer`
76
- * * Immediately do the summations of the basis values times the respective control points
114
+ * * Function evaluations are stored in the preallocated `this.basisBuffer`; derivative evaluations in `this.basisBuffer1`.
115
+ * * Immediately do the summations of the basis values times the respective poles.
77
116
  * * Summations are stored in the preallocated `this.poleBuffer` and `this.poleBuffer1`
78
117
  * */
79
118
  evaluateBuffersInSpan1(spanIndex: number, spanFraction: number): void;
80
- /** sum poles in `poleBuffer` at span `spanIndex` by the weights in the `basisBuffer` */
81
- sumPoleBufferForSpan(spanIndex: number): void;
82
- /** sum poles in `poleBuffer1` at span `spanIndex` by the weights in the `basisBuffer1`, i.e. form first derivatives */
83
- sumPoleBuffer1ForSpan(spanIndex: number): void;
84
- /** sum poles in `poleBuffer2` at span `spanIndex` by the weights in the `basisBuffer2`, i.e. form second derivatives */
85
- sumPoleBuffer2ForSpan(spanIndex: number): void;
86
- /** Evaluate the function values and 1 or 2 derivatives into `this.poleBuffer`, `this.poleBuffer1` and `this.poleBuffer2` */
87
- evaluateBuffersAtKnot(u: number, numDerivative?: number): void;
88
119
  /**
89
- * Reverse the (blocked) poles (in `this.packedData` in place.
120
+ * Evaluate the B-spline function and optional derivatives at the given parameter in knot space.
121
+ * * Function value is stored in `poleBuffer`; optional derivative vectors in `poleBuffer1` and `poleBuffer2`.
90
122
  */
123
+ evaluateBuffersAtKnot(u: number, numDerivative?: number): void;
124
+ /** Reverse the instance poles and knots in place. */
91
125
  reverseInPlace(): void;
92
126
  /**
93
- * Test if the leading and trailing polygon coordinates are replicated in the manner of a "closed" bspline polygon which has been expanded
94
- * to act as a normal bspline.
95
- * @returns true if `degree` leading and trailing polygon blocks match
96
- * @deprecated in 4.x. Use testClosablePolygon instead.
127
+ * Test if the leading and trailing polygon coordinates are replicated in the manner of a "closed" bspline polygon
128
+ * which has been expanded to act as a normal bspline.
129
+ * @returns true if `degree` leading and trailing polygon blocks match.
130
+ * @deprecated in 4.x. Use `testClosablePolygon` instead.
97
131
  */
98
132
  testCloseablePolygon(mode?: BSplineWrapMode): boolean;
99
133
  /**
100
- * Test if the leading and trailing polygon coordinates are replicated in the manner of a "closed" bspline polygon which has been expanded
101
- * to act as a normal bspline.
102
- * @returns true if `degree` leading and trailing polygon blocks match
134
+ * Test if the leading and trailing poles are replicated in the manner of a "closed" B-spline function with wraparound
135
+ * control polygon.
136
+ * @param mode wrap mode, indicating the number of wraparound poles to check. If undefined, `knots.wrappable` is used.
137
+ * @returns true if the expected leading and trailing poles match, according to `mode`.
103
138
  */
104
139
  testClosablePolygon(mode?: BSplineWrapMode): boolean;
105
- /** Insert knot and resulting pole into the instance, optionally multiple times.
106
- * @param knot the knot to be inserted (may already exist in the KnotVector)
107
- * @param totalMultiplicity the total multiplicity of the knot on return
140
+ /**
141
+ * Insert the knot and resulting pole into the instance, optionally multiple times.
142
+ * @param knot the knot to be inserted (may already exist in the KnotVector).
143
+ * @param totalMultiplicity the total multiplicity of the knot on return.
108
144
  */
109
145
  addKnot(knot: number, totalMultiplicity: number): boolean;
110
146
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BSpline1dNd.d.ts","sourceRoot":"","sources":["../../../src/bspline/BSpline1dNd.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE3D;;;;;GAKG;AACH,qBAAa,WAAW;IACtB,2BAA2B;IACpB,KAAK,EAAE,UAAU,CAAC;IACzB,uDAAuD;IAChD,UAAU,EAAE,YAAY,CAAC;IAChC,wEAAwE;IACjE,UAAU,EAAE,MAAM,CAAC;IAC1B,gEAAgE;IAChE,IAAW,MAAM,IAAI,MAAM,CAA8B;IACzD,+FAA+F;IAC/F,IAAW,KAAK,IAAI,MAAM,CAAkC;IAC5D,oGAAoG;IACpG,IAAW,OAAO,IAAI,MAAM,CAA8C;IAC1E,qDAAqD;IACrD,IAAW,QAAQ,IAAI,MAAM,CAAqD;IAClF;;OAEG;IACI,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS;IACvE,+EAA+E;IACxE,WAAW,EAAE,YAAY,CAAC;IACjC,oFAAoF;IAC7E,UAAU,EAAE,YAAY,CAAC;IAChC,+EAA+E;IACxE,YAAY,EAAE,YAAY,CAAC;IAClC,+EAA+E;IACxE,YAAY,EAAE,YAAY,CAAC;IAClC,oFAAoF;IAC7E,WAAW,EAAE,YAAY,CAAC;IACjC,oFAAoF;IAC7E,WAAW,EAAE,YAAY,CAAC;IAEjC;;;;;;OAMG;IACH,SAAS,aAAa,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU;IAY5F;;;;;;OAMG;WACW,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,SAAS;IAGrH,yDAAyD;IAClD,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM;IAItE;;;MAGE;IACK,4BAA4B,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO;IAS7I;;;;;SAKK;IACE,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAIpE;;;;;SAKK;IACE,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAKrE,wFAAwF;IACjF,oBAAoB,CAAC,SAAS,EAAE,MAAM;IAO7C,uHAAuH;IAChH,qBAAqB,CAAC,SAAS,EAAE,MAAM;IAS9C,wHAAwH;IACjH,qBAAqB,CAAC,SAAS,EAAE,MAAM;IAS9C,4HAA4H;IACrH,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,GAAE,MAAU;IAgBjE;;OAEG;IACI,cAAc,IAAI,IAAI;IAgB7B;;;;;OAKG;IACI,oBAAoB,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,OAAO;IAG5D;;;;OAIG;IACI,mBAAmB,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,OAAO;IAqB3D;;;OAGG;IACI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,OAAO;CA2DjE"}
1
+ {"version":3,"file":"BSpline1dNd.d.ts","sourceRoot":"","sources":["../../../src/bspline/BSpline1dNd.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE3D;;;;;;;GAOG;AACH,qBAAa,WAAW;IACtB,4BAA4B;IACrB,KAAK,EAAE,UAAU,CAAC;IACzB,sDAAsD;IAC/C,UAAU,EAAE,YAAY,CAAC;IAChC,6CAA6C;IACtC,UAAU,EAAE,MAAM,CAAC;IAC1B,gEAAgE;IAChE,IAAW,MAAM,IAAI,MAAM,CAE1B;IACD,sFAAsF;IACtF,IAAW,KAAK,IAAI,MAAM,CAEzB;IACD,sGAAsG;IACtG,IAAW,OAAO,IAAI,MAAM,CAE3B;IACD,sDAAsD;IACtD,IAAW,QAAQ,IAAI,MAAM,CAE5B;IACD;;;OAGG;IACI,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS;IAGvE;;;OAGG;IACI,WAAW,EAAE,YAAY,CAAC;IACjC;;;OAGG;IACI,YAAY,EAAE,YAAY,CAAC;IAClC;;;OAGG;IACI,YAAY,EAAE,YAAY,CAAC;IAClC;;;OAGG;IACI,UAAU,EAAE,YAAY,CAAC;IAChC;;;OAGG;IACI,WAAW,EAAE,YAAY,CAAC;IACjC;;;OAGG;IACI,WAAW,EAAE,YAAY,CAAC;IACjC;;;;;;;OAOG;IACH,SAAS,aAAa,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU;IAW5F;;;;;;;OAOG;WACW,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,WAAW;IAGzG,wDAAwD;IACjD,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAG1E;;;;MAIE;IACK,4BAA4B,CACjC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,YAAY,GAC9F,OAAO;IAWV;;;OAGG;IACI,oBAAoB,CAAC,SAAS,EAAE,MAAM;IAO7C;;;OAGG;IACI,qBAAqB,CAAC,SAAS,EAAE,MAAM;IAO9C;;;OAGG;IACI,qBAAqB,CAAC,SAAS,EAAE,MAAM;IAQ9C;;;;;SAKK;IACE,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAIpE;;;;;SAKK;IACE,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAKrE;;;OAGG;IACI,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,GAAE,MAAU;IAgBjE,qDAAqD;IAC9C,cAAc,IAAI,IAAI;IAS7B;;;;;OAKG;IACI,oBAAoB,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,OAAO;IAG5D;;;;;OAKG;IACI,mBAAmB,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,OAAO;IAoB3D;;;;OAIG;IACI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,OAAO;CAqDjE"}
@@ -5,82 +5,115 @@
5
5
  /** @packageDocumentation
6
6
  * @module Bspline
7
7
  */
8
- // import { Point2d } from "../Geometry2d";
9
8
  import { Geometry } from "../Geometry";
10
9
  import { Point3d } from "../geometry3d/Point3dVector3d";
11
10
  import { BSplineWrapMode, KnotVector } from "./KnotVector";
12
- /** Bspline knots and poles for 1d-to-Nd.
11
+ /**
12
+ * Knots and poles for a B-spline function mapping R to R^n.
13
13
  * * The "pole" (aka control point) of this class is a block of `poleLength` numbers.
14
14
  * * Derived classes (not this class) assign meaning such as x,y,z,w.
15
- * * for instance, an instance of this class with `poleLength===3` does not know if its poles are x,y,z or weighted 2D x,y,w
15
+ * * For instance, an instance of this class with `poleLength===3` does not know if its poles are x,y,z or
16
+ * weighted 2D x,y,w.
16
17
  * @public
17
18
  */
18
19
  export class BSpline1dNd {
19
- /** knots of the bspline */
20
+ /** Knots of the bspline. */
20
21
  knots;
21
- /** poles, packed in blocks of `poleLength` doubles. */
22
+ /** Poles packed in blocks of `poleLength` doubles. */
22
23
  packedData;
23
- /** (property accessor) Return the number of numeric values per pole. */
24
+ /** The number of numeric values per pole. */
24
25
  poleLength;
25
26
  /** (property accessor) Return the degree of the polynomials. */
26
- get degree() { return this.knots.degree; }
27
- /** (property accessor) Return the number of order (one more than degree) of the polynomials */
28
- get order() { return this.knots.degree + 1; }
29
- /** (property accessor) Return the number of bezier spans (including null spans at multiple knots)*/
30
- get numSpan() { return this.numPoles - this.knots.degree; }
31
- /** (property accessor) Return the number of poles*/
32
- get numPoles() { return this.packedData.length / this.poleLength; }
33
- /** copy 3 values of pole `i` into a point.
27
+ get degree() {
28
+ return this.knots.degree;
29
+ }
30
+ /** (property accessor) Return the order (one more than degree) of the polynomials. */
31
+ get order() {
32
+ return this.knots.degree + 1;
33
+ }
34
+ /** (property accessor) Return the number of bezier spans (including null spans at multiple knots). */
35
+ get numSpan() {
36
+ return this.numPoles - this.knots.degree;
37
+ }
38
+ /** (property accessor) Return the number of poles. */
39
+ get numPoles() {
40
+ return this.packedData.length / this.poleLength;
41
+ }
42
+ /**
43
+ * Copy 3 values of pole `i` into a point.
34
44
  * * The calling class is responsible for knowing if this is an appropriate access to the blocked data.
35
45
  */
36
- getPoint3dPole(i, result) { return Point3d.createFromPacked(this.packedData, i, result); }
37
- /** preallocated array (length === `order`) used as temporary in evaluations */
38
- basisBuffer; // one set of basis function values. ALLOCATED BY CTOR FOR FREQUENT REUSE
39
- /** preallocated array (length === `poleLength`) used as temporary in evaluations */
40
- poleBuffer; // one set of target values. ALLOCATED BY CTOR FOR FREQUENT REUSE
41
- /** preallocated array (length === `order`) used as temporary in evaluations */
42
- basisBuffer1; // one set of basis function values. ALLOCATED BY CTOR FOR FREQUENT REUSE
43
- /** preallocated array (length === `order`) used as temporary in evaluations */
44
- basisBuffer2; // one set of basis function values. ALLOCATED BY CTOR FOR FREQUENT REUSE
45
- /** preallocated array (length === `poleLength`) used as temporary in evaluations */
46
- poleBuffer1; // one set of target values. ALLOCATED BY CTOR FOR FREQUENT REUSE
47
- /** preallocated array (length === `poleLength`) used as temporary in evaluations */
48
- poleBuffer2; // one set of target values. ALLOCATED BY CTOR FOR FREQUENT REUSE
46
+ getPoint3dPole(i, result) {
47
+ return Point3d.createFromPacked(this.packedData, i, result);
48
+ }
49
+ /**
50
+ * Values of the `order` relevant B-spline basis functions at a parameter.
51
+ * * Preallocated to length `order` in the constructor and used as a temporary in evaluations.
52
+ */
53
+ basisBuffer;
54
+ /**
55
+ * Derivatives of the `order` relevant B-spline basis functions at a parameter.
56
+ * * Preallocated to length `order` in the constructor and used as a temporary in evaluations.
57
+ */
58
+ basisBuffer1;
59
+ /**
60
+ * Second derivatives of the `order` relevant B-spline basis functions at a parameter.
61
+ * * Preallocated to length `order` in the constructor and used as a temporary in evaluations.
62
+ */
63
+ basisBuffer2;
64
+ /**
65
+ * Temporary to hold a single point.
66
+ * * Preallocated to length `poleLength` in the constructor.
67
+ */
68
+ poleBuffer;
69
+ /**
70
+ * Temporary to hold a single derivative vector.
71
+ * * Preallocated to length `poleLength` in the constructor.
72
+ */
73
+ poleBuffer1;
74
+ /**
75
+ * Temporary to hold a single second derivative vector.
76
+ * * Preallocated to length `poleLength` in the constructor.
77
+ */
78
+ poleBuffer2;
49
79
  /**
50
- * initialize arrays for given spline dimensions.
51
- * @param numPoles number of poles
52
- * @param poleLength number of coordinates per pole (e.g.. 3 for 3D unweighted, 4 for 3d weighted, 2 for 2d unweighted, 3 for 2d weighted)
53
- * @param order number of poles in support for a section of the bspline
54
- * @param knots KnotVector. This is captured, not cloned.
80
+ * Initialize arrays for given spline dimensions.
81
+ * @param numPoles number of poles.
82
+ * @param poleLength number of coordinates per pole (e.g.. 3 for 3D unweighted, 4 for 3d weighted, 2 for 2d unweighted,
83
+ * 3 for 2d weighted).
84
+ * @param order number of poles defining a Bezier segment of the B-spline function.
85
+ * @param knots the KnotVector. This is captured, not cloned.
55
86
  */
56
87
  constructor(numPoles, poleLength, order, knots) {
57
88
  this.knots = knots;
58
89
  this.packedData = new Float64Array(numPoles * poleLength);
59
90
  this.poleLength = poleLength;
60
91
  this.basisBuffer = new Float64Array(order);
61
- this.poleBuffer = new Float64Array(poleLength);
62
92
  this.basisBuffer1 = new Float64Array(order);
63
93
  this.basisBuffer2 = new Float64Array(order);
94
+ this.poleBuffer = new Float64Array(poleLength);
64
95
  this.poleBuffer1 = new Float64Array(poleLength);
65
96
  this.poleBuffer2 = new Float64Array(poleLength);
66
97
  }
67
98
  /**
68
- * create a 1Bspline1dNd`
69
- * @param numPoles number of poles
70
- * @param poleLength number of coordinates per pole (e.g.. 3 for 3D unweighted, 4 for 3d weighted, 2 for 2d unweighted, 3 for 2d weighted)
71
- * @param order number of poles in support for a section of the bspline
72
- * @param knots KnotVector. This is captured, not cloned.
99
+ * Create a `BSpline1dNd`.
100
+ * @param numPoles number of poles.
101
+ * @param poleLength number of coordinates per pole (e.g.. 3 for 3D unweighted, 4 for 3d weighted, 2 for 2d unweighted,
102
+ * 3 for 2d weighted).
103
+ * @param order number of poles defining a Bezier segment of the B-spline function.
104
+ * @param knots the KnotVector. This is captured, not cloned.
73
105
  */
74
106
  static create(numPoles, poleLength, order, knots) {
75
107
  return new BSpline1dNd(numPoles, poleLength, order, knots);
76
108
  }
77
- /** Map a span index and local fraction to knot value. */
78
- spanFractionToKnot(span, localFraction) {
79
- return this.knots.spanFractionToKnot(span, localFraction);
109
+ /** Map a span index and span fraction to knot value. */
110
+ spanFractionToKnot(spanIndex, spanFraction) {
111
+ return this.knots.spanFractionToKnot(spanIndex, spanFraction);
80
112
  }
81
113
  /**
82
- * Evaluate the `order` basis functions (and optionally one or two derivatives) at a given fractional position within indexed span.
83
- * @returns true if and only if output arrays are sufficiently sized
114
+ * Evaluate the `order` basis functions (and optionally one or two derivatives) at a given fractional position within
115
+ * indexed span.
116
+ * @returns true if and only if output arrays are sufficiently sized.
84
117
  */
85
118
  evaluateBasisFunctionsInSpan(spanIndex, spanFraction, f, df, ddf) {
86
119
  if (spanIndex < 0)
@@ -94,57 +127,64 @@ export class BSpline1dNd {
94
127
  this.knots.evaluateBasisFunctions(knotIndex0, globalKnot, f);
95
128
  }
96
129
  /**
97
- * * Evaluate the basis functions at spanIndex and fraction.
98
- * * Evaluations are stored in the preallocated `this.basisBuffer`
99
- * * Immediately do the summations of the basis values times the respective control points
100
- * * Summations are stored in the preallocated `this.poleBuffer`
101
- * */
102
- evaluateBuffersInSpan(spanIndex, spanFraction) {
103
- this.evaluateBasisFunctionsInSpan(spanIndex, spanFraction, this.basisBuffer);
104
- this.sumPoleBufferForSpan(spanIndex);
105
- }
106
- /**
107
- * * Evaluate the basis functions and one derivative at spanIndex and fraction.
108
- * * Evaluations are stored in the preallocated `this.basisBuffer`
109
- * * Immediately do the summations of the basis values times the respective control points
110
- * * Summations are stored in the preallocated `this.poleBuffer` and `this.poleBuffer1`
111
- * */
112
- evaluateBuffersInSpan1(spanIndex, spanFraction) {
113
- this.evaluateBasisFunctionsInSpan(spanIndex, spanFraction, this.basisBuffer, this.basisBuffer1);
114
- this.sumPoleBufferForSpan(spanIndex);
115
- this.sumPoleBuffer1ForSpan(spanIndex);
116
- }
117
- /** sum poles in `poleBuffer` at span `spanIndex` by the weights in the `basisBuffer` */
130
+ * Compute the linear combination of the given span's poles and the weights in `basisBuffer`, and store this point
131
+ * in `poleBuffer`.
132
+ */
118
133
  sumPoleBufferForSpan(spanIndex) {
119
134
  this.poleBuffer.fill(0);
120
135
  let k = spanIndex * this.poleLength;
121
- for (const f of this.basisBuffer) {
122
- for (let j = 0; j < this.poleLength; j++) {
136
+ for (const f of this.basisBuffer)
137
+ for (let j = 0; j < this.poleLength; j++)
123
138
  this.poleBuffer[j] += f * this.packedData[k++];
124
- }
125
- }
126
139
  }
127
- /** sum poles in `poleBuffer1` at span `spanIndex` by the weights in the `basisBuffer1`, i.e. form first derivatives */
140
+ /**
141
+ * Compute the linear combination of the given span's poles and the weights in `basisBuffer1`, and store this
142
+ * derivative vector in `poleBuffer1`.
143
+ */
128
144
  sumPoleBuffer1ForSpan(spanIndex) {
129
145
  this.poleBuffer1.fill(0);
130
146
  let k = spanIndex * this.poleLength;
131
- for (const f of this.basisBuffer1) {
132
- for (let j = 0; j < this.poleLength; j++) {
147
+ for (const f of this.basisBuffer1)
148
+ for (let j = 0; j < this.poleLength; j++)
133
149
  this.poleBuffer1[j] += f * this.packedData[k++];
134
- }
135
- }
136
150
  }
137
- /** sum poles in `poleBuffer2` at span `spanIndex` by the weights in the `basisBuffer2`, i.e. form second derivatives */
151
+ /**
152
+ * Compute the linear combination of the given span's poles and the weights in `basisBuffer2`, and store this
153
+ * second derivative vector in `poleBuffer2`.
154
+ */
138
155
  sumPoleBuffer2ForSpan(spanIndex) {
139
156
  this.poleBuffer2.fill(0);
140
157
  let k = spanIndex * this.poleLength;
141
158
  for (const f of this.basisBuffer2) {
142
- for (let j = 0; j < this.poleLength; j++) {
159
+ for (let j = 0; j < this.poleLength; j++)
143
160
  this.poleBuffer2[j] += f * this.packedData[k++];
144
- }
145
161
  }
146
162
  }
147
- /** Evaluate the function values and 1 or 2 derivatives into `this.poleBuffer`, `this.poleBuffer1` and `this.poleBuffer2` */
163
+ /**
164
+ * * Evaluate the basis functions at spanIndex and fraction.
165
+ * * Evaluations are stored in the preallocated `this.basisBuffer`.
166
+ * * Immediately do the summations of the basis values times the respective poles.
167
+ * * Summations are stored in the preallocated `this.poleBuffer`
168
+ * */
169
+ evaluateBuffersInSpan(spanIndex, spanFraction) {
170
+ this.evaluateBasisFunctionsInSpan(spanIndex, spanFraction, this.basisBuffer);
171
+ this.sumPoleBufferForSpan(spanIndex);
172
+ }
173
+ /**
174
+ * * Evaluate the basis functions and one derivative at spanIndex and fraction.
175
+ * * Function evaluations are stored in the preallocated `this.basisBuffer`; derivative evaluations in `this.basisBuffer1`.
176
+ * * Immediately do the summations of the basis values times the respective poles.
177
+ * * Summations are stored in the preallocated `this.poleBuffer` and `this.poleBuffer1`
178
+ * */
179
+ evaluateBuffersInSpan1(spanIndex, spanFraction) {
180
+ this.evaluateBasisFunctionsInSpan(spanIndex, spanFraction, this.basisBuffer, this.basisBuffer1);
181
+ this.sumPoleBufferForSpan(spanIndex);
182
+ this.sumPoleBuffer1ForSpan(spanIndex);
183
+ }
184
+ /**
185
+ * Evaluate the B-spline function and optional derivatives at the given parameter in knot space.
186
+ * * Function value is stored in `poleBuffer`; optional derivative vectors in `poleBuffer1` and `poleBuffer2`.
187
+ */
148
188
  evaluateBuffersAtKnot(u, numDerivative = 0) {
149
189
  const knotIndex0 = this.knots.knotToLeftKnotIndex(u);
150
190
  if (numDerivative < 1) {
@@ -163,36 +203,30 @@ export class BSpline1dNd {
163
203
  this.sumPoleBuffer2ForSpan(knotIndex0 - this.degree + 1);
164
204
  }
165
205
  }
166
- /**
167
- * Reverse the (blocked) poles (in `this.packedData` in place.
168
- */
206
+ /** Reverse the instance poles and knots in place. */
169
207
  reverseInPlace() {
170
- // reverse poles in blocks ...
171
- const b = this.poleLength;
208
+ const pLen = this.poleLength;
172
209
  const data = this.packedData;
173
- for (let i0 = 0, j0 = b * (this.numPoles - 1); i0 < j0; i0 += b, j0 -= b) {
174
- let t = 0;
175
- for (let i = 0; i < b; i++) {
176
- t = data[i0 + i];
177
- data[i0 + i] = data[j0 + i];
178
- data[j0 + i] = t;
179
- }
210
+ for (let i0 = 0, j0 = pLen * (this.numPoles - 1); i0 < j0; i0 += pLen, j0 -= pLen) {
211
+ for (let i = 0; i < pLen; i++)
212
+ [data[i0 + i], data[j0 + i]] = [data[j0 + i], data[i0 + i]];
180
213
  }
181
214
  this.knots.reflectKnots();
182
215
  }
183
216
  /**
184
- * Test if the leading and trailing polygon coordinates are replicated in the manner of a "closed" bspline polygon which has been expanded
185
- * to act as a normal bspline.
186
- * @returns true if `degree` leading and trailing polygon blocks match
187
- * @deprecated in 4.x. Use testClosablePolygon instead.
217
+ * Test if the leading and trailing polygon coordinates are replicated in the manner of a "closed" bspline polygon
218
+ * which has been expanded to act as a normal bspline.
219
+ * @returns true if `degree` leading and trailing polygon blocks match.
220
+ * @deprecated in 4.x. Use `testClosablePolygon` instead.
188
221
  */
189
222
  testCloseablePolygon(mode) {
190
223
  return this.testClosablePolygon(mode);
191
224
  }
192
225
  /**
193
- * Test if the leading and trailing polygon coordinates are replicated in the manner of a "closed" bspline polygon which has been expanded
194
- * to act as a normal bspline.
195
- * @returns true if `degree` leading and trailing polygon blocks match
226
+ * Test if the leading and trailing poles are replicated in the manner of a "closed" B-spline function with wraparound
227
+ * control polygon.
228
+ * @param mode wrap mode, indicating the number of wraparound poles to check. If undefined, `knots.wrappable` is used.
229
+ * @returns true if the expected leading and trailing poles match, according to `mode`.
196
230
  */
197
231
  testClosablePolygon(mode) {
198
232
  if (mode === undefined)
@@ -214,9 +248,10 @@ export class BSpline1dNd {
214
248
  }
215
249
  return true;
216
250
  }
217
- /** Insert knot and resulting pole into the instance, optionally multiple times.
218
- * @param knot the knot to be inserted (may already exist in the KnotVector)
219
- * @param totalMultiplicity the total multiplicity of the knot on return
251
+ /**
252
+ * Insert the knot and resulting pole into the instance, optionally multiple times.
253
+ * @param knot the knot to be inserted (may already exist in the KnotVector).
254
+ * @param totalMultiplicity the total multiplicity of the knot on return.
220
255
  */
221
256
  addKnot(knot, totalMultiplicity) {
222
257
  if (knot < this.knots.leftKnot || knot > this.knots.rightKnot)