@itwin/core-geometry 5.0.0-dev.8 → 5.0.0-dev.83

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 (966) hide show
  1. package/CHANGELOG.md +46 -1
  2. package/lib/cjs/Constant.js +17 -17
  3. package/lib/cjs/Constant.js.map +1 -1
  4. package/lib/cjs/Geometry.d.ts +2 -4
  5. package/lib/cjs/Geometry.d.ts.map +1 -1
  6. package/lib/cjs/Geometry.js +37 -39
  7. package/lib/cjs/Geometry.js.map +1 -1
  8. package/lib/cjs/bspline/AkimaCurve3d.js +3 -1
  9. package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
  10. package/lib/cjs/bspline/BSpline1dNd.d.ts +90 -54
  11. package/lib/cjs/bspline/BSpline1dNd.d.ts.map +1 -1
  12. package/lib/cjs/bspline/BSpline1dNd.js +137 -84
  13. package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
  14. package/lib/cjs/bspline/BSplineCurve.d.ts +193 -155
  15. package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -1
  16. package/lib/cjs/bspline/BSplineCurve.js +249 -181
  17. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  18. package/lib/cjs/bspline/BSplineCurve3dH.js +1 -0
  19. package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
  20. package/lib/cjs/bspline/BSplineCurveOps.d.ts.map +1 -1
  21. package/lib/cjs/bspline/BSplineCurveOps.js +18 -21
  22. package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
  23. package/lib/cjs/bspline/BSplineSurface.js +22 -2
  24. package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
  25. package/lib/cjs/bspline/Bezier1dNd.js +6 -0
  26. package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
  27. package/lib/cjs/bspline/BezierCurve3d.d.ts +3 -1
  28. package/lib/cjs/bspline/BezierCurve3d.d.ts.map +1 -1
  29. package/lib/cjs/bspline/BezierCurve3d.js +5 -5
  30. package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
  31. package/lib/cjs/bspline/BezierCurve3dH.js +2 -0
  32. package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
  33. package/lib/cjs/bspline/BezierCurveBase.d.ts.map +1 -1
  34. package/lib/cjs/bspline/BezierCurveBase.js +21 -2
  35. package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
  36. package/lib/cjs/bspline/InterpolationCurve3d.js +12 -1
  37. package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
  38. package/lib/cjs/bspline/KnotVector.d.ts +82 -60
  39. package/lib/cjs/bspline/KnotVector.d.ts.map +1 -1
  40. package/lib/cjs/bspline/KnotVector.js +144 -84
  41. package/lib/cjs/bspline/KnotVector.js.map +1 -1
  42. package/lib/cjs/bspline/SurfaceLocationDetail.js +12 -0
  43. package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -1
  44. package/lib/cjs/clipping/AlternatingConvexClipTree.js +14 -13
  45. package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
  46. package/lib/cjs/clipping/BooleanClipNode.js +4 -0
  47. package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
  48. package/lib/cjs/clipping/ClipPlane.js +10 -1
  49. package/lib/cjs/clipping/ClipPlane.js.map +1 -1
  50. package/lib/cjs/clipping/ClipPrimitive.js +19 -0
  51. package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
  52. package/lib/cjs/clipping/ClipUtils.js +5 -1
  53. package/lib/cjs/clipping/ClipUtils.js.map +1 -1
  54. package/lib/cjs/clipping/ClipVector.js +11 -8
  55. package/lib/cjs/clipping/ClipVector.js.map +1 -1
  56. package/lib/cjs/clipping/ConvexClipPlaneSet.js +5 -3
  57. package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
  58. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js +2 -1
  59. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  60. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js +3 -0
  61. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  62. package/lib/cjs/core-geometry.d.ts +1 -0
  63. package/lib/cjs/core-geometry.d.ts.map +1 -1
  64. package/lib/cjs/core-geometry.js +1 -0
  65. package/lib/cjs/core-geometry.js.map +1 -1
  66. package/lib/cjs/curve/Arc3d.d.ts +17 -3
  67. package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
  68. package/lib/cjs/curve/Arc3d.js +50 -21
  69. package/lib/cjs/curve/Arc3d.js.map +1 -1
  70. package/lib/cjs/curve/ConstructCurveBetweenCurves.js +3 -0
  71. package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
  72. package/lib/cjs/curve/CoordinateXYZ.js +3 -2
  73. package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
  74. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +0 -2
  75. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  76. package/lib/cjs/curve/CurveChainWithDistanceIndex.js +25 -10
  77. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  78. package/lib/cjs/curve/CurveCollection.d.ts +10 -0
  79. package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
  80. package/lib/cjs/curve/CurveCollection.js +35 -9
  81. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  82. package/lib/cjs/curve/CurveFactory.d.ts +87 -53
  83. package/lib/cjs/curve/CurveFactory.d.ts.map +1 -1
  84. package/lib/cjs/curve/CurveFactory.js +213 -135
  85. package/lib/cjs/curve/CurveFactory.js.map +1 -1
  86. package/lib/cjs/curve/CurveLocationDetail.js +44 -0
  87. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  88. package/lib/cjs/curve/CurvePrimitive.d.ts +7 -10
  89. package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -1
  90. package/lib/cjs/curve/CurvePrimitive.js +27 -12
  91. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  92. package/lib/cjs/curve/CurveProcessor.js +2 -0
  93. package/lib/cjs/curve/CurveProcessor.js.map +1 -1
  94. package/lib/cjs/curve/CurveWireMomentsXYZ.js +2 -0
  95. package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
  96. package/lib/cjs/curve/LineSegment3d.js +6 -2
  97. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  98. package/lib/cjs/curve/LineString3d.js +27 -7
  99. package/lib/cjs/curve/LineString3d.js.map +1 -1
  100. package/lib/cjs/curve/Loop.js +12 -4
  101. package/lib/cjs/curve/Loop.js.map +1 -1
  102. package/lib/cjs/curve/OffsetOptions.js +25 -21
  103. package/lib/cjs/curve/OffsetOptions.js.map +1 -1
  104. package/lib/cjs/curve/ParityRegion.js +4 -2
  105. package/lib/cjs/curve/ParityRegion.js.map +1 -1
  106. package/lib/cjs/curve/Path.js +2 -2
  107. package/lib/cjs/curve/Path.js.map +1 -1
  108. package/lib/cjs/curve/PointString3d.js +3 -2
  109. package/lib/cjs/curve/PointString3d.js.map +1 -1
  110. package/lib/cjs/curve/ProxyCurve.js +1 -0
  111. package/lib/cjs/curve/ProxyCurve.js.map +1 -1
  112. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js +1 -0
  113. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  114. package/lib/cjs/curve/Query/CurveSplitContext.js +3 -0
  115. package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
  116. package/lib/cjs/curve/Query/CylindricalRange.js +6 -2
  117. package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
  118. package/lib/cjs/curve/Query/PlanarSubdivision.js +4 -6
  119. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  120. package/lib/cjs/curve/Query/StrokeCountChain.js +12 -0
  121. package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
  122. package/lib/cjs/curve/Query/StrokeCountMap.js +14 -0
  123. package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
  124. package/lib/cjs/curve/RegionMomentsXY.js +4 -5
  125. package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
  126. package/lib/cjs/curve/RegionOps.js +9 -10
  127. package/lib/cjs/curve/RegionOps.js.map +1 -1
  128. package/lib/cjs/curve/RegionOpsClassificationSweeps.js +24 -1
  129. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  130. package/lib/cjs/curve/StrokeOptions.d.ts +4 -4
  131. package/lib/cjs/curve/StrokeOptions.d.ts.map +1 -1
  132. package/lib/cjs/curve/StrokeOptions.js +23 -6
  133. package/lib/cjs/curve/StrokeOptions.js.map +1 -1
  134. package/lib/cjs/curve/UnionRegion.js +4 -2
  135. package/lib/cjs/curve/UnionRegion.js.map +1 -1
  136. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js +13 -7
  137. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  138. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js +6 -0
  139. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  140. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js +2 -0
  141. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  142. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js +13 -5
  143. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  144. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js +3 -0
  145. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  146. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js +18 -5
  147. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  148. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js +26 -13
  149. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  150. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js +11 -5
  151. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  152. package/lib/cjs/curve/internalContexts/CurveLengthContext.js +6 -0
  153. package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
  154. package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js +8 -6
  155. package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  156. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js +38 -5
  157. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  158. package/lib/cjs/curve/internalContexts/GapSearchContext.js +1 -0
  159. package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
  160. package/lib/cjs/curve/internalContexts/MultiChainCollector.js +12 -0
  161. package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
  162. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js +1 -0
  163. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  164. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js +7 -0
  165. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  166. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js +22 -4
  167. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  168. package/lib/cjs/curve/internalContexts/SumLengthsContext.js +1 -0
  169. package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
  170. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js +3 -0
  171. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  172. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js +2 -0
  173. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  174. package/lib/cjs/curve/spiral/ClothoidSeries.js +4 -0
  175. package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
  176. package/lib/cjs/curve/spiral/CubicEvaluator.js +2 -0
  177. package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
  178. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js +4 -0
  179. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  180. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js +5 -0
  181. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  182. package/lib/cjs/curve/spiral/DirectSpiral3d.js +12 -2
  183. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
  184. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js +24 -4
  185. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  186. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js +2 -0
  187. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  188. package/lib/cjs/curve/spiral/NormalizedTransition.js +5 -0
  189. package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
  190. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js +2 -0
  191. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  192. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js +10 -0
  193. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  194. package/lib/cjs/curve/spiral/TransitionSpiral3d.js +10 -0
  195. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
  196. package/lib/cjs/curve/spiral/XYCurveEvaluator.js +6 -0
  197. package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
  198. package/lib/cjs/geometry3d/Angle.js +18 -16
  199. package/lib/cjs/geometry3d/Angle.js.map +1 -1
  200. package/lib/cjs/geometry3d/AngleSweep.d.ts +7 -2
  201. package/lib/cjs/geometry3d/AngleSweep.d.ts.map +1 -1
  202. package/lib/cjs/geometry3d/AngleSweep.js +14 -2
  203. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
  204. package/lib/cjs/geometry3d/BarycentricTriangle.js +25 -0
  205. package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
  206. package/lib/cjs/geometry3d/BilinearPatch.js +8 -0
  207. package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
  208. package/lib/cjs/geometry3d/CoincidentGeometryOps.js +5 -0
  209. package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
  210. package/lib/cjs/geometry3d/Ellipsoid.js +48 -0
  211. package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
  212. package/lib/cjs/geometry3d/FrameBuilder.js +12 -4
  213. package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
  214. package/lib/cjs/geometry3d/FrustumAnimation.js +7 -0
  215. package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
  216. package/lib/cjs/geometry3d/GrowableBlockedArray.js +12 -0
  217. package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
  218. package/lib/cjs/geometry3d/GrowableFloat64Array.js +3 -0
  219. package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
  220. package/lib/cjs/geometry3d/GrowableXYArray.d.ts +0 -5
  221. package/lib/cjs/geometry3d/GrowableXYArray.d.ts.map +1 -1
  222. package/lib/cjs/geometry3d/GrowableXYArray.js +16 -7
  223. package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
  224. package/lib/cjs/geometry3d/GrowableXYZArray.d.ts +32 -10
  225. package/lib/cjs/geometry3d/GrowableXYZArray.d.ts.map +1 -1
  226. package/lib/cjs/geometry3d/GrowableXYZArray.js +70 -16
  227. package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
  228. package/lib/cjs/geometry3d/IndexedCollectionInterval.js +6 -0
  229. package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
  230. package/lib/cjs/geometry3d/IndexedXYCollection.js +1 -0
  231. package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
  232. package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts +13 -2
  233. package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
  234. package/lib/cjs/geometry3d/IndexedXYZCollection.js +26 -11
  235. package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
  236. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js +3 -0
  237. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  238. package/lib/cjs/geometry3d/Matrix3d.d.ts +3 -4
  239. package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -1
  240. package/lib/cjs/geometry3d/Matrix3d.js +36 -14
  241. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  242. package/lib/cjs/geometry3d/OrderedRotationAngles.js +10 -2
  243. package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
  244. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js +2 -0
  245. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  246. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js +7 -0
  247. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  248. package/lib/cjs/geometry3d/Point2dArrayCarrier.js +2 -0
  249. package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
  250. package/lib/cjs/geometry3d/Point2dVector2d.js +4 -0
  251. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  252. package/lib/cjs/geometry3d/Point3dArrayCarrier.js +3 -1
  253. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  254. package/lib/cjs/geometry3d/Point3dVector3d.d.ts +7 -10
  255. package/lib/cjs/geometry3d/Point3dVector3d.d.ts.map +1 -1
  256. package/lib/cjs/geometry3d/Point3dVector3d.js +16 -10
  257. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  258. package/lib/cjs/geometry3d/PointHelpers.d.ts +4 -4
  259. package/lib/cjs/geometry3d/PointHelpers.d.ts.map +1 -1
  260. package/lib/cjs/geometry3d/PointHelpers.js +8 -8
  261. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  262. package/lib/cjs/geometry3d/PointStreaming.js +12 -4
  263. package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
  264. package/lib/cjs/geometry3d/PolygonOps.d.ts +2 -2
  265. package/lib/cjs/geometry3d/PolygonOps.js +62 -25
  266. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  267. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js +7 -3
  268. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  269. package/lib/cjs/geometry3d/PolylineOps.d.ts +9 -5
  270. package/lib/cjs/geometry3d/PolylineOps.d.ts.map +1 -1
  271. package/lib/cjs/geometry3d/PolylineOps.js +12 -5
  272. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
  273. package/lib/cjs/geometry3d/Range.js +21 -4
  274. package/lib/cjs/geometry3d/Range.js.map +1 -1
  275. package/lib/cjs/geometry3d/Ray2d.js +2 -0
  276. package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
  277. package/lib/cjs/geometry3d/Ray3d.d.ts +2 -2
  278. package/lib/cjs/geometry3d/Ray3d.d.ts.map +1 -1
  279. package/lib/cjs/geometry3d/Ray3d.js +20 -11
  280. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  281. package/lib/cjs/geometry3d/ReusableObjectCache.js +4 -0
  282. package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
  283. package/lib/cjs/geometry3d/Segment1d.js +4 -0
  284. package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
  285. package/lib/cjs/geometry3d/SortablePolygon.js +11 -0
  286. package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
  287. package/lib/cjs/geometry3d/Transform.d.ts +1 -1
  288. package/lib/cjs/geometry3d/Transform.js +4 -1
  289. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  290. package/lib/cjs/geometry3d/YawPitchRollAngles.js +6 -0
  291. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  292. package/lib/cjs/geometry4d/Map4d.js +2 -0
  293. package/lib/cjs/geometry4d/Map4d.js.map +1 -1
  294. package/lib/cjs/geometry4d/Matrix4d.js +1 -0
  295. package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
  296. package/lib/cjs/geometry4d/MomentData.d.ts +72 -73
  297. package/lib/cjs/geometry4d/MomentData.d.ts.map +1 -1
  298. package/lib/cjs/geometry4d/MomentData.js +90 -66
  299. package/lib/cjs/geometry4d/MomentData.js.map +1 -1
  300. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js +6 -0
  301. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  302. package/lib/cjs/geometry4d/Point4d.js +2 -0
  303. package/lib/cjs/geometry4d/Point4d.js.map +1 -1
  304. package/lib/cjs/numerics/BezierPolynomials.js +8 -0
  305. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
  306. package/lib/cjs/numerics/ClusterableArray.js +29 -13
  307. package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
  308. package/lib/cjs/numerics/Complex.js +2 -0
  309. package/lib/cjs/numerics/Complex.js.map +1 -1
  310. package/lib/cjs/numerics/ConvexPolygon2d.js +3 -0
  311. package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
  312. package/lib/cjs/numerics/Newton.js +59 -4
  313. package/lib/cjs/numerics/Newton.js.map +1 -1
  314. package/lib/cjs/numerics/PascalCoefficients.js +1 -1
  315. package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
  316. package/lib/cjs/numerics/PolarData.js +13 -1
  317. package/lib/cjs/numerics/PolarData.js.map +1 -1
  318. package/lib/cjs/numerics/Polynomials.js +64 -26
  319. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  320. package/lib/cjs/numerics/Quadrature.js +26 -20
  321. package/lib/cjs/numerics/Quadrature.js.map +1 -1
  322. package/lib/cjs/numerics/TriDiagonalSystem.js +11 -0
  323. package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
  324. package/lib/cjs/numerics/UnionFind.js +1 -0
  325. package/lib/cjs/numerics/UnionFind.js.map +1 -1
  326. package/lib/cjs/numerics/UsageSums.js +10 -0
  327. package/lib/cjs/numerics/UsageSums.js.map +1 -1
  328. package/lib/cjs/polyface/AuxData.js +16 -0
  329. package/lib/cjs/polyface/AuxData.js.map +1 -1
  330. package/lib/cjs/polyface/BoxTopology.js +67 -67
  331. package/lib/cjs/polyface/BoxTopology.js.map +1 -1
  332. package/lib/cjs/polyface/FacetFaceData.d.ts +1 -1
  333. package/lib/cjs/polyface/FacetFaceData.js +3 -1
  334. package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
  335. package/lib/cjs/polyface/FacetLocationDetail.js +30 -0
  336. package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
  337. package/lib/cjs/polyface/FacetOrientation.js +12 -1
  338. package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
  339. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js +18 -2
  340. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  341. package/lib/cjs/polyface/IndexedEdgeMatcher.d.ts +33 -23
  342. package/lib/cjs/polyface/IndexedEdgeMatcher.d.ts.map +1 -1
  343. package/lib/cjs/polyface/IndexedEdgeMatcher.js +63 -33
  344. package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
  345. package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts +3 -2
  346. package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
  347. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js +11 -2
  348. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  349. package/lib/cjs/polyface/IndexedPolyfaceWalker.d.ts +233 -0
  350. package/lib/cjs/polyface/IndexedPolyfaceWalker.d.ts.map +1 -0
  351. package/lib/cjs/polyface/IndexedPolyfaceWalker.js +353 -0
  352. package/lib/cjs/polyface/IndexedPolyfaceWalker.js.map +1 -0
  353. package/lib/cjs/polyface/Polyface.d.ts +35 -10
  354. package/lib/cjs/polyface/Polyface.d.ts.map +1 -1
  355. package/lib/cjs/polyface/Polyface.js +73 -12
  356. package/lib/cjs/polyface/Polyface.js.map +1 -1
  357. package/lib/cjs/polyface/PolyfaceBuilder.d.ts +14 -27
  358. package/lib/cjs/polyface/PolyfaceBuilder.d.ts.map +1 -1
  359. package/lib/cjs/polyface/PolyfaceBuilder.js +47 -79
  360. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  361. package/lib/cjs/polyface/PolyfaceClip.js +8 -0
  362. package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
  363. package/lib/cjs/polyface/PolyfaceData.d.ts +28 -0
  364. package/lib/cjs/polyface/PolyfaceData.d.ts.map +1 -1
  365. package/lib/cjs/polyface/PolyfaceData.js +87 -5
  366. package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
  367. package/lib/cjs/polyface/PolyfaceQuery.js +47 -7
  368. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  369. package/lib/cjs/polyface/RangeLengthData.js +7 -0
  370. package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
  371. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js +12 -0
  372. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  373. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js +5 -2
  374. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  375. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js +12 -0
  376. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  377. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js +14 -0
  378. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  379. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js +5 -0
  380. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  381. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js +43 -0
  382. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  383. package/lib/cjs/polyface/TaggedNumericData.js +8 -0
  384. package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
  385. package/lib/cjs/polyface/TriangleCandidate.js +3 -0
  386. package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
  387. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js +7 -0
  388. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  389. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js +6 -0
  390. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  391. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js +3 -0
  392. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  393. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js +3 -0
  394. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  395. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js +32 -0
  396. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  397. package/lib/cjs/polyface/multiclip/RangeSearch.js +5 -5
  398. package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
  399. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js +21 -8
  400. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  401. package/lib/cjs/polyface/multiclip/XYPointBuckets.js +6 -0
  402. package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
  403. package/lib/cjs/serialization/BGFBAccessors.js +82 -164
  404. package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
  405. package/lib/cjs/serialization/BGFBReader.js +22 -22
  406. package/lib/cjs/serialization/BGFBReader.js.map +1 -1
  407. package/lib/cjs/serialization/BGFBWriter.js +1 -0
  408. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  409. package/lib/cjs/serialization/DeepCompare.js +17 -17
  410. package/lib/cjs/serialization/DeepCompare.js.map +1 -1
  411. package/lib/cjs/serialization/GeometrySamples.d.ts +5 -5
  412. package/lib/cjs/serialization/GeometrySamples.d.ts.map +1 -1
  413. package/lib/cjs/serialization/GeometrySamples.js +113 -112
  414. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  415. package/lib/cjs/serialization/IModelJsonSchema.d.ts +70 -63
  416. package/lib/cjs/serialization/IModelJsonSchema.d.ts.map +1 -1
  417. package/lib/cjs/serialization/IModelJsonSchema.js +87 -74
  418. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  419. package/lib/cjs/solid/Box.js +7 -2
  420. package/lib/cjs/solid/Box.js.map +1 -1
  421. package/lib/cjs/solid/Cone.d.ts +39 -14
  422. package/lib/cjs/solid/Cone.d.ts.map +1 -1
  423. package/lib/cjs/solid/Cone.js +52 -16
  424. package/lib/cjs/solid/Cone.js.map +1 -1
  425. package/lib/cjs/solid/LinearSweep.js +4 -2
  426. package/lib/cjs/solid/LinearSweep.js.map +1 -1
  427. package/lib/cjs/solid/RotationalSweep.js +5 -2
  428. package/lib/cjs/solid/RotationalSweep.js.map +1 -1
  429. package/lib/cjs/solid/RuledSweep.d.ts +26 -23
  430. package/lib/cjs/solid/RuledSweep.d.ts.map +1 -1
  431. package/lib/cjs/solid/RuledSweep.js +32 -24
  432. package/lib/cjs/solid/RuledSweep.js.map +1 -1
  433. package/lib/cjs/solid/SolidPrimitive.d.ts +12 -11
  434. package/lib/cjs/solid/SolidPrimitive.d.ts.map +1 -1
  435. package/lib/cjs/solid/SolidPrimitive.js +11 -6
  436. package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
  437. package/lib/cjs/solid/Sphere.d.ts +34 -17
  438. package/lib/cjs/solid/Sphere.d.ts.map +1 -1
  439. package/lib/cjs/solid/Sphere.js +51 -24
  440. package/lib/cjs/solid/Sphere.js.map +1 -1
  441. package/lib/cjs/solid/SweepContour.d.ts +24 -15
  442. package/lib/cjs/solid/SweepContour.d.ts.map +1 -1
  443. package/lib/cjs/solid/SweepContour.js +33 -15
  444. package/lib/cjs/solid/SweepContour.js.map +1 -1
  445. package/lib/cjs/solid/TorusPipe.js +7 -2
  446. package/lib/cjs/solid/TorusPipe.js.map +1 -1
  447. package/lib/cjs/topology/ChainMerge.js +16 -4
  448. package/lib/cjs/topology/ChainMerge.js.map +1 -1
  449. package/lib/cjs/topology/Graph.js +41 -6
  450. package/lib/cjs/topology/Graph.js.map +1 -1
  451. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +1 -1
  452. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js +5 -1
  453. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  454. package/lib/cjs/topology/HalfEdgeGraphSearch.js +2 -0
  455. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  456. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js +9 -2
  457. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  458. package/lib/cjs/topology/HalfEdgeGraphValidation.js +7 -9
  459. package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
  460. package/lib/cjs/topology/HalfEdgeMarkSet.js +5 -0
  461. package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
  462. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js +6 -0
  463. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  464. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js +1 -0
  465. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  466. package/lib/cjs/topology/HalfEdgePositionDetail.js +16 -0
  467. package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
  468. package/lib/cjs/topology/HalfEdgePriorityQueue.js +2 -0
  469. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
  470. package/lib/cjs/topology/InsertAndRetriangulateContext.js +4 -0
  471. package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
  472. package/lib/cjs/topology/MaskManager.js +3 -0
  473. package/lib/cjs/topology/MaskManager.js.map +1 -1
  474. package/lib/cjs/topology/Merging.js +11 -6
  475. package/lib/cjs/topology/Merging.js.map +1 -1
  476. package/lib/cjs/topology/RegularizeFace.js +22 -0
  477. package/lib/cjs/topology/RegularizeFace.js.map +1 -1
  478. package/lib/cjs/topology/SignedDataSummary.js +22 -0
  479. package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
  480. package/lib/cjs/topology/Triangulation.js +21 -11
  481. package/lib/cjs/topology/Triangulation.js.map +1 -1
  482. package/lib/cjs/topology/XYParitySearchContext.js +13 -0
  483. package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
  484. package/lib/esm/Constant.js +17 -17
  485. package/lib/esm/Constant.js.map +1 -1
  486. package/lib/esm/Geometry.d.ts +2 -4
  487. package/lib/esm/Geometry.d.ts.map +1 -1
  488. package/lib/esm/Geometry.js +37 -39
  489. package/lib/esm/Geometry.js.map +1 -1
  490. package/lib/esm/bspline/AkimaCurve3d.js +3 -1
  491. package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
  492. package/lib/esm/bspline/BSpline1dNd.d.ts +90 -54
  493. package/lib/esm/bspline/BSpline1dNd.d.ts.map +1 -1
  494. package/lib/esm/bspline/BSpline1dNd.js +137 -84
  495. package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
  496. package/lib/esm/bspline/BSplineCurve.d.ts +193 -155
  497. package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
  498. package/lib/esm/bspline/BSplineCurve.js +249 -181
  499. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  500. package/lib/esm/bspline/BSplineCurve3dH.js +1 -0
  501. package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
  502. package/lib/esm/bspline/BSplineCurveOps.d.ts.map +1 -1
  503. package/lib/esm/bspline/BSplineCurveOps.js +18 -21
  504. package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
  505. package/lib/esm/bspline/BSplineSurface.js +22 -2
  506. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  507. package/lib/esm/bspline/Bezier1dNd.js +6 -0
  508. package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
  509. package/lib/esm/bspline/BezierCurve3d.d.ts +3 -1
  510. package/lib/esm/bspline/BezierCurve3d.d.ts.map +1 -1
  511. package/lib/esm/bspline/BezierCurve3d.js +5 -5
  512. package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
  513. package/lib/esm/bspline/BezierCurve3dH.js +2 -0
  514. package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
  515. package/lib/esm/bspline/BezierCurveBase.d.ts.map +1 -1
  516. package/lib/esm/bspline/BezierCurveBase.js +21 -2
  517. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  518. package/lib/esm/bspline/InterpolationCurve3d.js +12 -1
  519. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  520. package/lib/esm/bspline/KnotVector.d.ts +82 -60
  521. package/lib/esm/bspline/KnotVector.d.ts.map +1 -1
  522. package/lib/esm/bspline/KnotVector.js +144 -84
  523. package/lib/esm/bspline/KnotVector.js.map +1 -1
  524. package/lib/esm/bspline/SurfaceLocationDetail.js +12 -0
  525. package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
  526. package/lib/esm/clipping/AlternatingConvexClipTree.js +14 -13
  527. package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
  528. package/lib/esm/clipping/BooleanClipNode.js +4 -0
  529. package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
  530. package/lib/esm/clipping/ClipPlane.js +10 -1
  531. package/lib/esm/clipping/ClipPlane.js.map +1 -1
  532. package/lib/esm/clipping/ClipPrimitive.js +19 -0
  533. package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
  534. package/lib/esm/clipping/ClipUtils.js +5 -1
  535. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  536. package/lib/esm/clipping/ClipVector.js +11 -8
  537. package/lib/esm/clipping/ClipVector.js.map +1 -1
  538. package/lib/esm/clipping/ConvexClipPlaneSet.js +5 -3
  539. package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
  540. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js +2 -1
  541. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  542. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js +3 -0
  543. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  544. package/lib/esm/core-geometry.d.ts +1 -0
  545. package/lib/esm/core-geometry.d.ts.map +1 -1
  546. package/lib/esm/core-geometry.js +1 -0
  547. package/lib/esm/core-geometry.js.map +1 -1
  548. package/lib/esm/curve/Arc3d.d.ts +17 -3
  549. package/lib/esm/curve/Arc3d.d.ts.map +1 -1
  550. package/lib/esm/curve/Arc3d.js +50 -21
  551. package/lib/esm/curve/Arc3d.js.map +1 -1
  552. package/lib/esm/curve/ConstructCurveBetweenCurves.js +3 -0
  553. package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
  554. package/lib/esm/curve/CoordinateXYZ.js +3 -2
  555. package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
  556. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +0 -2
  557. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  558. package/lib/esm/curve/CurveChainWithDistanceIndex.js +25 -10
  559. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  560. package/lib/esm/curve/CurveCollection.d.ts +10 -0
  561. package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
  562. package/lib/esm/curve/CurveCollection.js +35 -9
  563. package/lib/esm/curve/CurveCollection.js.map +1 -1
  564. package/lib/esm/curve/CurveFactory.d.ts +87 -53
  565. package/lib/esm/curve/CurveFactory.d.ts.map +1 -1
  566. package/lib/esm/curve/CurveFactory.js +213 -135
  567. package/lib/esm/curve/CurveFactory.js.map +1 -1
  568. package/lib/esm/curve/CurveLocationDetail.js +44 -0
  569. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  570. package/lib/esm/curve/CurvePrimitive.d.ts +7 -10
  571. package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
  572. package/lib/esm/curve/CurvePrimitive.js +27 -12
  573. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  574. package/lib/esm/curve/CurveProcessor.js +2 -0
  575. package/lib/esm/curve/CurveProcessor.js.map +1 -1
  576. package/lib/esm/curve/CurveWireMomentsXYZ.js +2 -0
  577. package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
  578. package/lib/esm/curve/LineSegment3d.js +6 -2
  579. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  580. package/lib/esm/curve/LineString3d.js +27 -7
  581. package/lib/esm/curve/LineString3d.js.map +1 -1
  582. package/lib/esm/curve/Loop.js +12 -4
  583. package/lib/esm/curve/Loop.js.map +1 -1
  584. package/lib/esm/curve/OffsetOptions.js +25 -21
  585. package/lib/esm/curve/OffsetOptions.js.map +1 -1
  586. package/lib/esm/curve/ParityRegion.js +4 -2
  587. package/lib/esm/curve/ParityRegion.js.map +1 -1
  588. package/lib/esm/curve/Path.js +2 -2
  589. package/lib/esm/curve/Path.js.map +1 -1
  590. package/lib/esm/curve/PointString3d.js +3 -2
  591. package/lib/esm/curve/PointString3d.js.map +1 -1
  592. package/lib/esm/curve/ProxyCurve.js +1 -0
  593. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  594. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js +1 -0
  595. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  596. package/lib/esm/curve/Query/CurveSplitContext.js +3 -0
  597. package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
  598. package/lib/esm/curve/Query/CylindricalRange.js +6 -2
  599. package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
  600. package/lib/esm/curve/Query/PlanarSubdivision.js +4 -6
  601. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  602. package/lib/esm/curve/Query/StrokeCountChain.js +12 -0
  603. package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
  604. package/lib/esm/curve/Query/StrokeCountMap.js +14 -0
  605. package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
  606. package/lib/esm/curve/RegionMomentsXY.js +4 -5
  607. package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
  608. package/lib/esm/curve/RegionOps.js +9 -10
  609. package/lib/esm/curve/RegionOps.js.map +1 -1
  610. package/lib/esm/curve/RegionOpsClassificationSweeps.js +24 -1
  611. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  612. package/lib/esm/curve/StrokeOptions.d.ts +4 -4
  613. package/lib/esm/curve/StrokeOptions.d.ts.map +1 -1
  614. package/lib/esm/curve/StrokeOptions.js +23 -6
  615. package/lib/esm/curve/StrokeOptions.js.map +1 -1
  616. package/lib/esm/curve/UnionRegion.js +4 -2
  617. package/lib/esm/curve/UnionRegion.js.map +1 -1
  618. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js +13 -7
  619. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  620. package/lib/esm/curve/internalContexts/ChainCollectorContext.js +6 -0
  621. package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  622. package/lib/esm/curve/internalContexts/CloneCurvesContext.js +2 -0
  623. package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  624. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js +13 -5
  625. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  626. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js +3 -0
  627. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  628. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js +18 -5
  629. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  630. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js +26 -13
  631. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  632. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js +11 -5
  633. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  634. package/lib/esm/curve/internalContexts/CurveLengthContext.js +6 -0
  635. package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
  636. package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js +8 -6
  637. package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  638. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js +38 -5
  639. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  640. package/lib/esm/curve/internalContexts/GapSearchContext.js +1 -0
  641. package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
  642. package/lib/esm/curve/internalContexts/MultiChainCollector.js +12 -0
  643. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  644. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js +1 -0
  645. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  646. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js +7 -0
  647. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  648. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js +22 -4
  649. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  650. package/lib/esm/curve/internalContexts/SumLengthsContext.js +1 -0
  651. package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
  652. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js +3 -0
  653. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  654. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js +2 -0
  655. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  656. package/lib/esm/curve/spiral/ClothoidSeries.js +4 -0
  657. package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
  658. package/lib/esm/curve/spiral/CubicEvaluator.js +2 -0
  659. package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
  660. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js +4 -0
  661. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  662. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js +5 -0
  663. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  664. package/lib/esm/curve/spiral/DirectSpiral3d.js +12 -2
  665. package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
  666. package/lib/esm/curve/spiral/IntegratedSpiral3d.js +24 -4
  667. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  668. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js +2 -0
  669. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  670. package/lib/esm/curve/spiral/NormalizedTransition.js +5 -0
  671. package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
  672. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js +2 -0
  673. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  674. package/lib/esm/curve/spiral/TransitionConditionalProperties.js +10 -0
  675. package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  676. package/lib/esm/curve/spiral/TransitionSpiral3d.js +10 -0
  677. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
  678. package/lib/esm/curve/spiral/XYCurveEvaluator.js +6 -0
  679. package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
  680. package/lib/esm/geometry3d/Angle.js +18 -16
  681. package/lib/esm/geometry3d/Angle.js.map +1 -1
  682. package/lib/esm/geometry3d/AngleSweep.d.ts +7 -2
  683. package/lib/esm/geometry3d/AngleSweep.d.ts.map +1 -1
  684. package/lib/esm/geometry3d/AngleSweep.js +14 -2
  685. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  686. package/lib/esm/geometry3d/BarycentricTriangle.js +25 -0
  687. package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
  688. package/lib/esm/geometry3d/BilinearPatch.js +8 -0
  689. package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
  690. package/lib/esm/geometry3d/CoincidentGeometryOps.js +5 -0
  691. package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
  692. package/lib/esm/geometry3d/Ellipsoid.js +48 -0
  693. package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
  694. package/lib/esm/geometry3d/FrameBuilder.js +12 -4
  695. package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
  696. package/lib/esm/geometry3d/FrustumAnimation.js +7 -0
  697. package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
  698. package/lib/esm/geometry3d/GrowableBlockedArray.js +12 -0
  699. package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
  700. package/lib/esm/geometry3d/GrowableFloat64Array.js +3 -0
  701. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
  702. package/lib/esm/geometry3d/GrowableXYArray.d.ts +0 -5
  703. package/lib/esm/geometry3d/GrowableXYArray.d.ts.map +1 -1
  704. package/lib/esm/geometry3d/GrowableXYArray.js +16 -7
  705. package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
  706. package/lib/esm/geometry3d/GrowableXYZArray.d.ts +32 -10
  707. package/lib/esm/geometry3d/GrowableXYZArray.d.ts.map +1 -1
  708. package/lib/esm/geometry3d/GrowableXYZArray.js +70 -16
  709. package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
  710. package/lib/esm/geometry3d/IndexedCollectionInterval.js +6 -0
  711. package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
  712. package/lib/esm/geometry3d/IndexedXYCollection.js +1 -0
  713. package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
  714. package/lib/esm/geometry3d/IndexedXYZCollection.d.ts +13 -2
  715. package/lib/esm/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
  716. package/lib/esm/geometry3d/IndexedXYZCollection.js +26 -11
  717. package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
  718. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js +3 -0
  719. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  720. package/lib/esm/geometry3d/Matrix3d.d.ts +3 -4
  721. package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -1
  722. package/lib/esm/geometry3d/Matrix3d.js +36 -14
  723. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  724. package/lib/esm/geometry3d/OrderedRotationAngles.js +10 -2
  725. package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
  726. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js +2 -0
  727. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  728. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js +7 -0
  729. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  730. package/lib/esm/geometry3d/Point2dArrayCarrier.js +2 -0
  731. package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
  732. package/lib/esm/geometry3d/Point2dVector2d.js +4 -0
  733. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  734. package/lib/esm/geometry3d/Point3dArrayCarrier.js +3 -1
  735. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  736. package/lib/esm/geometry3d/Point3dVector3d.d.ts +7 -10
  737. package/lib/esm/geometry3d/Point3dVector3d.d.ts.map +1 -1
  738. package/lib/esm/geometry3d/Point3dVector3d.js +16 -10
  739. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  740. package/lib/esm/geometry3d/PointHelpers.d.ts +4 -4
  741. package/lib/esm/geometry3d/PointHelpers.d.ts.map +1 -1
  742. package/lib/esm/geometry3d/PointHelpers.js +8 -8
  743. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  744. package/lib/esm/geometry3d/PointStreaming.js +12 -4
  745. package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
  746. package/lib/esm/geometry3d/PolygonOps.d.ts +2 -2
  747. package/lib/esm/geometry3d/PolygonOps.js +62 -25
  748. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  749. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js +7 -3
  750. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  751. package/lib/esm/geometry3d/PolylineOps.d.ts +9 -5
  752. package/lib/esm/geometry3d/PolylineOps.d.ts.map +1 -1
  753. package/lib/esm/geometry3d/PolylineOps.js +12 -5
  754. package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
  755. package/lib/esm/geometry3d/Range.js +21 -4
  756. package/lib/esm/geometry3d/Range.js.map +1 -1
  757. package/lib/esm/geometry3d/Ray2d.js +2 -0
  758. package/lib/esm/geometry3d/Ray2d.js.map +1 -1
  759. package/lib/esm/geometry3d/Ray3d.d.ts +2 -2
  760. package/lib/esm/geometry3d/Ray3d.d.ts.map +1 -1
  761. package/lib/esm/geometry3d/Ray3d.js +20 -11
  762. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  763. package/lib/esm/geometry3d/ReusableObjectCache.js +4 -0
  764. package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
  765. package/lib/esm/geometry3d/Segment1d.js +4 -0
  766. package/lib/esm/geometry3d/Segment1d.js.map +1 -1
  767. package/lib/esm/geometry3d/SortablePolygon.js +11 -0
  768. package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
  769. package/lib/esm/geometry3d/Transform.d.ts +1 -1
  770. package/lib/esm/geometry3d/Transform.js +4 -1
  771. package/lib/esm/geometry3d/Transform.js.map +1 -1
  772. package/lib/esm/geometry3d/YawPitchRollAngles.js +6 -0
  773. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  774. package/lib/esm/geometry4d/Map4d.js +2 -0
  775. package/lib/esm/geometry4d/Map4d.js.map +1 -1
  776. package/lib/esm/geometry4d/Matrix4d.js +1 -0
  777. package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
  778. package/lib/esm/geometry4d/MomentData.d.ts +72 -73
  779. package/lib/esm/geometry4d/MomentData.d.ts.map +1 -1
  780. package/lib/esm/geometry4d/MomentData.js +90 -66
  781. package/lib/esm/geometry4d/MomentData.js.map +1 -1
  782. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js +6 -0
  783. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  784. package/lib/esm/geometry4d/Point4d.js +2 -0
  785. package/lib/esm/geometry4d/Point4d.js.map +1 -1
  786. package/lib/esm/numerics/BezierPolynomials.js +8 -0
  787. package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
  788. package/lib/esm/numerics/ClusterableArray.js +29 -13
  789. package/lib/esm/numerics/ClusterableArray.js.map +1 -1
  790. package/lib/esm/numerics/Complex.js +2 -0
  791. package/lib/esm/numerics/Complex.js.map +1 -1
  792. package/lib/esm/numerics/ConvexPolygon2d.js +3 -0
  793. package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
  794. package/lib/esm/numerics/Newton.js +59 -4
  795. package/lib/esm/numerics/Newton.js.map +1 -1
  796. package/lib/esm/numerics/PascalCoefficients.js +1 -1
  797. package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
  798. package/lib/esm/numerics/PolarData.js +13 -1
  799. package/lib/esm/numerics/PolarData.js.map +1 -1
  800. package/lib/esm/numerics/Polynomials.js +64 -26
  801. package/lib/esm/numerics/Polynomials.js.map +1 -1
  802. package/lib/esm/numerics/Quadrature.js +26 -20
  803. package/lib/esm/numerics/Quadrature.js.map +1 -1
  804. package/lib/esm/numerics/TriDiagonalSystem.js +11 -0
  805. package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
  806. package/lib/esm/numerics/UnionFind.js +1 -0
  807. package/lib/esm/numerics/UnionFind.js.map +1 -1
  808. package/lib/esm/numerics/UsageSums.js +10 -0
  809. package/lib/esm/numerics/UsageSums.js.map +1 -1
  810. package/lib/esm/polyface/AuxData.js +16 -0
  811. package/lib/esm/polyface/AuxData.js.map +1 -1
  812. package/lib/esm/polyface/BoxTopology.js +67 -67
  813. package/lib/esm/polyface/BoxTopology.js.map +1 -1
  814. package/lib/esm/polyface/FacetFaceData.d.ts +1 -1
  815. package/lib/esm/polyface/FacetFaceData.js +3 -1
  816. package/lib/esm/polyface/FacetFaceData.js.map +1 -1
  817. package/lib/esm/polyface/FacetLocationDetail.js +30 -0
  818. package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
  819. package/lib/esm/polyface/FacetOrientation.js +12 -1
  820. package/lib/esm/polyface/FacetOrientation.js.map +1 -1
  821. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js +18 -2
  822. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  823. package/lib/esm/polyface/IndexedEdgeMatcher.d.ts +33 -23
  824. package/lib/esm/polyface/IndexedEdgeMatcher.d.ts.map +1 -1
  825. package/lib/esm/polyface/IndexedEdgeMatcher.js +63 -33
  826. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
  827. package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts +3 -2
  828. package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
  829. package/lib/esm/polyface/IndexedPolyfaceVisitor.js +11 -2
  830. package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  831. package/lib/esm/polyface/IndexedPolyfaceWalker.d.ts +233 -0
  832. package/lib/esm/polyface/IndexedPolyfaceWalker.d.ts.map +1 -0
  833. package/lib/esm/polyface/IndexedPolyfaceWalker.js +349 -0
  834. package/lib/esm/polyface/IndexedPolyfaceWalker.js.map +1 -0
  835. package/lib/esm/polyface/Polyface.d.ts +35 -10
  836. package/lib/esm/polyface/Polyface.d.ts.map +1 -1
  837. package/lib/esm/polyface/Polyface.js +73 -12
  838. package/lib/esm/polyface/Polyface.js.map +1 -1
  839. package/lib/esm/polyface/PolyfaceBuilder.d.ts +14 -27
  840. package/lib/esm/polyface/PolyfaceBuilder.d.ts.map +1 -1
  841. package/lib/esm/polyface/PolyfaceBuilder.js +48 -80
  842. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  843. package/lib/esm/polyface/PolyfaceClip.js +8 -0
  844. package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
  845. package/lib/esm/polyface/PolyfaceData.d.ts +28 -0
  846. package/lib/esm/polyface/PolyfaceData.d.ts.map +1 -1
  847. package/lib/esm/polyface/PolyfaceData.js +87 -5
  848. package/lib/esm/polyface/PolyfaceData.js.map +1 -1
  849. package/lib/esm/polyface/PolyfaceQuery.js +47 -7
  850. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  851. package/lib/esm/polyface/RangeLengthData.js +7 -0
  852. package/lib/esm/polyface/RangeLengthData.js.map +1 -1
  853. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js +12 -0
  854. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  855. package/lib/esm/polyface/RangeTree/MinimumValueTester.js +5 -2
  856. package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  857. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js +12 -0
  858. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  859. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js +14 -0
  860. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  861. package/lib/esm/polyface/RangeTree/RangeTreeNode.js +5 -0
  862. package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  863. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js +43 -0
  864. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  865. package/lib/esm/polyface/TaggedNumericData.js +8 -0
  866. package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
  867. package/lib/esm/polyface/TriangleCandidate.js +3 -0
  868. package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
  869. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js +7 -0
  870. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  871. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js +6 -0
  872. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  873. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js +3 -0
  874. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  875. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js +3 -0
  876. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  877. package/lib/esm/polyface/multiclip/OffsetMeshContext.js +32 -0
  878. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  879. package/lib/esm/polyface/multiclip/RangeSearch.js +5 -5
  880. package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
  881. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js +21 -8
  882. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  883. package/lib/esm/polyface/multiclip/XYPointBuckets.js +6 -0
  884. package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
  885. package/lib/esm/serialization/BGFBAccessors.js +82 -164
  886. package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
  887. package/lib/esm/serialization/BGFBReader.js +22 -22
  888. package/lib/esm/serialization/BGFBReader.js.map +1 -1
  889. package/lib/esm/serialization/BGFBWriter.js +1 -0
  890. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  891. package/lib/esm/serialization/DeepCompare.js +17 -17
  892. package/lib/esm/serialization/DeepCompare.js.map +1 -1
  893. package/lib/esm/serialization/GeometrySamples.d.ts +5 -5
  894. package/lib/esm/serialization/GeometrySamples.d.ts.map +1 -1
  895. package/lib/esm/serialization/GeometrySamples.js +113 -112
  896. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  897. package/lib/esm/serialization/IModelJsonSchema.d.ts +70 -63
  898. package/lib/esm/serialization/IModelJsonSchema.d.ts.map +1 -1
  899. package/lib/esm/serialization/IModelJsonSchema.js +87 -74
  900. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  901. package/lib/esm/solid/Box.js +7 -2
  902. package/lib/esm/solid/Box.js.map +1 -1
  903. package/lib/esm/solid/Cone.d.ts +39 -14
  904. package/lib/esm/solid/Cone.d.ts.map +1 -1
  905. package/lib/esm/solid/Cone.js +53 -17
  906. package/lib/esm/solid/Cone.js.map +1 -1
  907. package/lib/esm/solid/LinearSweep.js +4 -2
  908. package/lib/esm/solid/LinearSweep.js.map +1 -1
  909. package/lib/esm/solid/RotationalSweep.js +5 -2
  910. package/lib/esm/solid/RotationalSweep.js.map +1 -1
  911. package/lib/esm/solid/RuledSweep.d.ts +26 -23
  912. package/lib/esm/solid/RuledSweep.d.ts.map +1 -1
  913. package/lib/esm/solid/RuledSweep.js +32 -24
  914. package/lib/esm/solid/RuledSweep.js.map +1 -1
  915. package/lib/esm/solid/SolidPrimitive.d.ts +12 -11
  916. package/lib/esm/solid/SolidPrimitive.d.ts.map +1 -1
  917. package/lib/esm/solid/SolidPrimitive.js +11 -6
  918. package/lib/esm/solid/SolidPrimitive.js.map +1 -1
  919. package/lib/esm/solid/Sphere.d.ts +34 -17
  920. package/lib/esm/solid/Sphere.d.ts.map +1 -1
  921. package/lib/esm/solid/Sphere.js +52 -25
  922. package/lib/esm/solid/Sphere.js.map +1 -1
  923. package/lib/esm/solid/SweepContour.d.ts +24 -15
  924. package/lib/esm/solid/SweepContour.d.ts.map +1 -1
  925. package/lib/esm/solid/SweepContour.js +33 -15
  926. package/lib/esm/solid/SweepContour.js.map +1 -1
  927. package/lib/esm/solid/TorusPipe.js +7 -2
  928. package/lib/esm/solid/TorusPipe.js.map +1 -1
  929. package/lib/esm/topology/ChainMerge.js +16 -4
  930. package/lib/esm/topology/ChainMerge.js.map +1 -1
  931. package/lib/esm/topology/Graph.js +41 -6
  932. package/lib/esm/topology/Graph.js.map +1 -1
  933. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +1 -1
  934. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js +5 -1
  935. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  936. package/lib/esm/topology/HalfEdgeGraphSearch.js +2 -0
  937. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  938. package/lib/esm/topology/HalfEdgeGraphSpineContext.js +9 -2
  939. package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  940. package/lib/esm/topology/HalfEdgeGraphValidation.js +7 -9
  941. package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
  942. package/lib/esm/topology/HalfEdgeMarkSet.js +5 -0
  943. package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
  944. package/lib/esm/topology/HalfEdgeNodeXYZUV.js +6 -0
  945. package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  946. package/lib/esm/topology/HalfEdgePointInGraphSearch.js +1 -0
  947. package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  948. package/lib/esm/topology/HalfEdgePositionDetail.js +16 -0
  949. package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
  950. package/lib/esm/topology/HalfEdgePriorityQueue.js +2 -0
  951. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
  952. package/lib/esm/topology/InsertAndRetriangulateContext.js +4 -0
  953. package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
  954. package/lib/esm/topology/MaskManager.js +3 -0
  955. package/lib/esm/topology/MaskManager.js.map +1 -1
  956. package/lib/esm/topology/Merging.js +11 -6
  957. package/lib/esm/topology/Merging.js.map +1 -1
  958. package/lib/esm/topology/RegularizeFace.js +22 -0
  959. package/lib/esm/topology/RegularizeFace.js.map +1 -1
  960. package/lib/esm/topology/SignedDataSummary.js +22 -0
  961. package/lib/esm/topology/SignedDataSummary.js.map +1 -1
  962. package/lib/esm/topology/Triangulation.js +21 -11
  963. package/lib/esm/topology/Triangulation.js.map +1 -1
  964. package/lib/esm/topology/XYParitySearchContext.js +13 -0
  965. package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
  966. package/package.json +9 -9
