@itwin/core-geometry 5.0.0-dev.6 → 5.0.0-dev.62

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 +39 -1
  2. package/lib/cjs/Constant.js +17 -17
  3. package/lib/cjs/Constant.js.map +1 -1
  4. package/lib/cjs/Geometry.js +35 -35
  5. package/lib/cjs/Geometry.js.map +1 -1
  6. package/lib/cjs/bspline/AkimaCurve3d.js +3 -1
  7. package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
  8. package/lib/cjs/bspline/BSpline1dNd.js +18 -0
  9. package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
  10. package/lib/cjs/bspline/BSplineCurve.js +6 -2
  11. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  12. package/lib/cjs/bspline/BSplineCurve3dH.js +1 -0
  13. package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
  14. package/lib/cjs/bspline/BSplineCurveOps.d.ts.map +1 -1
  15. package/lib/cjs/bspline/BSplineCurveOps.js +18 -21
  16. package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
  17. package/lib/cjs/bspline/BSplineSurface.js +22 -2
  18. package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
  19. package/lib/cjs/bspline/Bezier1dNd.js +6 -0
  20. package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
  21. package/lib/cjs/bspline/BezierCurve3d.js +2 -0
  22. package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
  23. package/lib/cjs/bspline/BezierCurve3dH.js +2 -0
  24. package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
  25. package/lib/cjs/bspline/BezierCurveBase.d.ts.map +1 -1
  26. package/lib/cjs/bspline/BezierCurveBase.js +21 -2
  27. package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
  28. package/lib/cjs/bspline/InterpolationCurve3d.js +12 -1
  29. package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
  30. package/lib/cjs/bspline/KnotVector.d.ts +8 -6
  31. package/lib/cjs/bspline/KnotVector.d.ts.map +1 -1
  32. package/lib/cjs/bspline/KnotVector.js +21 -8
  33. package/lib/cjs/bspline/KnotVector.js.map +1 -1
  34. package/lib/cjs/bspline/SurfaceLocationDetail.js +12 -0
  35. package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -1
  36. package/lib/cjs/clipping/AlternatingConvexClipTree.js +14 -13
  37. package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
  38. package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -1
  39. package/lib/cjs/clipping/BooleanClipNode.js +4 -0
  40. package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
  41. package/lib/cjs/clipping/ClipPlane.js +10 -1
  42. package/lib/cjs/clipping/ClipPlane.js.map +1 -1
  43. package/lib/cjs/clipping/ClipPrimitive.js +19 -0
  44. package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
  45. package/lib/cjs/clipping/ClipUtils.js +5 -1
  46. package/lib/cjs/clipping/ClipUtils.js.map +1 -1
  47. package/lib/cjs/clipping/ClipVector.js +11 -8
  48. package/lib/cjs/clipping/ClipVector.js.map +1 -1
  49. package/lib/cjs/clipping/ConvexClipPlaneSet.js +5 -3
  50. package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
  51. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js +2 -1
  52. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  53. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js +3 -0
  54. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  55. package/lib/cjs/core-geometry.d.ts +1 -0
  56. package/lib/cjs/core-geometry.d.ts.map +1 -1
  57. package/lib/cjs/core-geometry.js +1 -0
  58. package/lib/cjs/core-geometry.js.map +1 -1
  59. package/lib/cjs/curve/Arc3d.d.ts +15 -3
  60. package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
  61. package/lib/cjs/curve/Arc3d.js +47 -20
  62. package/lib/cjs/curve/Arc3d.js.map +1 -1
  63. package/lib/cjs/curve/ConstructCurveBetweenCurves.js +3 -0
  64. package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
  65. package/lib/cjs/curve/CoordinateXYZ.js +3 -2
  66. package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
  67. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +0 -2
  68. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  69. package/lib/cjs/curve/CurveChainWithDistanceIndex.js +25 -10
  70. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  71. package/lib/cjs/curve/CurveCollection.d.ts +10 -0
  72. package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
  73. package/lib/cjs/curve/CurveCollection.js +35 -9
  74. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  75. package/lib/cjs/curve/CurveCurve.js.map +1 -1
  76. package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
  77. package/lib/cjs/curve/CurveFactory.d.ts +87 -53
  78. package/lib/cjs/curve/CurveFactory.d.ts.map +1 -1
  79. package/lib/cjs/curve/CurveFactory.js +213 -135
  80. package/lib/cjs/curve/CurveFactory.js.map +1 -1
  81. package/lib/cjs/curve/CurveLocationDetail.js +44 -0
  82. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  83. package/lib/cjs/curve/CurveOps.js.map +1 -1
  84. package/lib/cjs/curve/CurvePrimitive.d.ts +7 -10
  85. package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -1
  86. package/lib/cjs/curve/CurvePrimitive.js +27 -12
  87. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  88. package/lib/cjs/curve/CurveProcessor.js +2 -0
  89. package/lib/cjs/curve/CurveProcessor.js.map +1 -1
  90. package/lib/cjs/curve/CurveTypes.js.map +1 -1
  91. package/lib/cjs/curve/CurveWireMomentsXYZ.js +2 -0
  92. package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
  93. package/lib/cjs/curve/GeometryQuery.js.map +1 -1
  94. package/lib/cjs/curve/LineSegment3d.js +6 -2
  95. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  96. package/lib/cjs/curve/LineString3d.js +27 -7
  97. package/lib/cjs/curve/LineString3d.js.map +1 -1
  98. package/lib/cjs/curve/Loop.js +12 -4
  99. package/lib/cjs/curve/Loop.js.map +1 -1
  100. package/lib/cjs/curve/OffsetOptions.js +25 -21
  101. package/lib/cjs/curve/OffsetOptions.js.map +1 -1
  102. package/lib/cjs/curve/ParityRegion.js +4 -2
  103. package/lib/cjs/curve/ParityRegion.js.map +1 -1
  104. package/lib/cjs/curve/Path.js +2 -2
  105. package/lib/cjs/curve/Path.js.map +1 -1
  106. package/lib/cjs/curve/PointString3d.js +3 -2
  107. package/lib/cjs/curve/PointString3d.js.map +1 -1
  108. package/lib/cjs/curve/ProxyCurve.js +1 -0
  109. package/lib/cjs/curve/ProxyCurve.js.map +1 -1
  110. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js +1 -0
  111. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  112. package/lib/cjs/curve/Query/CurveSplitContext.js +3 -0
  113. package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
  114. package/lib/cjs/curve/Query/CylindricalRange.js +6 -2
  115. package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
  116. package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
  117. package/lib/cjs/curve/Query/PlanarSubdivision.js +4 -6
  118. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  119. package/lib/cjs/curve/Query/StrokeCountChain.js +12 -0
  120. package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
  121. package/lib/cjs/curve/Query/StrokeCountMap.js +14 -0
  122. package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
  123. package/lib/cjs/curve/RegionMomentsXY.js +4 -5
  124. package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
  125. package/lib/cjs/curve/RegionOps.js +9 -10
  126. package/lib/cjs/curve/RegionOps.js.map +1 -1
  127. package/lib/cjs/curve/RegionOpsClassificationSweeps.js +24 -1
  128. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  129. package/lib/cjs/curve/StrokeOptions.d.ts +4 -4
  130. package/lib/cjs/curve/StrokeOptions.d.ts.map +1 -1
  131. package/lib/cjs/curve/StrokeOptions.js +23 -6
  132. package/lib/cjs/curve/StrokeOptions.js.map +1 -1
  133. package/lib/cjs/curve/UnionRegion.js +4 -2
  134. package/lib/cjs/curve/UnionRegion.js.map +1 -1
  135. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js +13 -7
  136. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  137. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js +6 -0
  138. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  139. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js +2 -0
  140. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  141. package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.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 +1 -1
  201. package/lib/cjs/geometry3d/AngleSweep.d.ts.map +1 -1
  202. package/lib/cjs/geometry3d/AngleSweep.js +3 -1
  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/GeometryHandler.js.map +1 -1
  217. package/lib/cjs/geometry3d/GrowableBlockedArray.js +12 -0
  218. package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
  219. package/lib/cjs/geometry3d/GrowableFloat64Array.js +3 -0
  220. package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
  221. package/lib/cjs/geometry3d/GrowableXYArray.d.ts +0 -5
  222. package/lib/cjs/geometry3d/GrowableXYArray.d.ts.map +1 -1
  223. package/lib/cjs/geometry3d/GrowableXYArray.js +16 -7
  224. package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
  225. package/lib/cjs/geometry3d/GrowableXYZArray.d.ts +32 -10
  226. package/lib/cjs/geometry3d/GrowableXYZArray.d.ts.map +1 -1
  227. package/lib/cjs/geometry3d/GrowableXYZArray.js +70 -16
  228. package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
  229. package/lib/cjs/geometry3d/IndexedCollectionInterval.js +6 -0
  230. package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
  231. package/lib/cjs/geometry3d/IndexedXYCollection.js +1 -0
  232. package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
  233. package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts +13 -2
  234. package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
  235. package/lib/cjs/geometry3d/IndexedXYZCollection.js +26 -11
  236. package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
  237. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js +3 -0
  238. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  239. package/lib/cjs/geometry3d/Matrix3d.d.ts +3 -4
  240. package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -1
  241. package/lib/cjs/geometry3d/Matrix3d.js +34 -12
  242. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  243. package/lib/cjs/geometry3d/OrderedRotationAngles.js +10 -2
  244. package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
  245. package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
  246. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js +2 -0
  247. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  248. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js +7 -0
  249. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  250. package/lib/cjs/geometry3d/Point2dArrayCarrier.js +2 -0
  251. package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
  252. package/lib/cjs/geometry3d/Point2dVector2d.js +4 -0
  253. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  254. package/lib/cjs/geometry3d/Point3dArrayCarrier.js +3 -1
  255. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  256. package/lib/cjs/geometry3d/Point3dVector3d.d.ts +6 -6
  257. package/lib/cjs/geometry3d/Point3dVector3d.js +12 -6
  258. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  259. package/lib/cjs/geometry3d/PointHelpers.js +5 -5
  260. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  261. package/lib/cjs/geometry3d/PointStreaming.js +12 -4
  262. package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
  263. package/lib/cjs/geometry3d/PolygonOps.d.ts +2 -2
  264. package/lib/cjs/geometry3d/PolygonOps.js +62 -25
  265. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  266. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js +7 -3
  267. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  268. package/lib/cjs/geometry3d/PolylineOps.d.ts +9 -5
  269. package/lib/cjs/geometry3d/PolylineOps.d.ts.map +1 -1
  270. package/lib/cjs/geometry3d/PolylineOps.js +12 -5
  271. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
  272. package/lib/cjs/geometry3d/Range.js +21 -4
  273. package/lib/cjs/geometry3d/Range.js.map +1 -1
  274. package/lib/cjs/geometry3d/Ray2d.js +2 -0
  275. package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
  276. package/lib/cjs/geometry3d/Ray3d.js +12 -0
  277. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  278. package/lib/cjs/geometry3d/ReusableObjectCache.js +4 -0
  279. package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
  280. package/lib/cjs/geometry3d/Segment1d.js +4 -0
  281. package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
  282. package/lib/cjs/geometry3d/SortablePolygon.js +11 -0
  283. package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
  284. package/lib/cjs/geometry3d/Transform.js +3 -0
  285. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  286. package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
  287. package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
  288. package/lib/cjs/geometry3d/YawPitchRollAngles.js +6 -0
  289. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  290. package/lib/cjs/geometry4d/Map4d.js +2 -0
  291. package/lib/cjs/geometry4d/Map4d.js.map +1 -1
  292. package/lib/cjs/geometry4d/Matrix4d.js +1 -0
  293. package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
  294. package/lib/cjs/geometry4d/MomentData.d.ts +72 -73
  295. package/lib/cjs/geometry4d/MomentData.d.ts.map +1 -1
  296. package/lib/cjs/geometry4d/MomentData.js +90 -66
  297. package/lib/cjs/geometry4d/MomentData.js.map +1 -1
  298. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js +6 -0
  299. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  300. package/lib/cjs/geometry4d/Point4d.js +2 -0
  301. package/lib/cjs/geometry4d/Point4d.js.map +1 -1
  302. package/lib/cjs/numerics/BandedSystem.js.map +1 -1
  303. package/lib/cjs/numerics/BezierPolynomials.js +8 -0
  304. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
  305. package/lib/cjs/numerics/ClusterableArray.js +29 -13
  306. package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
  307. package/lib/cjs/numerics/Complex.js +2 -0
  308. package/lib/cjs/numerics/Complex.js.map +1 -1
  309. package/lib/cjs/numerics/ConvexPolygon2d.js +3 -0
  310. package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
  311. package/lib/cjs/numerics/Newton.js +59 -4
  312. package/lib/cjs/numerics/Newton.js.map +1 -1
  313. package/lib/cjs/numerics/PascalCoefficients.js +1 -1
  314. package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
  315. package/lib/cjs/numerics/PolarData.js +13 -1
  316. package/lib/cjs/numerics/PolarData.js.map +1 -1
  317. package/lib/cjs/numerics/Polynomials.js +64 -26
  318. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  319. package/lib/cjs/numerics/Quadrature.js +26 -20
  320. package/lib/cjs/numerics/Quadrature.js.map +1 -1
  321. package/lib/cjs/numerics/Range1dArray.js.map +1 -1
  322. package/lib/cjs/numerics/SmallSystem.js.map +1 -1
  323. package/lib/cjs/numerics/TriDiagonalSystem.js +11 -0
  324. package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
  325. package/lib/cjs/numerics/UnionFind.js +1 -0
  326. package/lib/cjs/numerics/UnionFind.js.map +1 -1
  327. package/lib/cjs/numerics/UsageSums.js +10 -0
  328. package/lib/cjs/numerics/UsageSums.js.map +1 -1
  329. package/lib/cjs/polyface/AuxData.js +16 -0
  330. package/lib/cjs/polyface/AuxData.js.map +1 -1
  331. package/lib/cjs/polyface/BoxTopology.js +67 -67
  332. package/lib/cjs/polyface/BoxTopology.js.map +1 -1
  333. package/lib/cjs/polyface/FacetFaceData.d.ts +1 -1
  334. package/lib/cjs/polyface/FacetFaceData.js +3 -1
  335. package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
  336. package/lib/cjs/polyface/FacetLocationDetail.js +30 -0
  337. package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
  338. package/lib/cjs/polyface/FacetOrientation.js +12 -1
  339. package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
  340. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js +18 -2
  341. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  342. package/lib/cjs/polyface/IndexedEdgeMatcher.d.ts +33 -23
  343. package/lib/cjs/polyface/IndexedEdgeMatcher.d.ts.map +1 -1
  344. package/lib/cjs/polyface/IndexedEdgeMatcher.js +63 -33
  345. package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
  346. package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts +3 -2
  347. package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
  348. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js +11 -2
  349. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  350. package/lib/cjs/polyface/IndexedPolyfaceWalker.d.ts +233 -0
  351. package/lib/cjs/polyface/IndexedPolyfaceWalker.d.ts.map +1 -0
  352. package/lib/cjs/polyface/IndexedPolyfaceWalker.js +353 -0
  353. package/lib/cjs/polyface/IndexedPolyfaceWalker.js.map +1 -0
  354. package/lib/cjs/polyface/Polyface.d.ts +35 -10
  355. package/lib/cjs/polyface/Polyface.d.ts.map +1 -1
  356. package/lib/cjs/polyface/Polyface.js +73 -12
  357. package/lib/cjs/polyface/Polyface.js.map +1 -1
  358. package/lib/cjs/polyface/PolyfaceBuilder.d.ts +14 -27
  359. package/lib/cjs/polyface/PolyfaceBuilder.d.ts.map +1 -1
  360. package/lib/cjs/polyface/PolyfaceBuilder.js +47 -79
  361. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  362. package/lib/cjs/polyface/PolyfaceClip.js +8 -0
  363. package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
  364. package/lib/cjs/polyface/PolyfaceData.d.ts +28 -0
  365. package/lib/cjs/polyface/PolyfaceData.d.ts.map +1 -1
  366. package/lib/cjs/polyface/PolyfaceData.js +87 -5
  367. package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
  368. package/lib/cjs/polyface/PolyfaceQuery.js +47 -7
  369. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  370. package/lib/cjs/polyface/RangeLengthData.js +7 -0
  371. package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
  372. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js +12 -0
  373. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  374. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js +5 -2
  375. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  376. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js +12 -0
  377. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  378. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js +14 -0
  379. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  380. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js +5 -0
  381. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  382. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js +43 -0
  383. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  384. package/lib/cjs/polyface/TaggedNumericData.js +8 -0
  385. package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
  386. package/lib/cjs/polyface/TriangleCandidate.js +3 -0
  387. package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
  388. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js +7 -0
  389. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  390. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js +6 -0
  391. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  392. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js +3 -0
  393. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  394. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js +3 -0
  395. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  396. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js +32 -0
  397. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  398. package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  399. package/lib/cjs/polyface/multiclip/RangeSearch.js +5 -5
  400. package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
  401. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js +21 -8
  402. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  403. package/lib/cjs/polyface/multiclip/XYPointBuckets.js +6 -0
  404. package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
  405. package/lib/cjs/serialization/BGFBAccessors.js +82 -164
  406. package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
  407. package/lib/cjs/serialization/BGFBReader.js +22 -22
  408. package/lib/cjs/serialization/BGFBReader.js.map +1 -1
  409. package/lib/cjs/serialization/BGFBWriter.js +1 -0
  410. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  411. package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  412. package/lib/cjs/serialization/DeepCompare.js +17 -17
  413. package/lib/cjs/serialization/DeepCompare.js.map +1 -1
  414. package/lib/cjs/serialization/GeometrySamples.d.ts +5 -5
  415. package/lib/cjs/serialization/GeometrySamples.d.ts.map +1 -1
  416. package/lib/cjs/serialization/GeometrySamples.js +113 -112
  417. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  418. package/lib/cjs/serialization/IModelJsonSchema.d.ts +1 -2
  419. package/lib/cjs/serialization/IModelJsonSchema.d.ts.map +1 -1
  420. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  421. package/lib/cjs/serialization/SerializationHelpers.js.map +1 -1
  422. package/lib/cjs/solid/Box.js +7 -2
  423. package/lib/cjs/solid/Box.js.map +1 -1
  424. package/lib/cjs/solid/Cone.js +6 -2
  425. package/lib/cjs/solid/Cone.js.map +1 -1
  426. package/lib/cjs/solid/LinearSweep.js +4 -2
  427. package/lib/cjs/solid/LinearSweep.js.map +1 -1
  428. package/lib/cjs/solid/RotationalSweep.js +5 -2
  429. package/lib/cjs/solid/RotationalSweep.js.map +1 -1
  430. package/lib/cjs/solid/RuledSweep.d.ts +26 -23
  431. package/lib/cjs/solid/RuledSweep.d.ts.map +1 -1
  432. package/lib/cjs/solid/RuledSweep.js +32 -24
  433. package/lib/cjs/solid/RuledSweep.js.map +1 -1
  434. package/lib/cjs/solid/SolidPrimitive.d.ts +12 -11
  435. package/lib/cjs/solid/SolidPrimitive.d.ts.map +1 -1
  436. package/lib/cjs/solid/SolidPrimitive.js +11 -6
  437. package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
  438. package/lib/cjs/solid/Sphere.js +4 -2
  439. package/lib/cjs/solid/Sphere.js.map +1 -1
  440. package/lib/cjs/solid/SweepContour.d.ts +24 -15
  441. package/lib/cjs/solid/SweepContour.d.ts.map +1 -1
  442. package/lib/cjs/solid/SweepContour.js +33 -15
  443. package/lib/cjs/solid/SweepContour.js.map +1 -1
  444. package/lib/cjs/solid/TorusPipe.js +7 -2
  445. package/lib/cjs/solid/TorusPipe.js.map +1 -1
  446. package/lib/cjs/topology/ChainMerge.js +16 -4
  447. package/lib/cjs/topology/ChainMerge.js.map +1 -1
  448. package/lib/cjs/topology/Graph.js +41 -6
  449. package/lib/cjs/topology/Graph.js.map +1 -1
  450. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +1 -1
  451. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js +5 -1
  452. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  453. package/lib/cjs/topology/HalfEdgeGraphSearch.js +2 -0
  454. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  455. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js +9 -2
  456. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  457. package/lib/cjs/topology/HalfEdgeGraphValidation.js +7 -9
  458. package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
  459. package/lib/cjs/topology/HalfEdgeMarkSet.js +5 -0
  460. package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
  461. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js +6 -0
  462. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  463. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js +1 -0
  464. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  465. package/lib/cjs/topology/HalfEdgePositionDetail.js +16 -0
  466. package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
  467. package/lib/cjs/topology/HalfEdgePriorityQueue.js +2 -0
  468. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
  469. package/lib/cjs/topology/InsertAndRetriangulateContext.js +4 -0
  470. package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
  471. package/lib/cjs/topology/MaskManager.js +3 -0
  472. package/lib/cjs/topology/MaskManager.js.map +1 -1
  473. package/lib/cjs/topology/Merging.js +11 -6
  474. package/lib/cjs/topology/Merging.js.map +1 -1
  475. package/lib/cjs/topology/RegularizeFace.js +22 -0
  476. package/lib/cjs/topology/RegularizeFace.js.map +1 -1
  477. package/lib/cjs/topology/SignedDataSummary.js +22 -0
  478. package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
  479. package/lib/cjs/topology/SpaceTriangulation.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.js +35 -35
  487. package/lib/esm/Geometry.js.map +1 -1
  488. package/lib/esm/bspline/AkimaCurve3d.js +3 -1
  489. package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
  490. package/lib/esm/bspline/BSpline1dNd.js +18 -0
  491. package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
  492. package/lib/esm/bspline/BSplineCurve.js +6 -2
  493. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  494. package/lib/esm/bspline/BSplineCurve3dH.js +1 -0
  495. package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
  496. package/lib/esm/bspline/BSplineCurveOps.d.ts.map +1 -1
  497. package/lib/esm/bspline/BSplineCurveOps.js +18 -21
  498. package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
  499. package/lib/esm/bspline/BSplineSurface.js +22 -2
  500. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  501. package/lib/esm/bspline/Bezier1dNd.js +6 -0
  502. package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
  503. package/lib/esm/bspline/BezierCurve3d.js +2 -0
  504. package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
  505. package/lib/esm/bspline/BezierCurve3dH.js +2 -0
  506. package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
  507. package/lib/esm/bspline/BezierCurveBase.d.ts.map +1 -1
  508. package/lib/esm/bspline/BezierCurveBase.js +21 -2
  509. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  510. package/lib/esm/bspline/InterpolationCurve3d.js +12 -1
  511. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  512. package/lib/esm/bspline/KnotVector.d.ts +8 -6
  513. package/lib/esm/bspline/KnotVector.d.ts.map +1 -1
  514. package/lib/esm/bspline/KnotVector.js +21 -8
  515. package/lib/esm/bspline/KnotVector.js.map +1 -1
  516. package/lib/esm/bspline/SurfaceLocationDetail.js +12 -0
  517. package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
  518. package/lib/esm/clipping/AlternatingConvexClipTree.js +14 -13
  519. package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
  520. package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
  521. package/lib/esm/clipping/BooleanClipNode.js +4 -0
  522. package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
  523. package/lib/esm/clipping/ClipPlane.js +10 -1
  524. package/lib/esm/clipping/ClipPlane.js.map +1 -1
  525. package/lib/esm/clipping/ClipPrimitive.js +19 -0
  526. package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
  527. package/lib/esm/clipping/ClipUtils.js +5 -1
  528. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  529. package/lib/esm/clipping/ClipVector.js +11 -8
  530. package/lib/esm/clipping/ClipVector.js.map +1 -1
  531. package/lib/esm/clipping/ConvexClipPlaneSet.js +5 -3
  532. package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
  533. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js +2 -1
  534. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  535. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js +3 -0
  536. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  537. package/lib/esm/core-geometry.d.ts +1 -0
  538. package/lib/esm/core-geometry.d.ts.map +1 -1
  539. package/lib/esm/core-geometry.js +1 -0
  540. package/lib/esm/core-geometry.js.map +1 -1
  541. package/lib/esm/curve/Arc3d.d.ts +15 -3
  542. package/lib/esm/curve/Arc3d.d.ts.map +1 -1
  543. package/lib/esm/curve/Arc3d.js +47 -20
  544. package/lib/esm/curve/Arc3d.js.map +1 -1
  545. package/lib/esm/curve/ConstructCurveBetweenCurves.js +3 -0
  546. package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
  547. package/lib/esm/curve/CoordinateXYZ.js +3 -2
  548. package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
  549. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +0 -2
  550. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  551. package/lib/esm/curve/CurveChainWithDistanceIndex.js +25 -10
  552. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  553. package/lib/esm/curve/CurveCollection.d.ts +10 -0
  554. package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
  555. package/lib/esm/curve/CurveCollection.js +35 -9
  556. package/lib/esm/curve/CurveCollection.js.map +1 -1
  557. package/lib/esm/curve/CurveCurve.js.map +1 -1
  558. package/lib/esm/curve/CurveExtendMode.js.map +1 -1
  559. package/lib/esm/curve/CurveFactory.d.ts +87 -53
  560. package/lib/esm/curve/CurveFactory.d.ts.map +1 -1
  561. package/lib/esm/curve/CurveFactory.js +213 -135
  562. package/lib/esm/curve/CurveFactory.js.map +1 -1
  563. package/lib/esm/curve/CurveLocationDetail.js +44 -0
  564. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  565. package/lib/esm/curve/CurveOps.js.map +1 -1
  566. package/lib/esm/curve/CurvePrimitive.d.ts +7 -10
  567. package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
  568. package/lib/esm/curve/CurvePrimitive.js +27 -12
  569. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  570. package/lib/esm/curve/CurveProcessor.js +2 -0
  571. package/lib/esm/curve/CurveProcessor.js.map +1 -1
  572. package/lib/esm/curve/CurveTypes.js.map +1 -1
  573. package/lib/esm/curve/CurveWireMomentsXYZ.js +2 -0
  574. package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
  575. package/lib/esm/curve/GeometryQuery.js.map +1 -1
  576. package/lib/esm/curve/LineSegment3d.js +6 -2
  577. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  578. package/lib/esm/curve/LineString3d.js +27 -7
  579. package/lib/esm/curve/LineString3d.js.map +1 -1
  580. package/lib/esm/curve/Loop.js +12 -4
  581. package/lib/esm/curve/Loop.js.map +1 -1
  582. package/lib/esm/curve/OffsetOptions.js +25 -21
  583. package/lib/esm/curve/OffsetOptions.js.map +1 -1
  584. package/lib/esm/curve/ParityRegion.js +4 -2
  585. package/lib/esm/curve/ParityRegion.js.map +1 -1
  586. package/lib/esm/curve/Path.js +2 -2
  587. package/lib/esm/curve/Path.js.map +1 -1
  588. package/lib/esm/curve/PointString3d.js +3 -2
  589. package/lib/esm/curve/PointString3d.js.map +1 -1
  590. package/lib/esm/curve/ProxyCurve.js +1 -0
  591. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  592. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js +1 -0
  593. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  594. package/lib/esm/curve/Query/CurveSplitContext.js +3 -0
  595. package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
  596. package/lib/esm/curve/Query/CylindricalRange.js +6 -2
  597. package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
  598. package/lib/esm/curve/Query/InOutTests.js.map +1 -1
  599. package/lib/esm/curve/Query/PlanarSubdivision.js +4 -6
  600. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  601. package/lib/esm/curve/Query/StrokeCountChain.js +12 -0
  602. package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
  603. package/lib/esm/curve/Query/StrokeCountMap.js +14 -0
  604. package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
  605. package/lib/esm/curve/RegionMomentsXY.js +4 -5
  606. package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
  607. package/lib/esm/curve/RegionOps.js +9 -10
  608. package/lib/esm/curve/RegionOps.js.map +1 -1
  609. package/lib/esm/curve/RegionOpsClassificationSweeps.js +24 -1
  610. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  611. package/lib/esm/curve/StrokeOptions.d.ts +4 -4
  612. package/lib/esm/curve/StrokeOptions.d.ts.map +1 -1
  613. package/lib/esm/curve/StrokeOptions.js +23 -6
  614. package/lib/esm/curve/StrokeOptions.js.map +1 -1
  615. package/lib/esm/curve/UnionRegion.js +4 -2
  616. package/lib/esm/curve/UnionRegion.js.map +1 -1
  617. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js +13 -7
  618. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  619. package/lib/esm/curve/internalContexts/ChainCollectorContext.js +6 -0
  620. package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  621. package/lib/esm/curve/internalContexts/CloneCurvesContext.js +2 -0
  622. package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  623. package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.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 +1 -1
  683. package/lib/esm/geometry3d/AngleSweep.d.ts.map +1 -1
  684. package/lib/esm/geometry3d/AngleSweep.js +3 -1
  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/GeometryHandler.js.map +1 -1
  699. package/lib/esm/geometry3d/GrowableBlockedArray.js +12 -0
  700. package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
  701. package/lib/esm/geometry3d/GrowableFloat64Array.js +3 -0
  702. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
  703. package/lib/esm/geometry3d/GrowableXYArray.d.ts +0 -5
  704. package/lib/esm/geometry3d/GrowableXYArray.d.ts.map +1 -1
  705. package/lib/esm/geometry3d/GrowableXYArray.js +16 -7
  706. package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
  707. package/lib/esm/geometry3d/GrowableXYZArray.d.ts +32 -10
  708. package/lib/esm/geometry3d/GrowableXYZArray.d.ts.map +1 -1
  709. package/lib/esm/geometry3d/GrowableXYZArray.js +70 -16
  710. package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
  711. package/lib/esm/geometry3d/IndexedCollectionInterval.js +6 -0
  712. package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
  713. package/lib/esm/geometry3d/IndexedXYCollection.js +1 -0
  714. package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
  715. package/lib/esm/geometry3d/IndexedXYZCollection.d.ts +13 -2
  716. package/lib/esm/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
  717. package/lib/esm/geometry3d/IndexedXYZCollection.js +26 -11
  718. package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
  719. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js +3 -0
  720. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  721. package/lib/esm/geometry3d/Matrix3d.d.ts +3 -4
  722. package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -1
  723. package/lib/esm/geometry3d/Matrix3d.js +34 -12
  724. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  725. package/lib/esm/geometry3d/OrderedRotationAngles.js +10 -2
  726. package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
  727. package/lib/esm/geometry3d/Plane3d.js.map +1 -1
  728. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js +2 -0
  729. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  730. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js +7 -0
  731. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  732. package/lib/esm/geometry3d/Point2dArrayCarrier.js +2 -0
  733. package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
  734. package/lib/esm/geometry3d/Point2dVector2d.js +4 -0
  735. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  736. package/lib/esm/geometry3d/Point3dArrayCarrier.js +3 -1
  737. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  738. package/lib/esm/geometry3d/Point3dVector3d.d.ts +6 -6
  739. package/lib/esm/geometry3d/Point3dVector3d.js +12 -6
  740. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  741. package/lib/esm/geometry3d/PointHelpers.js +5 -5
  742. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  743. package/lib/esm/geometry3d/PointStreaming.js +12 -4
  744. package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
  745. package/lib/esm/geometry3d/PolygonOps.d.ts +2 -2
  746. package/lib/esm/geometry3d/PolygonOps.js +62 -25
  747. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  748. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js +7 -3
  749. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  750. package/lib/esm/geometry3d/PolylineOps.d.ts +9 -5
  751. package/lib/esm/geometry3d/PolylineOps.d.ts.map +1 -1
  752. package/lib/esm/geometry3d/PolylineOps.js +12 -5
  753. package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
  754. package/lib/esm/geometry3d/Range.js +21 -4
  755. package/lib/esm/geometry3d/Range.js.map +1 -1
  756. package/lib/esm/geometry3d/Ray2d.js +2 -0
  757. package/lib/esm/geometry3d/Ray2d.js.map +1 -1
  758. package/lib/esm/geometry3d/Ray3d.js +12 -0
  759. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  760. package/lib/esm/geometry3d/ReusableObjectCache.js +4 -0
  761. package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
  762. package/lib/esm/geometry3d/Segment1d.js +4 -0
  763. package/lib/esm/geometry3d/Segment1d.js.map +1 -1
  764. package/lib/esm/geometry3d/SortablePolygon.js +11 -0
  765. package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
  766. package/lib/esm/geometry3d/Transform.js +3 -0
  767. package/lib/esm/geometry3d/Transform.js.map +1 -1
  768. package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
  769. package/lib/esm/geometry3d/XYZProps.js.map +1 -1
  770. package/lib/esm/geometry3d/YawPitchRollAngles.js +6 -0
  771. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  772. package/lib/esm/geometry4d/Map4d.js +2 -0
  773. package/lib/esm/geometry4d/Map4d.js.map +1 -1
  774. package/lib/esm/geometry4d/Matrix4d.js +1 -0
  775. package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
  776. package/lib/esm/geometry4d/MomentData.d.ts +72 -73
  777. package/lib/esm/geometry4d/MomentData.d.ts.map +1 -1
  778. package/lib/esm/geometry4d/MomentData.js +90 -66
  779. package/lib/esm/geometry4d/MomentData.js.map +1 -1
  780. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js +6 -0
  781. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  782. package/lib/esm/geometry4d/Point4d.js +2 -0
  783. package/lib/esm/geometry4d/Point4d.js.map +1 -1
  784. package/lib/esm/numerics/BandedSystem.js.map +1 -1
  785. package/lib/esm/numerics/BezierPolynomials.js +8 -0
  786. package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
  787. package/lib/esm/numerics/ClusterableArray.js +29 -13
  788. package/lib/esm/numerics/ClusterableArray.js.map +1 -1
  789. package/lib/esm/numerics/Complex.js +2 -0
  790. package/lib/esm/numerics/Complex.js.map +1 -1
  791. package/lib/esm/numerics/ConvexPolygon2d.js +3 -0
  792. package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
  793. package/lib/esm/numerics/Newton.js +59 -4
  794. package/lib/esm/numerics/Newton.js.map +1 -1
  795. package/lib/esm/numerics/PascalCoefficients.js +1 -1
  796. package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
  797. package/lib/esm/numerics/PolarData.js +13 -1
  798. package/lib/esm/numerics/PolarData.js.map +1 -1
  799. package/lib/esm/numerics/Polynomials.js +64 -26
  800. package/lib/esm/numerics/Polynomials.js.map +1 -1
  801. package/lib/esm/numerics/Quadrature.js +26 -20
  802. package/lib/esm/numerics/Quadrature.js.map +1 -1
  803. package/lib/esm/numerics/Range1dArray.js.map +1 -1
  804. package/lib/esm/numerics/SmallSystem.js.map +1 -1
  805. package/lib/esm/numerics/TriDiagonalSystem.js +11 -0
  806. package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
  807. package/lib/esm/numerics/UnionFind.js +1 -0
  808. package/lib/esm/numerics/UnionFind.js.map +1 -1
  809. package/lib/esm/numerics/UsageSums.js +10 -0
  810. package/lib/esm/numerics/UsageSums.js.map +1 -1
  811. package/lib/esm/polyface/AuxData.js +16 -0
  812. package/lib/esm/polyface/AuxData.js.map +1 -1
  813. package/lib/esm/polyface/BoxTopology.js +67 -67
  814. package/lib/esm/polyface/BoxTopology.js.map +1 -1
  815. package/lib/esm/polyface/FacetFaceData.d.ts +1 -1
  816. package/lib/esm/polyface/FacetFaceData.js +3 -1
  817. package/lib/esm/polyface/FacetFaceData.js.map +1 -1
  818. package/lib/esm/polyface/FacetLocationDetail.js +30 -0
  819. package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
  820. package/lib/esm/polyface/FacetOrientation.js +12 -1
  821. package/lib/esm/polyface/FacetOrientation.js.map +1 -1
  822. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js +18 -2
  823. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  824. package/lib/esm/polyface/IndexedEdgeMatcher.d.ts +33 -23
  825. package/lib/esm/polyface/IndexedEdgeMatcher.d.ts.map +1 -1
  826. package/lib/esm/polyface/IndexedEdgeMatcher.js +63 -33
  827. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
  828. package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts +3 -2
  829. package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
  830. package/lib/esm/polyface/IndexedPolyfaceVisitor.js +11 -2
  831. package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  832. package/lib/esm/polyface/IndexedPolyfaceWalker.d.ts +233 -0
  833. package/lib/esm/polyface/IndexedPolyfaceWalker.d.ts.map +1 -0
  834. package/lib/esm/polyface/IndexedPolyfaceWalker.js +349 -0
  835. package/lib/esm/polyface/IndexedPolyfaceWalker.js.map +1 -0
  836. package/lib/esm/polyface/Polyface.d.ts +35 -10
  837. package/lib/esm/polyface/Polyface.d.ts.map +1 -1
  838. package/lib/esm/polyface/Polyface.js +73 -12
  839. package/lib/esm/polyface/Polyface.js.map +1 -1
  840. package/lib/esm/polyface/PolyfaceBuilder.d.ts +14 -27
  841. package/lib/esm/polyface/PolyfaceBuilder.d.ts.map +1 -1
  842. package/lib/esm/polyface/PolyfaceBuilder.js +48 -80
  843. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  844. package/lib/esm/polyface/PolyfaceClip.js +8 -0
  845. package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
  846. package/lib/esm/polyface/PolyfaceData.d.ts +28 -0
  847. package/lib/esm/polyface/PolyfaceData.d.ts.map +1 -1
  848. package/lib/esm/polyface/PolyfaceData.js +87 -5
  849. package/lib/esm/polyface/PolyfaceData.js.map +1 -1
  850. package/lib/esm/polyface/PolyfaceQuery.js +47 -7
  851. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  852. package/lib/esm/polyface/RangeLengthData.js +7 -0
  853. package/lib/esm/polyface/RangeLengthData.js.map +1 -1
  854. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js +12 -0
  855. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  856. package/lib/esm/polyface/RangeTree/MinimumValueTester.js +5 -2
  857. package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  858. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js +12 -0
  859. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  860. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js +14 -0
  861. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  862. package/lib/esm/polyface/RangeTree/RangeTreeNode.js +5 -0
  863. package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  864. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js +43 -0
  865. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  866. package/lib/esm/polyface/TaggedNumericData.js +8 -0
  867. package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
  868. package/lib/esm/polyface/TriangleCandidate.js +3 -0
  869. package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
  870. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js +7 -0
  871. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  872. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js +6 -0
  873. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  874. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js +3 -0
  875. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  876. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js +3 -0
  877. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  878. package/lib/esm/polyface/multiclip/OffsetMeshContext.js +32 -0
  879. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  880. package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  881. package/lib/esm/polyface/multiclip/RangeSearch.js +5 -5
  882. package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
  883. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js +21 -8
  884. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  885. package/lib/esm/polyface/multiclip/XYPointBuckets.js +6 -0
  886. package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
  887. package/lib/esm/serialization/BGFBAccessors.js +82 -164
  888. package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
  889. package/lib/esm/serialization/BGFBReader.js +22 -22
  890. package/lib/esm/serialization/BGFBReader.js.map +1 -1
  891. package/lib/esm/serialization/BGFBWriter.js +1 -0
  892. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  893. package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  894. package/lib/esm/serialization/DeepCompare.js +17 -17
  895. package/lib/esm/serialization/DeepCompare.js.map +1 -1
  896. package/lib/esm/serialization/GeometrySamples.d.ts +5 -5
  897. package/lib/esm/serialization/GeometrySamples.d.ts.map +1 -1
  898. package/lib/esm/serialization/GeometrySamples.js +113 -112
  899. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  900. package/lib/esm/serialization/IModelJsonSchema.d.ts +1 -2
  901. package/lib/esm/serialization/IModelJsonSchema.d.ts.map +1 -1
  902. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  903. package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
  904. package/lib/esm/solid/Box.js +7 -2
  905. package/lib/esm/solid/Box.js.map +1 -1
  906. package/lib/esm/solid/Cone.js +6 -2
  907. package/lib/esm/solid/Cone.js.map +1 -1
  908. package/lib/esm/solid/LinearSweep.js +4 -2
  909. package/lib/esm/solid/LinearSweep.js.map +1 -1
  910. package/lib/esm/solid/RotationalSweep.js +5 -2
  911. package/lib/esm/solid/RotationalSweep.js.map +1 -1
  912. package/lib/esm/solid/RuledSweep.d.ts +26 -23
  913. package/lib/esm/solid/RuledSweep.d.ts.map +1 -1
  914. package/lib/esm/solid/RuledSweep.js +32 -24
  915. package/lib/esm/solid/RuledSweep.js.map +1 -1
  916. package/lib/esm/solid/SolidPrimitive.d.ts +12 -11
  917. package/lib/esm/solid/SolidPrimitive.d.ts.map +1 -1
  918. package/lib/esm/solid/SolidPrimitive.js +11 -6
  919. package/lib/esm/solid/SolidPrimitive.js.map +1 -1
  920. package/lib/esm/solid/Sphere.js +4 -2
  921. package/lib/esm/solid/Sphere.js.map +1 -1
  922. package/lib/esm/solid/SweepContour.d.ts +24 -15
  923. package/lib/esm/solid/SweepContour.d.ts.map +1 -1
  924. package/lib/esm/solid/SweepContour.js +33 -15
  925. package/lib/esm/solid/SweepContour.js.map +1 -1
  926. package/lib/esm/solid/TorusPipe.js +7 -2
  927. package/lib/esm/solid/TorusPipe.js.map +1 -1
  928. package/lib/esm/topology/ChainMerge.js +16 -4
  929. package/lib/esm/topology/ChainMerge.js.map +1 -1
  930. package/lib/esm/topology/Graph.js +41 -6
  931. package/lib/esm/topology/Graph.js.map +1 -1
  932. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +1 -1
  933. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js +5 -1
  934. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  935. package/lib/esm/topology/HalfEdgeGraphSearch.js +2 -0
  936. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  937. package/lib/esm/topology/HalfEdgeGraphSpineContext.js +9 -2
  938. package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  939. package/lib/esm/topology/HalfEdgeGraphValidation.js +7 -9
  940. package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
  941. package/lib/esm/topology/HalfEdgeMarkSet.js +5 -0
  942. package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
  943. package/lib/esm/topology/HalfEdgeNodeXYZUV.js +6 -0
  944. package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  945. package/lib/esm/topology/HalfEdgePointInGraphSearch.js +1 -0
  946. package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  947. package/lib/esm/topology/HalfEdgePositionDetail.js +16 -0
  948. package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
  949. package/lib/esm/topology/HalfEdgePriorityQueue.js +2 -0
  950. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
  951. package/lib/esm/topology/InsertAndRetriangulateContext.js +4 -0
  952. package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
  953. package/lib/esm/topology/MaskManager.js +3 -0
  954. package/lib/esm/topology/MaskManager.js.map +1 -1
  955. package/lib/esm/topology/Merging.js +11 -6
  956. package/lib/esm/topology/Merging.js.map +1 -1
  957. package/lib/esm/topology/RegularizeFace.js +22 -0
  958. package/lib/esm/topology/RegularizeFace.js.map +1 -1
  959. package/lib/esm/topology/SignedDataSummary.js +22 -0
  960. package/lib/esm/topology/SignedDataSummary.js.map +1 -1
  961. package/lib/esm/topology/SpaceTriangulation.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 +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"BSplineCurve3dH.js","sourceRoot":"","sources":["../../../src/bspline/BSplineCurve3dH.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Serialization\r\n */\r\n\r\nimport { CurvePrimitive } from \"../curve/CurvePrimitive\";\r\nimport { LineString3d } from \"../curve/LineString3d\";\r\nimport { StrokeCountMap } from \"../curve/Query/StrokeCountMap\";\r\nimport { StrokeOptions } from \"../curve/StrokeOptions\";\r\nimport { Geometry } from \"../Geometry\";\r\nimport { GeometryHandler, IStrokeHandler } from \"../geometry3d/GeometryHandler\";\r\nimport { Plane3dByOriginAndUnitNormal } from \"../geometry3d/Plane3dByOriginAndUnitNormal\";\r\nimport { Plane3dByOriginAndVectors } from \"../geometry3d/Plane3dByOriginAndVectors\";\r\nimport { Point3d } from \"../geometry3d/Point3dVector3d\";\r\nimport { Point3dArray, Point4dArray } from \"../geometry3d/PointHelpers\";\r\nimport { Range3d } from \"../geometry3d/Range\";\r\nimport { Ray3d } from \"../geometry3d/Ray3d\";\r\nimport { Transform } from \"../geometry3d/Transform\";\r\nimport { Point4d } from \"../geometry4d/Point4d\";\r\nimport { BezierCurve3dH } from \"./BezierCurve3dH\";\r\nimport { BezierCurveBase } from \"./BezierCurveBase\";\r\nimport { BSplineCurve3dBase } from \"./BSplineCurve\";\r\nimport { BSplineWrapMode, KnotVector } from \"./KnotVector\";\r\n\r\n/**\r\n * Weighted (Homogeneous) BSplineCurve in 3d\r\n * @public\r\n */\r\nexport class BSplineCurve3dH extends BSplineCurve3dBase {\r\n private _workBezier?: BezierCurve3dH;\r\n private initializeWorkBezier(): BezierCurve3dH {\r\n if (this._workBezier === undefined)\r\n this._workBezier = BezierCurve3dH.createOrder(this.order);\r\n return this._workBezier;\r\n }\r\n /** Test if `other` is an instance of `BSplineCurve3dH` */\r\n public isSameGeometryClass(other: any): boolean { return other instanceof BSplineCurve3dH; }\r\n /** Apply `transform` to the curve */\r\n public tryTransformInPlace(transform: Transform): boolean { Point4dArray.multiplyInPlace(transform, this._bcurve.packedData); return true; }\r\n /** Get a pole, normalized to Point3d. */\r\n public getPolePoint3d(poleIndex: number, result?: Point3d): Point3d | undefined {\r\n const k = this.poleIndexToDataIndex(poleIndex);\r\n if (k !== undefined) {\r\n const data = this._bcurve.packedData;\r\n const divW = Geometry.conditionalDivideFraction(1.0, data[k + 3]);\r\n if (divW !== undefined)\r\n return Point3d.create(data[k] * divW, data[k + 1] * divW, data[k + 2] * divW, result);\r\n }\r\n return undefined;\r\n }\r\n /** Get a pole as Point4d */\r\n public getPolePoint4d(poleIndex: number, result?: Point4d): Point4d | undefined {\r\n const k = this.poleIndexToDataIndex(poleIndex);\r\n if (k !== undefined) {\r\n const data = this._bcurve.packedData;\r\n return Point4d.create(data[k], data[k + 1], data[k + 2], data[k + 3], result);\r\n }\r\n return undefined;\r\n }\r\n /** map a spanIndex and fraction to a knot value. */\r\n public spanFractionToKnot(span: number, localFraction: number): number {\r\n return this._bcurve.spanFractionToKnot(span, localFraction);\r\n }\r\n private constructor(numPoles: number, order: number, knots: KnotVector) {\r\n super(4, numPoles, order, knots);\r\n }\r\n /** Return a simple array of arrays with the control points as `[[x,y,z,w],[x,y,z,w],..]` */\r\n public copyPoints(): any[] { return Point3dArray.unpackNumbersToNestedArrays(this._bcurve.packedData, 4); }\r\n /** Return a simple array of the control points coordinates */\r\n public copyPointsFloat64Array(): Float64Array { return this._bcurve.packedData.slice(); }\r\n /** Return a simple array of the control points xyz coordinates. */\r\n public copyXYZFloat64Array(deweighted: boolean): Float64Array {\r\n const numValue = this.numPoles * 3;\r\n const result = new Float64Array(numValue);\r\n let k = 0;\r\n for (let poleIndex = 0; poleIndex < this.numPoles; poleIndex++) {\r\n let i = poleIndex * 4;\r\n if (deweighted) {\r\n const w = this._bcurve.packedData[i + 3];\r\n const dw = w === 0.0 ? 1.0 : 1.0 / w;\r\n result[k++] = this._bcurve.packedData[i++] * dw;\r\n result[k++] = this._bcurve.packedData[i++] * dw;\r\n result[k++] = this._bcurve.packedData[i++] * dw;\r\n\r\n } else {\r\n result[k++] = this._bcurve.packedData[i++];\r\n result[k++] = this._bcurve.packedData[i++];\r\n result[k++] = this._bcurve.packedData[i++];\r\n }\r\n }\r\n return result;\r\n }\r\n public copyWeightsFloat64Array(): Float64Array {\r\n const result = new Float64Array(this.numPoles);\r\n for (let poleIndex = 0; poleIndex < this.numPoles; poleIndex++) {\r\n result[poleIndex] = this._bcurve.packedData[4 * poleIndex + 3];\r\n }\r\n return result;\r\n }\r\n\r\n /** Create a homogeneous B-spline curve with uniform knots.\r\n * * Control points may be supplied as:\r\n * * array of Point4d, with weight already multiplied into the `[wx,wy,wz,w]`\r\n * * array of Point3d, with implied weight 1.\r\n * * Float64Array, blocked as [wx,wy,wz,w], i.e. 4 numbers per control point.\r\n * @param controlPoints pole data in array form as noted above.\r\n * @param order curve order (1 more than degree)\r\n */\r\n public static createUniformKnots(controlPoints: Point3d[] | Point4d[] | Float64Array, order: number): BSplineCurve3dH | undefined {\r\n const numPoles = (controlPoints instanceof Float64Array) ? controlPoints.length / 4 : controlPoints.length;\r\n if (order < 1 || numPoles < order)\r\n return undefined;\r\n const knots = KnotVector.createUniformClamped(controlPoints.length, order - 1, 0.0, 1.0);\r\n const curve = new BSplineCurve3dH(numPoles, order, knots);\r\n let i = 0;\r\n if (Array.isArray(controlPoints)) {\r\n if (controlPoints[0] instanceof Point3d) {\r\n for (const p of (controlPoints as Point3d[])) {\r\n curve._bcurve.packedData[i++] = p.x;\r\n curve._bcurve.packedData[i++] = p.y;\r\n curve._bcurve.packedData[i++] = p.z;\r\n curve._bcurve.packedData[i++] = 1.0;\r\n }\r\n } else if (controlPoints[0] instanceof Point4d) {\r\n for (const p of (controlPoints as Point4d[])) {\r\n curve._bcurve.packedData[i++] = p.x;\r\n curve._bcurve.packedData[i++] = p.y;\r\n curve._bcurve.packedData[i++] = p.z;\r\n curve._bcurve.packedData[i++] = p.w;\r\n }\r\n }\r\n } else {\r\n const numQ = controlPoints.length;\r\n for (let k = 0; k < numQ; k++)\r\n curve._bcurve.packedData[k] = controlPoints[k];\r\n }\r\n return curve;\r\n }\r\n\r\n /** Create a smoothly closed homogeneous B-spline curve with uniform knots.\r\n * * Note that the curve does not start at the first pole!\r\n * * Control points (poles) may be supplied as:\r\n * * array of Point4d, with weight already multiplied into the `[wx,wy,wz,w]`\r\n * * array of Point3d, with implied weight 1.\r\n * * Float64Array, blocked as [wx,wy,wz,w], i.e. 4 numbers per control point.\r\n * @param poles control point data in array form as noted above.\r\n * @param order curve order (1 more than degree)\r\n */\r\n public static createPeriodicUniformKnots(poles: Point3d[] | Point4d[] | Float64Array, order: number): BSplineCurve3dH | undefined {\r\n if (order < 2)\r\n return undefined;\r\n\r\n let numPoles = poles instanceof Float64Array ? poles.length / 4 : poles.length;\r\n if (numPoles < 2)\r\n return undefined;\r\n\r\n const is4d = poles[0] instanceof Point4d;\r\n const startPoint = Point4d.createZero();\r\n const endPoint = Point4d.createZero();\r\n let hasClosurePoint = false;\r\n do {\r\n if (poles instanceof Float64Array) {\r\n startPoint.set(poles[0], poles[1], poles[2], poles[3]);\r\n endPoint.set(poles[4 * numPoles - 4], poles[4 * numPoles - 3], poles[4 * numPoles - 2], poles[4 * numPoles - 1]);\r\n } else {\r\n startPoint.set(poles[0].x, poles[0].y, poles[0].z, is4d ? (poles[0] as Point4d).w : 1.0);\r\n endPoint.set(poles[numPoles - 1].x, poles[numPoles - 1].y, poles[numPoles - 1].z, is4d ? (poles[numPoles - 1] as Point4d).w : 1.0);\r\n }\r\n if (hasClosurePoint = startPoint.isAlmostEqual(endPoint))\r\n --numPoles; // remove wraparound pole if found\r\n } while (hasClosurePoint && numPoles > 1);\r\n\r\n if (numPoles < order)\r\n return undefined;\r\n\r\n const degree = order - 1;\r\n const numIntervals = numPoles;\r\n const knots = KnotVector.createUniformWrapped(numIntervals, degree, 0.0, 1.0);\r\n knots.wrappable = BSplineWrapMode.OpenByAddingControlPoints;\r\n // append degree wraparound poles\r\n const curve = new BSplineCurve3dH(numPoles + degree, order, knots);\r\n if (poles instanceof Float64Array) {\r\n let i = 0;\r\n for (let j = 0; j < 4 * numPoles; j++)\r\n curve._bcurve.packedData[i++] = poles[j];\r\n for (let j = 0; j < 4 * degree; j++)\r\n curve._bcurve.packedData[i++] = poles[j];\r\n } else {\r\n let i = 0;\r\n for (let j = 0; j < numPoles; j++) {\r\n curve._bcurve.packedData[i++] = poles[j].x;\r\n curve._bcurve.packedData[i++] = poles[j].y;\r\n curve._bcurve.packedData[i++] = poles[j].z;\r\n curve._bcurve.packedData[i++] = is4d ? (poles[j] as Point4d).w : 1.0;\r\n }\r\n for (let j = 0; j < degree; j++) {\r\n curve._bcurve.packedData[i++] = poles[j].x;\r\n curve._bcurve.packedData[i++] = poles[j].y;\r\n curve._bcurve.packedData[i++] = poles[j].z;\r\n curve._bcurve.packedData[i++] = is4d ? (poles[j] as Point4d).w : 1.0;\r\n }\r\n }\r\n return curve;\r\n }\r\n\r\n /**\r\n * Assemble a variously structured control points into packed array of [xyzw].\r\n * @param controlPoints\r\n */\r\n public static assemblePackedXYZW(controlPoints: Float64Array | Point4d[] | { xyz: Float64Array, weights: Float64Array } | Point3d[] | number[][]): Float64Array | undefined {\r\n if (controlPoints instanceof Float64Array)\r\n return controlPoints.slice();\r\n\r\n let packedPoints: Float64Array | undefined;\r\n if (Array.isArray(controlPoints) && controlPoints.length > 0) {\r\n const numPoints = controlPoints.length;\r\n let i = 0;\r\n if (controlPoints[0] instanceof Point4d) {\r\n packedPoints = new Float64Array(4 * numPoints);\r\n for (const p of (controlPoints as Point4d[])) {\r\n packedPoints[i++] = p.x;\r\n packedPoints[i++] = p.y;\r\n packedPoints[i++] = p.z;\r\n packedPoints[i++] = p.w;\r\n }\r\n } else if (controlPoints[0] instanceof Point3d) {\r\n packedPoints = new Float64Array(4 * numPoints);\r\n for (const p of (controlPoints as Point3d[])) {\r\n packedPoints[i++] = p.x;\r\n packedPoints[i++] = p.y;\r\n packedPoints[i++] = p.z;\r\n packedPoints[i++] = 1.0;\r\n }\r\n } else if (Array.isArray(controlPoints[0])) {\r\n if (controlPoints[0].length === 4) {\r\n packedPoints = new Float64Array(4 * numPoints);\r\n for (const point of controlPoints as number[][])\r\n for (const coord of point)\r\n packedPoints[i++] = coord;\r\n } else if (controlPoints[0].length === 3) {\r\n packedPoints = new Float64Array(4 * numPoints);\r\n for (const point of controlPoints as number[][]) {\r\n for (const coord of point)\r\n packedPoints[i++] = coord;\r\n packedPoints[i++] = 1.0;\r\n }\r\n }\r\n }\r\n } else { // controlPoints is NOT an array\r\n const obj = controlPoints as any;\r\n if (obj.xyz instanceof Float64Array && obj.weights instanceof Float64Array && obj.xyz.length === 3 * obj.weights.length) {\r\n const numPoints = obj.weights.length;\r\n packedPoints = new Float64Array(4 * numPoints);\r\n let m = 0;\r\n for (let i = 0; i < obj.weights.length; i++) {\r\n const k = 3 * i;\r\n packedPoints[m++] = obj.xyz[k];\r\n packedPoints[m++] = obj.xyz[k + 1];\r\n packedPoints[m++] = obj.xyz[k + 2];\r\n packedPoints[m++] = obj.weights[i];\r\n }\r\n }\r\n }\r\n return packedPoints;\r\n }\r\n\r\n /**\r\n * Create a bspline with given knots.\r\n * * The poles have several variants:\r\n * * Float64Array(4 * numPoles) in blocks of [wx,xy,wz,w]\r\n * * Point4d[numPoles]\r\n * * Point3d[], with implied unit weight to be added\r\n * * number[][], with inner dimension 4\r\n * * {xyz: Float64Array(3 * numPoles), weights: Float64Array (numPoles)}\r\n * * Two count conditions are recognized:\r\n * * If poleArray.length + order == knotArray.length, the first and last are assumed to be the extraneous knots of classic clamping.\r\n * * If poleArray.length + order == knotArray.length + 2, the knots are in modern form.\r\n */\r\n public static create(controlPointData: Float64Array | Point4d[] | { xyz: Float64Array, weights: Float64Array } | Point3d[] | number[][], knotArray: Float64Array | number[], order: number): BSplineCurve3dH | undefined {\r\n if (order < 2)\r\n return undefined;\r\n\r\n const controlPoints = this.assemblePackedXYZW(controlPointData);\r\n if (undefined === controlPoints)\r\n return undefined;\r\n\r\n const numPoles = Math.floor(controlPoints.length / 4);\r\n if (numPoles < order)\r\n return undefined;\r\n\r\n const numKnots = knotArray.length;\r\n const skipFirstAndLast = (numPoles + order === numKnots); // classic over-clamped input knots\r\n if (!skipFirstAndLast && numPoles + order !== numKnots + 2) // modern knots\r\n return undefined;\r\n const knots = KnotVector.create(knotArray, order - 1, skipFirstAndLast);\r\n\r\n const curve = new BSplineCurve3dH(numPoles, order, knots);\r\n\r\n let i = 0;\r\n for (const coordinate of controlPoints)\r\n curve._bcurve.packedData[i++] = coordinate;\r\n return curve;\r\n }\r\n\r\n /** Return a deep clone of this curve. */\r\n public override clone(): BSplineCurve3dH {\r\n const knotVector1 = this._bcurve.knots.clone();\r\n const curve1 = new BSplineCurve3dH(this.numPoles, this.order, knotVector1);\r\n curve1._bcurve.packedData = this._bcurve.packedData.slice();\r\n return curve1;\r\n }\r\n\r\n /** Evaluate at a position given by fractional position within a span. */\r\n public evaluatePointInSpan(spanIndex: number, spanFraction: number, result?: Point3d): Point3d {\r\n this._bcurve.evaluateBuffersInSpan(spanIndex, spanFraction);\r\n const xyzw = this._bcurve.poleBuffer;\r\n return Point4d.createRealPoint3dDefault000(xyzw[0], xyzw[1], xyzw[2], xyzw[3], result);\r\n }\r\n\r\n /** Evaluate at a position given by fractional position within a span. */\r\n public evaluatePointAndDerivativeInSpan(spanIndex: number, spanFraction: number, result?: Ray3d): Ray3d {\r\n this._bcurve.evaluateBuffersInSpan1(spanIndex, spanFraction);\r\n const xyzw = this._bcurve.poleBuffer;\r\n const dXYZW = this._bcurve.poleBuffer1;\r\n return Point4d.createRealDerivativeRay3dDefault000(\r\n xyzw[0], xyzw[1], xyzw[2], xyzw[3],\r\n dXYZW[0], dXYZW[1], dXYZW[2], dXYZW[3], result);\r\n }\r\n\r\n /** Evaluate at a position given by a knot value. */\r\n public knotToPoint(u: number, result?: Point3d): Point3d {\r\n this._bcurve.evaluateBuffersAtKnot(u);\r\n const xyzw = this._bcurve.poleBuffer;\r\n return Point4d.createRealPoint3dDefault000(xyzw[0], xyzw[1], xyzw[2], xyzw[3], result);\r\n }\r\n /** Evaluate at a position given by a knot value. */\r\n public knotToPointAndDerivative(u: number, result?: Ray3d): Ray3d {\r\n this._bcurve.evaluateBuffersAtKnot(u, 1);\r\n const xyzw = this._bcurve.poleBuffer;\r\n const dXYZW = this._bcurve.poleBuffer1;\r\n return Point4d.createRealDerivativeRay3dDefault000(\r\n xyzw[0], xyzw[1], xyzw[2], xyzw[3],\r\n dXYZW[0], dXYZW[1], dXYZW[2], dXYZW[3], result);\r\n }\r\n\r\n /** Evaluate at a position given by a knot value. Return point with 2 derivatives. */\r\n public knotToPointAnd2Derivatives(u: number, result?: Plane3dByOriginAndVectors): Plane3dByOriginAndVectors {\r\n this._bcurve.evaluateBuffersAtKnot(u, 2);\r\n const xyzw = this._bcurve.poleBuffer;\r\n const dXYZW = this._bcurve.poleBuffer1;\r\n const ddXYZW = this._bcurve.poleBuffer2;\r\n return Point4d.createRealDerivativePlane3dByOriginAndVectorsDefault000(\r\n xyzw[0], xyzw[1], xyzw[2], xyzw[3],\r\n dXYZW[0], dXYZW[1], dXYZW[2], dXYZW[3],\r\n ddXYZW[0], ddXYZW[1], ddXYZW[2], ddXYZW[3],\r\n result);\r\n }\r\n /** test if the curve is almost equal to `other` */\r\n public override isAlmostEqual(other: any): boolean {\r\n if (other instanceof BSplineCurve3dH) {\r\n return this._bcurve.knots.isAlmostEqual(other._bcurve.knots)\r\n && Point4dArray.isAlmostEqual(this._bcurve.packedData, other._bcurve.packedData);\r\n }\r\n return false;\r\n }\r\n /** Test if the curve is entirely within a plane. */\r\n public isInPlane(plane: Plane3dByOriginAndUnitNormal): boolean {\r\n return Point4dArray.isCloseToPlane(this._bcurve.packedData, plane);\r\n }\r\n /** Return the control polygon length as quick approximation to the curve length. */\r\n public quickLength(): number { return Point3dArray.sumEdgeLengths(this._bcurve.packedData); }\r\n /** call a handler with interval data for stroking. */\r\n public emitStrokableParts(handler: IStrokeHandler, options?: StrokeOptions): void {\r\n const needBeziers = (handler as any).announceBezierCurve;\r\n const workBezier = this.initializeWorkBezier();\r\n const numSpan = this.numSpan;\r\n let numStrokes;\r\n for (let spanIndex = 0; spanIndex < numSpan; spanIndex++) {\r\n const bezier = this.getSaturatedBezierSpan3dOr3dH(spanIndex, false, workBezier);\r\n if (bezier) {\r\n numStrokes = bezier.computeStrokeCountForOptions(options);\r\n if (needBeziers) {\r\n (handler as any).announceBezierCurve(bezier, numStrokes, this,\r\n spanIndex,\r\n this._bcurve.knots.spanFractionToFraction(spanIndex, 0.0),\r\n this._bcurve.knots.spanFractionToFraction(spanIndex, 1.0));\r\n\r\n } else {\r\n handler.announceIntervalForUniformStepStrokes(this, numStrokes,\r\n this._bcurve.knots.spanFractionToFraction(spanIndex, 0.0),\r\n this._bcurve.knots.spanFractionToFraction(spanIndex, 1.0));\r\n }\r\n }\r\n }\r\n }\r\n /** Append stroked approximation of this curve to the linestring. */\r\n public emitStrokes(dest: LineString3d, options?: StrokeOptions): void {\r\n const workBezier = this.initializeWorkBezier();\r\n const numSpan = this.numSpan;\r\n for (let spanIndex = 0; spanIndex < numSpan; spanIndex++) {\r\n const bezier = this.getSaturatedBezierSpan3dH(spanIndex, workBezier);\r\n if (bezier)\r\n bezier.emitStrokes(dest, options);\r\n }\r\n }\r\n /**\r\n * Assess length and turn to determine a stroke count.\r\n * @param options stroke options structure.\r\n */\r\n public computeStrokeCountForOptions(options?: StrokeOptions): number {\r\n const workBezier = this.initializeWorkBezier();\r\n const numSpan = this.numSpan;\r\n let numStroke = 0;\r\n for (let spanIndex = 0; spanIndex < numSpan; spanIndex++) {\r\n const bezier = this.getSaturatedBezierSpan3dH(spanIndex, workBezier);\r\n if (bezier)\r\n numStroke += bezier.computeStrokeCountForOptions(options);\r\n }\r\n return numStroke;\r\n }\r\n /**\r\n * Compute individual segment stroke counts. Attach in a StrokeCountMap.\r\n * @param options StrokeOptions that determine count\r\n * @param parentStrokeMap evolving parent map.\r\n */\r\n public override computeAndAttachRecursiveStrokeCounts(options?: StrokeOptions, parentStrokeMap?: StrokeCountMap) {\r\n const workBezier = this.initializeWorkBezier();\r\n const numSpan = this.numSpan;\r\n const myData = StrokeCountMap.createWithCurvePrimitiveAndOptionalParent(this, parentStrokeMap, []);\r\n\r\n for (let spanIndex = 0; spanIndex < numSpan; spanIndex++) {\r\n const bezier = this.getSaturatedBezierSpan3dH(spanIndex, workBezier);\r\n if (bezier) {\r\n const segmentLength = workBezier.curveLength();\r\n const numStrokeOnSegment = workBezier.computeStrokeCountForOptions(options);\r\n myData.addToCountAndLength(numStrokeOnSegment, segmentLength);\r\n }\r\n }\r\n CurvePrimitive.installStrokeCountMap(this, myData, parentStrokeMap);\r\n }\r\n /**\r\n * Test knots and control points to determine if it is possible to close (aka \"wrap\") the curve.\r\n * @return whether the curve can be wrapped.\r\n */\r\n public get isClosable(): boolean {\r\n return BSplineWrapMode.None !== this.isClosableCurve;\r\n }\r\n /**\r\n * Return a CurvePrimitive (which is a BezierCurve3dH) for a specified span of this curve.\r\n * @param spanIndex\r\n * @param result optional reusable curve. This will only be reused if it is a BezierCurve3d with matching order.\r\n */\r\n public getSaturatedBezierSpan3dH(spanIndex: number, result?: BezierCurveBase): BezierCurveBase | undefined {\r\n if (spanIndex < 0 || spanIndex >= this.numSpan)\r\n return undefined;\r\n\r\n const order = this.order;\r\n if (result === undefined || !(result instanceof BezierCurve3dH) || result.order !== order)\r\n result = BezierCurve3dH.createOrder(order);\r\n const bezier = result as BezierCurve3dH;\r\n bezier.loadSpan4dPoles(this._bcurve.packedData, spanIndex);\r\n if (bezier.saturateInPlace(this._bcurve.knots, spanIndex))\r\n return result;\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Return a BezierCurveBase for this curve. Because BSplineCurve3dH is homogeneous, the returned BezierCurveBase is always homogeneous.\r\n * @param spanIndex\r\n * @param result optional reusable curve. This will only be reused if it is a BezierCurve3dH with matching order.\r\n */\r\n public getSaturatedBezierSpan3dOr3dH(spanIndex: number, _prefer3dH: boolean, result?: BezierCurveBase): BezierCurveBase | undefined {\r\n return this.getSaturatedBezierSpan3dH(spanIndex, result);\r\n }\r\n /** Second step of double dispatch: call `handler.handleBSplineCurve3dH(this)` */\r\n public dispatchToGeometryHandler(handler: GeometryHandler): any {\r\n return handler.handleBSplineCurve3dH(this);\r\n }\r\n /**\r\n * Extend a range so in includes the range of this curve\r\n * * REMARK: this is based on the poles, not the exact curve. This is generally larger than the true curve range.\r\n * @param rangeToExtend\r\n * @param transform transform to apply to points as they are entered into the range.\r\n */\r\n public extendRange(rangeToExtend: Range3d, transform?: Transform): void {\r\n const buffer = this._bcurve.packedData;\r\n const n = buffer.length - 3;\r\n if (transform) {\r\n for (let i0 = 0; i0 < n; i0 += 4)\r\n rangeToExtend.extendTransformedXYZW(transform, buffer[i0], buffer[i0 + 1], buffer[i0 + 2], buffer[i0 + 3]);\r\n } else {\r\n for (let i0 = 0; i0 < n; i0 += 4)\r\n rangeToExtend.extendXYZW(buffer[i0], buffer[i0 + 1], buffer[i0 + 2], buffer[i0 + 3]);\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"BSplineCurve3dH.js","sourceRoot":"","sources":["../../../src/bspline/BSplineCurve3dH.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Serialization\n */\n\nimport { CurvePrimitive } from \"../curve/CurvePrimitive\";\nimport { LineString3d } from \"../curve/LineString3d\";\nimport { StrokeCountMap } from \"../curve/Query/StrokeCountMap\";\nimport { StrokeOptions } from \"../curve/StrokeOptions\";\nimport { Geometry } from \"../Geometry\";\nimport { GeometryHandler, IStrokeHandler } from \"../geometry3d/GeometryHandler\";\nimport { Plane3dByOriginAndUnitNormal } from \"../geometry3d/Plane3dByOriginAndUnitNormal\";\nimport { Plane3dByOriginAndVectors } from \"../geometry3d/Plane3dByOriginAndVectors\";\nimport { Point3d } from \"../geometry3d/Point3dVector3d\";\nimport { Point3dArray, Point4dArray } from \"../geometry3d/PointHelpers\";\nimport { Range3d } from \"../geometry3d/Range\";\nimport { Ray3d } from \"../geometry3d/Ray3d\";\nimport { Transform } from \"../geometry3d/Transform\";\nimport { Point4d } from \"../geometry4d/Point4d\";\nimport { BezierCurve3dH } from \"./BezierCurve3dH\";\nimport { BezierCurveBase } from \"./BezierCurveBase\";\nimport { BSplineCurve3dBase } from \"./BSplineCurve\";\nimport { BSplineWrapMode, KnotVector } from \"./KnotVector\";\n\n/**\n * Weighted (Homogeneous) BSplineCurve in 3d\n * @public\n */\nexport class BSplineCurve3dH extends BSplineCurve3dBase {\n private _workBezier?: BezierCurve3dH;\n private initializeWorkBezier(): BezierCurve3dH {\n if (this._workBezier === undefined)\n this._workBezier = BezierCurve3dH.createOrder(this.order);\n return this._workBezier;\n }\n /** Test if `other` is an instance of `BSplineCurve3dH` */\n public isSameGeometryClass(other: any): boolean { return other instanceof BSplineCurve3dH; }\n /** Apply `transform` to the curve */\n public tryTransformInPlace(transform: Transform): boolean { Point4dArray.multiplyInPlace(transform, this._bcurve.packedData); return true; }\n /** Get a pole, normalized to Point3d. */\n public getPolePoint3d(poleIndex: number, result?: Point3d): Point3d | undefined {\n const k = this.poleIndexToDataIndex(poleIndex);\n if (k !== undefined) {\n const data = this._bcurve.packedData;\n const divW = Geometry.conditionalDivideFraction(1.0, data[k + 3]);\n if (divW !== undefined)\n return Point3d.create(data[k] * divW, data[k + 1] * divW, data[k + 2] * divW, result);\n }\n return undefined;\n }\n /** Get a pole as Point4d */\n public getPolePoint4d(poleIndex: number, result?: Point4d): Point4d | undefined {\n const k = this.poleIndexToDataIndex(poleIndex);\n if (k !== undefined) {\n const data = this._bcurve.packedData;\n return Point4d.create(data[k], data[k + 1], data[k + 2], data[k + 3], result);\n }\n return undefined;\n }\n /** map a spanIndex and fraction to a knot value. */\n public spanFractionToKnot(span: number, localFraction: number): number {\n return this._bcurve.spanFractionToKnot(span, localFraction);\n }\n private constructor(numPoles: number, order: number, knots: KnotVector) {\n super(4, numPoles, order, knots);\n }\n /** Return a simple array of arrays with the control points as `[[x,y,z,w],[x,y,z,w],..]` */\n public copyPoints(): any[] { return Point3dArray.unpackNumbersToNestedArrays(this._bcurve.packedData, 4); }\n /** Return a simple array of the control points coordinates */\n public copyPointsFloat64Array(): Float64Array { return this._bcurve.packedData.slice(); }\n /** Return a simple array of the control points xyz coordinates. */\n public copyXYZFloat64Array(deweighted: boolean): Float64Array {\n const numValue = this.numPoles * 3;\n const result = new Float64Array(numValue);\n let k = 0;\n for (let poleIndex = 0; poleIndex < this.numPoles; poleIndex++) {\n let i = poleIndex * 4;\n if (deweighted) {\n const w = this._bcurve.packedData[i + 3];\n const dw = w === 0.0 ? 1.0 : 1.0 / w;\n result[k++] = this._bcurve.packedData[i++] * dw;\n result[k++] = this._bcurve.packedData[i++] * dw;\n result[k++] = this._bcurve.packedData[i++] * dw;\n\n } else {\n result[k++] = this._bcurve.packedData[i++];\n result[k++] = this._bcurve.packedData[i++];\n result[k++] = this._bcurve.packedData[i++];\n }\n }\n return result;\n }\n public copyWeightsFloat64Array(): Float64Array {\n const result = new Float64Array(this.numPoles);\n for (let poleIndex = 0; poleIndex < this.numPoles; poleIndex++) {\n result[poleIndex] = this._bcurve.packedData[4 * poleIndex + 3];\n }\n return result;\n }\n\n /** Create a homogeneous B-spline curve with uniform knots.\n * * Control points may be supplied as:\n * * array of Point4d, with weight already multiplied into the `[wx,wy,wz,w]`\n * * array of Point3d, with implied weight 1.\n * * Float64Array, blocked as [wx,wy,wz,w], i.e. 4 numbers per control point.\n * @param controlPoints pole data in array form as noted above.\n * @param order curve order (1 more than degree)\n */\n public static createUniformKnots(controlPoints: Point3d[] | Point4d[] | Float64Array, order: number): BSplineCurve3dH | undefined {\n const numPoles = (controlPoints instanceof Float64Array) ? controlPoints.length / 4 : controlPoints.length;\n if (order < 1 || numPoles < order)\n return undefined;\n const knots = KnotVector.createUniformClamped(controlPoints.length, order - 1, 0.0, 1.0);\n const curve = new BSplineCurve3dH(numPoles, order, knots);\n let i = 0;\n if (Array.isArray(controlPoints)) {\n if (controlPoints[0] instanceof Point3d) {\n for (const p of (controlPoints as Point3d[])) {\n curve._bcurve.packedData[i++] = p.x;\n curve._bcurve.packedData[i++] = p.y;\n curve._bcurve.packedData[i++] = p.z;\n curve._bcurve.packedData[i++] = 1.0;\n }\n } else if (controlPoints[0] instanceof Point4d) {\n for (const p of (controlPoints as Point4d[])) {\n curve._bcurve.packedData[i++] = p.x;\n curve._bcurve.packedData[i++] = p.y;\n curve._bcurve.packedData[i++] = p.z;\n curve._bcurve.packedData[i++] = p.w;\n }\n }\n } else {\n const numQ = controlPoints.length;\n for (let k = 0; k < numQ; k++)\n curve._bcurve.packedData[k] = controlPoints[k];\n }\n return curve;\n }\n\n /** Create a smoothly closed homogeneous B-spline curve with uniform knots.\n * * Note that the curve does not start at the first pole!\n * * Control points (poles) may be supplied as:\n * * array of Point4d, with weight already multiplied into the `[wx,wy,wz,w]`\n * * array of Point3d, with implied weight 1.\n * * Float64Array, blocked as [wx,wy,wz,w], i.e. 4 numbers per control point.\n * @param poles control point data in array form as noted above.\n * @param order curve order (1 more than degree)\n */\n public static createPeriodicUniformKnots(poles: Point3d[] | Point4d[] | Float64Array, order: number): BSplineCurve3dH | undefined {\n if (order < 2)\n return undefined;\n\n let numPoles = poles instanceof Float64Array ? poles.length / 4 : poles.length;\n if (numPoles < 2)\n return undefined;\n\n const is4d = poles[0] instanceof Point4d;\n const startPoint = Point4d.createZero();\n const endPoint = Point4d.createZero();\n let hasClosurePoint = false;\n do {\n if (poles instanceof Float64Array) {\n startPoint.set(poles[0], poles[1], poles[2], poles[3]);\n endPoint.set(poles[4 * numPoles - 4], poles[4 * numPoles - 3], poles[4 * numPoles - 2], poles[4 * numPoles - 1]);\n } else {\n startPoint.set(poles[0].x, poles[0].y, poles[0].z, is4d ? (poles[0] as Point4d).w : 1.0);\n endPoint.set(poles[numPoles - 1].x, poles[numPoles - 1].y, poles[numPoles - 1].z, is4d ? (poles[numPoles - 1] as Point4d).w : 1.0);\n }\n if (hasClosurePoint = startPoint.isAlmostEqual(endPoint))\n --numPoles; // remove wraparound pole if found\n } while (hasClosurePoint && numPoles > 1);\n\n if (numPoles < order)\n return undefined;\n\n const degree = order - 1;\n const numIntervals = numPoles;\n const knots = KnotVector.createUniformWrapped(numIntervals, degree, 0.0, 1.0);\n knots.wrappable = BSplineWrapMode.OpenByAddingControlPoints;\n // append degree wraparound poles\n const curve = new BSplineCurve3dH(numPoles + degree, order, knots);\n if (poles instanceof Float64Array) {\n let i = 0;\n for (let j = 0; j < 4 * numPoles; j++)\n curve._bcurve.packedData[i++] = poles[j];\n for (let j = 0; j < 4 * degree; j++)\n curve._bcurve.packedData[i++] = poles[j];\n } else {\n let i = 0;\n for (let j = 0; j < numPoles; j++) {\n curve._bcurve.packedData[i++] = poles[j].x;\n curve._bcurve.packedData[i++] = poles[j].y;\n curve._bcurve.packedData[i++] = poles[j].z;\n curve._bcurve.packedData[i++] = is4d ? (poles[j] as Point4d).w : 1.0;\n }\n for (let j = 0; j < degree; j++) {\n curve._bcurve.packedData[i++] = poles[j].x;\n curve._bcurve.packedData[i++] = poles[j].y;\n curve._bcurve.packedData[i++] = poles[j].z;\n curve._bcurve.packedData[i++] = is4d ? (poles[j] as Point4d).w : 1.0;\n }\n }\n return curve;\n }\n\n /**\n * Assemble a variously structured control points into packed array of [xyzw].\n * @param controlPoints\n */\n public static assemblePackedXYZW(controlPoints: Float64Array | Point4d[] | { xyz: Float64Array, weights: Float64Array } | Point3d[] | number[][]): Float64Array | undefined {\n if (controlPoints instanceof Float64Array)\n return controlPoints.slice();\n\n let packedPoints: Float64Array | undefined;\n if (Array.isArray(controlPoints) && controlPoints.length > 0) {\n const numPoints = controlPoints.length;\n let i = 0;\n if (controlPoints[0] instanceof Point4d) {\n packedPoints = new Float64Array(4 * numPoints);\n for (const p of (controlPoints as Point4d[])) {\n packedPoints[i++] = p.x;\n packedPoints[i++] = p.y;\n packedPoints[i++] = p.z;\n packedPoints[i++] = p.w;\n }\n } else if (controlPoints[0] instanceof Point3d) {\n packedPoints = new Float64Array(4 * numPoints);\n for (const p of (controlPoints as Point3d[])) {\n packedPoints[i++] = p.x;\n packedPoints[i++] = p.y;\n packedPoints[i++] = p.z;\n packedPoints[i++] = 1.0;\n }\n } else if (Array.isArray(controlPoints[0])) {\n if (controlPoints[0].length === 4) {\n packedPoints = new Float64Array(4 * numPoints);\n for (const point of controlPoints as number[][])\n for (const coord of point)\n packedPoints[i++] = coord;\n } else if (controlPoints[0].length === 3) {\n packedPoints = new Float64Array(4 * numPoints);\n for (const point of controlPoints as number[][]) {\n for (const coord of point)\n packedPoints[i++] = coord;\n packedPoints[i++] = 1.0;\n }\n }\n }\n } else { // controlPoints is NOT an array\n const obj = controlPoints as any;\n if (obj.xyz instanceof Float64Array && obj.weights instanceof Float64Array && obj.xyz.length === 3 * obj.weights.length) {\n const numPoints = obj.weights.length;\n packedPoints = new Float64Array(4 * numPoints);\n let m = 0;\n for (let i = 0; i < obj.weights.length; i++) {\n const k = 3 * i;\n packedPoints[m++] = obj.xyz[k];\n packedPoints[m++] = obj.xyz[k + 1];\n packedPoints[m++] = obj.xyz[k + 2];\n packedPoints[m++] = obj.weights[i];\n }\n }\n }\n return packedPoints;\n }\n\n /**\n * Create a bspline with given knots.\n * * The poles have several variants:\n * * Float64Array(4 * numPoles) in blocks of [wx,xy,wz,w]\n * * Point4d[numPoles]\n * * Point3d[], with implied unit weight to be added\n * * number[][], with inner dimension 4\n * * {xyz: Float64Array(3 * numPoles), weights: Float64Array (numPoles)}\n * * Two count conditions are recognized:\n * * If poleArray.length + order == knotArray.length, the first and last are assumed to be the extraneous knots of classic clamping.\n * * If poleArray.length + order == knotArray.length + 2, the knots are in modern form.\n */\n public static create(controlPointData: Float64Array | Point4d[] | { xyz: Float64Array, weights: Float64Array } | Point3d[] | number[][], knotArray: Float64Array | number[], order: number): BSplineCurve3dH | undefined {\n if (order < 2)\n return undefined;\n\n const controlPoints = this.assemblePackedXYZW(controlPointData);\n if (undefined === controlPoints)\n return undefined;\n\n const numPoles = Math.floor(controlPoints.length / 4);\n if (numPoles < order)\n return undefined;\n\n const numKnots = knotArray.length;\n const skipFirstAndLast = (numPoles + order === numKnots); // classic over-clamped input knots\n if (!skipFirstAndLast && numPoles + order !== numKnots + 2) // modern knots\n return undefined;\n const knots = KnotVector.create(knotArray, order - 1, skipFirstAndLast);\n\n const curve = new BSplineCurve3dH(numPoles, order, knots);\n\n let i = 0;\n for (const coordinate of controlPoints)\n curve._bcurve.packedData[i++] = coordinate;\n return curve;\n }\n\n /** Return a deep clone of this curve. */\n public override clone(): BSplineCurve3dH {\n const knotVector1 = this._bcurve.knots.clone();\n const curve1 = new BSplineCurve3dH(this.numPoles, this.order, knotVector1);\n curve1._bcurve.packedData = this._bcurve.packedData.slice();\n return curve1;\n }\n\n /** Evaluate at a position given by fractional position within a span. */\n public evaluatePointInSpan(spanIndex: number, spanFraction: number, result?: Point3d): Point3d {\n this._bcurve.evaluateBuffersInSpan(spanIndex, spanFraction);\n const xyzw = this._bcurve.poleBuffer;\n return Point4d.createRealPoint3dDefault000(xyzw[0], xyzw[1], xyzw[2], xyzw[3], result);\n }\n\n /** Evaluate at a position given by fractional position within a span. */\n public evaluatePointAndDerivativeInSpan(spanIndex: number, spanFraction: number, result?: Ray3d): Ray3d {\n this._bcurve.evaluateBuffersInSpan1(spanIndex, spanFraction);\n const xyzw = this._bcurve.poleBuffer;\n const dXYZW = this._bcurve.poleBuffer1;\n return Point4d.createRealDerivativeRay3dDefault000(\n xyzw[0], xyzw[1], xyzw[2], xyzw[3],\n dXYZW[0], dXYZW[1], dXYZW[2], dXYZW[3], result);\n }\n\n /** Evaluate at a position given by a knot value. */\n public knotToPoint(u: number, result?: Point3d): Point3d {\n this._bcurve.evaluateBuffersAtKnot(u);\n const xyzw = this._bcurve.poleBuffer;\n return Point4d.createRealPoint3dDefault000(xyzw[0], xyzw[1], xyzw[2], xyzw[3], result);\n }\n /** Evaluate at a position given by a knot value. */\n public knotToPointAndDerivative(u: number, result?: Ray3d): Ray3d {\n this._bcurve.evaluateBuffersAtKnot(u, 1);\n const xyzw = this._bcurve.poleBuffer;\n const dXYZW = this._bcurve.poleBuffer1;\n return Point4d.createRealDerivativeRay3dDefault000(\n xyzw[0], xyzw[1], xyzw[2], xyzw[3],\n dXYZW[0], dXYZW[1], dXYZW[2], dXYZW[3], result);\n }\n\n /** Evaluate at a position given by a knot value. Return point with 2 derivatives. */\n public knotToPointAnd2Derivatives(u: number, result?: Plane3dByOriginAndVectors): Plane3dByOriginAndVectors {\n this._bcurve.evaluateBuffersAtKnot(u, 2);\n const xyzw = this._bcurve.poleBuffer;\n const dXYZW = this._bcurve.poleBuffer1;\n const ddXYZW = this._bcurve.poleBuffer2;\n return Point4d.createRealDerivativePlane3dByOriginAndVectorsDefault000(\n xyzw[0], xyzw[1], xyzw[2], xyzw[3],\n dXYZW[0], dXYZW[1], dXYZW[2], dXYZW[3],\n ddXYZW[0], ddXYZW[1], ddXYZW[2], ddXYZW[3],\n result);\n }\n /** test if the curve is almost equal to `other` */\n public override isAlmostEqual(other: any): boolean {\n if (other instanceof BSplineCurve3dH) {\n return this._bcurve.knots.isAlmostEqual(other._bcurve.knots)\n && Point4dArray.isAlmostEqual(this._bcurve.packedData, other._bcurve.packedData);\n }\n return false;\n }\n /** Test if the curve is entirely within a plane. */\n public isInPlane(plane: Plane3dByOriginAndUnitNormal): boolean {\n return Point4dArray.isCloseToPlane(this._bcurve.packedData, plane);\n }\n /** Return the control polygon length as quick approximation to the curve length. */\n public quickLength(): number { return Point3dArray.sumEdgeLengths(this._bcurve.packedData); }\n /** call a handler with interval data for stroking. */\n public emitStrokableParts(handler: IStrokeHandler, options?: StrokeOptions): void {\n const needBeziers = (handler as any).announceBezierCurve;\n const workBezier = this.initializeWorkBezier();\n const numSpan = this.numSpan;\n let numStrokes;\n for (let spanIndex = 0; spanIndex < numSpan; spanIndex++) {\n const bezier = this.getSaturatedBezierSpan3dOr3dH(spanIndex, false, workBezier);\n if (bezier) {\n numStrokes = bezier.computeStrokeCountForOptions(options);\n if (needBeziers) {\n (handler as any).announceBezierCurve(bezier, numStrokes, this,\n spanIndex,\n this._bcurve.knots.spanFractionToFraction(spanIndex, 0.0),\n this._bcurve.knots.spanFractionToFraction(spanIndex, 1.0));\n\n } else {\n handler.announceIntervalForUniformStepStrokes(this, numStrokes,\n this._bcurve.knots.spanFractionToFraction(spanIndex, 0.0),\n this._bcurve.knots.spanFractionToFraction(spanIndex, 1.0));\n }\n }\n }\n }\n /** Append stroked approximation of this curve to the linestring. */\n public emitStrokes(dest: LineString3d, options?: StrokeOptions): void {\n const workBezier = this.initializeWorkBezier();\n const numSpan = this.numSpan;\n for (let spanIndex = 0; spanIndex < numSpan; spanIndex++) {\n const bezier = this.getSaturatedBezierSpan3dH(spanIndex, workBezier);\n if (bezier)\n bezier.emitStrokes(dest, options);\n }\n }\n /**\n * Assess length and turn to determine a stroke count.\n * @param options stroke options structure.\n */\n public computeStrokeCountForOptions(options?: StrokeOptions): number {\n const workBezier = this.initializeWorkBezier();\n const numSpan = this.numSpan;\n let numStroke = 0;\n for (let spanIndex = 0; spanIndex < numSpan; spanIndex++) {\n const bezier = this.getSaturatedBezierSpan3dH(spanIndex, workBezier);\n if (bezier)\n numStroke += bezier.computeStrokeCountForOptions(options);\n }\n return numStroke;\n }\n /**\n * Compute individual segment stroke counts. Attach in a StrokeCountMap.\n * @param options StrokeOptions that determine count\n * @param parentStrokeMap evolving parent map.\n */\n public override computeAndAttachRecursiveStrokeCounts(options?: StrokeOptions, parentStrokeMap?: StrokeCountMap) {\n const workBezier = this.initializeWorkBezier();\n const numSpan = this.numSpan;\n const myData = StrokeCountMap.createWithCurvePrimitiveAndOptionalParent(this, parentStrokeMap, []);\n\n for (let spanIndex = 0; spanIndex < numSpan; spanIndex++) {\n const bezier = this.getSaturatedBezierSpan3dH(spanIndex, workBezier);\n if (bezier) {\n const segmentLength = workBezier.curveLength();\n const numStrokeOnSegment = workBezier.computeStrokeCountForOptions(options);\n myData.addToCountAndLength(numStrokeOnSegment, segmentLength);\n }\n }\n CurvePrimitive.installStrokeCountMap(this, myData, parentStrokeMap);\n }\n /**\n * Test knots and control points to determine if it is possible to close (aka \"wrap\") the curve.\n * @return whether the curve can be wrapped.\n */\n public get isClosable(): boolean {\n return BSplineWrapMode.None !== this.isClosableCurve;\n }\n /**\n * Return a CurvePrimitive (which is a BezierCurve3dH) for a specified span of this curve.\n * @param spanIndex\n * @param result optional reusable curve. This will only be reused if it is a BezierCurve3d with matching order.\n */\n public getSaturatedBezierSpan3dH(spanIndex: number, result?: BezierCurveBase): BezierCurveBase | undefined {\n if (spanIndex < 0 || spanIndex >= this.numSpan)\n return undefined;\n\n const order = this.order;\n if (result === undefined || !(result instanceof BezierCurve3dH) || result.order !== order)\n result = BezierCurve3dH.createOrder(order);\n const bezier = result as BezierCurve3dH;\n bezier.loadSpan4dPoles(this._bcurve.packedData, spanIndex);\n if (bezier.saturateInPlace(this._bcurve.knots, spanIndex))\n return result;\n return undefined;\n }\n\n /**\n * Return a BezierCurveBase for this curve. Because BSplineCurve3dH is homogeneous, the returned BezierCurveBase is always homogeneous.\n * @param spanIndex\n * @param result optional reusable curve. This will only be reused if it is a BezierCurve3dH with matching order.\n */\n public getSaturatedBezierSpan3dOr3dH(spanIndex: number, _prefer3dH: boolean, result?: BezierCurveBase): BezierCurveBase | undefined {\n return this.getSaturatedBezierSpan3dH(spanIndex, result);\n }\n /** Second step of double dispatch: call `handler.handleBSplineCurve3dH(this)` */\n public dispatchToGeometryHandler(handler: GeometryHandler): any {\n return handler.handleBSplineCurve3dH(this);\n }\n /**\n * Extend a range so in includes the range of this curve\n * * REMARK: this is based on the poles, not the exact curve. This is generally larger than the true curve range.\n * @param rangeToExtend\n * @param transform transform to apply to points as they are entered into the range.\n */\n public extendRange(rangeToExtend: Range3d, transform?: Transform): void {\n const buffer = this._bcurve.packedData;\n const n = buffer.length - 3;\n if (transform) {\n for (let i0 = 0; i0 < n; i0 += 4)\n rangeToExtend.extendTransformedXYZW(transform, buffer[i0], buffer[i0 + 1], buffer[i0 + 2], buffer[i0 + 3]);\n } else {\n for (let i0 = 0; i0 < n; i0 += 4)\n rangeToExtend.extendXYZW(buffer[i0], buffer[i0 + 1], buffer[i0 + 2], buffer[i0 + 3]);\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"BSplineCurveOps.d.ts","sourceRoot":"","sources":["../../../src/bspline/BSplineCurveOps.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAY,MAAM,+BAA+B,CAAC;AAGlE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAGhG;;;GAGG;AACH,qBAAa,eAAe;IAC1B;;;;OAIG;WACW,mBAAmB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAwCtH;;;OAGG;WACW,0BAA0B,CAAC,OAAO,EAAE,2BAA2B,GAAG,cAAc,GAAG,SAAS;CAsB3G;AAED;;;GAGG;AACH,yBAAiB,eAAe,CAAC;IAC/B;;;;;OAKG;IACH,MAAa,UAAU;QACrB;;WAEG;QACH,OAAO,CAAC,MAAM,CAAC,cAAc;QAe7B,qEAAqE;QACrE,OAAO,CAAC,MAAM,CAAC,8BAA8B;QAW7C,gEAAgE;QAChE,OAAO,CAAC,MAAM,CAAC,0BAA0B;QAUzC,qEAAqE;QACrE,OAAO,CAAC,MAAM,CAAC,wBAAwB;QAgCvC;;;;;UAKE;eACa,gCAAgC,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,EAAE,GAAG,SAAS;QAS3J;;;WAGG;eACY,sBAAsB,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO;QAMpF;;;;;WAKG;QACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;QAepC;;;;WAIG;QACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;QAUjC;;;;;;;WAOG;QACF,OAAO,CAAC,MAAM,CAAC,kBAAkB;QAiDlC;;;;;;;WAOG;QACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;QAwFvC;;;;;WAKG;QACH,OAAO,CAAC,MAAM,CAAC,WAAW;QAmB1B;;;;;WAKG;QACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;QA2CpC;;;;;;WAMG;QACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;QAerC;;;;;;WAMG;QACH,OAAO,CAAC,MAAM,CAAC,gCAAgC;QAyC/C;;;;;WAKG;QACH,OAAO,CAAC,MAAM,CAAC,iCAAiC;QAqBhD;;;;WAIG;QACH,OAAO,CAAC,MAAM,CAAC,+BAA+B;QAkC9C;;;;WAIG;QACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;QAyC/B;;WAEG;QACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;QAuCnC;;WAEG;eACW,eAAe,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO;QAwD5E;;;;YAII;eACU,iCAAiC,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS;QA2B7I;;;YAGI;eACU,iCAAiC,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS;QAoBvI,sDAAsD;eACxC,kBAAkB,CAAC,KAAK,EAAE,yBAAyB;QAUjE;;WAEG;eACW,cAAc,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,EAAE,GAAG,YAAY,GAAG,SAAS;KA0DzG;CACF"}
1
+ {"version":3,"file":"BSplineCurveOps.d.ts","sourceRoot":"","sources":["../../../src/bspline/BSplineCurveOps.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE1E,OAAO,EAAE,OAAO,EAAY,MAAM,+BAA+B,CAAC;AAGlE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAGhG;;;GAGG;AACH,qBAAa,eAAe;IAC1B;;;;OAIG;WACW,mBAAmB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAwCtH;;;OAGG;WACW,0BAA0B,CAAC,OAAO,EAAE,2BAA2B,GAAG,cAAc,GAAG,SAAS;CAsB3G;AAED;;;GAGG;AACH,yBAAiB,eAAe,CAAC;IAC/B;;;;;OAKG;IACH,MAAa,UAAU;QACrB;;WAEG;QACH,OAAO,CAAC,MAAM,CAAC,cAAc;QAe7B,qEAAqE;QACrE,OAAO,CAAC,MAAM,CAAC,8BAA8B;QAW7C,gEAAgE;QAChE,OAAO,CAAC,MAAM,CAAC,0BAA0B;QAUzC,qEAAqE;QACrE,OAAO,CAAC,MAAM,CAAC,wBAAwB;QAyBvC;;;;;UAKE;eACa,gCAAgC,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,EAAE,GAAG,SAAS;QAS3J;;;WAGG;eACY,sBAAsB,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO;QAMpF;;;;;WAKG;QACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;QAepC;;;;WAIG;QACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;QAUjC;;;;;;;WAOG;QACF,OAAO,CAAC,MAAM,CAAC,kBAAkB;QAiDlC;;;;;;;WAOG;QACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;QAwFvC;;;;;WAKG;QACH,OAAO,CAAC,MAAM,CAAC,WAAW;QAmB1B;;;;;WAKG;QACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;QA2CpC;;;;;;WAMG;QACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;QAerC;;;;;;WAMG;QACH,OAAO,CAAC,MAAM,CAAC,gCAAgC;QAyC/C;;;;;WAKG;QACH,OAAO,CAAC,MAAM,CAAC,iCAAiC;QAqBhD;;;;WAIG;QACH,OAAO,CAAC,MAAM,CAAC,+BAA+B;QAkC9C;;;;WAIG;QACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;QAyC/B;;WAEG;QACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;QAuCnC;;WAEG;eACW,eAAe,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO;QAwD5E;;;;YAII;eACU,iCAAiC,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS;QA2B7I;;;YAGI;eACU,iCAAiC,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS;QAoBvI,sDAAsD;eACxC,kBAAkB,CAAC,KAAK,EAAE,yBAAyB;QAUjE;;WAEG;eACW,cAAc,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,EAAE,GAAG,YAAY,GAAG,SAAS;KA0DzG;CACF"}
@@ -11,6 +11,7 @@ exports.BSplineCurveOps = void 0;
11
11
  const Geometry_1 = require("../Geometry");
12
12
  const GrowableXYZArray_1 = require("../geometry3d/GrowableXYZArray");
13
13
  const IndexedXYZCollection_1 = require("../geometry3d/IndexedXYZCollection");
14
+ const Point3dArrayCarrier_1 = require("../geometry3d/Point3dArrayCarrier");
14
15
  const Point3dVector3d_1 = require("../geometry3d/Point3dVector3d");
15
16
  const PointHelpers_1 = require("../geometry3d/PointHelpers");
16
17
  const BandedSystem_1 = require("../numerics/BandedSystem");
@@ -143,28 +144,24 @@ exports.BSplineCurveOps = BSplineCurveOps;
143
144
  static removeDuplicateFitPoints(options) {
144
145
  if (undefined !== options.knots && options.knots.length !== options.fitPoints.length)
145
146
  options.knots = undefined;
146
- // get indices of duplicate points to be removed
147
- const newPts = GrowableXYZArray_1.GrowableXYZArray.create(options.fitPoints);
148
- const indices = newPts.findOrderedDuplicates();
149
- newPts.clear();
150
- // remove duplicate fit points
151
- for (let iRead = 0, iIndex = 0; iRead < options.fitPoints.length; ++iRead) {
152
- if (iRead === indices[iIndex])
153
- ++iIndex; // skip the duplicate
154
- else
155
- newPts.push(options.fitPoints[iRead].clone());
156
- }
157
- options.fitPoints = newPts.getPoint3dArray();
158
- // remove params corresponding to removed fit points
159
- if (undefined !== options.knots) {
160
- const newKnots = [];
161
- for (let iRead = 0, iIndex = 0; iRead < options.knots.length; ++iRead) {
162
- if (iRead === indices[iIndex])
163
- ++iIndex; // skip
164
- else
165
- newKnots.push(options.knots[iRead]);
147
+ const carrier = new Point3dArrayCarrier_1.Point3dArrayCarrier(options.fitPoints);
148
+ const indices = carrier.findOrderedDuplicates(undefined, true); // use default tolerance
149
+ if (indices.length > 0) {
150
+ // remove duplicate fit points, and their corresponding params
151
+ let iWrite = 0;
152
+ for (let iRead = 0, iIndex = 0; iRead < options.fitPoints.length; ++iRead) {
153
+ if (iIndex < indices.length && iRead === indices[iIndex])
154
+ ++iIndex; // skip the duplicate
155
+ else {
156
+ options.fitPoints[iWrite] = options.fitPoints[iRead];
157
+ if (options.knots)
158
+ options.knots[iWrite] = options.knots[iRead];
159
+ ++iWrite;
160
+ }
166
161
  }
167
- options.knots = newKnots.slice();
162
+ options.fitPoints.splice(iWrite);
163
+ if (options.knots)
164
+ options.knots.splice(iWrite);
168
165
  }
169
166
  return true;
170
167
  }