@itwin/core-geometry 4.10.0-dev.9 → 4.10.1

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 (673) hide show
  1. package/CHANGELOG.md +34 -1
  2. package/lib/cjs/Constant.js.map +1 -1
  3. package/lib/cjs/Geometry.js +2 -2
  4. package/lib/cjs/Geometry.js.map +1 -1
  5. package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
  6. package/lib/cjs/bspline/BSpline1dNd.d.ts.map +1 -1
  7. package/lib/cjs/bspline/BSpline1dNd.js +0 -1
  8. package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
  9. package/lib/cjs/bspline/BSplineCurve.d.ts +5 -3
  10. package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -1
  11. package/lib/cjs/bspline/BSplineCurve.js +5 -4
  12. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  13. package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
  14. package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
  15. package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
  16. package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
  17. package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
  18. package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
  19. package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
  20. package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
  21. package/lib/cjs/bspline/KnotVector.js.map +1 -1
  22. package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -1
  23. package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
  24. package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -1
  25. package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
  26. package/lib/cjs/clipping/ClipPlane.js.map +1 -1
  27. package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
  28. package/lib/cjs/clipping/ClipUtils.js.map +1 -1
  29. package/lib/cjs/clipping/ClipVector.js +1 -1
  30. package/lib/cjs/clipping/ClipVector.js.map +1 -1
  31. package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
  32. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  33. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  34. package/lib/cjs/core-geometry.d.ts +1 -1
  35. package/lib/cjs/core-geometry.d.ts.map +1 -1
  36. package/lib/cjs/core-geometry.js +1 -1
  37. package/lib/cjs/core-geometry.js.map +1 -1
  38. package/lib/cjs/curve/Arc3d.d.ts +136 -128
  39. package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
  40. package/lib/cjs/curve/Arc3d.js +177 -152
  41. package/lib/cjs/curve/Arc3d.js.map +1 -1
  42. package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
  43. package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
  44. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +7 -5
  45. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  46. package/lib/cjs/curve/CurveChainWithDistanceIndex.js +9 -7
  47. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  48. package/lib/cjs/curve/CurveCollection.d.ts +21 -2
  49. package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
  50. package/lib/cjs/curve/CurveCollection.js +45 -10
  51. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  52. package/lib/cjs/curve/CurveCurve.js.map +1 -1
  53. package/lib/cjs/curve/CurveExtendMode.d.ts +18 -15
  54. package/lib/cjs/curve/CurveExtendMode.d.ts.map +1 -1
  55. package/lib/cjs/curve/CurveExtendMode.js +18 -17
  56. package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
  57. package/lib/cjs/curve/CurveFactory.d.ts +11 -13
  58. package/lib/cjs/curve/CurveFactory.d.ts.map +1 -1
  59. package/lib/cjs/curve/CurveFactory.js +19 -46
  60. package/lib/cjs/curve/CurveFactory.js.map +1 -1
  61. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  62. package/lib/cjs/curve/CurveOps.js.map +1 -1
  63. package/lib/cjs/curve/CurvePrimitive.d.ts +9 -5
  64. package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -1
  65. package/lib/cjs/curve/CurvePrimitive.js +9 -5
  66. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  67. package/lib/cjs/curve/CurveProcessor.d.ts.map +1 -1
  68. package/lib/cjs/curve/CurveProcessor.js +0 -1
  69. package/lib/cjs/curve/CurveProcessor.js.map +1 -1
  70. package/lib/cjs/curve/CurveTypes.js.map +1 -1
  71. package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
  72. package/lib/cjs/curve/GeometryQuery.js.map +1 -1
  73. package/lib/cjs/curve/LineSegment3d.d.ts.map +1 -1
  74. package/lib/cjs/curve/LineSegment3d.js +2 -3
  75. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  76. package/lib/cjs/curve/LineString3d.d.ts.map +1 -1
  77. package/lib/cjs/curve/LineString3d.js.map +1 -1
  78. package/lib/cjs/curve/Loop.js.map +1 -1
  79. package/lib/cjs/curve/OffsetOptions.d.ts.map +1 -1
  80. package/lib/cjs/curve/OffsetOptions.js +4 -4
  81. package/lib/cjs/curve/OffsetOptions.js.map +1 -1
  82. package/lib/cjs/curve/ParityRegion.js.map +1 -1
  83. package/lib/cjs/curve/Path.d.ts +14 -0
  84. package/lib/cjs/curve/Path.d.ts.map +1 -1
  85. package/lib/cjs/curve/Path.js +27 -0
  86. package/lib/cjs/curve/Path.js.map +1 -1
  87. package/lib/cjs/curve/PointString3d.d.ts.map +1 -1
  88. package/lib/cjs/curve/PointString3d.js +0 -1
  89. package/lib/cjs/curve/PointString3d.js.map +1 -1
  90. package/lib/cjs/curve/ProxyCurve.js.map +1 -1
  91. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  92. package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
  93. package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
  94. package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
  95. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  96. package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
  97. package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
  98. package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
  99. package/lib/cjs/curve/RegionOps.js.map +1 -1
  100. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  101. package/lib/cjs/curve/StrokeOptions.d.ts.map +1 -1
  102. package/lib/cjs/curve/StrokeOptions.js +0 -1
  103. package/lib/cjs/curve/StrokeOptions.js.map +1 -1
  104. package/lib/cjs/curve/UnionRegion.js.map +1 -1
  105. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  106. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  107. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  108. package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  109. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  110. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  111. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.d.ts.map +1 -1
  112. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js +5 -6
  113. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  114. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
  115. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js +10 -10
  116. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  117. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.d.ts.map +1 -1
  118. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js +4 -4
  119. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  120. package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
  121. package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  122. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.d.ts +18 -18
  123. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.d.ts.map +1 -1
  124. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js +46 -42
  125. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  126. package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
  127. package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
  128. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  129. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  130. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js +5 -4
  131. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  132. package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
  133. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  134. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  135. package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
  136. package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
  137. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  138. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  139. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
  140. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  141. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  142. package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
  143. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  144. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  145. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
  146. package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
  147. package/lib/cjs/geometry3d/Angle.js.map +1 -1
  148. package/lib/cjs/geometry3d/AngleSweep.d.ts +10 -6
  149. package/lib/cjs/geometry3d/AngleSweep.d.ts.map +1 -1
  150. package/lib/cjs/geometry3d/AngleSweep.js +15 -12
  151. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
  152. package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
  153. package/lib/cjs/geometry3d/BilinearPatch.js +4 -4
  154. package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
  155. package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
  156. package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
  157. package/lib/cjs/geometry3d/FrameBuilder.d.ts.map +1 -1
  158. package/lib/cjs/geometry3d/FrameBuilder.js +0 -1
  159. package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
  160. package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
  161. package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
  162. package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
  163. package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
  164. package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
  165. package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
  166. package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
  167. package/lib/cjs/geometry3d/IndexedXYCollection.d.ts.map +1 -1
  168. package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
  169. package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
  170. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  171. package/lib/cjs/geometry3d/Matrix3d.d.ts +28 -17
  172. package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -1
  173. package/lib/cjs/geometry3d/Matrix3d.js +36 -17
  174. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  175. package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
  176. package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
  177. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  178. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  179. package/lib/cjs/geometry3d/Point2dArrayCarrier.d.ts.map +1 -1
  180. package/lib/cjs/geometry3d/Point2dArrayCarrier.js +2 -3
  181. package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
  182. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  183. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  184. package/lib/cjs/geometry3d/Point3dVector3d.d.ts +6 -5
  185. package/lib/cjs/geometry3d/Point3dVector3d.d.ts.map +1 -1
  186. package/lib/cjs/geometry3d/Point3dVector3d.js +6 -5
  187. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  188. package/lib/cjs/geometry3d/PointHelpers.d.ts.map +1 -1
  189. package/lib/cjs/geometry3d/PointHelpers.js +0 -1
  190. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  191. package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
  192. package/lib/cjs/geometry3d/PolygonOps.d.ts.map +1 -1
  193. package/lib/cjs/geometry3d/PolygonOps.js +2 -4
  194. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  195. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  196. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
  197. package/lib/cjs/geometry3d/Range.js.map +1 -1
  198. package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
  199. package/lib/cjs/geometry3d/Ray3d.js +2 -2
  200. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  201. package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
  202. package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
  203. package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
  204. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  205. package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
  206. package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
  207. package/lib/cjs/geometry3d/YawPitchRollAngles.d.ts.map +1 -1
  208. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  209. package/lib/cjs/geometry4d/Map4d.d.ts +5 -5
  210. package/lib/cjs/geometry4d/Map4d.js +5 -5
  211. package/lib/cjs/geometry4d/Map4d.js.map +1 -1
  212. package/lib/cjs/geometry4d/Matrix4d.d.ts +4 -7
  213. package/lib/cjs/geometry4d/Matrix4d.d.ts.map +1 -1
  214. package/lib/cjs/geometry4d/Matrix4d.js +4 -7
  215. package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
  216. package/lib/cjs/geometry4d/MomentData.js.map +1 -1
  217. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  218. package/lib/cjs/geometry4d/Point4d.d.ts.map +1 -1
  219. package/lib/cjs/geometry4d/Point4d.js +2 -1
  220. package/lib/cjs/geometry4d/Point4d.js.map +1 -1
  221. package/lib/cjs/numerics/BandedSystem.js.map +1 -1
  222. package/lib/cjs/numerics/BezierPolynomials.d.ts.map +1 -1
  223. package/lib/cjs/numerics/BezierPolynomials.js +0 -1
  224. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
  225. package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
  226. package/lib/cjs/numerics/Complex.js.map +1 -1
  227. package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
  228. package/lib/cjs/numerics/Newton.d.ts +3 -0
  229. package/lib/cjs/numerics/Newton.d.ts.map +1 -1
  230. package/lib/cjs/numerics/Newton.js +2 -5
  231. package/lib/cjs/numerics/Newton.js.map +1 -1
  232. package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
  233. package/lib/cjs/numerics/PolarData.js.map +1 -1
  234. package/lib/cjs/numerics/Polynomials.d.ts +46 -201
  235. package/lib/cjs/numerics/Polynomials.d.ts.map +1 -1
  236. package/lib/cjs/numerics/Polynomials.js +132 -445
  237. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  238. package/lib/cjs/numerics/Quadrature.js.map +1 -1
  239. package/lib/cjs/numerics/Range1dArray.js +2 -2
  240. package/lib/cjs/numerics/Range1dArray.js.map +1 -1
  241. package/lib/cjs/numerics/SmallSystem.d.ts +164 -0
  242. package/lib/cjs/numerics/SmallSystem.d.ts.map +1 -0
  243. package/lib/cjs/numerics/SmallSystem.js +321 -0
  244. package/lib/cjs/numerics/SmallSystem.js.map +1 -0
  245. package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
  246. package/lib/cjs/numerics/UnionFind.js.map +1 -1
  247. package/lib/cjs/numerics/UsageSums.js.map +1 -1
  248. package/lib/cjs/polyface/AuxData.d.ts.map +1 -1
  249. package/lib/cjs/polyface/AuxData.js.map +1 -1
  250. package/lib/cjs/polyface/BoxTopology.js.map +1 -1
  251. package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
  252. package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
  253. package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
  254. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  255. package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
  256. package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
  257. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js +0 -1
  258. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  259. package/lib/cjs/polyface/Polyface.d.ts +2 -2
  260. package/lib/cjs/polyface/Polyface.d.ts.map +1 -1
  261. package/lib/cjs/polyface/Polyface.js +0 -1
  262. package/lib/cjs/polyface/Polyface.js.map +1 -1
  263. package/lib/cjs/polyface/PolyfaceBuilder.js +1 -1
  264. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  265. package/lib/cjs/polyface/PolyfaceClip.d.ts +3 -3
  266. package/lib/cjs/polyface/PolyfaceClip.d.ts.map +1 -1
  267. package/lib/cjs/polyface/PolyfaceClip.js +1 -2
  268. package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
  269. package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
  270. package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
  271. package/lib/cjs/polyface/PolyfaceQuery.js +0 -1
  272. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  273. package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
  274. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  275. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  276. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  277. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  278. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  279. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  280. package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
  281. package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
  282. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  283. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  284. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  285. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  286. package/lib/cjs/polyface/multiclip/OffsetMeshContext.d.ts +1 -1
  287. package/lib/cjs/polyface/multiclip/OffsetMeshContext.d.ts.map +1 -1
  288. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js +7 -7
  289. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  290. package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  291. package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
  292. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  293. package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
  294. package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
  295. package/lib/cjs/serialization/BGFBReader.js.map +1 -1
  296. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  297. package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  298. package/lib/cjs/serialization/DeepCompare.d.ts.map +1 -1
  299. package/lib/cjs/serialization/DeepCompare.js +0 -1
  300. package/lib/cjs/serialization/DeepCompare.js.map +1 -1
  301. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  302. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  303. package/lib/cjs/serialization/SerializationHelpers.js.map +1 -1
  304. package/lib/cjs/solid/Box.js.map +1 -1
  305. package/lib/cjs/solid/Cone.js.map +1 -1
  306. package/lib/cjs/solid/LinearSweep.js.map +1 -1
  307. package/lib/cjs/solid/RotationalSweep.js.map +1 -1
  308. package/lib/cjs/solid/RuledSweep.js.map +1 -1
  309. package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
  310. package/lib/cjs/solid/Sphere.js.map +1 -1
  311. package/lib/cjs/solid/SweepContour.js.map +1 -1
  312. package/lib/cjs/solid/TorusPipe.js.map +1 -1
  313. package/lib/cjs/topology/ChainMerge.js.map +1 -1
  314. package/lib/cjs/topology/Graph.d.ts.map +1 -1
  315. package/lib/cjs/topology/Graph.js +2 -2
  316. package/lib/cjs/topology/Graph.js.map +1 -1
  317. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  318. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  319. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  320. package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
  321. package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
  322. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  323. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  324. package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
  325. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
  326. package/lib/cjs/topology/InsertAndRetriangulateContext.js +2 -2
  327. package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
  328. package/lib/cjs/topology/MaskManager.js.map +1 -1
  329. package/lib/cjs/topology/Merging.d.ts +1 -1
  330. package/lib/cjs/topology/Merging.d.ts.map +1 -1
  331. package/lib/cjs/topology/Merging.js +2 -2
  332. package/lib/cjs/topology/Merging.js.map +1 -1
  333. package/lib/cjs/topology/RegularizeFace.js.map +1 -1
  334. package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
  335. package/lib/cjs/topology/SpaceTriangulation.js.map +1 -1
  336. package/lib/cjs/topology/Triangulation.js.map +1 -1
  337. package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
  338. package/lib/esm/Constant.js.map +1 -1
  339. package/lib/esm/Geometry.js +2 -2
  340. package/lib/esm/Geometry.js.map +1 -1
  341. package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
  342. package/lib/esm/bspline/BSpline1dNd.d.ts.map +1 -1
  343. package/lib/esm/bspline/BSpline1dNd.js +0 -1
  344. package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
  345. package/lib/esm/bspline/BSplineCurve.d.ts +5 -3
  346. package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
  347. package/lib/esm/bspline/BSplineCurve.js +5 -4
  348. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  349. package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
  350. package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
  351. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  352. package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
  353. package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
  354. package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
  355. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  356. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  357. package/lib/esm/bspline/KnotVector.js.map +1 -1
  358. package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
  359. package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
  360. package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
  361. package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
  362. package/lib/esm/clipping/ClipPlane.js.map +1 -1
  363. package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
  364. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  365. package/lib/esm/clipping/ClipVector.js +1 -1
  366. package/lib/esm/clipping/ClipVector.js.map +1 -1
  367. package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
  368. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  369. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  370. package/lib/esm/core-geometry.d.ts +1 -1
  371. package/lib/esm/core-geometry.d.ts.map +1 -1
  372. package/lib/esm/core-geometry.js +1 -1
  373. package/lib/esm/core-geometry.js.map +1 -1
  374. package/lib/esm/curve/Arc3d.d.ts +136 -128
  375. package/lib/esm/curve/Arc3d.d.ts.map +1 -1
  376. package/lib/esm/curve/Arc3d.js +177 -152
  377. package/lib/esm/curve/Arc3d.js.map +1 -1
  378. package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
  379. package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
  380. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +7 -5
  381. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  382. package/lib/esm/curve/CurveChainWithDistanceIndex.js +9 -7
  383. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  384. package/lib/esm/curve/CurveCollection.d.ts +21 -2
  385. package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
  386. package/lib/esm/curve/CurveCollection.js +45 -10
  387. package/lib/esm/curve/CurveCollection.js.map +1 -1
  388. package/lib/esm/curve/CurveCurve.js.map +1 -1
  389. package/lib/esm/curve/CurveExtendMode.d.ts +18 -15
  390. package/lib/esm/curve/CurveExtendMode.d.ts.map +1 -1
  391. package/lib/esm/curve/CurveExtendMode.js +18 -17
  392. package/lib/esm/curve/CurveExtendMode.js.map +1 -1
  393. package/lib/esm/curve/CurveFactory.d.ts +11 -13
  394. package/lib/esm/curve/CurveFactory.d.ts.map +1 -1
  395. package/lib/esm/curve/CurveFactory.js +17 -44
  396. package/lib/esm/curve/CurveFactory.js.map +1 -1
  397. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  398. package/lib/esm/curve/CurveOps.js.map +1 -1
  399. package/lib/esm/curve/CurvePrimitive.d.ts +9 -5
  400. package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
  401. package/lib/esm/curve/CurvePrimitive.js +9 -5
  402. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  403. package/lib/esm/curve/CurveProcessor.d.ts.map +1 -1
  404. package/lib/esm/curve/CurveProcessor.js +0 -1
  405. package/lib/esm/curve/CurveProcessor.js.map +1 -1
  406. package/lib/esm/curve/CurveTypes.js.map +1 -1
  407. package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
  408. package/lib/esm/curve/GeometryQuery.js.map +1 -1
  409. package/lib/esm/curve/LineSegment3d.d.ts.map +1 -1
  410. package/lib/esm/curve/LineSegment3d.js +1 -2
  411. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  412. package/lib/esm/curve/LineString3d.d.ts.map +1 -1
  413. package/lib/esm/curve/LineString3d.js.map +1 -1
  414. package/lib/esm/curve/Loop.js.map +1 -1
  415. package/lib/esm/curve/OffsetOptions.d.ts.map +1 -1
  416. package/lib/esm/curve/OffsetOptions.js +4 -4
  417. package/lib/esm/curve/OffsetOptions.js.map +1 -1
  418. package/lib/esm/curve/ParityRegion.js.map +1 -1
  419. package/lib/esm/curve/Path.d.ts +14 -0
  420. package/lib/esm/curve/Path.d.ts.map +1 -1
  421. package/lib/esm/curve/Path.js +27 -0
  422. package/lib/esm/curve/Path.js.map +1 -1
  423. package/lib/esm/curve/PointString3d.d.ts.map +1 -1
  424. package/lib/esm/curve/PointString3d.js +0 -1
  425. package/lib/esm/curve/PointString3d.js.map +1 -1
  426. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  427. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  428. package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
  429. package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
  430. package/lib/esm/curve/Query/InOutTests.js.map +1 -1
  431. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  432. package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
  433. package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
  434. package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
  435. package/lib/esm/curve/RegionOps.js.map +1 -1
  436. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  437. package/lib/esm/curve/StrokeOptions.d.ts.map +1 -1
  438. package/lib/esm/curve/StrokeOptions.js +0 -1
  439. package/lib/esm/curve/StrokeOptions.js.map +1 -1
  440. package/lib/esm/curve/UnionRegion.js.map +1 -1
  441. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  442. package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  443. package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  444. package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  445. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  446. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  447. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.d.ts.map +1 -1
  448. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js +4 -5
  449. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  450. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
  451. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js +5 -5
  452. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  453. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.d.ts.map +1 -1
  454. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js +3 -3
  455. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  456. package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
  457. package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  458. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.d.ts +18 -18
  459. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.d.ts.map +1 -1
  460. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js +46 -42
  461. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  462. package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
  463. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  464. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  465. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  466. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js +5 -4
  467. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  468. package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
  469. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  470. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  471. package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
  472. package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
  473. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  474. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  475. package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
  476. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  477. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  478. package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
  479. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  480. package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  481. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
  482. package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
  483. package/lib/esm/geometry3d/Angle.js.map +1 -1
  484. package/lib/esm/geometry3d/AngleSweep.d.ts +10 -6
  485. package/lib/esm/geometry3d/AngleSweep.d.ts.map +1 -1
  486. package/lib/esm/geometry3d/AngleSweep.js +15 -12
  487. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  488. package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
  489. package/lib/esm/geometry3d/BilinearPatch.js +1 -1
  490. package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
  491. package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
  492. package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
  493. package/lib/esm/geometry3d/FrameBuilder.d.ts.map +1 -1
  494. package/lib/esm/geometry3d/FrameBuilder.js +0 -1
  495. package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
  496. package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
  497. package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
  498. package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
  499. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
  500. package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
  501. package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
  502. package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
  503. package/lib/esm/geometry3d/IndexedXYCollection.d.ts.map +1 -1
  504. package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
  505. package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
  506. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  507. package/lib/esm/geometry3d/Matrix3d.d.ts +28 -17
  508. package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -1
  509. package/lib/esm/geometry3d/Matrix3d.js +36 -17
  510. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  511. package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
  512. package/lib/esm/geometry3d/Plane3d.js.map +1 -1
  513. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  514. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  515. package/lib/esm/geometry3d/Point2dArrayCarrier.d.ts.map +1 -1
  516. package/lib/esm/geometry3d/Point2dArrayCarrier.js +0 -1
  517. package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
  518. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  519. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  520. package/lib/esm/geometry3d/Point3dVector3d.d.ts +6 -5
  521. package/lib/esm/geometry3d/Point3dVector3d.d.ts.map +1 -1
  522. package/lib/esm/geometry3d/Point3dVector3d.js +6 -5
  523. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  524. package/lib/esm/geometry3d/PointHelpers.d.ts.map +1 -1
  525. package/lib/esm/geometry3d/PointHelpers.js +0 -1
  526. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  527. package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
  528. package/lib/esm/geometry3d/PolygonOps.d.ts.map +1 -1
  529. package/lib/esm/geometry3d/PolygonOps.js +2 -4
  530. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  531. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  532. package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
  533. package/lib/esm/geometry3d/Range.js.map +1 -1
  534. package/lib/esm/geometry3d/Ray2d.js.map +1 -1
  535. package/lib/esm/geometry3d/Ray3d.js +1 -1
  536. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  537. package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
  538. package/lib/esm/geometry3d/Segment1d.js.map +1 -1
  539. package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
  540. package/lib/esm/geometry3d/Transform.js.map +1 -1
  541. package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
  542. package/lib/esm/geometry3d/XYZProps.js.map +1 -1
  543. package/lib/esm/geometry3d/YawPitchRollAngles.d.ts.map +1 -1
  544. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  545. package/lib/esm/geometry4d/Map4d.d.ts +5 -5
  546. package/lib/esm/geometry4d/Map4d.js +5 -5
  547. package/lib/esm/geometry4d/Map4d.js.map +1 -1
  548. package/lib/esm/geometry4d/Matrix4d.d.ts +4 -7
  549. package/lib/esm/geometry4d/Matrix4d.d.ts.map +1 -1
  550. package/lib/esm/geometry4d/Matrix4d.js +4 -7
  551. package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
  552. package/lib/esm/geometry4d/MomentData.js.map +1 -1
  553. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  554. package/lib/esm/geometry4d/Point4d.d.ts.map +1 -1
  555. package/lib/esm/geometry4d/Point4d.js +2 -1
  556. package/lib/esm/geometry4d/Point4d.js.map +1 -1
  557. package/lib/esm/numerics/BandedSystem.js.map +1 -1
  558. package/lib/esm/numerics/BezierPolynomials.d.ts.map +1 -1
  559. package/lib/esm/numerics/BezierPolynomials.js +0 -1
  560. package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
  561. package/lib/esm/numerics/ClusterableArray.js.map +1 -1
  562. package/lib/esm/numerics/Complex.js.map +1 -1
  563. package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
  564. package/lib/esm/numerics/Newton.d.ts +3 -0
  565. package/lib/esm/numerics/Newton.d.ts.map +1 -1
  566. package/lib/esm/numerics/Newton.js +1 -4
  567. package/lib/esm/numerics/Newton.js.map +1 -1
  568. package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
  569. package/lib/esm/numerics/PolarData.js.map +1 -1
  570. package/lib/esm/numerics/Polynomials.d.ts +46 -201
  571. package/lib/esm/numerics/Polynomials.d.ts.map +1 -1
  572. package/lib/esm/numerics/Polynomials.js +132 -444
  573. package/lib/esm/numerics/Polynomials.js.map +1 -1
  574. package/lib/esm/numerics/Quadrature.js.map +1 -1
  575. package/lib/esm/numerics/Range1dArray.js.map +1 -1
  576. package/lib/esm/numerics/SmallSystem.d.ts +164 -0
  577. package/lib/esm/numerics/SmallSystem.d.ts.map +1 -0
  578. package/lib/esm/numerics/SmallSystem.js +317 -0
  579. package/lib/esm/numerics/SmallSystem.js.map +1 -0
  580. package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
  581. package/lib/esm/numerics/UnionFind.js.map +1 -1
  582. package/lib/esm/numerics/UsageSums.js.map +1 -1
  583. package/lib/esm/polyface/AuxData.d.ts.map +1 -1
  584. package/lib/esm/polyface/AuxData.js.map +1 -1
  585. package/lib/esm/polyface/BoxTopology.js.map +1 -1
  586. package/lib/esm/polyface/FacetFaceData.js.map +1 -1
  587. package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
  588. package/lib/esm/polyface/FacetOrientation.js.map +1 -1
  589. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  590. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
  591. package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
  592. package/lib/esm/polyface/IndexedPolyfaceVisitor.js +0 -1
  593. package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  594. package/lib/esm/polyface/Polyface.d.ts +2 -2
  595. package/lib/esm/polyface/Polyface.d.ts.map +1 -1
  596. package/lib/esm/polyface/Polyface.js +0 -1
  597. package/lib/esm/polyface/Polyface.js.map +1 -1
  598. package/lib/esm/polyface/PolyfaceBuilder.js +1 -1
  599. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  600. package/lib/esm/polyface/PolyfaceClip.d.ts +3 -3
  601. package/lib/esm/polyface/PolyfaceClip.d.ts.map +1 -1
  602. package/lib/esm/polyface/PolyfaceClip.js +1 -2
  603. package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
  604. package/lib/esm/polyface/PolyfaceData.js.map +1 -1
  605. package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
  606. package/lib/esm/polyface/PolyfaceQuery.js +0 -1
  607. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  608. package/lib/esm/polyface/RangeLengthData.js.map +1 -1
  609. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  610. package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  611. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  612. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  613. package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  614. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  615. package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
  616. package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
  617. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  618. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  619. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  620. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  621. package/lib/esm/polyface/multiclip/OffsetMeshContext.d.ts +1 -1
  622. package/lib/esm/polyface/multiclip/OffsetMeshContext.d.ts.map +1 -1
  623. package/lib/esm/polyface/multiclip/OffsetMeshContext.js +4 -4
  624. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  625. package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  626. package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
  627. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  628. package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
  629. package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
  630. package/lib/esm/serialization/BGFBReader.js.map +1 -1
  631. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  632. package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  633. package/lib/esm/serialization/DeepCompare.d.ts.map +1 -1
  634. package/lib/esm/serialization/DeepCompare.js +0 -1
  635. package/lib/esm/serialization/DeepCompare.js.map +1 -1
  636. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  637. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  638. package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
  639. package/lib/esm/solid/Box.js.map +1 -1
  640. package/lib/esm/solid/Cone.js.map +1 -1
  641. package/lib/esm/solid/LinearSweep.js.map +1 -1
  642. package/lib/esm/solid/RotationalSweep.js.map +1 -1
  643. package/lib/esm/solid/RuledSweep.js.map +1 -1
  644. package/lib/esm/solid/SolidPrimitive.js.map +1 -1
  645. package/lib/esm/solid/Sphere.js.map +1 -1
  646. package/lib/esm/solid/SweepContour.js.map +1 -1
  647. package/lib/esm/solid/TorusPipe.js.map +1 -1
  648. package/lib/esm/topology/ChainMerge.js.map +1 -1
  649. package/lib/esm/topology/Graph.d.ts.map +1 -1
  650. package/lib/esm/topology/Graph.js +1 -1
  651. package/lib/esm/topology/Graph.js.map +1 -1
  652. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  653. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  654. package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  655. package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
  656. package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
  657. package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  658. package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  659. package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
  660. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
  661. package/lib/esm/topology/InsertAndRetriangulateContext.js +1 -1
  662. package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
  663. package/lib/esm/topology/MaskManager.js.map +1 -1
  664. package/lib/esm/topology/Merging.d.ts +1 -1
  665. package/lib/esm/topology/Merging.d.ts.map +1 -1
  666. package/lib/esm/topology/Merging.js +1 -1
  667. package/lib/esm/topology/Merging.js.map +1 -1
  668. package/lib/esm/topology/RegularizeFace.js.map +1 -1
  669. package/lib/esm/topology/SignedDataSummary.js.map +1 -1
  670. package/lib/esm/topology/SpaceTriangulation.js.map +1 -1
  671. package/lib/esm/topology/Triangulation.js.map +1 -1
  672. package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
  673. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"Quadrature.js","sourceRoot":"","sources":["../../../src/numerics/Quadrature.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Geometry } from \"../Geometry\";\r\n\r\n/** @packageDocumentation\r\n * @module Numerics\r\n */\r\n\r\n/** Support class for quadrature -- approximate integrals by summing weighted function values.\r\n * These are filled with x and weight for quadrature between xA and xB\r\n *\r\n * Since quadrature is done in side tight loops, these methods are structured for minimum object\r\n * allocation.\r\n * For methods names setupGauss<N> (where N is a smallish integer), the CALLER creates arrays xMapped and wMapped\r\n * The method installs particular x and weight values.\r\n * @internal\r\n */\r\nexport class Quadrature {\r\n /** x value for 1 point gauss rule in 0..1 interval */\r\n public static readonly gaussX1Interval01 = new Float64Array([0.5]);\r\n /** weight for 1 point gauss rule in 0..1 interval */\r\n public static readonly gaussW1Interval01 = new Float64Array([1.0]);\r\n\r\n /** x value for 2 point gauss rule in 0..1 interval */\r\n public static readonly gaussX2Interval01 = new Float64Array([0.21132486540518708, 0.7886751345948129]);\r\n /** weight for 2 point gauss rule in 0..1 interval */\r\n public static readonly gaussW2Interval01 = new Float64Array([0.5, 0.5]);\r\n\r\n /** x value for 3 point gauss rule in 0..1 interval */\r\n public static readonly gaussX3Interval01 = new Float64Array([0.1127016653792583, 0.5, 0.8872983346207417]);\r\n /** weight for 3 point gauss rule in 0..1 interval */\r\n public static readonly gaussW3Interval01 = new Float64Array([0.2777777777777778, 0.4444444444444444, 0.2777777777777778]);\r\n\r\n /** x value for 4 point gauss rule in 0..1 interval */\r\n public static readonly gaussX4Interval01 = new Float64Array([0.06943184420297371, 0.33000947820757187, 0.6699905217924281, 0.9305681557970262]);\r\n /** weight for 4 point gauss rule in 0..1 interval */\r\n public static readonly gaussW4Interval01 = new Float64Array([0.17392742256872692, 0.3260725774312731, 0.3260725774312731, 0.17392742256872692]);\r\n\r\n /** x value for 5 point gauss rule in 0..1 interval */\r\n public static readonly gaussX5Interval01 = new Float64Array([0.04691007703066802, 0.23076534494715845, 0.5, 0.7692346550528415, 0.9530899229693319]);\r\n /** weight for 5 point gauss rule in 0..1 interval */\r\n public static readonly gaussW5Interval01 = new Float64Array([0.11846344252809454, 0.23931433524968324, 0.28444444444444444, 0.23931433524968324, 0.11846344252809454]);\r\n\r\n /**\r\n * Given points and weights in a reference interval (usually 0 to 1):\r\n *\r\n * * map each xRef[i] to xA + h * xRef[i];\r\n * * scale each weight wRef[i] to h * wRef[i]\r\n * * all arrays are assumed to have xRef.length entries.\r\n * * the return value is xRef.length\r\n * @param xA beginning of target interval\r\n * @param h length of target interval\r\n * @param xRef x coordinates in reference interval\r\n * @param wRef weights for integration in the reference interval\r\n * @param xMapped x coordinates to evaluate integrands\r\n * @param wMapped weights for evaluated integrands\r\n */\r\n public static mapWeights(xA: number, h: number, xRef: Float64Array, wRef: Float64Array, xMapped: Float64Array, wMapped: Float64Array): number {\r\n const n = xRef.length;\r\n for (let i = 0; i < n; i++) {\r\n xMapped[i] = xA + h * xRef[i];\r\n wMapped[i] = h * wRef[i];\r\n }\r\n return n;\r\n }\r\n\r\n /** Install 1 (ONE) x and weight values for quadrature from xA to xB. */\r\n public static setupGauss1(xA: number, xB: number, xMapped: Float64Array, wMapped: Float64Array): number {\r\n return Quadrature.mapWeights(xA, xB - xA, Quadrature.gaussX1Interval01, Quadrature.gaussW1Interval01, xMapped, wMapped);\r\n }\r\n\r\n /** Install 2 (TWO) x and weight values for quadrature from xA to xB. */\r\n public static setupGauss2(xA: number, xB: number, xMapped: Float64Array, wMapped: Float64Array): number {\r\n return Quadrature.mapWeights(xA, xB - xA, Quadrature.gaussX2Interval01, Quadrature.gaussW2Interval01, xMapped, wMapped);\r\n /* // exact formulas for interval xA..xB:\r\n const x0 = 0.5 * (xA + xB);\r\n const h = 0.5 * (xB - xA);\r\n const dx = h / Math.sqrt(3);\r\n xMapped[0] = x0 - dx; xMapped[1] = x0 + dx;\r\n wMapped[0] = wMapped[1] = h;\r\n */\r\n }\r\n /** Install 3 (THREE) x and weight values for quadrature from xA to xB. */\r\n public static setupGauss3(xA: number, xB: number, xMapped: Float64Array, wMapped: Float64Array): number {\r\n return Quadrature.mapWeights(xA, xB - xA, Quadrature.gaussX3Interval01, Quadrature.gaussW3Interval01, xMapped, wMapped);\r\n /* // exact formulas for interval xA..xB:\r\n const x0 = 0.5 * (xA + xB);\r\n const h = 0.5 * (xB - xA);\r\n const a = Math.sqrt(0.6);\r\n const b = h * 5.0 / 9.0;\r\n const dx = a * h;\r\n xMapped[0] = x0 - dx; xMapped[1] = x0; xMapped[2] = x0 + dx;\r\n wMapped[0] = wMapped[2] = b;\r\n wMapped[1] = h * 8.0 / 9.0;\r\n return 3;\r\n */\r\n }\r\n\r\n /** Install 5 (FIVE) x and weight values for quadrature from xA to xB. */\r\n public static setupGauss5(xA: number, xB: number, xMapped: Float64Array, wMapped: Float64Array): number {\r\n return Quadrature.mapWeights(xA, xB - xA, Quadrature.gaussX5Interval01, Quadrature.gaussW5Interval01, xMapped, wMapped);\r\n /* // exact formulas for interval xA..xB:\r\n const x0 = 0.5 * (xA + xB);\r\n const h = 0.5 * (xB - xA);\r\n const q = 2.0 * Math.sqrt(10.0 / 7.0);\r\n const b = 13.0 * Math.sqrt(70.0);\r\n const a1 = h * Math.sqrt(5.0 - q) / 3.0;\r\n const a2 = h * Math.sqrt(5.0 + q) / 3.0;\r\n const w1 = h * (322.0 + b) / 900.0;\r\n const w2 = h * (322.0 - b) / 900;\r\n const w0 = h * 128.0 / 225.0;\r\n xMapped[0] = x0 - a2; xMapped[1] = x0 - a1; xMapped[2] = x0; xMapped[3] = x0 + a1; xMapped[4] = x0 + a2;\r\n wMapped[0] = w2; wMapped[1] = w1; wMapped[2] = w0; wMapped[3] = w1; wMapped[4] = w2;\r\n return 5;\r\n */\r\n }\r\n\r\n /** Install 4 (FOUR) x and weight values for quadrature from xA to xB. */\r\n public static setupGauss4(xA: number, xB: number, xMapped: Float64Array, wMapped: Float64Array): number {\r\n return Quadrature.mapWeights(xA, xB - xA, Quadrature.gaussX4Interval01, Quadrature.gaussW4Interval01, xMapped, wMapped);\r\n /* // exact formulas for interval xA..xB:\r\nconst x0 = 0.5 * (xA + xB);\r\nconst h = 0.5 * (xB - xA);\r\nconst q = 2.0 * Math.sqrt(6.0 / 5.0);\r\nconst r = Math.sqrt(30.0);\r\nconst a1 = h * Math.sqrt((3 - q) / 7.0);\r\nconst w1 = h * (18.0 + r) / 36.0;\r\nconst a2 = h * Math.sqrt((3 + q) / 7.0);\r\nconst w2 = h * (18.0 - r) / 36.0;\r\nxMapped[0] = x0 - a2; xMapped[1] = x0 - a1; xMapped[2] = x0 + a1; xMapped[3] = x0 + a2;\r\nwMapped[0] = w2; wMapped[1] = w1; wMapped[2] = w1; wMapped[3] = w2;\r\nreturn 4;\r\n*/\r\n }\r\n /** Sum function values with given weights and x values. */\r\n public static sum1(\r\n xx: Float64Array,\r\n ww: Float64Array,\r\n n: number,\r\n f: (x: number) => number): number {\r\n let sum = 0;\r\n for (let i = 0; i < n; i++)sum += ww[i] * f(xx[i]);\r\n return sum;\r\n }\r\n /**\r\n * Do a Guass quadrature integral for a (number)=>number function over an interval, with caller specified sub-interval count and\r\n * @param x0 start of overall interval\r\n * @param x1 end of overall interval\r\n * @param f function to evaluate\r\n * @param numInterval number of internal intervals\r\n * @param numGauss number of gauss points. must be supported by GaussMapper, i.e. 1,2,3,4,5\r\n */\r\n public static doGaussIntegral(x0: number, x1: number, f: (x: number) => number, numInterval: number, numGauss: number = 5) {\r\n const mapper = new GaussMapper(numGauss);\r\n if (numInterval < 1)\r\n numInterval = 1;\r\n const df = 1.0 / numInterval;\r\n let sum = 0;\r\n for (let i = 1; i <= numInterval; i++) {\r\n const xA = Geometry.interpolate(x0, (i - 1) * df, x1);\r\n const xB = i === numInterval ? x1 : Geometry.interpolate(x0, (i) * df, x1);\r\n const n = mapper.mapXAndW(xA, xB);\r\n for (let k = 0; k < n; k++) {\r\n sum += mapper.gaussW[k] * f(mapper.gaussX[k]);\r\n }\r\n }\r\n return sum;\r\n }\r\n}\r\n\r\n/**\r\n * This class carries public members as needed for users to have gauss points that are used\r\n * in the callers loops.\r\n * @internal\r\n */\r\nexport class GaussMapper {\r\n /** x values for integration */\r\n public gaussX: Float64Array;\r\n /** weights for integration */\r\n public gaussW: Float64Array;\r\n /** function to be called (at each interval) to map integration values */\r\n public mapXAndWFunction: (xA: number, xB: number, xx: Float64Array, ww: Float64Array) => number;\r\n /** Execute the mapXAndWFunction to set up arrays for integration from xA to xB */\r\n public mapXAndW(xA: number, xB: number): number {\r\n return this.mapXAndWFunction(xA, xB, this.gaussX, this.gaussW);\r\n }\r\n /** setup gauss arrays.\r\n * * Number of gauss points must be 1 to 5 (inclusive)\r\n * @param numGauss requested number of gauss points.\r\n */\r\n public constructor(numGaussPoints: number) {\r\n const maxGauss = 7; // (As of Nov 2 2018, 7 is a fluffy over-allocation-- the quadrature class only handles up to 5.)\r\n this.gaussX = new Float64Array(maxGauss);\r\n this.gaussW = new Float64Array(maxGauss);\r\n // This sets the number of gauss points. This integrates exactly for polynomials of (degree 2*numGauss - 1).\r\n if (numGaussPoints > 5 || numGaussPoints < 1)\r\n numGaussPoints = 5;\r\n switch (numGaussPoints) {\r\n case 1: this.mapXAndWFunction = (xA, xB, xMapped, wMapped) => Quadrature.setupGauss1(xA, xB, xMapped, wMapped); break;\r\n case 2: this.mapXAndWFunction = (xA, xB, xMapped, wMapped) => Quadrature.setupGauss2(xA, xB, xMapped, wMapped); break;\r\n case 3: this.mapXAndWFunction = (xA, xB, xMapped, wMapped) => Quadrature.setupGauss3(xA, xB, xMapped, wMapped); break;\r\n case 4: this.mapXAndWFunction = (xA, xB, xMapped, wMapped) => Quadrature.setupGauss4(xA, xB, xMapped, wMapped); break;\r\n default: this.mapXAndWFunction = (xA, xB, xMapped, wMapped) => Quadrature.setupGauss5(xA, xB, xMapped, wMapped); break;\r\n }\r\n\r\n }\r\n}\r\n// someday .... http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/overlapped-newton-cotes-quadratures/\r\n"]}