@@ -5,6 +5,7 @@
5
5
  /** @packageDocumentation
6
6
  * @module Bspline
7
7
  */
8
+ import { assert } from "@itwin/core-bentley";
8
9
  import { Geometry } from "../Geometry";
9
10
  import { NumberArray } from "../geometry3d/PointHelpers";
10
11
  /**
@@ -16,59 +17,89 @@ export var BSplineWrapMode;
16
17
  (function (BSplineWrapMode) {
17
18
  /** No conversion performed. */
18
19
  BSplineWrapMode[BSplineWrapMode["None"] = 0] = "None";
19
- /** The B-spline was opened up by adding degree wrap-around control points to the legacy periodic data.
20
- * * This is typical of B-splines constructed with maximum (degree - 1) continuity.
20
+ /**
21
+ * The legacy periodic B-spline data was opened up by adding `degree` wrap-around poles.
22
+ * * This is typical of B-spline curves and surfaces constructed with maximum `degree - 1` continuity.
21
23
  * * Knots are unaffected by this conversion.
22
24
  */
23
25
  BSplineWrapMode[BSplineWrapMode["OpenByAddingControlPoints"] = 1] = "OpenByAddingControlPoints";
24
- /** The B-spline was opened up by removing degree extreme knots from the legacy periodic data.
26
+ /**
27
+ * The legacy periodic B-spline data was opened up by removing `degree` exterior knots.
25
28
  * * This is typical of rational B-spline curves representing full circles and ellipses.
26
29
  * * Poles are unaffected by this conversion.
27
30
  */
28
31
  BSplineWrapMode[BSplineWrapMode["OpenByRemovingKnots"] = 2] = "OpenByRemovingKnots";
29
32
  })(BSplineWrapMode || (BSplineWrapMode = {}));
30
33
  /**
31
- * Array of non-decreasing numbers acting as a knot array for B-splines.
34
+ * Array of non-decreasing numbers acting as a knot vector for B-spline curves and surfaces.
32
35
  *
33
36
  * * Essential identity: numKnots = numPoles + order - 2 = numPoles + degree - 1
34
- * * Various B-spline libraries have confusion over how many "end knots" are needed. Many libraries (including MicroStation and Parasolid)
35
- * demand order knots at each end for clamping. But only order-1 are really needed. This class uses the order-1 convention.
37
+ * * Various B-spline libraries have confusion over how many "end knots" are needed. Many libraries (including MicroStation
38
+ * and Parasolid) demand order knots at each end for clamping. However, only order-1 are really needed. This class uses the
39
+ * order-1 convention.
36
40
  * * A span is a single interval of the knots.
37
- * * The left knot of span {k} is knot {k+degree-1}.
41
+ * * The left knot of the span with index `k>=0` is the knot with index `k+degree-1`.
42
+ * * A knot vector is clamped when the first `degree` knots are equal and the last `degree` knots are equal.
43
+ * * The "active knot interval" is the subset of the knot vector sans its first and last `degree-1` knots, and serves as
44
+ * the parametric domain of the associated B-spline object.
38
45
  * * This class provides queries to convert among spanIndex, knotIndex, spanFraction, fraction of knot range, and knot.
39
- * * Core computations (evaluateBasisFunctions) have leftKnotIndex and global knot value as inputs. Callers need to
40
- * know their primary values (global knot, spanFraction).
46
+ * * Callers need to distinguish core computational inputs such as left knot index, knot value, span index, and span fraction.
41
47
  * @public
42
48
  */