1
+ {"version":3,"file":"Quadrature.js","sourceRoot":"","sources":["../../../src/numerics/Quadrature.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\nimport { Geometry } from \"../Geometry\";\n\n/** @packageDocumentation\n * @module Numerics\n */\n\n/** Support class for quadrature -- approximate integrals by summing weighted function values.\n * These are filled with x and weight for quadrature between xA and xB\n *\n * Since quadrature is done in side tight loops, these methods are structured for minimum object\n * allocation.\n * For methods names setupGauss<N> (where N is a smallish integer), the CALLER creates arrays xMapped and wMapped\n * The method installs particular x and weight values.\n * @internal\n */\nexport class Quadrature {\n /** x value for 1 point gauss rule in 0..1 interval */\n public static readonly gaussX1Interval01 = new Float64Array([0.5]);\n /** weight for 1 point gauss rule in 0..1 interval */\n public static readonly gaussW1Interval01 = new Float64Array([1.0]);\n\n /** x value for 2 point gauss rule in 0..1 interval */\n public static readonly gaussX2Interval01 = new Float64Array([0.21132486540518708, 0.7886751345948129]);\n /** weight for 2 point gauss rule in 0..1 interval */\n public static readonly gaussW2Interval01 = new Float64Array([0.5, 0.5]);\n\n /** x value for 3 point gauss rule in 0..1 interval */\n public static readonly gaussX3Interval01 = new Float64Array([0.1127016653792583, 0.5, 0.8872983346207417]);\n /** weight for 3 point gauss rule in 0..1 interval */\n public static readonly gaussW3Interval01 = new Float64Array([0.2777777777777778, 0.4444444444444444, 0.2777777777777778]);\n\n /** x value for 4 point gauss rule in 0..1 interval */\n public static readonly gaussX4Interval01 = new Float64Array([0.06943184420297371, 0.33000947820757187, 0.6699905217924281, 0.9305681557970262]);\n /** weight for 4 point gauss rule in 0..1 interval */\n public static readonly gaussW4Interval01 = new Float64Array([0.17392742256872692, 0.3260725774312731, 0.3260725774312731, 0.17392742256872692]);\n\n /** x value for 5 point gauss rule in 0..1 interval */\n public static readonly gaussX5Interval01 = new Float64Array([0.04691007703066802, 0.23076534494715845, 0.5, 0.7692346550528415, 0.9530899229693319]);\n /** weight for 5 point gauss rule in 0..1 interval */\n public static readonly gaussW5Interval01 = new Float64Array([0.11846344252809454, 0.23931433524968324, 0.28444444444444444, 0.23931433524968324, 0.11846344252809454]);\n\n /**\n * Given points and weights in a reference interval (usually 0 to 1):\n *\n * * map each xRef[i] to xA + h * xRef[i];\n * * scale each weight wRef[i] to h * wRef[i]\n * * all arrays are assumed to have xRef.length entries.\n * * the return value is xRef.length\n * @param xA beginning of target interval\n * @param h length of target interval\n * @param xRef x coordinates in reference interval\n * @param wRef weights for integration in the reference interval\n * @param xMapped x coordinates to evaluate integrands\n * @param wMapped weights for evaluated integrands\n */\n public static mapWeights(xA: number, h: number, xRef: Float64Array, wRef: Float64Array, xMapped: Float64Array, wMapped: Float64Array): number {\n const n = xRef.length;\n for (let i = 0; i < n; i++) {\n xMapped[i] = xA + h * xRef[i];\n wMapped[i] = h * wRef[i];\n }\n return n;\n }\n\n /** Install 1 (ONE) x and weight values for quadrature from xA to xB. */\n public static setupGauss1(xA: number, xB: number, xMapped: Float64Array, wMapped: Float64Array): number {\n return Quadrature.mapWeights(xA, xB - xA, Quadrature.gaussX1Interval01, Quadrature.gaussW1Interval01, xMapped, wMapped);\n }\n\n /** Install 2 (TWO) x and weight values for quadrature from xA to xB. */\n public static setupGauss2(xA: number, xB: number, xMapped: Float64Array, wMapped: Float64Array): number {\n return Quadrature.mapWeights(xA, xB - xA, Quadrature.gaussX2Interval01, Quadrature.gaussW2Interval01, xMapped, wMapped);\n /* // exact formulas for interval xA..xB:\n const x0 = 0.5 * (xA + xB);\n const h = 0.5 * (xB - xA);\n const dx = h / Math.sqrt(3);\n xMapped[0] = x0 - dx; xMapped[1] = x0 + dx;\n wMapped[0] = wMapped[1] = h;\n */\n }\n /** Install 3 (THREE) x and weight values for quadrature from xA to xB. */\n public static setupGauss3(xA: number, xB: number, xMapped: Float64Array, wMapped: Float64Array): number {\n return Quadrature.mapWeights(xA, xB - xA, Quadrature.gaussX3Interval01, Quadrature.gaussW3Interval01, xMapped, wMapped);\n /* // exact formulas for interval xA..xB:\n const x0 = 0.5 * (xA + xB);\n const h = 0.5 * (xB - xA);\n const a = Math.sqrt(0.6);\n const b = h * 5.0 / 9.0;\n const dx = a * h;\n xMapped[0] = x0 - dx; xMapped[1] = x0; xMapped[2] = x0 + dx;\n wMapped[0] = wMapped[2] = b;\n wMapped[1] = h * 8.0 / 9.0;\n return 3;\n */\n }\n\n /** Install 5 (FIVE) x and weight values for quadrature from xA to xB. */\n public static setupGauss5(xA: number, xB: number, xMapped: Float64Array, wMapped: Float64Array): number {\n return Quadrature.mapWeights(xA, xB - xA, Quadrature.gaussX5Interval01, Quadrature.gaussW5Interval01, xMapped, wMapped);\n /* // exact formulas for interval xA..xB:\n const x0 = 0.5 * (xA + xB);\n const h = 0.5 * (xB - xA);\n const q = 2.0 * Math.sqrt(10.0 / 7.0);\n const b = 13.0 * Math.sqrt(70.0);\n const a1 = h * Math.sqrt(5.0 - q) / 3.0;\n const a2 = h * Math.sqrt(5.0 + q) / 3.0;\n const w1 = h * (322.0 + b) / 900.0;\n const w2 = h * (322.0 - b) / 900;\n const w0 = h * 128.0 / 225.0;\n xMapped[0] = x0 - a2; xMapped[1] = x0 - a1; xMapped[2] = x0; xMapped[3] = x0 + a1; xMapped[4] = x0 + a2;\n wMapped[0] = w2; wMapped[1] = w1; wMapped[2] = w0; wMapped[3] = w1; wMapped[4] = w2;\n return 5;\n */\n }\n\n /** Install 4 (FOUR) x and weight values for quadrature from xA to xB. */\n public static setupGauss4(xA: number, xB: number, xMapped: Float64Array, wMapped: Float64Array): number {\n return Quadrature.mapWeights(xA, xB - xA, Quadrature.gaussX4Interval01, Quadrature.gaussW4Interval01, xMapped, wMapped);\n /* // exact formulas for interval xA..xB:\nconst x0 = 0.5 * (xA + xB);\nconst h = 0.5 * (xB - xA);\nconst q = 2.0 * Math.sqrt(6.0 / 5.0);\nconst r = Math.sqrt(30.0);\nconst a1 = h * Math.sqrt((3 - q) / 7.0);\nconst w1 = h * (18.0 + r) / 36.0;\nconst a2 = h * Math.sqrt((3 + q) / 7.0);\nconst w2 = h * (18.0 - r) / 36.0;\nxMapped[0] = x0 - a2; xMapped[1] = x0 - a1; xMapped[2] = x0 + a1; xMapped[3] = x0 + a2;\nwMapped[0] = w2; wMapped[1] = w1; wMapped[2] = w1; wMapped[3] = w2;\nreturn 4;\n*/\n }\n /** Sum function values with given weights and x values. */\n public static sum1(\n xx: Float64Array,\n ww: Float64Array,\n n: number,\n f: (x: number) => number): number {\n let sum = 0;\n for (let i = 0; i < n; i++)sum += ww[i] * f(xx[i]);\n return sum;\n }\n /**\n * Do a Guass quadrature integral for a (number)=>number function over an interval, with caller specified sub-interval count and\n * @param x0 start of overall interval\n * @param x1 end of overall interval\n * @param f function to evaluate\n * @param numInterval number of internal intervals\n * @param numGauss number of gauss points. must be supported by GaussMapper, i.e. 1,2,3,4,5\n */\n public static doGaussIntegral(x0: number, x1: number, f: (x: number) => number, numInterval: number, numGauss: number = 5) {\n const mapper = new GaussMapper(numGauss);\n if (numInterval < 1)\n numInterval = 1;\n const df = 1.0 / numInterval;\n let sum = 0;\n for (let i = 1; i <= numInterval; i++) {\n const xA = Geometry.interpolate(x0, (i - 1) * df, x1);\n const xB = i === numInterval ? x1 : Geometry.interpolate(x0, (i) * df, x1);\n const n = mapper.mapXAndW(xA, xB);\n for (let k = 0; k < n; k++) {\n sum += mapper.gaussW[k] * f(mapper.gaussX[k]);\n }\n }\n return sum;\n }\n}\n\n/**\n * This class carries public members as needed for users to have gauss points that are used\n * in the callers loops.\n * @internal\n */\nexport class GaussMapper {\n /** x values for integration */\n public gaussX: Float64Array;\n /** weights for integration */\n public gaussW: Float64Array;\n /** function to be called (at each interval) to map integration values */\n public mapXAndWFunction: (xA: number, xB: number, xx: Float64Array, ww: Float64Array) => number;\n /** Execute the mapXAndWFunction to set up arrays for integration from xA to xB */\n public mapXAndW(xA: number, xB: number): number {\n return this.mapXAndWFunction(xA, xB, this.gaussX, this.gaussW);\n }\n /** setup gauss arrays.\n * * Number of gauss points must be 1 to 5 (inclusive)\n * @param numGauss requested number of gauss points.\n */\n public constructor(numGaussPoints: number) {\n const maxGauss = 7; // (As of Nov 2 2018, 7 is a fluffy over-allocation-- the quadrature class only handles up to 5.)\n this.gaussX = new Float64Array(maxGauss);\n this.gaussW = new Float64Array(maxGauss);\n // This sets the number of gauss points. This integrates exactly for polynomials of (degree 2*numGauss - 1).\n if (numGaussPoints > 5 || numGaussPoints < 1)\n numGaussPoints = 5;\n switch (numGaussPoints) {\n case 1: this.mapXAndWFunction = (xA, xB, xMapped, wMapped) => Quadrature.setupGauss1(xA, xB, xMapped, wMapped); break;\n case 2: this.mapXAndWFunction = (xA, xB, xMapped, wMapped) => Quadrature.setupGauss2(xA, xB, xMapped, wMapped); break;\n case 3: this.mapXAndWFunction = (xA, xB, xMapped, wMapped) => Quadrature.setupGauss3(xA, xB, xMapped, wMapped); break;\n case 4: this.mapXAndWFunction = (xA, xB, xMapped, wMapped) => Quadrature.setupGauss4(xA, xB, xMapped, wMapped); break;\n default: this.mapXAndWFunction = (xA, xB, xMapped, wMapped) => Quadrature.setupGauss5(xA, xB, xMapped, wMapped); break;\n }\n\n }\n}\n// someday .... http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/overlapped-newton-cotes-quadratures/\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Range1dArray.js","sourceRoot":"","sources":["../../../src/numerics/Range1dArray.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Numerics\r\n */\r\n\r\nimport { Geometry } from \"../Geometry\";\r\nimport { GrowableFloat64Array } from \"../geometry3d/GrowableFloat64Array\";\r\nimport { Range1d } from \"../geometry3d/Range\";\r\n\r\n/**\r\n * A Range1d array is a set of intervals, such as occur when a line is clipped to a (nonconvex) polygon\r\n * @internal\r\n */\r\nexport class Range1dArray {\r\n /** Internal step: Caller supplies rangeA = interval from left operand of set difference {A - B}\r\n * ib = lowest possible index of overlapping interval of {B}\r\n * Output live parts of rangeA, advancing B over intervals that do not extend beyond {rangeA}\r\n * iB is advanced to the first interval whose high is to the right of {rangeA.high}\r\n */\r\n private static advanceIntervalDifference(rangeA: Range1d, dataB: Range1d[], iB: number, retVal: Range1d[]) {\r\n const nB = dataB.length;\r\n let low = rangeA.low;\r\n let high = rangeA.high;\r\n while (iB < nB) {\r\n const rangeB = dataB[iB];\r\n if (rangeB.high < low) {\r\n iB++;\r\n } else if (rangeB.high <= high) {\r\n if (rangeB.low > low)\r\n retVal.push(Range1d.createXX(low, rangeB.low));\r\n low = rangeB.high;\r\n iB++;\r\n } else {\r\n // B ends beyond rangeA...\r\n if (rangeB.low < high)\r\n high = rangeB.low;\r\n break;\r\n }\r\n }\r\n\r\n if (low < high)\r\n retVal.push(Range1d.createXX(low, high));\r\n\r\n return retVal;\r\n }\r\n\r\n /** Intersect intervals in two pre-sorted sets. Output may NOT be the same as either input. */\r\n public static differenceSorted(dataA: Range1d[], dataB: Range1d[]): Range1d[] {\r\n const nA = dataA.length;\r\n const iB = 0;\r\n const retVal: Range1d[] = [];\r\n for (let iA = 0; iA < nA; iA++) {\r\n Range1dArray.advanceIntervalDifference(dataA[iA], dataB, iB, retVal);\r\n }\r\n\r\n return retVal;\r\n }\r\n\r\n /** Internal step: Caller ensures rangeA is the \"lower\" interval.\r\n * Look rangeB to decide (a) what output interval to create and (b) which read index to advance.\r\n * Returns true or false to indicate whether the value associated with rangeA or rangeB should be incremented after this function returns\r\n */\r\n private static advanceIntervalIntersection(rangeA: Range1d, rangeB: Range1d, retVal: Range1d[]): boolean {\r\n if (rangeB.low > rangeA.high) {\r\n return true;\r\n } else if (rangeB.high >= rangeA.high) {\r\n retVal.push(Range1d.createXX(rangeB.low, rangeA.high));\r\n return true;\r\n } else {\r\n retVal.push(Range1d.createXX(rangeB.low, rangeB.high));\r\n return false;\r\n }\r\n }\r\n /** Boolean intersection among the (presorted) input ranges */\r\n public static intersectSorted(dataA: Range1d[], dataB: Range1d[]): Range1d[] {\r\n let iA = 0;\r\n let iB = 0;\r\n const nA = dataA.length;\r\n const nB = dataB.length;\r\n const retVal: Range1d[] = [];\r\n while (iA < nA && iB < nB) {\r\n const rangeA = dataA[iA];\r\n const rangeB = dataB[iB];\r\n if (rangeA.low <= rangeB.low) {\r\n if (Range1dArray.advanceIntervalIntersection(rangeA, rangeB, retVal))\r\n iA++;\r\n else\r\n iB++;\r\n } else {\r\n if (Range1dArray.advanceIntervalIntersection(rangeB, rangeA, retVal))\r\n iB++;\r\n else\r\n iA++;\r\n }\r\n }\r\n\r\n return retVal;\r\n }\r\n\r\n /** Internal step: Read an interval from the array.\r\n * If it overlaps the work interval, advance the work interval, and return true to notify caller to increment read index.\r\n */\r\n private static advanceIntervalUnion(workRange: Range1d, source: Range1d[], readIndex: number): boolean {\r\n if (readIndex >= source.length)\r\n return false;\r\n const candidate = source[readIndex];\r\n if (candidate.low > workRange.high)\r\n return false;\r\n if (candidate.high > workRange.high)\r\n workRange.high = candidate.high;\r\n return true;\r\n }\r\n\r\n /** Boolean union among the (presorted) input ranges */\r\n public static unionSorted(dataA: Range1d[], dataB: Range1d[]): Range1d[] {\r\n const nA = dataA.length;\r\n const nB = dataB.length;\r\n let iA = 0;\r\n let iB = 0;\r\n const retVal: Range1d[] = [];\r\n while (iA < nA && iB < nB) {\r\n const rangeA = dataA[iA];\r\n const rangeB = dataB[iB];\r\n let workRange: Range1d;\r\n // Pull from the lower of rangeA and rangeB. This always advances exactly one of the indices -- progress towards getting out.\r\n if (rangeA.low <= rangeB.low) {\r\n workRange = rangeA.clone();\r\n iA++;\r\n } else {\r\n workRange = rangeB.clone();\r\n iB++;\r\n }\r\n\r\n let toLoop = true;\r\n do {\r\n const resultA = Range1dArray.advanceIntervalUnion(workRange, dataA, iA);\r\n const resultB = Range1dArray.advanceIntervalUnion(workRange, dataB, iB);\r\n if (resultA)\r\n iA++;\r\n if (resultB)\r\n iB++;\r\n if (!(resultA || resultB))\r\n toLoop = false;\r\n } while (toLoop);\r\n\r\n retVal.push(workRange);\r\n }\r\n\r\n while (iA < nA)\r\n retVal.push(dataA[iA++]);\r\n while (iB < nB)\r\n retVal.push(dataB[iB++]);\r\n\r\n return retVal;\r\n }\r\n\r\n /** Boolean parity among the (presorted) input ranges */\r\n public static paritySorted(dataA: Range1d[], dataB: Range1d[]): Range1d[] {\r\n // Combine the two arrays, and then perform a simplification using simplifySortParity function\r\n const retVal: Range1d[] = [];\r\n for (const range of dataA)\r\n retVal.push(range.clone());\r\n for (const range of dataB)\r\n retVal.push(range.clone());\r\n\r\n // Sort the array\r\n retVal.sort(compareRange1dLexicalLowHigh);\r\n\r\n Range1dArray.simplifySortParity(retVal, true);\r\n return retVal;\r\n }\r\n\r\n /** Uses the Range1d specific compare function `compareRange1dLexicalLowHigh` for sorting the array of ranges */\r\n public static sort(data: Range1d[]) {\r\n data.sort(compareRange1dLexicalLowHigh);\r\n }\r\n\r\n /** Cleans up the array, compressing any overlapping ranges. If removeZeroLengthRanges is set to true, will also remove any Ranges in the form (x, x) */\r\n public static simplifySortUnion(data: Range1d[], removeZeroLengthRanges: boolean = false) {\r\n if (data.length < 2)\r\n return;\r\n\r\n data.sort(compareRange1dLexicalLowHigh);\r\n\r\n let currentIndex = 0; // last accepted interval\r\n for (let i = 1; i < data.length; i++) {\r\n if (data[i].low <= data[currentIndex].high) {\r\n // extend the current range\r\n if (data[i].high > data[currentIndex].high)\r\n data[currentIndex].high = data[i].high;\r\n } else {\r\n // data[i] is a new entry.\r\n currentIndex++;\r\n data[currentIndex].setFrom(data[i]);\r\n }\r\n }\r\n\r\n data.length = currentIndex + 1;\r\n if (removeZeroLengthRanges) {\r\n currentIndex = -1;\r\n for (let i = 0; i < data.length; i++) {\r\n if (data[i].low < data[i].high) {\r\n if (currentIndex < i)\r\n data[++currentIndex].setFrom(data[i]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /** Apply parity logic among ranges which are not pre-sorted. */\r\n public static simplifySortParity(data: Range1d[], removeZeroLengthRanges: boolean = false) {\r\n const numData: number[] = [];\r\n for (const range of data) {\r\n if (range.low !== range.high) {\r\n numData.push(range.low);\r\n numData.push(range.high);\r\n }\r\n }\r\n const n = numData.length;\r\n numData.sort((a: number, b: number): number => {\r\n if (a < b) return -1;\r\n if (a > b) return 1;\r\n return 0;\r\n });\r\n\r\n let currIdx = 0;\r\n let x0;\r\n let x1;\r\n for (let i = 0; i < n; i += 2) {\r\n x0 = numData[i];\r\n x1 = numData[i + 1];\r\n if (!removeZeroLengthRanges) {\r\n Range1d.createXX(x0, x1, data[currIdx++]);\r\n } else {\r\n // coalesce intervals that share end and start:\r\n while (i + 2 < n && numData[i + 2] === x1) {\r\n i += 2;\r\n x1 = numData[i + 1];\r\n }\r\n if (x1 > x0)\r\n Range1d.createXX(x0, x1, data[currIdx++]);\r\n }\r\n }\r\n\r\n data.length = currIdx;\r\n }\r\n\r\n /** test if value is \"in\" by union rules.\r\n * * This considers all intervals-- i.e. does not expect or take advantage of sorting.\r\n */\r\n public static testUnion(data: Range1d[], value: number): boolean {\r\n return this.countContainingRanges(data, value) > 0;\r\n }\r\n /** test if value is \"in\" by parity rules.\r\n * * This considers all intervals-- i.e. does not expect or take advantage of sorting.\r\n */\r\n public static testParity(data: Range1d[], value: number): boolean {\r\n let inside = false;\r\n for (const range of data) {\r\n if (range.containsX(value))\r\n inside = !inside;\r\n }\r\n return inside;\r\n }\r\n\r\n /** linear search to count number of intervals which contain `value`.\r\n */\r\n public static countContainingRanges(data: Range1d[], value: number): number {\r\n let n = 0;\r\n for (const range of data) {\r\n if (range.containsX(value))\r\n n++;\r\n }\r\n return n;\r\n }\r\n\r\n /** return an array with all the low and high values of all the ranges.\r\n * @param data array of ranges.\r\n * @param sort optionally request immediate sort.\r\n * @param compress optionally request removal of duplicates.\r\n */\r\n public static getBreaks(data: Range1d[], result?: GrowableFloat64Array, sort: boolean = false, compress: boolean = false, clear: boolean = true): GrowableFloat64Array {\r\n if (!result) result = new GrowableFloat64Array(2 * data.length);\r\n if (clear) result.clear();\r\n for (const range of data) {\r\n result.push(range.low);\r\n result.push(range.high);\r\n }\r\n if (sort)\r\n result.sort();\r\n if (compress)\r\n result.compressAdjacentDuplicates();\r\n\r\n return result;\r\n }\r\n\r\n /** evaluate a point at an array of given fraction values\r\n * @param data array of ranges.\r\n * @param initialRangeFraction fraction coordinate applied only to first range. (typically negative)\r\n * @param rangeFraction fraction within each range.\r\n * @param includeDegenerateRange if false, skip rangeFraction for 0-length ranges.\r\n * @param gapFraction fraction within interval from each range high to successor low\r\n * @param includeDegenerateGap if false, skip rangeFraction for 0-length gaps.\r\n * @param finalRangeFraction fraction coordinate applied only to last range (typically an extrapolation above)\r\n * @param result array to receive values\r\n */\r\n public static appendFractionalPoints(data: Range1d[], initialRangeFraction: number | undefined, rangeFraction: number | undefined, includeDegenerateRange: boolean,\r\n gapFraction: number | undefined, includeDegenerateGap: boolean,\r\n finalRangeFraction: number | undefined, result: GrowableFloat64Array | number[]): GrowableFloat64Array | number[] {\r\n const numRange = data.length;\r\n if (numRange > 0) {\r\n if (undefined !== initialRangeFraction)\r\n result.push(data[0].fractionToPoint(initialRangeFraction));\r\n for (let i = 0; i < numRange; i++) {\r\n if (rangeFraction !== undefined && (includeDegenerateRange || data[i].low !== data[i].high))\r\n result.push(data[i].fractionToPoint(rangeFraction));\r\n if (i > 1 && gapFraction !== undefined && (includeDegenerateGap || data[i].low !== data[i].high))\r\n result.push(Geometry.interpolate(data[i - 1].high, gapFraction, data[i].low));\r\n }\r\n if (undefined !== finalRangeFraction)\r\n result.push(data[numRange - 1].fractionToPoint(finalRangeFraction));\r\n }\r\n return result;\r\n }\r\n\r\n /** Return a single range constructed with the low of range 0 and high of final range in the set. */\r\n public static firstLowToLastHigh(data: Range1d[]): Range1d {\r\n if (data.length === 0)\r\n return Range1d.createNull();\r\n return Range1d.createXX(data[0].low, data[data.length - 1].high);\r\n }\r\n /** sum the lengths of all ranges */\r\n public static sumLengths(data: Range1d[]): number {\r\n let sum = 0.0;\r\n for (const range of data) {\r\n sum += range.length();\r\n }\r\n return sum;\r\n }\r\n\r\n /**\r\n * Test if the low,high values are sorted with no overlap.\r\n * @param data array of ranges.\r\n * @param strict if true, consider exact high-to-low match as overlap.\r\n */\r\n public static isSorted(data: Range1d[], strict: boolean = true): boolean {\r\n const n = data.length;\r\n if (strict) {\r\n for (let i = 0; i + 1 < n; i++) {\r\n if (data[i].high >= data[i + 1].low)\r\n return false;\r\n }\r\n } else {\r\n for (let i = 0; i + 1 < n; i++) {\r\n if (data[i].high > data[i + 1].low)\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n\r\n/** Checks low's first, then high's\r\n * @internal\r\n */\r\nexport function compareRange1dLexicalLowHigh(a: Range1d, b: Range1d): number {\r\n if (a.low < b.low) return -1;\r\n if (a.low > b.low) return 1;\r\n if (a.high < b.high) return -1;\r\n if (a.high > b.high) return 1;\r\n return 0;\r\n}\r\n"]}
1
+ {"version":3,"file":"Range1dArray.js","sourceRoot":"","sources":["../../../src/numerics/Range1dArray.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Numerics\n */\n\nimport { Geometry } from \"../Geometry\";\nimport { GrowableFloat64Array } from \"../geometry3d/GrowableFloat64Array\";\nimport { Range1d } from \"../geometry3d/Range\";\n\n/**\n * A Range1d array is a set of intervals, such as occur when a line is clipped to a (nonconvex) polygon\n * @internal\n */\nexport class Range1dArray {\n /** Internal step: Caller supplies rangeA = interval from left operand of set difference {A - B}\n * ib = lowest possible index of overlapping interval of {B}\n * Output live parts of rangeA, advancing B over intervals that do not extend beyond {rangeA}\n * iB is advanced to the first interval whose high is to the right of {rangeA.high}\n */\n private static advanceIntervalDifference(rangeA: Range1d, dataB: Range1d[], iB: number, retVal: Range1d[]) {\n const nB = dataB.length;\n let low = rangeA.low;\n let high = rangeA.high;\n while (iB < nB) {\n const rangeB = dataB[iB];\n if (rangeB.high < low) {\n iB++;\n } else if (rangeB.high <= high) {\n if (rangeB.low > low)\n retVal.push(Range1d.createXX(low, rangeB.low));\n low = rangeB.high;\n iB++;\n } else {\n // B ends beyond rangeA...\n if (rangeB.low < high)\n high = rangeB.low;\n break;\n }\n }\n\n if (low < high)\n retVal.push(Range1d.createXX(low, high));\n\n return retVal;\n }\n\n /** Intersect intervals in two pre-sorted sets. Output may NOT be the same as either input. */\n public static differenceSorted(dataA: Range1d[], dataB: Range1d[]): Range1d[] {\n const nA = dataA.length;\n const iB = 0;\n const retVal: Range1d[] = [];\n for (let iA = 0; iA < nA; iA++) {\n Range1dArray.advanceIntervalDifference(dataA[iA], dataB, iB, retVal);\n }\n\n return retVal;\n }\n\n /** Internal step: Caller ensures rangeA is the \"lower\" interval.\n * Look rangeB to decide (a) what output interval to create and (b) which read index to advance.\n * Returns true or false to indicate whether the value associated with rangeA or rangeB should be incremented after this function returns\n */\n private static advanceIntervalIntersection(rangeA: Range1d, rangeB: Range1d, retVal: Range1d[]): boolean {\n if (rangeB.low > rangeA.high) {\n return true;\n } else if (rangeB.high >= rangeA.high) {\n retVal.push(Range1d.createXX(rangeB.low, rangeA.high));\n return true;\n } else {\n retVal.push(Range1d.createXX(rangeB.low, rangeB.high));\n return false;\n }\n }\n /** Boolean intersection among the (presorted) input ranges */\n public static intersectSorted(dataA: Range1d[], dataB: Range1d[]): Range1d[] {\n let iA = 0;\n let iB = 0;\n const nA = dataA.length;\n const nB = dataB.length;\n const retVal: Range1d[] = [];\n while (iA < nA && iB < nB) {\n const rangeA = dataA[iA];\n const rangeB = dataB[iB];\n if (rangeA.low <= rangeB.low) {\n if (Range1dArray.advanceIntervalIntersection(rangeA, rangeB, retVal))\n iA++;\n else\n iB++;\n } else {\n if (Range1dArray.advanceIntervalIntersection(rangeB, rangeA, retVal))\n iB++;\n else\n iA++;\n }\n }\n\n return retVal;\n }\n\n /** Internal step: Read an interval from the array.\n * If it overlaps the work interval, advance the work interval, and return true to notify caller to increment read index.\n */\n private static advanceIntervalUnion(workRange: Range1d, source: Range1d[], readIndex: number): boolean {\n if (readIndex >= source.length)\n return false;\n const candidate = source[readIndex];\n if (candidate.low > workRange.high)\n return false;\n if (candidate.high > workRange.high)\n workRange.high = candidate.high;\n return true;\n }\n\n /** Boolean union among the (presorted) input ranges */\n public static unionSorted(dataA: Range1d[], dataB: Range1d[]): Range1d[] {\n const nA = dataA.length;\n const nB = dataB.length;\n let iA = 0;\n let iB = 0;\n const retVal: Range1d[] = [];\n while (iA < nA && iB < nB) {\n const rangeA = dataA[iA];\n const rangeB = dataB[iB];\n let workRange: Range1d;\n // Pull from the lower of rangeA and rangeB. This always advances exactly one of the indices -- progress towards getting out.\n if (rangeA.low <= rangeB.low) {\n workRange = rangeA.clone();\n iA++;\n } else {\n workRange = rangeB.clone();\n iB++;\n }\n\n let toLoop = true;\n do {\n const resultA = Range1dArray.advanceIntervalUnion(workRange, dataA, iA);\n const resultB = Range1dArray.advanceIntervalUnion(workRange, dataB, iB);\n if (resultA)\n iA++;\n if (resultB)\n iB++;\n if (!(resultA || resultB))\n toLoop = false;\n } while (toLoop);\n\n retVal.push(workRange);\n }\n\n while (iA < nA)\n retVal.push(dataA[iA++]);\n while (iB < nB)\n retVal.push(dataB[iB++]);\n\n return retVal;\n }\n\n /** Boolean parity among the (presorted) input ranges */\n public static paritySorted(dataA: Range1d[], dataB: Range1d[]): Range1d[] {\n // Combine the two arrays, and then perform a simplification using simplifySortParity function\n const retVal: Range1d[] = [];\n for (const range of dataA)\n retVal.push(range.clone());\n for (const range of dataB)\n retVal.push(range.clone());\n\n // Sort the array\n retVal.sort(compareRange1dLexicalLowHigh);\n\n Range1dArray.simplifySortParity(retVal, true);\n return retVal;\n }\n\n /** Uses the Range1d specific compare function `compareRange1dLexicalLowHigh` for sorting the array of ranges */\n public static sort(data: Range1d[]) {\n data.sort(compareRange1dLexicalLowHigh);\n }\n\n /** Cleans up the array, compressing any overlapping ranges. If removeZeroLengthRanges is set to true, will also remove any Ranges in the form (x, x) */\n public static simplifySortUnion(data: Range1d[], removeZeroLengthRanges: boolean = false) {\n if (data.length < 2)\n return;\n\n data.sort(compareRange1dLexicalLowHigh);\n\n let currentIndex = 0; // last accepted interval\n for (let i = 1; i < data.length; i++) {\n if (data[i].low <= data[currentIndex].high) {\n // extend the current range\n if (data[i].high > data[currentIndex].high)\n data[currentIndex].high = data[i].high;\n } else {\n // data[i] is a new entry.\n currentIndex++;\n data[currentIndex].setFrom(data[i]);\n }\n }\n\n data.length = currentIndex + 1;\n if (removeZeroLengthRanges) {\n currentIndex = -1;\n for (let i = 0; i < data.length; i++) {\n if (data[i].low < data[i].high) {\n if (currentIndex < i)\n data[++currentIndex].setFrom(data[i]);\n }\n }\n }\n }\n\n /** Apply parity logic among ranges which are not pre-sorted. */\n public static simplifySortParity(data: Range1d[], removeZeroLengthRanges: boolean = false) {\n const numData: number[] = [];\n for (const range of data) {\n if (range.low !== range.high) {\n numData.push(range.low);\n numData.push(range.high);\n }\n }\n const n = numData.length;\n numData.sort((a: number, b: number): number => {\n if (a < b) return -1;\n if (a > b) return 1;\n return 0;\n });\n\n let currIdx = 0;\n let x0;\n let x1;\n for (let i = 0; i < n; i += 2) {\n x0 = numData[i];\n x1 = numData[i + 1];\n if (!removeZeroLengthRanges) {\n Range1d.createXX(x0, x1, data[currIdx++]);\n } else {\n // coalesce intervals that share end and start:\n while (i + 2 < n && numData[i + 2] === x1) {\n i += 2;\n x1 = numData[i + 1];\n }\n if (x1 > x0)\n Range1d.createXX(x0, x1, data[currIdx++]);\n }\n }\n\n data.length = currIdx;\n }\n\n /** test if value is \"in\" by union rules.\n * * This considers all intervals-- i.e. does not expect or take advantage of sorting.\n */\n public static testUnion(data: Range1d[], value: number): boolean {\n return this.countContainingRanges(data, value) > 0;\n }\n /** test if value is \"in\" by parity rules.\n * * This considers all intervals-- i.e. does not expect or take advantage of sorting.\n */\n public static testParity(data: Range1d[], value: number): boolean {\n let inside = false;\n for (const range of data) {\n if (range.containsX(value))\n inside = !inside;\n }\n return inside;\n }\n\n /** linear search to count number of intervals which contain `value`.\n */\n public static countContainingRanges(data: Range1d[], value: number): number {\n let n = 0;\n for (const range of data) {\n if (range.containsX(value))\n n++;\n }\n return n;\n }\n\n /** return an array with all the low and high values of all the ranges.\n * @param data array of ranges.\n * @param sort optionally request immediate sort.\n * @param compress optionally request removal of duplicates.\n */\n public static getBreaks(data: Range1d[], result?: GrowableFloat64Array, sort: boolean = false, compress: boolean = false, clear: boolean = true): GrowableFloat64Array {\n if (!result) result = new GrowableFloat64Array(2 * data.length);\n if (clear) result.clear();\n for (const range of data) {\n result.push(range.low);\n result.push(range.high);\n }\n if (sort)\n result.sort();\n if (compress)\n result.compressAdjacentDuplicates();\n\n return result;\n }\n\n /** evaluate a point at an array of given fraction values\n * @param data array of ranges.\n * @param initialRangeFraction fraction coordinate applied only to first range. (typically negative)\n * @param rangeFraction fraction within each range.\n * @param includeDegenerateRange if false, skip rangeFraction for 0-length ranges.\n * @param gapFraction fraction within interval from each range high to successor low\n * @param includeDegenerateGap if false, skip rangeFraction for 0-length gaps.\n * @param finalRangeFraction fraction coordinate applied only to last range (typically an extrapolation above)\n * @param result array to receive values\n */\n public static appendFractionalPoints(data: Range1d[], initialRangeFraction: number | undefined, rangeFraction: number | undefined, includeDegenerateRange: boolean,\n gapFraction: number | undefined, includeDegenerateGap: boolean,\n finalRangeFraction: number | undefined, result: GrowableFloat64Array | number[]): GrowableFloat64Array | number[] {\n const numRange = data.length;\n if (numRange > 0) {\n if (undefined !== initialRangeFraction)\n result.push(data[0].fractionToPoint(initialRangeFraction));\n for (let i = 0; i < numRange; i++) {\n if (rangeFraction !== undefined && (includeDegenerateRange || data[i].low !== data[i].high))\n result.push(data[i].fractionToPoint(rangeFraction));\n if (i > 1 && gapFraction !== undefined && (includeDegenerateGap || data[i].low !== data[i].high))\n result.push(Geometry.interpolate(data[i - 1].high, gapFraction, data[i].low));\n }\n if (undefined !== finalRangeFraction)\n result.push(data[numRange - 1].fractionToPoint(finalRangeFraction));\n }\n return result;\n }\n\n /** Return a single range constructed with the low of range 0 and high of final range in the set. */\n public static firstLowToLastHigh(data: Range1d[]): Range1d {\n if (data.length === 0)\n return Range1d.createNull();\n return Range1d.createXX(data[0].low, data[data.length - 1].high);\n }\n /** sum the lengths of all ranges */\n public static sumLengths(data: Range1d[]): number {\n let sum = 0.0;\n for (const range of data) {\n sum += range.length();\n }\n return sum;\n }\n\n /**\n * Test if the low,high values are sorted with no overlap.\n * @param data array of ranges.\n * @param strict if true, consider exact high-to-low match as overlap.\n */\n public static isSorted(data: Range1d[], strict: boolean = true): boolean {\n const n = data.length;\n if (strict) {\n for (let i = 0; i + 1 < n; i++) {\n if (data[i].high >= data[i + 1].low)\n return false;\n }\n } else {\n for (let i = 0; i + 1 < n; i++) {\n if (data[i].high > data[i + 1].low)\n return false;\n }\n }\n return true;\n }\n}\n\n/** Checks low's first, then high's\n * @internal\n */\nexport function compareRange1dLexicalLowHigh(a: Range1d, b: Range1d): number {\n if (a.low < b.low) return -1;\n if (a.low > b.low) return 1;\n if (a.high < b.high) return -1;\n if (a.high > b.high) return 1;\n return 0;\n}\n"]}
@@ -0,0 +1,164 @@
1
+ import { Point2d, Vector2d } from "../geometry3d/Point2dVector2d";
2
+ import { Point3d, Vector3d } from "../geometry3d/Point3dVector3d";
3
+ import { XAndY } from "../geometry3d/XYZProps";
4
+ import { Point4d } from "../geometry4d/Point4d";
5
+ /**
6
+ * static methods for commonly appearing sets of equations in 2 or 3 variables
7
+ * @public
8
+ */
9
+ export declare class SmallSystem {
10
+ /**
11
+ * Return true if lines (a0,a1) to (b0, b1) have a simple intersection.
12
+ * Return the fractional (not xy) coordinates in result.x, result.y
13
+ * @param a0 start point of line a
14
+ * @param a1 end point of line a
15
+ * @param b0 start point of line b
16
+ * @param b1 end point of line b
17
+ * @param result point to receive fractional coordinates of intersection. result.x is fraction on line a. result.y is fraction on line b.
18
+ */
19
+ static lineSegment2dXYTransverseIntersectionUnbounded(a0: Point2d, a1: Point2d, b0: Point2d, b1: Point2d, result: Vector2d): boolean;
20
+ /**
21
+ * * (ax0,ay0) to (ax0+ux,ay0+uy) are line A.
22
+ * * (bx0,by0) to (bx0+vx,by0+vy) are lineB.
23
+ * * Return true if the lines have a simple intersection.
24
+ * * Return the fractional (not xy) coordinates in result.x, result.y
25
+ * @param result point to receive fractional coordinates of intersection. result.x is fraction on line a. result.y is fraction on line b.
26
+ */
27
+ static lineSegmentXYUVTransverseIntersectionUnbounded(ax0: number, ay0: number, ux: number, uy: number, bx0: number, by0: number, vx: number, vy: number, result: Vector2d): boolean;
28
+ /**
29
+ * Return true if lines (a0,a1) to (b0, b1) have a simple intersection using only xy parts
30
+ * Return the fractional (not xy) coordinates in result.x, result.y
31
+ * @param a0 start point of line a
32
+ * @param a1 end point of line a
33
+ * @param b0 start point of line b
34
+ * @param b1 end point of line b
35
+ * @param result point to receive fractional coordinates of intersection. result.x is fraction on line a. result.y is fraction on line b.
36
+ */
37
+ static lineSegment3dXYTransverseIntersectionUnbounded(a0: Point3d, a1: Point3d, b0: Point3d, b1: Point3d, result: Vector2d): boolean;
38
+ /**
39
+ * Return true if lines (a0,a1) to (b0, b1) have a simple intersection using only xy parts of WEIGHTED 4D Points
40
+ * Return the fractional (not xy) coordinates in result.x, result.y
41
+ * @param hA0 homogeneous start point of line a
42
+ * @param hA1 homogeneous end point of line a
43
+ * @param hB0 homogeneous start point of line b
44
+ * @param hB1 homogeneous end point of line b
45
+ * @param result point to receive fractional coordinates of intersection. result.x is fraction on line a. result.y is fraction on line b.
46
+ */
47
+ static lineSegment3dHXYTransverseIntersectionUnbounded(hA0: Point4d, hA1: Point4d, hB0: Point4d, hB1: Point4d, result?: Vector2d): Vector2d | undefined;
48
+ /**
49
+ * Return the line fraction at which the (homogeneous) line is closest to a space point as viewed in xy only.
50
+ * @param hA0 homogeneous start point of line a
51
+ * @param hA1 homogeneous end point of line a
52
+ * @param spacePoint homogeneous point in space
53
+ */
54
+ static lineSegment3dHXYClosestPointUnbounded(hA0: Point4d, hA1: Point4d, spacePoint: Point4d): number | undefined;
55
+ /**
56
+ * Return the line fraction at which the line is closest to a space point as viewed in xy only.
57
+ * @param pointA0 start point
58
+ * @param pointA1 end point
59
+ * @param spacePoint point in space
60
+ */
61
+ static lineSegment3dXYClosestPointUnbounded(pointA0: XAndY, pointA1: XAndY, spacePoint: XAndY): number | undefined;
62
+ /**
63
+ * Return the line fraction at which the line is closest to a space point
64
+ * @param pointA0 start point
65
+ * @param pointA1 end point
66
+ * @param spacePoint point in space
67
+ */
68
+ static lineSegment3dClosestPointUnbounded(pointA0: Point3d, pointA1: Point3d, spacePoint: Point3d): number | undefined;
69
+ /**
70
+ * Return true if lines (a0,a1) to (b0, b1) have closest approach (go by each other) in 3d
71
+ * Return the fractional (not xy) coordinates in result.x, result.y
72
+ * @param a0 start point of line a
73
+ * @param a1 end point of line a
74
+ * @param b0 start point of line b
75
+ * @param b1 end point of line b
76
+ * @param result point to receive fractional coordinates of intersection. result.x is fraction on line a. result.y is fraction on line b.
77
+ */
78
+ static lineSegment3dClosestApproachUnbounded(a0: Point3d, a1: Point3d, b0: Point3d, b1: Point3d, result: Vector2d): boolean;
79
+ /**
80
+ * Return true if the given rays have closest approach (go by each other) in 3d
81
+ * Return the fractional (not xy) coordinates as x and y parts of a Point2d.
82
+ * @param ax x-coordinate of the origin of the first ray
83
+ * @param ay y-coordinate of the origin of the first ray
84
+ * @param az z-coordinate of the origin of the first ray
85
+ * @param au x-coordinate of the direction vector of the first ray
86
+ * @param av y-coordinate of the direction vector of the first ray
87
+ * @param aw z-coordinate of the direction vector of the first ray
88
+ * @param bx x-coordinate of the origin of the second ray
89
+ * @param by y-coordinate of the origin of the second ray
90
+ * @param bz z-coordinate of the origin of the second ray
91
+ * @param bu x-coordinate of the direction vector of the second ray
92
+ * @param bv y-coordinate of the direction vector of the second ray
93
+ * @param bw z-coordinate of the direction vector of the second ray
94
+ * @param result point to receive fractional coordinates of intersection. result.x is fraction on line a. result.y is fraction on line b.
95
+ */
96
+ static ray3dXYZUVWClosestApproachUnbounded(ax: number, ay: number, az: number, au: number, av: number, aw: number, bx: number, by: number, bz: number, bu: number, bv: number, bw: number, result: Vector2d): boolean;
97
+ /**
98
+ * Solve the pair of linear equations
99
+ * * `ux * x + vx * y = cx`
100
+ * * `uy * x + vy * y = cy`
101
+ * @param ux xx coefficient
102
+ * @param vx xy coefficient
103
+ * @param uy yx coefficient
104
+ * @param vy yy coefficient
105
+ * @param cx x right hand side
106
+ * @param cy y right hand side
107
+ * @param result (x,y) solution (MUST be preallocated by caller)
108
+ */
109
+ static linearSystem2d(ux: number, vx: number, // first row of matrix
110
+ uy: number, vy: number, // second row of matrix
111
+ cx: number, cy: number, // right side
112
+ result: Vector2d): boolean;
113
+ /**
114
+ * Solve a linear system:
115
+ * * x equation: `axx * u + axy * v + axz * w = cx`
116
+ * * y equation: `ayx * u + ayy * v + ayz * w = cy`
117
+ * * z equation: `azx * u + azy * v + azz * w = cz`
118
+ * @param axx row 0, column 0 coefficient
119
+ * @param axy row 0, column 1 coefficient
120
+ * @param axz row 0, column 1 coefficient
121
+ * @param ayx row 1, column 0 coefficient
122
+ * @param ayy row 1, column 1 coefficient
123
+ * @param ayz row 1, column 2 coefficient
124
+ * @param azx row 2, column 0 coefficient
125
+ * @param azy row 2, column 1 coefficient
126
+ * @param azz row 2, column 2 coefficient
127
+ * @param cx right hand side row 0 coefficient
128
+ * @param cy right hand side row 1 coefficient
129
+ * @param cz right hand side row 2 coefficient
130
+ * @param result optional result.
131
+ * @returns solution vector (u,v,w) or `undefined` if system is singular.
132
+ */
133
+ static linearSystem3d(axx: number, axy: number, axz: number, // first row of matrix
134
+ ayx: number, ayy: number, ayz: number, // second row of matrix
135
+ azx: number, azy: number, azz: number, // second row of matrix
136
+ cx: number, cy: number, cz: number, // right side
137
+ result?: Vector3d): Vector3d | undefined;
138
+ /**
139
+ * Compute the intersection of three planes.
140
+ * @param xyzA point on the first plane
141
+ * @param normalA normal of the first plane
142
+ * @param xyzB point on the second plane
143
+ * @param normalB normal of the second plane
144
+ * @param xyzC point on the third plane
145
+ * @param normalC normal of the third plane
146
+ * @param result optional result
147
+ * @returns intersection point of the three planes (as a Vector3d), or undefined if at least two planes are parallel.
148
+ */
149
+ static intersect3Planes(xyzA: Point3d, normalA: Vector3d, xyzB: Point3d, normalB: Vector3d, xyzC: Point3d, normalC: Vector3d, result?: Vector3d): Vector3d | undefined;
150
+ /**
151
+ * * in rowB, replace `rowB[j] += a * rowB[pivot] * rowA[j] / rowA[pivot]` for `j>pivot`
152
+ * @param rowA row that does not change
153
+ * @param pivotIndex index of pivot (divisor) in rowA.
154
+ * @param rowB row where elimination occurs.
155
+ */
156
+ static eliminateFromPivot(rowA: Float64Array, pivotIndex: number, rowB: Float64Array, a: number): boolean;
157
+ /**
158
+ * Solve a pair of bilinear equations
159
+ * * First equation: `a0 + b0 * u + c0 * v + d0 * u * v = 0`
160
+ * * Second equation: `a1 + b1 * u + c1 * v + d1 * u * v = 0`
161
+ */
162
+ static solveBilinearPair(a0: number, b0: number, c0: number, d0: number, a1: number, b1: number, c1: number, d1: number): Point2d[] | undefined;
163
+ }
164
+ //# sourceMappingURL=SmallSystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SmallSystem.d.ts","sourceRoot":"","sources":["../../../src/numerics/SmallSystem.ts"],"names":[],"mappings":"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"}