43
49
  export class KnotVector {
44
- /** Return the leftmost knot value (of the active interval, ignoring unclamped leading knots)*/
45
- get leftKnot() { return this._knot0; }
46
- /** Return the rightmost knot value (of the active interval, ignoring unclamped leading knots)*/
47
- get rightKnot() { return this._knot1; }
48
- /** Return the index of the leftmost knot of the active interval */
49
- get leftKnotIndex() { return this.degree - 1; }
50
- /** Return the index of the rightmost knot of the active interval */
51
- get rightKnotIndex() { return this.knots.length - this.degree; }
52
- /** Whether this KnotVector was created by converting legacy periodic data during deserialization. The conversion used is specified by BSplineWrapMode, and is reversed at serialization time. */
53
- get wrappable() { return this._wrapMode === undefined ? BSplineWrapMode.None : this._wrapMode; }
54
- set wrappable(value) { this._wrapMode = value; }
55
- /** Return the number of bezier spans. Note that this includes zero-length spans if there are repeated knots. */
56
- get numSpans() { return this.rightKnotIndex - this.leftKnotIndex; }
50
+ /** The simple array of knot values. */
51
+ knots;
52
+ /** The degree of basis functions defined in these knots. */
53
+ degree;
54
+ /** The leftmost knot value (of the active interval, ignoring unclamped leading knots). */
55
+ _knot0;
56
+ /** The rightmost knot value (of the active interval, ignoring unclamped leading knots). */
57
+ _knot1;
58
+ _wrapMode;
59
+ /** Tolerance for considering two knots to be the same. */
60
+ static knotTolerance = 1.0e-9;
61
+ /** Return the leftmost knot value (of the active interval, ignoring unclamped leading knots). */
62
+ get leftKnot() {
63
+ return this._knot0;
64
+ }
65
+ /** Return the rightmost knot value (of the active interval, ignoring unclamped leading knots). */
66
+ get rightKnot() {
67
+ return this._knot1;
68
+ }
69
+ /** Return the index of the leftmost knot of the active interval. */
70
+ get leftKnotIndex() {
71
+ return this.degree - 1;
72
+ }
73
+ /** Return the index of the rightmost knot of the active interval. */
74
+ get rightKnotIndex() {
75
+ return this.knots.length - this.degree;
76
+ }
77
+ /**
78
+ * Whether this KnotVector was created by converting legacy periodic data during deserialization. The conversion used
79
+ * is specified by BSplineWrapMode, and is reversed at serialization time.
80
+ */
81
+ get wrappable() {
82
+ return this._wrapMode === undefined ? BSplineWrapMode.None : this._wrapMode;
83
+ }
84
+ set wrappable(value) {
85
+ this._wrapMode = value;
86
+ }
87
+ /** Return the number of Bezier spans. Note that this includes zero-length spans if there are repeated knots. */
88
+ get numSpans() {
89
+ return this.rightKnotIndex - this.leftKnotIndex;
90
+ }
57
91
  /**
58
- *
59
- * * If knots is a number array or Float64Array, the those values become the local knot array.
60
- * * If knots is a simple number, the local knot array is allocated to that size but left as zeros.
61
- * @param knots
62
- * @param degree
92
+ * Private constructor.
93
+ * * If `knots` is a number array or Float64Array, then its values are copied to the instance array.
94
+ * * If `knots` is a number, the instance array is allocated to this size but left as zeros.
63
95
  */
64
96
  constructor(knots, degree, wrapMode) {
65
97
  this.degree = degree;
66
98
  this._wrapMode = wrapMode;
67
- // default values to satisfy compiler -- real values happen in setupFixedValues, or final else defers to user
99
+ // default values to satisfy compiler; real values happen in setupFixedValues or the final else clause defers to user
68
100
  this._knot0 = 0.0;
69
101
  this._knot1 = 1.0;
70
- // satisfy the initialize checker ..
71
- if (Array.isArray(knots)) { // remark: This ctor is private. The callers (as of April 2019) do not use this path.
102
+ if (Array.isArray(knots)) {
72
103
  this.knots = new Float64Array(knots.length);
73
104
  this.setKnots(knots);
74
105
  this.setupFixedValues();
@@ -77,23 +108,32 @@ export class KnotVector {
77
108
  this.knots = knots.slice();
78
109
  this.setupFixedValues();
79
110
  }
80
- else { // caller is responsible for filling array separately ...
81
- this.knots = new Float64Array(knots);
111
+ else { // caller is responsible for filling array separately
112
+ const knotSize = knots;
113
+ this.knots = new Float64Array(knotSize);
82
114
  }
83
115
  }
84
- /** copy degree and knots to a new KnotVector. */
85
- clone() { return new KnotVector(this.knots, this.degree, this.wrappable); }
116
+ /** Copy degree and knots to a new KnotVector. */
117
+ clone() {
118
+ return new KnotVector(this.knots, this.degree, this.wrappable);
119
+ }
86
120
  setupFixedValues() {
87
121
  if (this.degree > 0 && this.knots.length > this.degree) {
88
122
  this._knot0 = this.knots[this.degree - 1];
89
123
  this._knot1 = this.knots[this.knots.length - this.degree];
90
124
  }
91
125
  }
92
- /** Return the total knot distance from beginning to end. */
93
- get knotLength01() { return this._knot1 - this._knot0; }
94
126
  /**
95
- * Returns true if all numeric values have wraparound conditions that allow the knots to be closed with specified wrap mode.
96
- * @param mode optional test mode. If undefined, use this.wrappable.
127
+ * Return the length of the active knot interval.
128
+ * * This is the size of (one dimension of) the parametric domain for the associated B-spline object.
129
+ */
130
+ get knotLength01() {
131
+ return this._knot1 - this._knot0;
132
+ }
133
+ /**
134
+ * Returns true if all numeric values have wraparound conditions that allow the knots to be closed with specified
135
+ * wrap mode.
136
+ * @param mode optional test mode. If undefined, use this.wrappable.
97
137
  */
98
138
  testClosable(mode) {
99
139
  if (mode === undefined)
@@ -127,7 +167,7 @@ export class KnotVector {
127
167
  }
128
168
  return false;
129
169
  }
130
- /** Test matching degree and knot values */
170
+ /** Test matching degree and knot values. */
131
171
  isAlmostEqual(other) {
132
172
  if (this.degree !== other.degree)
133
173
  return false;
@@ -167,8 +207,9 @@ export class KnotVector {
167
207
  }
168
208
  return m;
169
209
  }
170
- /** Transform knots to span [0,1].
171
- * @returns false if and only if this.knotLength01 is trivial
210
+ /**
211
+ * Transform knots such that the active knot range becomes [0,1].
212
+ * @returns false if and only if `this.knotLength01` is trivial.
172
213
  */
173
214
  normalize() {
174
215
  if (this.knotLength01 < KnotVector.knotTolerance)
@@ -186,8 +227,7 @@ export class KnotVector {
186
227
  this.setupFixedValues();
187
228
  return true;
188
229
  }
189
- /** install knot values from an array, optionally ignoring first and last.
190
- */
230
+ /** Install knot values from an array, optionally ignoring first and last. */
191
231
  setKnots(knots, skipFirstAndLast) {
192
232
  const numAllocate = skipFirstAndLast ? knots.length - 2 : knots.length;
193
233
  if (numAllocate !== this.knots.length)
@@ -202,17 +242,17 @@ export class KnotVector {
202
242
  }
203
243
  this.setupFixedValues();
204
244
  }
205
- /** Set knots to input array (CAPTURED) */
245
+ /** Set knots to input array (CAPTURED). */
206
246
  setKnotsCapture(knots) {
207
247
  this.knots = knots;
208
248
  this.setupFixedValues();
209
249
  }
210
250
  /**
211
251
  * Create knot vector with {degree-1} replicated knots at start and end, and uniform knots between.
212
- * @param numPoles Number of poles
213
- * @param degree degree of polynomial
214
- * @param a0 left knot value for active interval
215
- * @param a1 right knot value for active interval
252
+ * @param numPoles number of poles.
253
+ * @param degree degree of polynomial.
254
+ * @param a0 left knot value for active interval.
255
+ * @param a1 right knot value for active interval.
216
256
  */
217
257
  static createUniformClamped(numPoles, degree, a0, a1) {
218
258
  const knots = new KnotVector(numPoles + degree - 1, degree);
@@ -229,24 +269,26 @@ export class KnotVector {
229
269
  }
230
270
  /**
231
271
  * Create knot vector with wraparound knots at start and end, and uniform knots between.
232
- * @param numInterval number of intervals in knot space. (NOT POLE COUNT)
233
- * @param degree degree of polynomial
234
- * @param a0 left knot value for active interval
235
- * @param a1 right knot value for active interval
272
+ * @param numInterval the number of intervals into which to uniformly divide the active knot interval `[a0,a1]`,
273
+ * creating `numInterval-1` equally spaced interior knots between `a0` and `a1`.
274
+ * This number is equal to the number of Bezier spans in the associated B-spline object.
275
+ * It is _not_ the pole count.
276
+ * @param degree degree of polynomial.
277
+ * @param a0 left knot value for active interval.
278
+ * @param a1 right knot value for active interval.
236
279
  */
237
280
  static createUniformWrapped(numInterval, degree, a0, a1) {
238
281
  const knots = new KnotVector(numInterval + 2 * degree - 1, degree);
239
282
  const du = 1.0 / numInterval;
240
- for (let i = 1 - degree, k = 0; i < numInterval + degree; i++, k++) {
283
+ for (let i = 1 - degree, k = 0; i < numInterval + degree; i++, k++)
241
284
  knots.knots[k] = Geometry.interpolate(a0, i * du, a1);
242
- }
243
285
  knots.setupFixedValues();
244
286
  return knots;
245
287
  }
246
288
  /**
247
289
  * Create knot vector with given knot values and degree.
248
- * @param knotArray knot values
249
- * @param degree degree of polynomial
290
+ * @param knotArray knot values.
291
+ * @param degree degree of polynomial.
250
292
  * @param skipFirstAndLast true to skip copying the first and last knot values.
251
293
  */
252
294
  static create(knotArray, degree, skipFirstAndLast) {
@@ -257,19 +299,24 @@ export class KnotVector {
257
299
  }
258
300
  /**
259
301
  * Return the average of degree consecutive knots beginning at knotIndex.
302
+ * * If `knotIndex` is negative, return `leftKnot`.
303
+ * * If `knotIndex > rightKnotIndex` return `rightKnot`.
260
304
  */
261
305
  grevilleKnot(knotIndex) {
262
306
  if (knotIndex < 0)
263
307
  return this.leftKnot;
264
308
  if (knotIndex > this.rightKnotIndex)
265
309
  return this.rightKnot;
310
+ knotIndex = Math.floor(knotIndex);
266
311
  let sum = 0.0;
267
312
  for (let i = knotIndex; i < knotIndex + this.degree; i++)
268
313
  sum += this.knots[i];
269
314
  return sum / this.degree;
270
315
  }
271
- /** Return an array sized for a set of the basis function values. */
272
- createBasisArray() { return new Float64Array(this.degree + 1); }
316
+ /** Return an array of size `degree + 1`, e.g., to hold the set of relevant basis function values at a parameter. */
317
+ createBasisArray() {
318
+ return new Float64Array(this.degree + 1);
319
+ }
273
320
  /** Convert localFraction within the interval following an indexed knot to a knot value. */
274
321
  baseKnotFractionToKnot(knotIndex0, localFraction) {
275
322
  const knot0 = this.knots[knotIndex0];
@@ -292,29 +339,38 @@ export class KnotVector {
292
339
  fraction = Geometry.clamp(fraction, 0, 1); // B-splines are not extendable
293
340
  return Geometry.interpolate(this.knots[this.degree - 1], fraction, this.knots[this.knots.length - this.degree]);
294
341
  }
342
+ isKnotInValidSpan(knotIndex0, u) {
343
+ const spanIsValid = knotIndex0 >= this.degree - 1 && knotIndex0 + this.degree < this.knots.length;
344
+ const uIsInSpan = this.knots[knotIndex0] <= u && u <= this.knots[knotIndex0 + 1];
345
+ return spanIsValid && uIsInSpan;
346
+ }
295
347
  /**
296
- * Evaluate basis functions f[] at knot value u.
297
- *
298
- * @param u knot value for evaluation
299
- * @param f preallocated output array of order basis function values
300
- * @returns true if and only if output array is sufficiently sized
348
+ * Evaluate the B-spline basis functions f[] at a parameter u in a knot span.
349
+ * * This method implements the Mansfield-Cox-de Boor recurrence relation.
350
+ * @param knotIndex0 index of the left knot of the span.
351
+ * @param u value in the knot span: knot[knotIndex0] <= u <= knot[knotIndex0 + 1].
352
+ * @param f preallocated output array of order basis function values.
353
+ * @returns true if and only if output array is sufficiently sized.
301
354
  */
302
355
  evaluateBasisFunctions(knotIndex0, u, f) {
303
356
  if (f.length < this.degree + 1)
304
357
  return false;
358
+ assert(() => this.isKnotInValidSpan(knotIndex0, u), "knot is in a valid span");
305
359
  f[0] = 1.0;
306
360
  if (this.degree < 1)
307
361
  return true;
308
- // direct compute for linear part ...
362
+ // direct compute for linear part
309
363
  const u0 = this.knots[knotIndex0];
310
364
  const u1 = this.knots[knotIndex0 + 1];
311
365
  f[1] = (u - u0) / (u1 - u0);
312
366
  f[0] = 1.0 - f[1];
313
367
  if (this.degree < 2)
314
368
  return true;
369
+ // each iteration of the outer loop evaluates the basis functions of degree depth+1 using
370
+ // one or two values of the basis functions of one less degree from the preceding iteration
315
371
  for (let depth = 1; depth < this.degree; depth++) {
316
372
  let kLeft = knotIndex0 - depth;
317
- let kRight = kLeft + depth + 1;
373
+ let kRight = knotIndex0 + 1;
318
374
  let gCarry = 0.0;
319
375
  for (let step = 0; step <= depth; step++) {
320
376
  const tLeft = this.knots[kLeft++];
@@ -326,17 +382,20 @@ export class KnotVector {
326
382
  gCarry = g1;
327
383
  }
328
384
  f[depth + 1] = gCarry;
385
+ // at this point, the head of f[] contains the depth+2 values at u
386
+ // of the basis functions of degree depth+1 with support over [u0,u1)
329
387
  }
330
388
  return true;
331
389
  }
332
390
  /**
333
- * Evaluate basis functions f[], derivatives df[], and optional second derivatives ddf[] at knot value u.
334
- *
335
- * @param u knot value for evaluation
336
- * @param f preallocated output array of order basis function values
337
- * @param df preallocated output array of order basis derivative values
338
- * @param ddf optional preallocated output array of order basis second derivative values
339
- * @returns true if and only if output arrays are sufficiently sized
391
+ * Evaluate basis functions f[], derivatives df[], and optional second derivatives ddf[] at a parameter u
392
+ * in a knot span.
393
+ * @param knotIndex0 index of the left knot of the span.
394
+ * @param u value in the knot span: knot[knotIndex0] <= u <= knot[knotIndex0 + 1].
395
+ * @param f preallocated output array of order basis function values.
396
+ * @param df preallocated output array of order basis derivative values.
397
+ * @param ddf optional preallocated output array of order basis second derivative values.
398
+ * @returns true if and only if output arrays are sufficiently sized.
340
399
  */
341
400
  evaluateBasisFunctions1(knotIndex0, u, f, df, ddf) {
342
401
  if (f.length < this.degree + 1)
@@ -345,15 +404,16 @@ export class KnotVector {
345
404
  return false;
346
405
  if (ddf && ddf.length < this.degree + 1)
347
406
  return false;
407
+ assert(() => this.isKnotInValidSpan(knotIndex0, u), "knot is in a valid span");
348
408
  f[0] = 1.0;
349
409
  df[0] = 0.0;
350
410
  if (this.degree < 1)
351
411
  return true;
352
- // direct compute for linear part ...
412
+ // direct compute for linear part
353
413
  const u0 = this.knots[knotIndex0];
354
414
  const u1 = this.knots[knotIndex0 + 1];
355
- // ah = 1/(u1-u0) is the derivative of fraction0
356
- // (-ah) is the derivative of fraction1.
415
+ // ah = 1/(u1-u0) is the derivative of fraction0
416
+ // -ah is the derivative of fraction1
357
417
  let ah = 1.0 / (u1 - u0);
358
418
  f[1] = (u - u0) * ah;
359
419
  f[0] = 1.0 - f[1];
@@ -372,7 +432,7 @@ export class KnotVector {
372
432
  let dgCarry = 0.0;
373
433
  let ddgCarry = 0.0;
374
434
  // f, df, ddf, are each row vectors with product of `step` linear terms.
375
- // f is multiplied on the right by matrix V. Each row has 2 nonzero entries (which sum to 1) (0,0,1-fraction, fraction,0,0,0)
435
+ // f is multiplied on the right by matrix V. Each row has 2 nonzero entries (which sum to 1) (0,0,1-fraction, fraction,0,0,0)
376
436
  // Each row of the derivative dV is two entries (0,0, -1/h, 1/h,0,0,0)
377
437
  // Hence fnew = f * V
378
438
  // dfnew = df * V + f * dV
@@ -394,7 +454,7 @@ export class KnotVector {
394
454
  df[step] = dgCarry + dg0;
395
455
  gCarry = g1;
396
456
  dgCarry = dg1;
397
- if (ddf) { // do the backward reference to df before rewriting df !!!
457
+ if (ddf) { // do the backward reference to df before rewriting df
398
458
  const ddg1 = ddf[step] * fraction + dfSave;
399
459
  const ddg0 = ddf[step] * fraction1 - dfSave;
400
460
  ddf[step] = ddgCarry + ddg0;
@@ -408,9 +468,10 @@ export class KnotVector {
408
468
  }
409
469
  return true;
410
470
  }
411
- /** Find the knot span bracketing knots[i] <= u < knots[i+1] and return i.
471
+ /**
472
+ * Find the knot span bracketing knots[i] <= u < knots[i+1] and return i.
412
473
  * * If u has no such bracket, return the smaller index of the closest nontrivial bracket.
413
- * @param u value to bracket
474
+ * @param u value to bracket.
414
475
  */
415
476
  knotToLeftKnotIndex(u) {
416
477
  for (let i = this.leftKnotIndex; i < this.rightKnotIndex; ++i) {
@@ -426,7 +487,7 @@ export class KnotVector {
426
487
  }
427
488
  /**
428
489
  * Given a span index, return the index of the knot at its left.
429
- * @param spanIndex index of span
490
+ * @param spanIndex index of span.
430
491
  */
431
492
  spanIndexToLeftKnotIndex(spanIndex) {
432
493
  const d = this.degree;
@@ -441,7 +502,8 @@ export class KnotVector {
441
502
  }
442
503
  /**
443
504
  * Given a span index, test if it is within range and has nonzero length.
444
- * * note that a false return does not imply there are no more spans. This may be a double knot (zero length span) followed by more real spans
505
+ * * note that a false return does not imply there are no more spans. This may be a double knot (zero length span)
506
+ * followed by more real spans
445
507
  * @param spanIndex index of span to test.
446
508
  */
447
509
  isIndexOfRealSpan(spanIndex) {
@@ -449,7 +511,7 @@ export class KnotVector {
449
511
  return !Geometry.isSmallMetricDistance(this.spanIndexToSpanLength(spanIndex));
450
512
  return false;
451
513
  }
452
- /** Reflect all knots so `leftKnot` and `rightKnot` are maintained but interval lengths reverse. */
514
+ /** Reflect all knots so `leftKnot` and `rightKnot` are maintained but interval lengths are reversed. */
453
515
  reflectKnots() {
454
516
  const a = this.leftKnot;
455
517
  const b = this.rightKnot;
@@ -490,6 +552,4 @@ export class KnotVector {
490
552
  return KnotVector.copyKnots(this.knots, this.degree, includeExtraEndKnot, wrapMode);
491
553
  }
492
554
  }
493
- /** tolerance for considering two knots to be the same. */
494
- KnotVector.knotTolerance = 1.0e-9;
495
555
  //# sourceMappingURL=KnotVector.js.map