@itwin/core-geometry 5.1.0-dev.3 → 5.1.0-dev.32

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 (770) hide show
  1. package/CHANGELOG.md +26 -1
  2. package/lib/cjs/Constant.js.map +1 -1
  3. package/lib/cjs/Geometry.d.ts +8 -0
  4. package/lib/cjs/Geometry.d.ts.map +1 -1
  5. package/lib/cjs/Geometry.js +10 -0
  6. package/lib/cjs/Geometry.js.map +1 -1
  7. package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
  8. package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
  9. package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -1
  10. package/lib/cjs/bspline/BSplineCurve.js +7 -1
  11. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  12. package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
  13. package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
  14. package/lib/cjs/bspline/BSplineSurface.d.ts +2 -1
  15. package/lib/cjs/bspline/BSplineSurface.d.ts.map +1 -1
  16. package/lib/cjs/bspline/BSplineSurface.js +2 -1
  17. package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
  18. package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
  19. package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
  20. package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
  21. package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
  22. package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
  23. package/lib/cjs/bspline/KnotVector.js.map +1 -1
  24. package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -1
  25. package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
  26. package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -1
  27. package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
  28. package/lib/cjs/clipping/ClipPlane.d.ts +7 -5
  29. package/lib/cjs/clipping/ClipPlane.d.ts.map +1 -1
  30. package/lib/cjs/clipping/ClipPlane.js +9 -5
  31. package/lib/cjs/clipping/ClipPlane.js.map +1 -1
  32. package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
  33. package/lib/cjs/clipping/ClipUtils.d.ts.map +1 -1
  34. package/lib/cjs/clipping/ClipUtils.js +5 -3
  35. package/lib/cjs/clipping/ClipUtils.js.map +1 -1
  36. package/lib/cjs/clipping/ClipVector.js.map +1 -1
  37. package/lib/cjs/clipping/ConvexClipPlaneSet.d.ts +1 -2
  38. package/lib/cjs/clipping/ConvexClipPlaneSet.d.ts.map +1 -1
  39. package/lib/cjs/clipping/ConvexClipPlaneSet.js +13 -25
  40. package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
  41. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.d.ts +1 -2
  42. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.d.ts.map +1 -1
  43. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js +1 -2
  44. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  45. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  46. package/lib/cjs/core-geometry.d.ts +1 -0
  47. package/lib/cjs/core-geometry.d.ts.map +1 -1
  48. package/lib/cjs/core-geometry.js +1 -0
  49. package/lib/cjs/core-geometry.js.map +1 -1
  50. package/lib/cjs/curve/Arc3d.d.ts +54 -32
  51. package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
  52. package/lib/cjs/curve/Arc3d.js +56 -37
  53. package/lib/cjs/curve/Arc3d.js.map +1 -1
  54. package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
  55. package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
  56. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  57. package/lib/cjs/curve/CurveCollection.d.ts +33 -1
  58. package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
  59. package/lib/cjs/curve/CurveCollection.js +79 -0
  60. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  61. package/lib/cjs/curve/CurveCurve.js.map +1 -1
  62. package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
  63. package/lib/cjs/curve/CurveFactory.d.ts.map +1 -1
  64. package/lib/cjs/curve/CurveFactory.js.map +1 -1
  65. package/lib/cjs/curve/CurveLocationDetail.d.ts +24 -24
  66. package/lib/cjs/curve/CurveLocationDetail.d.ts.map +1 -1
  67. package/lib/cjs/curve/CurveLocationDetail.js +24 -24
  68. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  69. package/lib/cjs/curve/CurveOps.js.map +1 -1
  70. package/lib/cjs/curve/CurvePrimitive.d.ts +2 -2
  71. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  72. package/lib/cjs/curve/CurveProcessor.js.map +1 -1
  73. package/lib/cjs/curve/CurveTypes.js.map +1 -1
  74. package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
  75. package/lib/cjs/curve/GeometryQuery.js.map +1 -1
  76. package/lib/cjs/curve/LineSegment3d.js.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.js.map +1 -1
  80. package/lib/cjs/curve/ParityRegion.js.map +1 -1
  81. package/lib/cjs/curve/Path.js.map +1 -1
  82. package/lib/cjs/curve/PointString3d.js.map +1 -1
  83. package/lib/cjs/curve/ProxyCurve.js.map +1 -1
  84. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.d.ts.map +1 -1
  85. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js +10 -5
  86. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  87. package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
  88. package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
  89. package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
  90. package/lib/cjs/curve/Query/PlanarSubdivision.d.ts +9 -5
  91. package/lib/cjs/curve/Query/PlanarSubdivision.d.ts.map +1 -1
  92. package/lib/cjs/curve/Query/PlanarSubdivision.js +27 -11
  93. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  94. package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
  95. package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
  96. package/lib/cjs/curve/RegionMomentsXY.d.ts +15 -21
  97. package/lib/cjs/curve/RegionMomentsXY.d.ts.map +1 -1
  98. package/lib/cjs/curve/RegionMomentsXY.js +39 -59
  99. package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
  100. package/lib/cjs/curve/RegionOps.d.ts +82 -39
  101. package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
  102. package/lib/cjs/curve/RegionOps.js +154 -48
  103. package/lib/cjs/curve/RegionOps.js.map +1 -1
  104. package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts +27 -26
  105. package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
  106. package/lib/cjs/curve/RegionOpsClassificationSweeps.js +70 -54
  107. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  108. package/lib/cjs/curve/StrokeOptions.js.map +1 -1
  109. package/lib/cjs/curve/UnionRegion.js.map +1 -1
  110. package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
  111. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  112. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  113. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  114. package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  115. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  116. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  117. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  118. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts +0 -1
  119. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
  120. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js +58 -32
  121. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  122. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  123. package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
  124. package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  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.d.ts.map +1 -1
  131. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js +0 -1
  132. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  133. package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
  134. package/lib/cjs/curve/internalContexts/TransferWithSplitArcs.d.ts +14 -0
  135. package/lib/cjs/curve/internalContexts/TransferWithSplitArcs.d.ts.map +1 -0
  136. package/lib/cjs/curve/internalContexts/TransferWithSplitArcs.js +34 -0
  137. package/lib/cjs/curve/internalContexts/TransferWithSplitArcs.js.map +1 -0
  138. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  139. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  140. package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
  141. package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
  142. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  143. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  144. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
  145. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  146. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  147. package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
  148. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  149. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  150. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
  151. package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
  152. package/lib/cjs/geometry3d/Angle.js.map +1 -1
  153. package/lib/cjs/geometry3d/AngleSweep.d.ts +24 -17
  154. package/lib/cjs/geometry3d/AngleSweep.d.ts.map +1 -1
  155. package/lib/cjs/geometry3d/AngleSweep.js +31 -17
  156. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
  157. package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
  158. package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
  159. package/lib/cjs/geometry3d/CoincidentGeometryOps.d.ts +8 -7
  160. package/lib/cjs/geometry3d/CoincidentGeometryOps.d.ts.map +1 -1
  161. package/lib/cjs/geometry3d/CoincidentGeometryOps.js +19 -25
  162. package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
  163. package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
  164. package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
  165. package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
  166. package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
  167. package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
  168. package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
  169. package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
  170. package/lib/cjs/geometry3d/GrowableXYZArray.d.ts +7 -2
  171. package/lib/cjs/geometry3d/GrowableXYZArray.d.ts.map +1 -1
  172. package/lib/cjs/geometry3d/GrowableXYZArray.js +20 -2
  173. package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
  174. package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
  175. package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
  176. package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts +2 -1
  177. package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
  178. package/lib/cjs/geometry3d/IndexedXYZCollection.js +7 -3
  179. package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
  180. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  181. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  182. package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
  183. package/lib/cjs/geometry3d/Plane3d.d.ts +2 -0
  184. package/lib/cjs/geometry3d/Plane3d.d.ts.map +1 -1
  185. package/lib/cjs/geometry3d/Plane3d.js +6 -1
  186. package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
  187. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.d.ts +2 -0
  188. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.d.ts.map +1 -1
  189. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js +6 -1
  190. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  191. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.d.ts +8 -2
  192. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.d.ts.map +1 -1
  193. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js +18 -10
  194. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  195. package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
  196. package/lib/cjs/geometry3d/Point2dVector2d.d.ts.map +1 -1
  197. package/lib/cjs/geometry3d/Point2dVector2d.js +0 -2
  198. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  199. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  200. package/lib/cjs/geometry3d/Point3dVector3d.d.ts +4 -4
  201. package/lib/cjs/geometry3d/Point3dVector3d.d.ts.map +1 -1
  202. package/lib/cjs/geometry3d/Point3dVector3d.js +7 -8
  203. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  204. package/lib/cjs/geometry3d/PointHelpers.d.ts +7 -7
  205. package/lib/cjs/geometry3d/PointHelpers.d.ts.map +1 -1
  206. package/lib/cjs/geometry3d/PointHelpers.js +66 -26
  207. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  208. package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
  209. package/lib/cjs/geometry3d/PolygonOps.d.ts +57 -9
  210. package/lib/cjs/geometry3d/PolygonOps.d.ts.map +1 -1
  211. package/lib/cjs/geometry3d/PolygonOps.js +57 -17
  212. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  213. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.d.ts +13 -6
  214. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.d.ts.map +1 -1
  215. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js +16 -9
  216. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  217. package/lib/cjs/geometry3d/PolylineOps.d.ts +5 -4
  218. package/lib/cjs/geometry3d/PolylineOps.d.ts.map +1 -1
  219. package/lib/cjs/geometry3d/PolylineOps.js +5 -4
  220. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
  221. package/lib/cjs/geometry3d/Range.d.ts +18 -10
  222. package/lib/cjs/geometry3d/Range.d.ts.map +1 -1
  223. package/lib/cjs/geometry3d/Range.js +32 -10
  224. package/lib/cjs/geometry3d/Range.js.map +1 -1
  225. package/lib/cjs/geometry3d/Ray2d.d.ts.map +1 -1
  226. package/lib/cjs/geometry3d/Ray2d.js +0 -1
  227. package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
  228. package/lib/cjs/geometry3d/Ray3d.d.ts.map +1 -1
  229. package/lib/cjs/geometry3d/Ray3d.js +11 -23
  230. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  231. package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
  232. package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
  233. package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
  234. package/lib/cjs/geometry3d/Transform.d.ts +21 -2
  235. package/lib/cjs/geometry3d/Transform.d.ts.map +1 -1
  236. package/lib/cjs/geometry3d/Transform.js +32 -13
  237. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  238. package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
  239. package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
  240. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  241. package/lib/cjs/geometry4d/Map4d.js.map +1 -1
  242. package/lib/cjs/geometry4d/Matrix4d.d.ts +7 -7
  243. package/lib/cjs/geometry4d/Matrix4d.d.ts.map +1 -1
  244. package/lib/cjs/geometry4d/Matrix4d.js +9 -9
  245. package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
  246. package/lib/cjs/geometry4d/MomentData.d.ts +32 -34
  247. package/lib/cjs/geometry4d/MomentData.d.ts.map +1 -1
  248. package/lib/cjs/geometry4d/MomentData.js +56 -57
  249. package/lib/cjs/geometry4d/MomentData.js.map +1 -1
  250. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  251. package/lib/cjs/geometry4d/Point4d.d.ts +7 -4
  252. package/lib/cjs/geometry4d/Point4d.d.ts.map +1 -1
  253. package/lib/cjs/geometry4d/Point4d.js +26 -15
  254. package/lib/cjs/geometry4d/Point4d.js.map +1 -1
  255. package/lib/cjs/numerics/BandedSystem.js.map +1 -1
  256. package/lib/cjs/numerics/BezierPolynomials.d.ts +2 -0
  257. package/lib/cjs/numerics/BezierPolynomials.d.ts.map +1 -1
  258. package/lib/cjs/numerics/BezierPolynomials.js +11 -0
  259. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
  260. package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
  261. package/lib/cjs/numerics/Complex.js.map +1 -1
  262. package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
  263. package/lib/cjs/numerics/Newton.js.map +1 -1
  264. package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
  265. package/lib/cjs/numerics/PolarData.js.map +1 -1
  266. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  267. package/lib/cjs/numerics/Quadrature.js.map +1 -1
  268. package/lib/cjs/numerics/Range1dArray.js.map +1 -1
  269. package/lib/cjs/numerics/SmallSystem.d.ts +77 -36
  270. package/lib/cjs/numerics/SmallSystem.d.ts.map +1 -1
  271. package/lib/cjs/numerics/SmallSystem.js +129 -73
  272. package/lib/cjs/numerics/SmallSystem.js.map +1 -1
  273. package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
  274. package/lib/cjs/numerics/UnionFind.js.map +1 -1
  275. package/lib/cjs/numerics/UsageSums.js.map +1 -1
  276. package/lib/cjs/polyface/AuxData.js.map +1 -1
  277. package/lib/cjs/polyface/BoxTopology.js.map +1 -1
  278. package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
  279. package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
  280. package/lib/cjs/polyface/FacetOrientation.d.ts +1 -1
  281. package/lib/cjs/polyface/FacetOrientation.js +1 -1
  282. package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
  283. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  284. package/lib/cjs/polyface/IndexedEdgeMatcher.d.ts +55 -40
  285. package/lib/cjs/polyface/IndexedEdgeMatcher.d.ts.map +1 -1
  286. package/lib/cjs/polyface/IndexedEdgeMatcher.js +83 -75
  287. package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
  288. package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts +15 -14
  289. package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
  290. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js +47 -38
  291. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  292. package/lib/cjs/polyface/IndexedPolyfaceWalker.d.ts +26 -19
  293. package/lib/cjs/polyface/IndexedPolyfaceWalker.d.ts.map +1 -1
  294. package/lib/cjs/polyface/IndexedPolyfaceWalker.js +47 -32
  295. package/lib/cjs/polyface/IndexedPolyfaceWalker.js.map +1 -1
  296. package/lib/cjs/polyface/Polyface.d.ts +17 -3
  297. package/lib/cjs/polyface/Polyface.d.ts.map +1 -1
  298. package/lib/cjs/polyface/Polyface.js +16 -0
  299. package/lib/cjs/polyface/Polyface.js.map +1 -1
  300. package/lib/cjs/polyface/PolyfaceBuilder.js +2 -2
  301. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  302. package/lib/cjs/polyface/PolyfaceClip.d.ts +19 -18
  303. package/lib/cjs/polyface/PolyfaceClip.d.ts.map +1 -1
  304. package/lib/cjs/polyface/PolyfaceClip.js +39 -42
  305. package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
  306. package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
  307. package/lib/cjs/polyface/PolyfaceQuery.d.ts +116 -75
  308. package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
  309. package/lib/cjs/polyface/PolyfaceQuery.js +312 -228
  310. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  311. package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
  312. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  313. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  314. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  315. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  316. package/lib/cjs/polyface/RangeTree/RangeTreeNode.d.ts +3 -3
  317. package/lib/cjs/polyface/RangeTree/RangeTreeNode.d.ts.map +1 -1
  318. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js +3 -3
  319. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  320. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  321. package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
  322. package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
  323. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  324. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  325. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  326. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  327. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  328. package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  329. package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
  330. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.d.ts +7 -6
  331. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.d.ts.map +1 -1
  332. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js +8 -9
  333. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  334. package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
  335. package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
  336. package/lib/cjs/serialization/BGFBReader.js.map +1 -1
  337. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  338. package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  339. package/lib/cjs/serialization/DeepCompare.js.map +1 -1
  340. package/lib/cjs/serialization/GeometrySamples.d.ts.map +1 -1
  341. package/lib/cjs/serialization/GeometrySamples.js +2 -2
  342. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  343. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  344. package/lib/cjs/serialization/SerializationHelpers.js.map +1 -1
  345. package/lib/cjs/solid/Box.js.map +1 -1
  346. package/lib/cjs/solid/Cone.js.map +1 -1
  347. package/lib/cjs/solid/LinearSweep.d.ts +2 -3
  348. package/lib/cjs/solid/LinearSweep.d.ts.map +1 -1
  349. package/lib/cjs/solid/LinearSweep.js +2 -3
  350. package/lib/cjs/solid/LinearSweep.js.map +1 -1
  351. package/lib/cjs/solid/RotationalSweep.d.ts +2 -2
  352. package/lib/cjs/solid/RotationalSweep.js +2 -2
  353. package/lib/cjs/solid/RotationalSweep.js.map +1 -1
  354. package/lib/cjs/solid/RuledSweep.js.map +1 -1
  355. package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
  356. package/lib/cjs/solid/Sphere.js.map +1 -1
  357. package/lib/cjs/solid/SweepContour.js.map +1 -1
  358. package/lib/cjs/solid/TorusPipe.js.map +1 -1
  359. package/lib/cjs/topology/ChainMerge.d.ts +1 -1
  360. package/lib/cjs/topology/ChainMerge.js +1 -1
  361. package/lib/cjs/topology/ChainMerge.js.map +1 -1
  362. package/lib/cjs/topology/Graph.js.map +1 -1
  363. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  364. package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts +1 -0
  365. package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
  366. package/lib/cjs/topology/HalfEdgeGraphSearch.js +1 -0
  367. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  368. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  369. package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
  370. package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
  371. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  372. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  373. package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
  374. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
  375. package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
  376. package/lib/cjs/topology/MaskManager.js.map +1 -1
  377. package/lib/cjs/topology/Merging.d.ts +0 -1
  378. package/lib/cjs/topology/Merging.d.ts.map +1 -1
  379. package/lib/cjs/topology/Merging.js +49 -46
  380. package/lib/cjs/topology/Merging.js.map +1 -1
  381. package/lib/cjs/topology/RegularizeFace.js.map +1 -1
  382. package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
  383. package/lib/cjs/topology/SpaceTriangulation.js.map +1 -1
  384. package/lib/cjs/topology/Triangulation.js.map +1 -1
  385. package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
  386. package/lib/esm/Constant.js.map +1 -1
  387. package/lib/esm/Geometry.d.ts +8 -0
  388. package/lib/esm/Geometry.d.ts.map +1 -1
  389. package/lib/esm/Geometry.js +10 -0
  390. package/lib/esm/Geometry.js.map +1 -1
  391. package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
  392. package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
  393. package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
  394. package/lib/esm/bspline/BSplineCurve.js +7 -1
  395. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  396. package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
  397. package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
  398. package/lib/esm/bspline/BSplineSurface.d.ts +2 -1
  399. package/lib/esm/bspline/BSplineSurface.d.ts.map +1 -1
  400. package/lib/esm/bspline/BSplineSurface.js +2 -1
  401. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  402. package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
  403. package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
  404. package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
  405. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  406. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  407. package/lib/esm/bspline/KnotVector.js.map +1 -1
  408. package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
  409. package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
  410. package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
  411. package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
  412. package/lib/esm/clipping/ClipPlane.d.ts +7 -5
  413. package/lib/esm/clipping/ClipPlane.d.ts.map +1 -1
  414. package/lib/esm/clipping/ClipPlane.js +9 -5
  415. package/lib/esm/clipping/ClipPlane.js.map +1 -1
  416. package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
  417. package/lib/esm/clipping/ClipUtils.d.ts.map +1 -1
  418. package/lib/esm/clipping/ClipUtils.js +5 -3
  419. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  420. package/lib/esm/clipping/ClipVector.js.map +1 -1
  421. package/lib/esm/clipping/ConvexClipPlaneSet.d.ts +1 -2
  422. package/lib/esm/clipping/ConvexClipPlaneSet.d.ts.map +1 -1
  423. package/lib/esm/clipping/ConvexClipPlaneSet.js +13 -25
  424. package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
  425. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.d.ts +1 -2
  426. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.d.ts.map +1 -1
  427. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js +1 -2
  428. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  429. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  430. package/lib/esm/core-geometry.d.ts +1 -0
  431. package/lib/esm/core-geometry.d.ts.map +1 -1
  432. package/lib/esm/core-geometry.js +1 -0
  433. package/lib/esm/core-geometry.js.map +1 -1
  434. package/lib/esm/curve/Arc3d.d.ts +54 -32
  435. package/lib/esm/curve/Arc3d.d.ts.map +1 -1
  436. package/lib/esm/curve/Arc3d.js +56 -37
  437. package/lib/esm/curve/Arc3d.js.map +1 -1
  438. package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
  439. package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
  440. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  441. package/lib/esm/curve/CurveCollection.d.ts +33 -1
  442. package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
  443. package/lib/esm/curve/CurveCollection.js +79 -0
  444. package/lib/esm/curve/CurveCollection.js.map +1 -1
  445. package/lib/esm/curve/CurveCurve.js.map +1 -1
  446. package/lib/esm/curve/CurveExtendMode.js.map +1 -1
  447. package/lib/esm/curve/CurveFactory.d.ts.map +1 -1
  448. package/lib/esm/curve/CurveFactory.js.map +1 -1
  449. package/lib/esm/curve/CurveLocationDetail.d.ts +24 -24
  450. package/lib/esm/curve/CurveLocationDetail.d.ts.map +1 -1
  451. package/lib/esm/curve/CurveLocationDetail.js +24 -24
  452. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  453. package/lib/esm/curve/CurveOps.js.map +1 -1
  454. package/lib/esm/curve/CurvePrimitive.d.ts +2 -2
  455. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  456. package/lib/esm/curve/CurveProcessor.js.map +1 -1
  457. package/lib/esm/curve/CurveTypes.js.map +1 -1
  458. package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
  459. package/lib/esm/curve/GeometryQuery.js.map +1 -1
  460. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  461. package/lib/esm/curve/LineString3d.js.map +1 -1
  462. package/lib/esm/curve/Loop.js.map +1 -1
  463. package/lib/esm/curve/OffsetOptions.js.map +1 -1
  464. package/lib/esm/curve/ParityRegion.js.map +1 -1
  465. package/lib/esm/curve/Path.js.map +1 -1
  466. package/lib/esm/curve/PointString3d.js.map +1 -1
  467. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  468. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.d.ts.map +1 -1
  469. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js +10 -5
  470. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  471. package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
  472. package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
  473. package/lib/esm/curve/Query/InOutTests.js.map +1 -1
  474. package/lib/esm/curve/Query/PlanarSubdivision.d.ts +9 -5
  475. package/lib/esm/curve/Query/PlanarSubdivision.d.ts.map +1 -1
  476. package/lib/esm/curve/Query/PlanarSubdivision.js +27 -11
  477. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  478. package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
  479. package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
  480. package/lib/esm/curve/RegionMomentsXY.d.ts +15 -21
  481. package/lib/esm/curve/RegionMomentsXY.d.ts.map +1 -1
  482. package/lib/esm/curve/RegionMomentsXY.js +39 -59
  483. package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
  484. package/lib/esm/curve/RegionOps.d.ts +82 -39
  485. package/lib/esm/curve/RegionOps.d.ts.map +1 -1
  486. package/lib/esm/curve/RegionOps.js +155 -49
  487. package/lib/esm/curve/RegionOps.js.map +1 -1
  488. package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts +27 -26
  489. package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
  490. package/lib/esm/curve/RegionOpsClassificationSweeps.js +70 -54
  491. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  492. package/lib/esm/curve/StrokeOptions.js.map +1 -1
  493. package/lib/esm/curve/UnionRegion.js.map +1 -1
  494. package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
  495. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  496. package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  497. package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  498. package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  499. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  500. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  501. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  502. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts +0 -1
  503. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
  504. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js +58 -32
  505. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  506. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  507. package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
  508. package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  509. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  510. package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
  511. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  512. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  513. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  514. package/lib/esm/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -1
  515. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js +0 -1
  516. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  517. package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
  518. package/lib/esm/curve/internalContexts/TransferWithSplitArcs.d.ts +14 -0
  519. package/lib/esm/curve/internalContexts/TransferWithSplitArcs.d.ts.map +1 -0
  520. package/lib/esm/curve/internalContexts/TransferWithSplitArcs.js +30 -0
  521. package/lib/esm/curve/internalContexts/TransferWithSplitArcs.js.map +1 -0
  522. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  523. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  524. package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
  525. package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
  526. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  527. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  528. package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
  529. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  530. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  531. package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
  532. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  533. package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  534. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
  535. package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
  536. package/lib/esm/geometry3d/Angle.js.map +1 -1
  537. package/lib/esm/geometry3d/AngleSweep.d.ts +24 -17
  538. package/lib/esm/geometry3d/AngleSweep.d.ts.map +1 -1
  539. package/lib/esm/geometry3d/AngleSweep.js +31 -17
  540. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  541. package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
  542. package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
  543. package/lib/esm/geometry3d/CoincidentGeometryOps.d.ts +8 -7
  544. package/lib/esm/geometry3d/CoincidentGeometryOps.d.ts.map +1 -1
  545. package/lib/esm/geometry3d/CoincidentGeometryOps.js +19 -25
  546. package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
  547. package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
  548. package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
  549. package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
  550. package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
  551. package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
  552. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
  553. package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
  554. package/lib/esm/geometry3d/GrowableXYZArray.d.ts +7 -2
  555. package/lib/esm/geometry3d/GrowableXYZArray.d.ts.map +1 -1
  556. package/lib/esm/geometry3d/GrowableXYZArray.js +20 -2
  557. package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
  558. package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
  559. package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
  560. package/lib/esm/geometry3d/IndexedXYZCollection.d.ts +2 -1
  561. package/lib/esm/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
  562. package/lib/esm/geometry3d/IndexedXYZCollection.js +7 -3
  563. package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
  564. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  565. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  566. package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
  567. package/lib/esm/geometry3d/Plane3d.d.ts +2 -0
  568. package/lib/esm/geometry3d/Plane3d.d.ts.map +1 -1
  569. package/lib/esm/geometry3d/Plane3d.js +6 -1
  570. package/lib/esm/geometry3d/Plane3d.js.map +1 -1
  571. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.d.ts +2 -0
  572. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.d.ts.map +1 -1
  573. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js +6 -1
  574. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  575. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.d.ts +8 -2
  576. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.d.ts.map +1 -1
  577. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js +18 -10
  578. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  579. package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
  580. package/lib/esm/geometry3d/Point2dVector2d.d.ts.map +1 -1
  581. package/lib/esm/geometry3d/Point2dVector2d.js +0 -2
  582. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  583. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  584. package/lib/esm/geometry3d/Point3dVector3d.d.ts +4 -4
  585. package/lib/esm/geometry3d/Point3dVector3d.d.ts.map +1 -1
  586. package/lib/esm/geometry3d/Point3dVector3d.js +7 -8
  587. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  588. package/lib/esm/geometry3d/PointHelpers.d.ts +7 -7
  589. package/lib/esm/geometry3d/PointHelpers.d.ts.map +1 -1
  590. package/lib/esm/geometry3d/PointHelpers.js +66 -26
  591. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  592. package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
  593. package/lib/esm/geometry3d/PolygonOps.d.ts +57 -9
  594. package/lib/esm/geometry3d/PolygonOps.d.ts.map +1 -1
  595. package/lib/esm/geometry3d/PolygonOps.js +57 -17
  596. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  597. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.d.ts +13 -6
  598. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.d.ts.map +1 -1
  599. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js +16 -9
  600. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  601. package/lib/esm/geometry3d/PolylineOps.d.ts +5 -4
  602. package/lib/esm/geometry3d/PolylineOps.d.ts.map +1 -1
  603. package/lib/esm/geometry3d/PolylineOps.js +5 -4
  604. package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
  605. package/lib/esm/geometry3d/Range.d.ts +18 -10
  606. package/lib/esm/geometry3d/Range.d.ts.map +1 -1
  607. package/lib/esm/geometry3d/Range.js +32 -10
  608. package/lib/esm/geometry3d/Range.js.map +1 -1
  609. package/lib/esm/geometry3d/Ray2d.d.ts.map +1 -1
  610. package/lib/esm/geometry3d/Ray2d.js +0 -1
  611. package/lib/esm/geometry3d/Ray2d.js.map +1 -1
  612. package/lib/esm/geometry3d/Ray3d.d.ts.map +1 -1
  613. package/lib/esm/geometry3d/Ray3d.js +11 -23
  614. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  615. package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
  616. package/lib/esm/geometry3d/Segment1d.js.map +1 -1
  617. package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
  618. package/lib/esm/geometry3d/Transform.d.ts +21 -2
  619. package/lib/esm/geometry3d/Transform.d.ts.map +1 -1
  620. package/lib/esm/geometry3d/Transform.js +32 -13
  621. package/lib/esm/geometry3d/Transform.js.map +1 -1
  622. package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
  623. package/lib/esm/geometry3d/XYZProps.js.map +1 -1
  624. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  625. package/lib/esm/geometry4d/Map4d.js.map +1 -1
  626. package/lib/esm/geometry4d/Matrix4d.d.ts +7 -7
  627. package/lib/esm/geometry4d/Matrix4d.d.ts.map +1 -1
  628. package/lib/esm/geometry4d/Matrix4d.js +9 -9
  629. package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
  630. package/lib/esm/geometry4d/MomentData.d.ts +32 -34
  631. package/lib/esm/geometry4d/MomentData.d.ts.map +1 -1
  632. package/lib/esm/geometry4d/MomentData.js +56 -57
  633. package/lib/esm/geometry4d/MomentData.js.map +1 -1
  634. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  635. package/lib/esm/geometry4d/Point4d.d.ts +7 -4
  636. package/lib/esm/geometry4d/Point4d.d.ts.map +1 -1
  637. package/lib/esm/geometry4d/Point4d.js +26 -15
  638. package/lib/esm/geometry4d/Point4d.js.map +1 -1
  639. package/lib/esm/numerics/BandedSystem.js.map +1 -1
  640. package/lib/esm/numerics/BezierPolynomials.d.ts +2 -0
  641. package/lib/esm/numerics/BezierPolynomials.d.ts.map +1 -1
  642. package/lib/esm/numerics/BezierPolynomials.js +11 -0
  643. package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
  644. package/lib/esm/numerics/ClusterableArray.js.map +1 -1
  645. package/lib/esm/numerics/Complex.js.map +1 -1
  646. package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
  647. package/lib/esm/numerics/Newton.js.map +1 -1
  648. package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
  649. package/lib/esm/numerics/PolarData.js.map +1 -1
  650. package/lib/esm/numerics/Polynomials.js.map +1 -1
  651. package/lib/esm/numerics/Quadrature.js.map +1 -1
  652. package/lib/esm/numerics/Range1dArray.js.map +1 -1
  653. package/lib/esm/numerics/SmallSystem.d.ts +77 -36
  654. package/lib/esm/numerics/SmallSystem.d.ts.map +1 -1
  655. package/lib/esm/numerics/SmallSystem.js +129 -73
  656. package/lib/esm/numerics/SmallSystem.js.map +1 -1
  657. package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
  658. package/lib/esm/numerics/UnionFind.js.map +1 -1
  659. package/lib/esm/numerics/UsageSums.js.map +1 -1
  660. package/lib/esm/polyface/AuxData.js.map +1 -1
  661. package/lib/esm/polyface/BoxTopology.js.map +1 -1
  662. package/lib/esm/polyface/FacetFaceData.js.map +1 -1
  663. package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
  664. package/lib/esm/polyface/FacetOrientation.d.ts +1 -1
  665. package/lib/esm/polyface/FacetOrientation.js +1 -1
  666. package/lib/esm/polyface/FacetOrientation.js.map +1 -1
  667. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  668. package/lib/esm/polyface/IndexedEdgeMatcher.d.ts +55 -40
  669. package/lib/esm/polyface/IndexedEdgeMatcher.d.ts.map +1 -1
  670. package/lib/esm/polyface/IndexedEdgeMatcher.js +83 -75
  671. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
  672. package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts +15 -14
  673. package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
  674. package/lib/esm/polyface/IndexedPolyfaceVisitor.js +47 -38
  675. package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  676. package/lib/esm/polyface/IndexedPolyfaceWalker.d.ts +26 -19
  677. package/lib/esm/polyface/IndexedPolyfaceWalker.d.ts.map +1 -1
  678. package/lib/esm/polyface/IndexedPolyfaceWalker.js +47 -32
  679. package/lib/esm/polyface/IndexedPolyfaceWalker.js.map +1 -1
  680. package/lib/esm/polyface/Polyface.d.ts +17 -3
  681. package/lib/esm/polyface/Polyface.d.ts.map +1 -1
  682. package/lib/esm/polyface/Polyface.js +16 -0
  683. package/lib/esm/polyface/Polyface.js.map +1 -1
  684. package/lib/esm/polyface/PolyfaceBuilder.js +2 -2
  685. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  686. package/lib/esm/polyface/PolyfaceClip.d.ts +19 -18
  687. package/lib/esm/polyface/PolyfaceClip.d.ts.map +1 -1
  688. package/lib/esm/polyface/PolyfaceClip.js +39 -42
  689. package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
  690. package/lib/esm/polyface/PolyfaceData.js.map +1 -1
  691. package/lib/esm/polyface/PolyfaceQuery.d.ts +116 -75
  692. package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
  693. package/lib/esm/polyface/PolyfaceQuery.js +313 -229
  694. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  695. package/lib/esm/polyface/RangeLengthData.js.map +1 -1
  696. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  697. package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  698. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  699. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  700. package/lib/esm/polyface/RangeTree/RangeTreeNode.d.ts +3 -3
  701. package/lib/esm/polyface/RangeTree/RangeTreeNode.d.ts.map +1 -1
  702. package/lib/esm/polyface/RangeTree/RangeTreeNode.js +3 -3
  703. package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  704. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  705. package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
  706. package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
  707. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  708. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  709. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  710. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  711. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  712. package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  713. package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
  714. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.d.ts +7 -6
  715. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.d.ts.map +1 -1
  716. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js +8 -9
  717. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  718. package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
  719. package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
  720. package/lib/esm/serialization/BGFBReader.js.map +1 -1
  721. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  722. package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  723. package/lib/esm/serialization/DeepCompare.js.map +1 -1
  724. package/lib/esm/serialization/GeometrySamples.d.ts.map +1 -1
  725. package/lib/esm/serialization/GeometrySamples.js +2 -2
  726. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  727. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  728. package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
  729. package/lib/esm/solid/Box.js.map +1 -1
  730. package/lib/esm/solid/Cone.js.map +1 -1
  731. package/lib/esm/solid/LinearSweep.d.ts +2 -3
  732. package/lib/esm/solid/LinearSweep.d.ts.map +1 -1
  733. package/lib/esm/solid/LinearSweep.js +2 -3
  734. package/lib/esm/solid/LinearSweep.js.map +1 -1
  735. package/lib/esm/solid/RotationalSweep.d.ts +2 -2
  736. package/lib/esm/solid/RotationalSweep.js +2 -2
  737. package/lib/esm/solid/RotationalSweep.js.map +1 -1
  738. package/lib/esm/solid/RuledSweep.js.map +1 -1
  739. package/lib/esm/solid/SolidPrimitive.js.map +1 -1
  740. package/lib/esm/solid/Sphere.js.map +1 -1
  741. package/lib/esm/solid/SweepContour.js.map +1 -1
  742. package/lib/esm/solid/TorusPipe.js.map +1 -1
  743. package/lib/esm/topology/ChainMerge.d.ts +1 -1
  744. package/lib/esm/topology/ChainMerge.js +1 -1
  745. package/lib/esm/topology/ChainMerge.js.map +1 -1
  746. package/lib/esm/topology/Graph.js.map +1 -1
  747. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  748. package/lib/esm/topology/HalfEdgeGraphSearch.d.ts +1 -0
  749. package/lib/esm/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
  750. package/lib/esm/topology/HalfEdgeGraphSearch.js +1 -0
  751. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  752. package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  753. package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
  754. package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
  755. package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  756. package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  757. package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
  758. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
  759. package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
  760. package/lib/esm/topology/MaskManager.js.map +1 -1
  761. package/lib/esm/topology/Merging.d.ts +0 -1
  762. package/lib/esm/topology/Merging.d.ts.map +1 -1
  763. package/lib/esm/topology/Merging.js +49 -46
  764. package/lib/esm/topology/Merging.js.map +1 -1
  765. package/lib/esm/topology/RegularizeFace.js.map +1 -1
  766. package/lib/esm/topology/SignedDataSummary.js.map +1 -1
  767. package/lib/esm/topology/SpaceTriangulation.js.map +1 -1
  768. package/lib/esm/topology/Triangulation.js.map +1 -1
  769. package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
  770. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"Point4d.d.ts","sourceRoot":"","sources":["../../../src/geometry4d/Point4d.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Point4d.d.ts","sourceRoot":"","sources":["../../../src/geometry4d/Point4d.ts"],"names":[],"mappings":"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"}
@@ -114,11 +114,11 @@ class Point4d extends Plane3d_1.Plane3d {
114
114
  return result;
115
115
  }
116
116
  /** Near-equality test, using `Geometry.isSameCoordinate` on all 4 x,y,z,w */
117
- isAlmostEqual(other) {
118
- return Geometry_1.Geometry.isSameCoordinate(this.x, other.x)
119
- && Geometry_1.Geometry.isSameCoordinate(this.y, other.y)
120
- && Geometry_1.Geometry.isSameCoordinate(this.z, other.z)
121
- && Geometry_1.Geometry.isSameCoordinate(this.w, other.w);
117
+ isAlmostEqual(other, tolerance = Geometry_1.Geometry.smallMetricDistance) {
118
+ return Geometry_1.Geometry.isSameCoordinate(this.x, other.x, tolerance)
119
+ && Geometry_1.Geometry.isSameCoordinate(this.y, other.y, tolerance)
120
+ && Geometry_1.Geometry.isSameCoordinate(this.z, other.z, tolerance)
121
+ && Geometry_1.Geometry.isSameCoordinate(this.w, other.w, tolerance);
122
122
  }
123
123
  /**
124
124
  * Test for same coordinate by direct x,y,z,w args
@@ -127,11 +127,11 @@ class Point4d extends Plane3d_1.Plane3d {
127
127
  * @param z z to test
128
128
  * @param w w to test
129
129
  */
130
- isAlmostEqualXYZW(x, y, z, w) {
131
- return Geometry_1.Geometry.isSameCoordinate(this.x, x)
132
- && Geometry_1.Geometry.isSameCoordinate(this.y, y)
133
- && Geometry_1.Geometry.isSameCoordinate(this.z, z)
134
- && Geometry_1.Geometry.isSameCoordinate(this.w, w);
130
+ isAlmostEqualXYZW(x, y, z, w, tolerance = Geometry_1.Geometry.smallMetricDistance) {
131
+ return Geometry_1.Geometry.isSameCoordinate(this.x, x, tolerance)
132
+ && Geometry_1.Geometry.isSameCoordinate(this.y, y, tolerance)
133
+ && Geometry_1.Geometry.isSameCoordinate(this.z, z, tolerance)
134
+ && Geometry_1.Geometry.isSameCoordinate(this.w, w, tolerance);
135
135
  }
136
136
  /**
137
137
  * Convert an Angle to a JSON object.
@@ -152,8 +152,7 @@ class Point4d extends Plane3d_1.Plane3d {
152
152
  distanceSquaredXYZW(other) {
153
153
  return Geometry_1.Geometry.hypotenuseSquaredXYZW(other.xyzw[0] - this.xyzw[0], other.xyzw[1] - this.xyzw[1], other.xyzw[2] - this.xyzw[2], other.xyzw[3] - this.xyzw[3]);
154
154
  }
155
- /** Return the distance between the instance and other after normalizing by weights
156
- */
155
+ /** Return the xy distance between the instance and `other` after normalizing by weights */
157
156
  realDistanceXY(other) {
158
157
  const wA = this.w;
159
158
  const wB = other.w;
@@ -161,6 +160,14 @@ class Point4d extends Plane3d_1.Plane3d {
161
160
  return undefined;
162
161
  return Geometry_1.Geometry.hypotenuseXY(other.xyzw[0] / wB - this.xyzw[0] / wA, other.xyzw[1] / wB - this.xyzw[1] / wA);
163
162
  }
163
+ /** Return the xy squared distance between the instance and `other` after normalizing by weights */
164
+ realDistanceSquaredXY(other) {
165
+ const wA = this.w;
166
+ const wB = other.w;
167
+ if (Geometry_1.Geometry.isSmallMetricDistance(wA) || Geometry_1.Geometry.isSmallMetricDistance(wB))
168
+ return undefined;
169
+ return Geometry_1.Geometry.hypotenuseSquaredXY(other.xyzw[0] / wB - this.xyzw[0] / wA, other.xyzw[1] / wB - this.xyzw[1] / wA);
170
+ }
164
171
  /** Return the largest absolute distance between corresponding components
165
172
  * * x,y,z,w all participate without normalization.
166
173
  */
@@ -366,13 +373,17 @@ class Point4d extends Plane3d_1.Plane3d {
366
373
  * * If the xyz part of `this` are all zero, (a clone of) `spacePoint` is returned.
367
374
  */
368
375
  projectPointToPlane(spacePoint, result) {
369
- const h = this.altitude(spacePoint);
376
+ return this.projectXYZToPlane(spacePoint.x, spacePoint.y, spacePoint.z, result);
377
+ }
378
+ /** Return the projection of (x,y,z) onto the plane. */
379
+ projectXYZToPlane(x, y, z, result) {
380
+ const h = this.altitudeXYZ(x, y, z);
370
381
  const nn = this.magnitudeSquaredXYZ();
371
382
  // this unusual tol is needed so that toPlane3dByOriginAndUnitNormal agrees with its original implementation
372
383
  const alpha = Geometry_1.Geometry.conditionalDivideCoordinate(-h, nn, Geometry_1.Geometry.largeFractionResult * Geometry_1.Geometry.largeFractionResult);
373
384
  if (alpha === undefined)
374
- return spacePoint.clone(result);
375
- return spacePoint.plusXYZ(alpha * this.x, alpha * this.y, alpha * this.z, result);
385
+ return Point3dVector3d_1.Point3d.create(x, y, z, result);
386
+ return Point3dVector3d_1.Point3d.create(x + alpha * this.x, y + alpha * this.y, z + alpha * this.z, result);
376
387
  }
377
388
  /** scale all components (including w!!) */
378
389
  scale(scale, result) {
@@ -1 +1 @@
1
- {"version":3,"file":"Point4d.js","sourceRoot":"","sources":["../../../src/geometry4d/Point4d.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 */\nimport { BeJSONFunctions, Geometry, PlaneAltitudeEvaluator } from \"../Geometry\";\nimport { Plane3d } from \"../geometry3d/Plane3d\";\nimport { Plane3dByOriginAndUnitNormal } from \"../geometry3d/Plane3dByOriginAndUnitNormal\";\nimport { Plane3dByOriginAndVectors } from \"../geometry3d/Plane3dByOriginAndVectors\";\nimport { Point2d } from \"../geometry3d/Point2dVector2d\";\nimport { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\nimport { Ray3d } from \"../geometry3d/Ray3d\";\nimport { XAndY, XYAndZ } from \"../geometry3d/XYZProps\";\n\n/**\n * 4d point packed in an array of 4 numbers.\n * @public\n */\nexport type Point4dProps = number[];\n/**\n *\n * @param ddg numerator second derivative\n * @param dh denominator derivative\n * @param ddh denominator second derivative\n * @param f primary function (g/h)\n * @param df derivative of (g/h)\n * @param divH = (1/h)\n * @internal\n */\nfunction quotientDerivative2(ddg: number, dh: number, ddh: number,\n f: number, df: number, divH: number): number {\n return divH * (ddg - 2.0 * df * dh - f * ddh);\n}\n\n/** 4 Dimensional point (x,y,z,w) used in perspective calculations.\n * * the coordinates are stored in a Float64Array of length 4.\n * * properties `x`, `y`, `z`, `w` access array members.\n * *\n * * The coordinates are physically stored as a single Float64Array with 4 entries. (w last)\n * *\n * @public\n */\nexport class Point4d extends Plane3d implements BeJSONFunctions {\n /** x,y,z,w are packed into a Float64Array */\n public xyzw: Float64Array;\n /** Set x,y,z,w of this point. */\n public set(x: number = 0, y: number = 0, z: number = 0, w: number = 0): Point4d {\n this.xyzw[0] = x;\n this.xyzw[1] = y;\n this.xyzw[2] = z;\n this.xyzw[3] = w;\n return this;\n }\n /** Set a component by index.\n * * No change if index is out of range.\n */\n public setComponent(index: number, value: number) {\n if (index >= 0 && index < 4) {\n this.xyzw[index] = value;\n }\n }\n /** The x component. */\n public get x() { return this.xyzw[0]; }\n public set x(val: number) { this.xyzw[0] = val; }\n /** The y component. */\n public get y() { return this.xyzw[1]; }\n public set y(val: number) { this.xyzw[1] = val; }\n /** The z component. */\n public get z() { return this.xyzw[2]; }\n public set z(val: number) { this.xyzw[2] = val; }\n /** The w component of this point. */\n public get w() { return this.xyzw[3]; }\n public set w(val: number) { this.xyzw[3] = val; }\n /** Construct from coordinates. */\n protected constructor(x: number = 0, y: number = 0, z: number = 0, w: number = 0) {\n super();\n this.xyzw = new Float64Array(4);\n this.xyzw[0] = x;\n this.xyzw[1] = y;\n this.xyzw[2] = z;\n this.xyzw[3] = w;\n }\n /** Return a Point4d with specified x,y,z,w */\n public static create(x: number = 0, y: number = 0, z: number = 0, w: number = 0, result?: Point4d): Point4d {\n return result ? result.set(x, y, z, w) : new Point4d(x, y, z, w);\n }\n /**\n * Create a \"Point4d as a plane\" from \"any\" other [[PlaneAltitudeEvaluator]] type.\n * @param source\n * @returns\n */\n public static createPlaneFrom(source: PlaneAltitudeEvaluator): Point4d | undefined {\n return new Point4d(source.normalX(), source.normalY(), source.normalZ(), source.altitudeXYZ(0, 0, 0));\n }\n /** Copy coordinates from `other`. */\n public setFrom(other: Point4d): Point4d {\n this.xyzw[0] = other.xyzw[0];\n this.xyzw[1] = other.xyzw[1];\n this.xyzw[2] = other.xyzw[2];\n this.xyzw[3] = other.xyzw[3];\n return this;\n }\n /** Clone this point */\n public clone(result?: Point4d): Point4d {\n return result ? result.setFrom(this) : new Point4d(this.xyzw[0], this.xyzw[1], this.xyzw[2], this.xyzw[3]);\n }\n /** Set this point's xyzw from a json array `[x,y,z,w]` */\n public setFromJSON(json?: Point4dProps) {\n if (Geometry.isNumberArray(json, 4))\n this.set(json[0], json[1], json[2], json[3]);\n else\n this.set(0, 0, 0, 0);\n }\n\n /** Create a new point with coordinates from a json array `[x,y,z,w]` */\n public static fromJSON(json?: Point4dProps): Point4d {\n const result = new Point4d();\n result.setFromJSON(json);\n return result;\n }\n /** Near-equality test, using `Geometry.isSameCoordinate` on all 4 x,y,z,w */\n public isAlmostEqual(other: Point4d): boolean {\n return Geometry.isSameCoordinate(this.x, other.x)\n && Geometry.isSameCoordinate(this.y, other.y)\n && Geometry.isSameCoordinate(this.z, other.z)\n && Geometry.isSameCoordinate(this.w, other.w);\n }\n /**\n * Test for same coordinate by direct x,y,z,w args\n * @param x x to test\n * @param y y to test\n * @param z z to test\n * @param w w to test\n */\n public isAlmostEqualXYZW(x: number, y: number, z: number, w: number): boolean {\n return Geometry.isSameCoordinate(this.x, x)\n && Geometry.isSameCoordinate(this.y, y)\n && Geometry.isSameCoordinate(this.z, z)\n && Geometry.isSameCoordinate(this.w, w);\n }\n\n /**\n * Convert an Angle to a JSON object.\n * @return {*} [x,y,z,w]\n */\n public toJSON(): Point4dProps {\n return [this.xyzw[0], this.xyzw[1], this.xyzw[2], this.xyzw[3]];\n }\n /** Return the 4d distance from this point to other, with all 4 components squared into the hypotenuse.\n * * x,y,z,w all participate without normalization.\n */\n public distanceXYZW(other: Point4d): number {\n return Geometry.hypotenuseXYZW(other.xyzw[0] - this.xyzw[0], other.xyzw[1] - this.xyzw[1], other.xyzw[2] - this.xyzw[2], other.xyzw[3] - this.xyzw[3]);\n }\n /** Return the squared 4d distance from this point to other, with all 4 components squared into the hypotenuse.\n * * x,y,z,w all participate without normalization.\n */\n public distanceSquaredXYZW(other: Point4d): number {\n return Geometry.hypotenuseSquaredXYZW(other.xyzw[0] - this.xyzw[0], other.xyzw[1] - this.xyzw[1], other.xyzw[2] - this.xyzw[2], other.xyzw[3] - this.xyzw[3]);\n }\n /** Return the distance between the instance and other after normalizing by weights\n */\n public realDistanceXY(other: Point4d): number | undefined {\n const wA = this.w;\n const wB = other.w;\n if (Geometry.isSmallMetricDistance(wA) || Geometry.isSmallMetricDistance(wB))\n return undefined;\n return Geometry.hypotenuseXY(other.xyzw[0] / wB - this.xyzw[0] / wA, other.xyzw[1] / wB - this.xyzw[1] / wA);\n }\n /** Return the largest absolute distance between corresponding components\n * * x,y,z,w all participate without normalization.\n */\n public maxDiff(other: Point4d): number {\n return Math.max(Math.abs(other.xyzw[0] - this.xyzw[0]), Math.abs(other.xyzw[1] - this.xyzw[1]), Math.abs(other.xyzw[2] - this.xyzw[2]), Math.abs(other.xyzw[3] - this.xyzw[3]));\n }\n /** Return the largest absolute entry of all 4 components x,y,z,w */\n public maxAbs(): number {\n return Math.max(Math.abs(this.xyzw[0]), Math.abs(this.xyzw[1]), Math.abs(this.xyzw[2]), Math.abs(this.xyzw[3]));\n }\n /** Returns the magnitude including all 4 components x,y,z,w */\n public magnitudeXYZW(): number {\n return Geometry.hypotenuseXYZW(this.xyzw[0], this.xyzw[1], this.xyzw[2], this.xyzw[3]);\n }\n /** Returns the magnitude of the leading xyz components. w is ignored. (i.e. the leading xyz are NOT divided by w.) */\n public magnitudeSquaredXYZ(): number {\n return Geometry.hypotenuseSquaredXYZ(this.xyzw[0], this.xyzw[1], this.xyzw[2]);\n }\n\n /** Return the difference (this-other) using all 4 components x,y,z,w */\n public minus(other: Point4d, result?: Point4d): Point4d {\n return Point4d.create(this.xyzw[0] - other.xyzw[0], this.xyzw[1] - other.xyzw[1], this.xyzw[2] - other.xyzw[2], this.xyzw[3] - other.xyzw[3], result);\n }\n /** Return `((other.w * this) - (this.w * other))` */\n public crossWeightedMinus(other: Point4d, result?: Vector3d): Vector3d {\n const wa = this.xyzw[3];\n const wb = other.xyzw[3];\n return Vector3d.create(wb * this.xyzw[0] - wa * other.xyzw[0], wb * this.xyzw[1] - wa * other.xyzw[1], wb * this.xyzw[2] - wa * other.xyzw[2], result);\n }\n /** Return `((other.w * this) - (this.w * other))`, with other.w known to be 1 */\n public crossWeightedMinusPoint3d(other: Point3d, result?: Vector3d): Vector3d {\n const wa = this.xyzw[3];\n return Vector3d.create(this.xyzw[0] - wa * other.x, this.xyzw[1] - wa * other.y, this.xyzw[2] - wa * other.z, result);\n }\n /** Return the sum of this and other, using all 4 components x,y,z,w */\n public plus(other: Point4d, result?: Point4d): Point4d {\n return Point4d.create(this.xyzw[0] + other.xyzw[0], this.xyzw[1] + other.xyzw[1], this.xyzw[2] + other.xyzw[2], this.xyzw[3] + other.xyzw[3], result);\n }\n /** Test if all components are nearly zero. */\n public get isAlmostZero(): boolean {\n return Geometry.isSmallMetricDistance(this.maxAbs());\n }\n /** Create a point with zero in all coordinates. */\n public static createZero(): Point4d { return new Point4d(0, 0, 0, 0); }\n /**\n * Create plane coefficients for the plane containing pointA, pointB, and 0010.\n * @param pointA first point\n * @param pointB second point\n */\n public static createPlanePointPointZ(pointA: Point4d, pointB: Point4d, result?: Point4d) {\n return Point4d.create(pointA.y * pointB.w - pointA.w * pointB.y, pointA.w * pointB.x - pointA.x * pointB.w, 0.0, pointA.x * pointB.y - pointA.y * pointB.x, result);\n }\n /**\n * extract 3 consecutive numbers from a Float64Array into the xyz values of a Point4d with w = 1.\n * @param data buffer of numbers\n * @param xIndex first index for x,y,z sequence\n */\n public static createFromPackedXYZ(data: Float64Array, xIndex: number = 0, result?: Point4d): Point4d | undefined {\n if (xIndex >= 0 && xIndex + 2 < data.length)\n return Point4d.create(data[xIndex], data[xIndex + 1], data[xIndex + 2], 1.0, result);\n return undefined;\n }\n /**\n * extract 4 consecutive numbers from a Float64Array into a Point4d.\n * @param data buffer of numbers\n * @param xIndex first index for x,y,z,w sequence\n */\n public static createFromPacked(data: Float64Array, xIndex: number = 0, result?: Point4d): Point4d | undefined {\n if (xIndex >= 0 && xIndex + 3 < data.length)\n return Point4d.create(data[xIndex], data[xIndex + 1], data[xIndex + 2], data[xIndex + 3], result);\n return undefined;\n }\n /**\n * extract 4 consecutive numbers from a Float64Array into a Point4d.\n * @param data buffer of numbers\n * @param xIndex first index for x,y,z,w sequence. Assumed to be a valid index!\n * @deprecated in 4.x. Use createFromPacked instead.\n */\n public static createFromPackedXYZW(data: Float64Array, xIndex: number = 0, result?: Point4d): Point4d {\n return Point4d.create(data[xIndex], data[xIndex + 1], data[xIndex + 2], data[xIndex + 3], result);\n }\n /** Create a `Point4d` with x,y,z from an `XYAndZ` input, and w from a separate number. */\n public static createFromPointAndWeight(xyz: XYAndZ, w: number): Point4d {\n return new Point4d(xyz.x, xyz.y, xyz.z, w);\n }\n /** Create a `Point4d` from\n * * Point2d, Point3d, or Point4d\n * * other structure with members x,y and optional z,w\n * * array of numbers\n * * default z is 0.0\n * * default w is 1.0 (array[3] can replace)\n */\n public static createFromPoint(point: XAndY | XYAndZ | Point4d | number[]): Point4d {\n if (point instanceof Point2d)\n return new Point4d(point.x, point.y, 0, 1);\n if (point instanceof Point3d)\n return new Point4d(point.x, point.y, point.z, 1);\n if (point instanceof Point4d)\n return point.clone();\n // hm ... some flavor of x,y,z subset ...\n if (Array.isArray(point)) {\n const x1 = point.length > 0 ? point[0] : 0.0;\n const y1 = point.length > 1 ? point[1] : 0.0;\n const z1 = point.length > 2 ? point[2] : 0.0;\n const w1 = point.length > 3 ? point[3] : 1.0;\n return new Point4d(x1, y1, z1, w1);\n }\n const x = point.x;\n const y = point.y;\n const z = point.hasOwnProperty(\"z\") ? (point as any).z : 0.0;\n const w = point.hasOwnProperty(\"w\") ? (point as any).w : 1.0;\n return new Point4d(x, y, z, w);\n\n }\n /** Return `point + vector * scalar` */\n public plusScaled(vector: Point4d, scaleFactor: number, result?: Point4d): Point4d {\n return Point4d.create(this.xyzw[0] + vector.xyzw[0] * scaleFactor, this.xyzw[1] + vector.xyzw[1] * scaleFactor, this.xyzw[2] + vector.xyzw[2] * scaleFactor, this.xyzw[3] + vector.xyzw[3] * scaleFactor, result);\n }\n /** Return interpolation between instance and pointB at fraction\n */\n public interpolate(fraction: number, pointB: Point4d, result?: Point4d): Point4d {\n const v = 1.0 - fraction;\n return Point4d.create(this.xyzw[0] * v + pointB.xyzw[0] * fraction, this.xyzw[1] * v + pointB.xyzw[1] * fraction, this.xyzw[2] * v + pointB.xyzw[2] * fraction, this.xyzw[3] * v + pointB.xyzw[3] * fraction, result);\n }\n /** Return `point + vectorA * scalarA + vectorB * scalarB` */\n public plus2Scaled(vectorA: Point4d, scalarA: number, vectorB: Point4d, scalarB: number, result?: Point4d): Point4d {\n return Point4d.create(this.xyzw[0] + vectorA.xyzw[0] * scalarA + vectorB.xyzw[0] * scalarB, this.xyzw[1] + vectorA.xyzw[1] * scalarA + vectorB.xyzw[1] * scalarB, this.xyzw[2] + vectorA.xyzw[2] * scalarA + vectorB.xyzw[2] * scalarB, this.xyzw[3] + vectorA.xyzw[3] * scalarA + vectorB.xyzw[3] * scalarB, result);\n }\n /** Return `point + vectorA * scalarA + vectorB * scalarB + vectorC * scalarC` */\n public plus3Scaled(vectorA: Point4d, scalarA: number, vectorB: Point4d, scalarB: number, vectorC: Point4d, scalarC: number, result?: Point4d): Point4d {\n return Point4d.create(this.xyzw[0] + vectorA.xyzw[0] * scalarA + vectorB.xyzw[0] * scalarB + vectorC.xyzw[0] * scalarC, this.xyzw[1] + vectorA.xyzw[1] * scalarA + vectorB.xyzw[1] * scalarB + vectorC.xyzw[1] * scalarC, this.xyzw[2] + vectorA.xyzw[2] * scalarA + vectorB.xyzw[2] * scalarB + vectorC.xyzw[2] * scalarC, this.xyzw[3] + vectorA.xyzw[3] * scalarA + vectorB.xyzw[3] * scalarB + vectorC.xyzw[3] * scalarC, result);\n }\n /** Return `point + vectorA * scalarA + vectorB * scalarB` */\n public static createAdd2Scaled(vectorA: Point4d, scalarA: number, vectorB: Point4d, scalarB: number, result?: Point4d): Point4d {\n return Point4d.create(vectorA.xyzw[0] * scalarA + vectorB.xyzw[0] * scalarB, vectorA.xyzw[1] * scalarA + vectorB.xyzw[1] * scalarB, vectorA.xyzw[2] * scalarA + vectorB.xyzw[2] * scalarB, vectorA.xyzw[3] * scalarA + vectorB.xyzw[3] * scalarB, result);\n }\n /** Return `point + vectorA \\ scalarA + vectorB * scalarB + vectorC * scalarC` */\n public static createAdd3Scaled(vectorA: Point4d, scalarA: number, vectorB: Point4d, scalarB: number, vectorC: Point4d, scalarC: number, result?: Point4d): Point4d {\n return Point4d.create(vectorA.xyzw[0] * scalarA + vectorB.xyzw[0] * scalarB + vectorC.xyzw[0] * scalarC, vectorA.xyzw[1] * scalarA + vectorB.xyzw[1] * scalarB + vectorC.xyzw[1] * scalarC, vectorA.xyzw[2] * scalarA + vectorB.xyzw[2] * scalarB + vectorC.xyzw[2] * scalarC, vectorA.xyzw[3] * scalarA + vectorB.xyzw[3] * scalarB + vectorC.xyzw[3] * scalarC, result);\n }\n /** Return dot product of (4d) vectors from the instance to targetA and targetB */\n public dotVectorsToTargets(targetA: Point4d, targetB: Point4d): number {\n return (targetA.xyzw[0] - this.xyzw[0]) * (targetB.xyzw[0] - this.xyzw[0]) +\n (targetA.xyzw[1] - this.xyzw[1]) * (targetB.xyzw[1] - this.xyzw[1]) +\n (targetA.xyzw[2] - this.xyzw[2]) * (targetB.xyzw[2] - this.xyzw[2]) +\n (targetA.xyzw[3] - this.xyzw[3]) * (targetB.xyzw[3] - this.xyzw[3]);\n }\n /** return (4d) dot product of the instance and other point. */\n public dotProduct(other: Point4d): number {\n return this.xyzw[0] * other.xyzw[0] + this.xyzw[1] * other.xyzw[1] + this.xyzw[2] * other.xyzw[2] + this.xyzw[3] * other.xyzw[3];\n }\n /** return (4d) dot product of the instance with xyzw */\n public dotProductXYZW(x: number, y: number, z: number, w: number): number {\n return this.xyzw[0] * x + this.xyzw[1] * y + this.xyzw[2] * z + this.xyzw[3] * w;\n }\n /** dotProduct with (point.x, point.y, point.z, 1) Used in PlaneAltitudeEvaluator interface */\n public altitude(point: Point3d): number {\n return this.xyzw[0] * point.x + this.xyzw[1] * point.y + this.xyzw[2] * point.z + this.xyzw[3];\n }\n /** dotProduct with (x, y, z, 1) Used in PlaneAltitudeEvaluator interface */\n public altitudeXYZ(x: number, y: number, z: number): number {\n return this.xyzw[0] * x + this.xyzw[1] * y + this.xyzw[2] * z + this.xyzw[3];\n }\n /** dotProduct with (point.x, point.y, point.z, point.w) Used in PlaneAltitudeEvaluator interface */\n public weightedAltitude(point: Point4d): number {\n return this.xyzw[0] * point.x + this.xyzw[1] * point.y + this.xyzw[2] * point.z + this.xyzw[3] * point.w;\n }\n /** dotProduct with (vector.x, vector.y, vector.z, 0). Used in PlaneAltitudeEvaluator interface */\n public velocity(vector: Vector3d): number {\n return this.xyzw[0] * vector.x + this.xyzw[1] * vector.y + this.xyzw[2] * vector.z;\n }\n /** dotProduct with (x,y,z, 0). Used in PlaneAltitudeEvaluator interface */\n public velocityXYZ(x: number, y: number, z: number): number {\n return this.xyzw[0] * x + this.xyzw[1] * y + this.xyzw[2] * z;\n }\n /**\n * Return the x component of the normal used to evaluate altitude.\n */\n public normalX(): number { return this.x; }\n /**\n * Return the x component of the normal used to evaluate altitude.\n */\n public normalY(): number { return this.y; }\n /**\n * Return the z component of the normal used to evaluate altitude.\n */\n public normalZ(): number { return this.z; }\n\n /** unit X vector */\n public static unitX(): Point4d { return new Point4d(1, 0, 0, 0); }\n /** unit Y vector */\n public static unitY(): Point4d { return new Point4d(0, 1, 0, 0); }\n /** unit Z vector */\n public static unitZ(): Point4d { return new Point4d(0, 0, 1, 0); }\n /** unit W vector */\n public static unitW(): Point4d { return new Point4d(0, 0, 0, 1); }\n /** Divide by denominator, but return undefined if denominator is zero. */\n public safeDivideOrNull(denominator: number, result?: Point4d): Point4d | undefined {\n if (denominator !== 0.0) {\n return this.scale(1.0 / denominator, result);\n }\n return undefined;\n }\n /**\n * * Return xyz projection of spacePoint to the plane (this Point4d is understood as plane coefficients, not point coordinates)\n * * If the xyz part of `this` are all zero, (a clone of) `spacePoint` is returned.\n */\n public projectPointToPlane(spacePoint: Point3d, result?: Point3d): Point3d {\n const h = this.altitude(spacePoint);\n const nn = this.magnitudeSquaredXYZ();\n // this unusual tol is needed so that toPlane3dByOriginAndUnitNormal agrees with its original implementation\n const alpha = Geometry.conditionalDivideCoordinate(-h, nn, Geometry.largeFractionResult * Geometry.largeFractionResult);\n if (alpha === undefined)\n return spacePoint.clone(result);\n return spacePoint.plusXYZ(alpha * this.x, alpha * this.y, alpha * this.z, result);\n }\n /** scale all components (including w!!) */\n public scale(scale: number, result?: Point4d): Point4d {\n result = result ? result : new Point4d();\n result.xyzw[0] = this.xyzw[0] * scale;\n result.xyzw[1] = this.xyzw[1] * scale;\n result.xyzw[2] = this.xyzw[2] * scale;\n result.xyzw[3] = this.xyzw[3] * scale;\n return result;\n }\n /** Negate components (including w!!) */\n public negate(result?: Point4d): Point4d {\n result = result ? result : new Point4d();\n result.xyzw[0] = -this.xyzw[0];\n result.xyzw[1] = -this.xyzw[1];\n result.xyzw[2] = -this.xyzw[2];\n result.xyzw[3] = -this.xyzw[3];\n return result;\n }\n /**\n * If `this.w` is nonzero, return a 4d point `(x/w,y/w,z/w, 1)`\n * If `this.w` is zero, return undefined.\n * @param result optional result\n */\n public normalizeWeight(result?: Point4d): Point4d | undefined {\n const mag = Geometry.correctSmallFraction(this.xyzw[3]);\n result = result ? result : new Point4d();\n return this.safeDivideOrNull(mag, result);\n }\n /**\n * If `this.w` is nonzero, return a 3d point `(x/w,y/w,z/w)`\n * If `this.w` is zero, return undefined.\n * @param result optional result\n */\n public realPoint(result?: Point3d): Point3d | undefined {\n const mag = Geometry.correctSmallFraction(this.xyzw[3]);\n if (mag === 0.0)\n return undefined;\n const a = 1.0 / mag; // in zero case everything multiplies right back to true zero.\n return Point3d.create(this.xyzw[0] * a, this.xyzw[1] * a, this.xyzw[2] * a, result);\n }\n\n /** Convert the homogeneous point to a (strongly typed) point or vector.\n * * If `this.w` is nonzero, return a Point3d `(x/w,y/w,z/w)`\n * * If `this.w` is zero, return a Vector3d `(x,y,z)`\n */\n public realPointOrVector(): Point3d | Vector3d {\n const mag = Geometry.correctSmallFraction(this.xyzw[3]);\n if (mag === 0.0)\n return Vector3d.create(this.x, this.y, this.z);\n const a = 1.0 / mag; // in zero case everything multiplies right back to true zero.\n return Point3d.create(this.x * a, this.y * a, this.z * a);\n }\n /**\n * * If w is nonzero, return Point3d with x/w,y/w,z/w.\n * * If w is zero, return 000\n * @param x x coordinate\n * @param y y coordinate\n * @param z z coordinate\n * @param w w coordinate\n * @param result optional result\n */\n public static createRealPoint3dDefault000(x: number, y: number, z: number, w: number, result?: Point3d): Point3d {\n const mag = Geometry.correctSmallFraction(w);\n const a = mag === 0 ? 0.0 : (1.0 / mag); // in zero case everything multiplies right back to true zero.\n return Point3d.create(x * a, y * a, z * a, result);\n }\n /**\n * * If w is nonzero, return Vector3d which is the derivative of the projected xyz with given w and 4d derivatives.\n * * If w is zero, return 000\n * @param x x coordinate\n * @param y y coordinate\n * @param z z coordinate\n * @param w w coordinate\n * @param dx x coordinate of derivative\n * @param dy y coordinate of derivative\n * @param dz z coordinate of derivative\n * @param dw w coordinate of derivative\n * @param result optional result\n */\n public static createRealDerivativeRay3dDefault000(x: number, y: number, z: number, w: number, dx: number, dy: number, dz: number, dw: number, result?: Ray3d): Ray3d {\n const mag = Geometry.correctSmallFraction(w);\n // real point is X/w.\n // real derivative is (X' * w - X *w) / ww, and weight is always 0 by cross products.\n const a = mag === 0 ? 0.0 : (1.0 / mag); // in zero case everything multiplies right back to true zero.\n const aa = a * a;\n return Ray3d.createXYZUVW(x * a, y * a, z * a, (dx * w - dw * x) * aa, (dy * w - dw * y) * aa, (dz * w - dw * z) * aa, result);\n }\n /**\n * * If w is nonzero, return Vector3d which is the derivative of the projected xyz with given w and 4d derivatives.\n * * If w is zero, return 000\n * @param x x coordinate\n * @param y y coordinate\n * @param z z coordinate\n * @param w w coordinate\n * @param dx x coordinate of derivative\n * @param dy y coordinate of derivative\n * @param dz z coordinate of derivative\n * @param dw w coordinate of derivative\n * @param result optional result\n */\n public static createRealDerivativePlane3dByOriginAndVectorsDefault000(x: number, y: number, z: number, w: number, dx: number, dy: number, dz: number, dw: number, ddx: number, ddy: number, ddz: number, ddw: number, result?: Plane3dByOriginAndVectors): Plane3dByOriginAndVectors {\n const mag = Geometry.correctSmallFraction(w);\n // real point is X/w.\n // real derivative is (X' * w - X *w) / ww, and weight is always 0 by cross products.\n const a = mag === 0 ? 0.0 : (1.0 / mag); // in zero case everything multiplies right back to true zero.\n const aa = a * a;\n const fx = x * a;\n const fy = y * a;\n const fz = z * a;\n const dfx = (dx * w - dw * x) * aa;\n const dfy = (dy * w - dw * y) * aa;\n const dfz = (dz * w - dw * z) * aa;\n return Plane3dByOriginAndVectors.createOriginAndVectorsXYZ(fx, fy, fz, dfx, dfy, dfz, quotientDerivative2(ddx, dw, ddw, fx, dfx, a), quotientDerivative2(ddy, dw, ddw, fy, dfy, a), quotientDerivative2(ddz, dw, ddw, fz, dfz, a), result);\n }\n /**\n * * If this.w is nonzero, return Point3d with x/w,y/w,z/w.\n * * If this.w is zero, return 000\n */\n public realPointDefault000(result?: Point3d): Point3d {\n const mag = Geometry.correctSmallFraction(this.xyzw[3]);\n if (mag === 0.0)\n return Point3d.create(0, 0, 0, result);\n result = result ? result : new Point3d();\n const a = 1.0 / mag;\n return Point3d.create(this.xyzw[0] * a, this.xyzw[1] * a, this.xyzw[2] * a, result);\n }\n /** divide all components (x,y,z,w) by the 4d magnitude.\n *\n * * This is appropriate for normalizing a quaternion\n * * Use normalizeWeight to divide by the w component.\n */\n public normalizeXYZW(result?: Point4d): Point4d | undefined {\n const mag = Geometry.correctSmallFraction(this.magnitudeXYZW());\n result = result ? result : new Point4d();\n return this.safeDivideOrNull(mag, result);\n }\n\n /**\n * Return the determinant of the 3x3 matrix using components i,j,k of the 3 inputs.\n */\n public static determinantIndexed3X3(pointA: Point4d, pointB: Point4d, pointC: Point4d, i: number, j: number, k: number) {\n return Geometry.tripleProduct(\n pointA.xyzw[i], pointA.xyzw[j], pointA.xyzw[k],\n pointB.xyzw[i], pointB.xyzw[j], pointB.xyzw[k],\n pointC.xyzw[i], pointC.xyzw[j], pointC.xyzw[k]);\n }\n /**\n * Return a Point4d perpendicular to all 3 inputs. (A higher level cross product concept)\n * @param pointA first point\n * @param pointB second point\n * @param pointC third point\n */\n public static perpendicularPoint4dPlane(pointA: Point4d, pointB: Point4d, pointC: Point4d): Point4d {\n return Point4d.create(\n Point4d.determinantIndexed3X3(pointA, pointB, pointC, 1, 2, 3),\n -Point4d.determinantIndexed3X3(pointA, pointB, pointC, 2, 3, 0),\n Point4d.determinantIndexed3X3(pointA, pointB, pointC, 3, 0, 1),\n -Point4d.determinantIndexed3X3(pointA, pointB, pointC, 0, 1, 2));\n }\n /** Treating this Point4d as plane coefficients, convert to origin and normal form. */\n public toPlane3dByOriginAndUnitNormal(result?: Plane3dByOriginAndUnitNormal): Plane3dByOriginAndUnitNormal | undefined {\n return Plane3dByOriginAndUnitNormal.createFrom(this, result);\n }\n /** Normalize so sum of squares of all 4 coordinates is 1. */\n public normalizeQuaternion() {\n const magnitude = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n\n if (magnitude > 0.0) {\n const f = 1.0 / magnitude;\n this.x *= f;\n this.y *= f;\n this.z *= f;\n this.w *= f;\n }\n return magnitude;\n }\n /** Return a (normalized) quaternion interpolated between two quaternions. */\n public static interpolateQuaternions(quaternion0: Point4d, fractionParameter: number, quaternion1: Point4d, result?: Point4d): Point4d {\n if (!result)\n result = new Point4d();\n const maxSafeCosine = 0.9995;\n\n // return exact quaternions for special values\n if (0.0 === fractionParameter) {\n result = quaternion0;\n return result;\n }\n if (1.0 === fractionParameter) {\n result = quaternion1;\n return result;\n }\n if (0.5 === fractionParameter) {\n quaternion0.plus(quaternion1, result);\n result.normalizeQuaternion();\n return result;\n }\n\n const q0 = quaternion0.clone();\n const q1 = quaternion1.clone();\n let dot = quaternion0.dotProduct(quaternion1);\n\n // prevent interpolation through the longer great arc\n if (dot < 0.0) {\n q1.negate(q1);\n dot = -dot;\n }\n\n // if nearly parallel, use interpolate and renormalize .\n if (dot > maxSafeCosine) {\n q0.interpolate(fractionParameter, q1, result);\n result.normalizeQuaternion();\n return result;\n }\n\n // safety check\n if (dot < -1.0)\n dot = -1.0;\n else if (dot > 1.0)\n dot = 1.0;\n\n // create orthonormal basis {q0, q2}\n const q2 = new Point4d();\n q1.plusScaled(q0, -dot, q2); // bsiDPoint4d_addScaledDPoint4d(& q2, & q1, & q0, -dot);\n q2.normalizeQuaternion();\n\n const angle = Math.acos(dot);\n const angleOfInterpolation = angle * fractionParameter;\n result = Point4d.createAdd2Scaled(q0, Math.cos(angleOfInterpolation), q2, Math.sin(angleOfInterpolation));\n return result;\n }\n /** Measure the \"angle\" between two points, using all 4 components in the dot product that\n * gives the cosine of the angle.\n */\n public radiansToPoint4dXYZW(other: Point4d): number | undefined {\n const magA = this.magnitudeXYZW();\n const magB = other.magnitudeXYZW();\n const dot = this.dotProduct(other); // == cos (theta) * magA * magB\n const cos = Geometry.conditionalDivideFraction(dot, magA * magB);\n if (cos === undefined)\n return undefined;\n return Math.acos(cos);\n }\n}\n"]}
1
+ {"version":3,"file":"Point4d.js","sourceRoot":"","sources":["../../../src/geometry4d/Point4d.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\nimport { BeJSONFunctions, Geometry, PlaneAltitudeEvaluator } from \"../Geometry\";\r\nimport { Plane3d } from \"../geometry3d/Plane3d\";\r\nimport { Plane3dByOriginAndUnitNormal } from \"../geometry3d/Plane3dByOriginAndUnitNormal\";\r\nimport { Plane3dByOriginAndVectors } from \"../geometry3d/Plane3dByOriginAndVectors\";\r\nimport { Point2d } from \"../geometry3d/Point2dVector2d\";\r\nimport { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\r\nimport { Ray3d } from \"../geometry3d/Ray3d\";\r\nimport { XAndY, XYAndZ } from \"../geometry3d/XYZProps\";\r\n\r\n/**\r\n * 4d point packed in an array of 4 numbers.\r\n * @public\r\n */\r\nexport type Point4dProps = number[];\r\n/**\r\n *\r\n * @param ddg numerator second derivative\r\n * @param dh denominator derivative\r\n * @param ddh denominator second derivative\r\n * @param f primary function (g/h)\r\n * @param df derivative of (g/h)\r\n * @param divH = (1/h)\r\n * @internal\r\n */\r\nfunction quotientDerivative2(ddg: number, dh: number, ddh: number,\r\n f: number, df: number, divH: number): number {\r\n return divH * (ddg - 2.0 * df * dh - f * ddh);\r\n}\r\n\r\n/** 4 Dimensional point (x,y,z,w) used in perspective calculations.\r\n * * the coordinates are stored in a Float64Array of length 4.\r\n * * properties `x`, `y`, `z`, `w` access array members.\r\n * *\r\n * * The coordinates are physically stored as a single Float64Array with 4 entries. (w last)\r\n * *\r\n * @public\r\n */\r\nexport class Point4d extends Plane3d implements BeJSONFunctions {\r\n /** x,y,z,w are packed into a Float64Array */\r\n public xyzw: Float64Array;\r\n /** Set x,y,z,w of this point. */\r\n public set(x: number = 0, y: number = 0, z: number = 0, w: number = 0): Point4d {\r\n this.xyzw[0] = x;\r\n this.xyzw[1] = y;\r\n this.xyzw[2] = z;\r\n this.xyzw[3] = w;\r\n return this;\r\n }\r\n /** Set a component by index.\r\n * * No change if index is out of range.\r\n */\r\n public setComponent(index: number, value: number) {\r\n if (index >= 0 && index < 4) {\r\n this.xyzw[index] = value;\r\n }\r\n }\r\n /** The x component. */\r\n public get x() { return this.xyzw[0]; }\r\n public set x(val: number) { this.xyzw[0] = val; }\r\n /** The y component. */\r\n public get y() { return this.xyzw[1]; }\r\n public set y(val: number) { this.xyzw[1] = val; }\r\n /** The z component. */\r\n public get z() { return this.xyzw[2]; }\r\n public set z(val: number) { this.xyzw[2] = val; }\r\n /** The w component of this point. */\r\n public get w() { return this.xyzw[3]; }\r\n public set w(val: number) { this.xyzw[3] = val; }\r\n /** Construct from coordinates. */\r\n protected constructor(x: number = 0, y: number = 0, z: number = 0, w: number = 0) {\r\n super();\r\n this.xyzw = new Float64Array(4);\r\n this.xyzw[0] = x;\r\n this.xyzw[1] = y;\r\n this.xyzw[2] = z;\r\n this.xyzw[3] = w;\r\n }\r\n /** Return a Point4d with specified x,y,z,w */\r\n public static create(x: number = 0, y: number = 0, z: number = 0, w: number = 0, result?: Point4d): Point4d {\r\n return result ? result.set(x, y, z, w) : new Point4d(x, y, z, w);\r\n }\r\n /**\r\n * Create a \"Point4d as a plane\" from \"any\" other [[PlaneAltitudeEvaluator]] type.\r\n * @param source\r\n * @returns\r\n */\r\n public static createPlaneFrom(source: PlaneAltitudeEvaluator): Point4d | undefined {\r\n return new Point4d(source.normalX(), source.normalY(), source.normalZ(), source.altitudeXYZ(0, 0, 0));\r\n }\r\n /** Copy coordinates from `other`. */\r\n public setFrom(other: Point4d): Point4d {\r\n this.xyzw[0] = other.xyzw[0];\r\n this.xyzw[1] = other.xyzw[1];\r\n this.xyzw[2] = other.xyzw[2];\r\n this.xyzw[3] = other.xyzw[3];\r\n return this;\r\n }\r\n /** Clone this point */\r\n public clone(result?: Point4d): Point4d {\r\n return result ? result.setFrom(this) : new Point4d(this.xyzw[0], this.xyzw[1], this.xyzw[2], this.xyzw[3]);\r\n }\r\n /** Set this point's xyzw from a json array `[x,y,z,w]` */\r\n public setFromJSON(json?: Point4dProps) {\r\n if (Geometry.isNumberArray(json, 4))\r\n this.set(json[0], json[1], json[2], json[3]);\r\n else\r\n this.set(0, 0, 0, 0);\r\n }\r\n\r\n /** Create a new point with coordinates from a json array `[x,y,z,w]` */\r\n public static fromJSON(json?: Point4dProps): Point4d {\r\n const result = new Point4d();\r\n result.setFromJSON(json);\r\n return result;\r\n }\r\n /** Near-equality test, using `Geometry.isSameCoordinate` on all 4 x,y,z,w */\r\n public isAlmostEqual(other: Point4d, tolerance: number = Geometry.smallMetricDistance): boolean {\r\n return Geometry.isSameCoordinate(this.x, other.x, tolerance)\r\n && Geometry.isSameCoordinate(this.y, other.y, tolerance)\r\n && Geometry.isSameCoordinate(this.z, other.z, tolerance)\r\n && Geometry.isSameCoordinate(this.w, other.w, tolerance);\r\n }\r\n /**\r\n * Test for same coordinate by direct x,y,z,w args\r\n * @param x x to test\r\n * @param y y to test\r\n * @param z z to test\r\n * @param w w to test\r\n */\r\n public isAlmostEqualXYZW(x: number, y: number, z: number, w: number, tolerance: number = Geometry.smallMetricDistance): boolean {\r\n return Geometry.isSameCoordinate(this.x, x, tolerance)\r\n && Geometry.isSameCoordinate(this.y, y, tolerance)\r\n && Geometry.isSameCoordinate(this.z, z, tolerance)\r\n && Geometry.isSameCoordinate(this.w, w, tolerance);\r\n }\r\n\r\n /**\r\n * Convert an Angle to a JSON object.\r\n * @return {*} [x,y,z,w]\r\n */\r\n public toJSON(): Point4dProps {\r\n return [this.xyzw[0], this.xyzw[1], this.xyzw[2], this.xyzw[3]];\r\n }\r\n /** Return the 4d distance from this point to other, with all 4 components squared into the hypotenuse.\r\n * * x,y,z,w all participate without normalization.\r\n */\r\n public distanceXYZW(other: Point4d): number {\r\n return Geometry.hypotenuseXYZW(other.xyzw[0] - this.xyzw[0], other.xyzw[1] - this.xyzw[1], other.xyzw[2] - this.xyzw[2], other.xyzw[3] - this.xyzw[3]);\r\n }\r\n /** Return the squared 4d distance from this point to other, with all 4 components squared into the hypotenuse.\r\n * * x,y,z,w all participate without normalization.\r\n */\r\n public distanceSquaredXYZW(other: Point4d): number {\r\n return Geometry.hypotenuseSquaredXYZW(other.xyzw[0] - this.xyzw[0], other.xyzw[1] - this.xyzw[1], other.xyzw[2] - this.xyzw[2], other.xyzw[3] - this.xyzw[3]);\r\n }\r\n /** Return the xy distance between the instance and `other` after normalizing by weights */\r\n public realDistanceXY(other: Point4d): number | undefined {\r\n const wA = this.w;\r\n const wB = other.w;\r\n if (Geometry.isSmallMetricDistance(wA) || Geometry.isSmallMetricDistance(wB))\r\n return undefined;\r\n return Geometry.hypotenuseXY(other.xyzw[0] / wB - this.xyzw[0] / wA, other.xyzw[1] / wB - this.xyzw[1] / wA);\r\n }\r\n /** Return the xy squared distance between the instance and `other` after normalizing by weights */\r\n public realDistanceSquaredXY(other: Point4d): number | undefined {\r\n const wA = this.w;\r\n const wB = other.w;\r\n if (Geometry.isSmallMetricDistance(wA) || Geometry.isSmallMetricDistance(wB))\r\n return undefined;\r\n return Geometry.hypotenuseSquaredXY(other.xyzw[0] / wB - this.xyzw[0] / wA, other.xyzw[1] / wB - this.xyzw[1] / wA);\r\n }\r\n /** Return the largest absolute distance between corresponding components\r\n * * x,y,z,w all participate without normalization.\r\n */\r\n public maxDiff(other: Point4d): number {\r\n return Math.max(Math.abs(other.xyzw[0] - this.xyzw[0]), Math.abs(other.xyzw[1] - this.xyzw[1]), Math.abs(other.xyzw[2] - this.xyzw[2]), Math.abs(other.xyzw[3] - this.xyzw[3]));\r\n }\r\n /** Return the largest absolute entry of all 4 components x,y,z,w */\r\n public maxAbs(): number {\r\n return Math.max(Math.abs(this.xyzw[0]), Math.abs(this.xyzw[1]), Math.abs(this.xyzw[2]), Math.abs(this.xyzw[3]));\r\n }\r\n /** Returns the magnitude including all 4 components x,y,z,w */\r\n public magnitudeXYZW(): number {\r\n return Geometry.hypotenuseXYZW(this.xyzw[0], this.xyzw[1], this.xyzw[2], this.xyzw[3]);\r\n }\r\n /** Returns the magnitude of the leading xyz components. w is ignored. (i.e. the leading xyz are NOT divided by w.) */\r\n public magnitudeSquaredXYZ(): number {\r\n return Geometry.hypotenuseSquaredXYZ(this.xyzw[0], this.xyzw[1], this.xyzw[2]);\r\n }\r\n\r\n /** Return the difference (this-other) using all 4 components x,y,z,w */\r\n public minus(other: Point4d, result?: Point4d): Point4d {\r\n return Point4d.create(this.xyzw[0] - other.xyzw[0], this.xyzw[1] - other.xyzw[1], this.xyzw[2] - other.xyzw[2], this.xyzw[3] - other.xyzw[3], result);\r\n }\r\n /** Return `((other.w * this) - (this.w * other))` */\r\n public crossWeightedMinus(other: Point4d, result?: Vector3d): Vector3d {\r\n const wa = this.xyzw[3];\r\n const wb = other.xyzw[3];\r\n return Vector3d.create(wb * this.xyzw[0] - wa * other.xyzw[0], wb * this.xyzw[1] - wa * other.xyzw[1], wb * this.xyzw[2] - wa * other.xyzw[2], result);\r\n }\r\n /** Return `((other.w * this) - (this.w * other))`, with other.w known to be 1 */\r\n public crossWeightedMinusPoint3d(other: Point3d, result?: Vector3d): Vector3d {\r\n const wa = this.xyzw[3];\r\n return Vector3d.create(this.xyzw[0] - wa * other.x, this.xyzw[1] - wa * other.y, this.xyzw[2] - wa * other.z, result);\r\n }\r\n /** Return the sum of this and other, using all 4 components x,y,z,w */\r\n public plus(other: Point4d, result?: Point4d): Point4d {\r\n return Point4d.create(this.xyzw[0] + other.xyzw[0], this.xyzw[1] + other.xyzw[1], this.xyzw[2] + other.xyzw[2], this.xyzw[3] + other.xyzw[3], result);\r\n }\r\n /** Test if all components are nearly zero. */\r\n public get isAlmostZero(): boolean {\r\n return Geometry.isSmallMetricDistance(this.maxAbs());\r\n }\r\n /** Create a point with zero in all coordinates. */\r\n public static createZero(): Point4d { return new Point4d(0, 0, 0, 0); }\r\n /**\r\n * Create plane coefficients for the plane containing pointA, pointB, and 0010.\r\n * @param pointA first point\r\n * @param pointB second point\r\n */\r\n public static createPlanePointPointZ(pointA: Point4d, pointB: Point4d, result?: Point4d) {\r\n return Point4d.create(pointA.y * pointB.w - pointA.w * pointB.y, pointA.w * pointB.x - pointA.x * pointB.w, 0.0, pointA.x * pointB.y - pointA.y * pointB.x, result);\r\n }\r\n /**\r\n * extract 3 consecutive numbers from a Float64Array into the xyz values of a Point4d with w = 1.\r\n * @param data buffer of numbers\r\n * @param xIndex first index for x,y,z sequence\r\n */\r\n public static createFromPackedXYZ(data: Float64Array, xIndex: number = 0, result?: Point4d): Point4d | undefined {\r\n if (xIndex >= 0 && xIndex + 2 < data.length)\r\n return Point4d.create(data[xIndex], data[xIndex + 1], data[xIndex + 2], 1.0, result);\r\n return undefined;\r\n }\r\n /**\r\n * extract 4 consecutive numbers from a Float64Array into a Point4d.\r\n * @param data buffer of numbers\r\n * @param xIndex first index for x,y,z,w sequence\r\n */\r\n public static createFromPacked(data: Float64Array, xIndex: number = 0, result?: Point4d): Point4d | undefined {\r\n if (xIndex >= 0 && xIndex + 3 < data.length)\r\n return Point4d.create(data[xIndex], data[xIndex + 1], data[xIndex + 2], data[xIndex + 3], result);\r\n return undefined;\r\n }\r\n /**\r\n * extract 4 consecutive numbers from a Float64Array into a Point4d.\r\n * @param data buffer of numbers\r\n * @param xIndex first index for x,y,z,w sequence. Assumed to be a valid index!\r\n * @deprecated in 4.x. Use createFromPacked instead.\r\n */\r\n public static createFromPackedXYZW(data: Float64Array, xIndex: number = 0, result?: Point4d): Point4d {\r\n return Point4d.create(data[xIndex], data[xIndex + 1], data[xIndex + 2], data[xIndex + 3], result);\r\n }\r\n /** Create a `Point4d` with x,y,z from an `XYAndZ` input, and w from a separate number. */\r\n public static createFromPointAndWeight(xyz: XYAndZ, w: number): Point4d {\r\n return new Point4d(xyz.x, xyz.y, xyz.z, w);\r\n }\r\n /** Create a `Point4d` from\r\n * * Point2d, Point3d, or Point4d\r\n * * other structure with members x,y and optional z,w\r\n * * array of numbers\r\n * * default z is 0.0\r\n * * default w is 1.0 (array[3] can replace)\r\n */\r\n public static createFromPoint(point: XAndY | XYAndZ | Point4d | number[]): Point4d {\r\n if (point instanceof Point2d)\r\n return new Point4d(point.x, point.y, 0, 1);\r\n if (point instanceof Point3d)\r\n return new Point4d(point.x, point.y, point.z, 1);\r\n if (point instanceof Point4d)\r\n return point.clone();\r\n // hm ... some flavor of x,y,z subset ...\r\n if (Array.isArray(point)) {\r\n const x1 = point.length > 0 ? point[0] : 0.0;\r\n const y1 = point.length > 1 ? point[1] : 0.0;\r\n const z1 = point.length > 2 ? point[2] : 0.0;\r\n const w1 = point.length > 3 ? point[3] : 1.0;\r\n return new Point4d(x1, y1, z1, w1);\r\n }\r\n const x = point.x;\r\n const y = point.y;\r\n const z = point.hasOwnProperty(\"z\") ? (point as any).z : 0.0;\r\n const w = point.hasOwnProperty(\"w\") ? (point as any).w : 1.0;\r\n return new Point4d(x, y, z, w);\r\n\r\n }\r\n /** Return `point + vector * scalar` */\r\n public plusScaled(vector: Point4d, scaleFactor: number, result?: Point4d): Point4d {\r\n return Point4d.create(this.xyzw[0] + vector.xyzw[0] * scaleFactor, this.xyzw[1] + vector.xyzw[1] * scaleFactor, this.xyzw[2] + vector.xyzw[2] * scaleFactor, this.xyzw[3] + vector.xyzw[3] * scaleFactor, result);\r\n }\r\n /** Return interpolation between instance and pointB at fraction\r\n */\r\n public interpolate(fraction: number, pointB: Point4d, result?: Point4d): Point4d {\r\n const v = 1.0 - fraction;\r\n return Point4d.create(this.xyzw[0] * v + pointB.xyzw[0] * fraction, this.xyzw[1] * v + pointB.xyzw[1] * fraction, this.xyzw[2] * v + pointB.xyzw[2] * fraction, this.xyzw[3] * v + pointB.xyzw[3] * fraction, result);\r\n }\r\n /** Return `point + vectorA * scalarA + vectorB * scalarB` */\r\n public plus2Scaled(vectorA: Point4d, scalarA: number, vectorB: Point4d, scalarB: number, result?: Point4d): Point4d {\r\n return Point4d.create(this.xyzw[0] + vectorA.xyzw[0] * scalarA + vectorB.xyzw[0] * scalarB, this.xyzw[1] + vectorA.xyzw[1] * scalarA + vectorB.xyzw[1] * scalarB, this.xyzw[2] + vectorA.xyzw[2] * scalarA + vectorB.xyzw[2] * scalarB, this.xyzw[3] + vectorA.xyzw[3] * scalarA + vectorB.xyzw[3] * scalarB, result);\r\n }\r\n /** Return `point + vectorA * scalarA + vectorB * scalarB + vectorC * scalarC` */\r\n public plus3Scaled(vectorA: Point4d, scalarA: number, vectorB: Point4d, scalarB: number, vectorC: Point4d, scalarC: number, result?: Point4d): Point4d {\r\n return Point4d.create(this.xyzw[0] + vectorA.xyzw[0] * scalarA + vectorB.xyzw[0] * scalarB + vectorC.xyzw[0] * scalarC, this.xyzw[1] + vectorA.xyzw[1] * scalarA + vectorB.xyzw[1] * scalarB + vectorC.xyzw[1] * scalarC, this.xyzw[2] + vectorA.xyzw[2] * scalarA + vectorB.xyzw[2] * scalarB + vectorC.xyzw[2] * scalarC, this.xyzw[3] + vectorA.xyzw[3] * scalarA + vectorB.xyzw[3] * scalarB + vectorC.xyzw[3] * scalarC, result);\r\n }\r\n /** Return `point + vectorA * scalarA + vectorB * scalarB` */\r\n public static createAdd2Scaled(vectorA: Point4d, scalarA: number, vectorB: Point4d, scalarB: number, result?: Point4d): Point4d {\r\n return Point4d.create(vectorA.xyzw[0] * scalarA + vectorB.xyzw[0] * scalarB, vectorA.xyzw[1] * scalarA + vectorB.xyzw[1] * scalarB, vectorA.xyzw[2] * scalarA + vectorB.xyzw[2] * scalarB, vectorA.xyzw[3] * scalarA + vectorB.xyzw[3] * scalarB, result);\r\n }\r\n /** Return `point + vectorA \\ scalarA + vectorB * scalarB + vectorC * scalarC` */\r\n public static createAdd3Scaled(vectorA: Point4d, scalarA: number, vectorB: Point4d, scalarB: number, vectorC: Point4d, scalarC: number, result?: Point4d): Point4d {\r\n return Point4d.create(vectorA.xyzw[0] * scalarA + vectorB.xyzw[0] * scalarB + vectorC.xyzw[0] * scalarC, vectorA.xyzw[1] * scalarA + vectorB.xyzw[1] * scalarB + vectorC.xyzw[1] * scalarC, vectorA.xyzw[2] * scalarA + vectorB.xyzw[2] * scalarB + vectorC.xyzw[2] * scalarC, vectorA.xyzw[3] * scalarA + vectorB.xyzw[3] * scalarB + vectorC.xyzw[3] * scalarC, result);\r\n }\r\n /** Return dot product of (4d) vectors from the instance to targetA and targetB */\r\n public dotVectorsToTargets(targetA: Point4d, targetB: Point4d): number {\r\n return (targetA.xyzw[0] - this.xyzw[0]) * (targetB.xyzw[0] - this.xyzw[0]) +\r\n (targetA.xyzw[1] - this.xyzw[1]) * (targetB.xyzw[1] - this.xyzw[1]) +\r\n (targetA.xyzw[2] - this.xyzw[2]) * (targetB.xyzw[2] - this.xyzw[2]) +\r\n (targetA.xyzw[3] - this.xyzw[3]) * (targetB.xyzw[3] - this.xyzw[3]);\r\n }\r\n /** return (4d) dot product of the instance and other point. */\r\n public dotProduct(other: Point4d): number {\r\n return this.xyzw[0] * other.xyzw[0] + this.xyzw[1] * other.xyzw[1] + this.xyzw[2] * other.xyzw[2] + this.xyzw[3] * other.xyzw[3];\r\n }\r\n /** return (4d) dot product of the instance with xyzw */\r\n public dotProductXYZW(x: number, y: number, z: number, w: number): number {\r\n return this.xyzw[0] * x + this.xyzw[1] * y + this.xyzw[2] * z + this.xyzw[3] * w;\r\n }\r\n /** dotProduct with (point.x, point.y, point.z, 1) Used in PlaneAltitudeEvaluator interface */\r\n public altitude(point: Point3d): number {\r\n return this.xyzw[0] * point.x + this.xyzw[1] * point.y + this.xyzw[2] * point.z + this.xyzw[3];\r\n }\r\n /** dotProduct with (x, y, z, 1) Used in PlaneAltitudeEvaluator interface */\r\n public altitudeXYZ(x: number, y: number, z: number): number {\r\n return this.xyzw[0] * x + this.xyzw[1] * y + this.xyzw[2] * z + this.xyzw[3];\r\n }\r\n /** dotProduct with (point.x, point.y, point.z, point.w) Used in PlaneAltitudeEvaluator interface */\r\n public weightedAltitude(point: Point4d): number {\r\n return this.xyzw[0] * point.x + this.xyzw[1] * point.y + this.xyzw[2] * point.z + this.xyzw[3] * point.w;\r\n }\r\n /** dotProduct with (vector.x, vector.y, vector.z, 0). Used in PlaneAltitudeEvaluator interface */\r\n public velocity(vector: Vector3d): number {\r\n return this.xyzw[0] * vector.x + this.xyzw[1] * vector.y + this.xyzw[2] * vector.z;\r\n }\r\n /** dotProduct with (x,y,z, 0). Used in PlaneAltitudeEvaluator interface */\r\n public velocityXYZ(x: number, y: number, z: number): number {\r\n return this.xyzw[0] * x + this.xyzw[1] * y + this.xyzw[2] * z;\r\n }\r\n /**\r\n * Return the x component of the normal used to evaluate altitude.\r\n */\r\n public normalX(): number { return this.x; }\r\n /**\r\n * Return the x component of the normal used to evaluate altitude.\r\n */\r\n public normalY(): number { return this.y; }\r\n /**\r\n * Return the z component of the normal used to evaluate altitude.\r\n */\r\n public normalZ(): number { return this.z; }\r\n\r\n /** unit X vector */\r\n public static unitX(): Point4d { return new Point4d(1, 0, 0, 0); }\r\n /** unit Y vector */\r\n public static unitY(): Point4d { return new Point4d(0, 1, 0, 0); }\r\n /** unit Z vector */\r\n public static unitZ(): Point4d { return new Point4d(0, 0, 1, 0); }\r\n /** unit W vector */\r\n public static unitW(): Point4d { return new Point4d(0, 0, 0, 1); }\r\n /** Divide by denominator, but return undefined if denominator is zero. */\r\n public safeDivideOrNull(denominator: number, result?: Point4d): Point4d | undefined {\r\n if (denominator !== 0.0) {\r\n return this.scale(1.0 / denominator, result);\r\n }\r\n return undefined;\r\n }\r\n /**\r\n * * Return xyz projection of spacePoint to the plane (this Point4d is understood as plane coefficients, not point coordinates)\r\n * * If the xyz part of `this` are all zero, (a clone of) `spacePoint` is returned.\r\n */\r\n public projectPointToPlane(spacePoint: Point3d, result?: Point3d): Point3d {\r\n return this.projectXYZToPlane(spacePoint.x, spacePoint.y, spacePoint.z, result);\r\n }\r\n /** Return the projection of (x,y,z) onto the plane. */\r\n public override projectXYZToPlane(x: number, y: number, z: number, result?: Point3d): Point3d {\r\n const h = this.altitudeXYZ(x, y, z);\r\n const nn = this.magnitudeSquaredXYZ();\r\n // this unusual tol is needed so that toPlane3dByOriginAndUnitNormal agrees with its original implementation\r\n const alpha = Geometry.conditionalDivideCoordinate(-h, nn, Geometry.largeFractionResult * Geometry.largeFractionResult);\r\n if (alpha === undefined)\r\n return Point3d.create(x, y, z, result);\r\n return Point3d.create(x + alpha * this.x, y + alpha * this.y, z + alpha * this.z, result);\r\n }\r\n /** scale all components (including w!!) */\r\n public scale(scale: number, result?: Point4d): Point4d {\r\n result = result ? result : new Point4d();\r\n result.xyzw[0] = this.xyzw[0] * scale;\r\n result.xyzw[1] = this.xyzw[1] * scale;\r\n result.xyzw[2] = this.xyzw[2] * scale;\r\n result.xyzw[3] = this.xyzw[3] * scale;\r\n return result;\r\n }\r\n /** Negate components (including w!!) */\r\n public negate(result?: Point4d): Point4d {\r\n result = result ? result : new Point4d();\r\n result.xyzw[0] = -this.xyzw[0];\r\n result.xyzw[1] = -this.xyzw[1];\r\n result.xyzw[2] = -this.xyzw[2];\r\n result.xyzw[3] = -this.xyzw[3];\r\n return result;\r\n }\r\n /**\r\n * If `this.w` is nonzero, return a 4d point `(x/w,y/w,z/w, 1)`\r\n * If `this.w` is zero, return undefined.\r\n * @param result optional result\r\n */\r\n public normalizeWeight(result?: Point4d): Point4d | undefined {\r\n const mag = Geometry.correctSmallFraction(this.xyzw[3]);\r\n result = result ? result : new Point4d();\r\n return this.safeDivideOrNull(mag, result);\r\n }\r\n /**\r\n * If `this.w` is nonzero, return a 3d point `(x/w,y/w,z/w)`\r\n * If `this.w` is zero, return undefined.\r\n * @param result optional result\r\n */\r\n public realPoint(result?: Point3d): Point3d | undefined {\r\n const mag = Geometry.correctSmallFraction(this.xyzw[3]);\r\n if (mag === 0.0)\r\n return undefined;\r\n const a = 1.0 / mag; // in zero case everything multiplies right back to true zero.\r\n return Point3d.create(this.xyzw[0] * a, this.xyzw[1] * a, this.xyzw[2] * a, result);\r\n }\r\n\r\n /** Convert the homogeneous point to a (strongly typed) point or vector.\r\n * * If `this.w` is nonzero, return a Point3d `(x/w,y/w,z/w)`\r\n * * If `this.w` is zero, return a Vector3d `(x,y,z)`\r\n */\r\n public realPointOrVector(): Point3d | Vector3d {\r\n const mag = Geometry.correctSmallFraction(this.xyzw[3]);\r\n if (mag === 0.0)\r\n return Vector3d.create(this.x, this.y, this.z);\r\n const a = 1.0 / mag; // in zero case everything multiplies right back to true zero.\r\n return Point3d.create(this.x * a, this.y * a, this.z * a);\r\n }\r\n /**\r\n * * If w is nonzero, return Point3d with x/w,y/w,z/w.\r\n * * If w is zero, return 000\r\n * @param x x coordinate\r\n * @param y y coordinate\r\n * @param z z coordinate\r\n * @param w w coordinate\r\n * @param result optional result\r\n */\r\n public static createRealPoint3dDefault000(x: number, y: number, z: number, w: number, result?: Point3d): Point3d {\r\n const mag = Geometry.correctSmallFraction(w);\r\n const a = mag === 0 ? 0.0 : (1.0 / mag); // in zero case everything multiplies right back to true zero.\r\n return Point3d.create(x * a, y * a, z * a, result);\r\n }\r\n /**\r\n * * If w is nonzero, return Vector3d which is the derivative of the projected xyz with given w and 4d derivatives.\r\n * * If w is zero, return 000\r\n * @param x x coordinate\r\n * @param y y coordinate\r\n * @param z z coordinate\r\n * @param w w coordinate\r\n * @param dx x coordinate of derivative\r\n * @param dy y coordinate of derivative\r\n * @param dz z coordinate of derivative\r\n * @param dw w coordinate of derivative\r\n * @param result optional result\r\n */\r\n public static createRealDerivativeRay3dDefault000(x: number, y: number, z: number, w: number, dx: number, dy: number, dz: number, dw: number, result?: Ray3d): Ray3d {\r\n const mag = Geometry.correctSmallFraction(w);\r\n // real point is X/w.\r\n // real derivative is (X' * w - X *w) / ww, and weight is always 0 by cross products.\r\n const a = mag === 0 ? 0.0 : (1.0 / mag); // in zero case everything multiplies right back to true zero.\r\n const aa = a * a;\r\n return Ray3d.createXYZUVW(x * a, y * a, z * a, (dx * w - dw * x) * aa, (dy * w - dw * y) * aa, (dz * w - dw * z) * aa, result);\r\n }\r\n /**\r\n * * If w is nonzero, return Vector3d which is the derivative of the projected xyz with given w and 4d derivatives.\r\n * * If w is zero, return 000\r\n * @param x x coordinate\r\n * @param y y coordinate\r\n * @param z z coordinate\r\n * @param w w coordinate\r\n * @param dx x coordinate of derivative\r\n * @param dy y coordinate of derivative\r\n * @param dz z coordinate of derivative\r\n * @param dw w coordinate of derivative\r\n * @param result optional result\r\n */\r\n public static createRealDerivativePlane3dByOriginAndVectorsDefault000(x: number, y: number, z: number, w: number, dx: number, dy: number, dz: number, dw: number, ddx: number, ddy: number, ddz: number, ddw: number, result?: Plane3dByOriginAndVectors): Plane3dByOriginAndVectors {\r\n const mag = Geometry.correctSmallFraction(w);\r\n // real point is X/w.\r\n // real derivative is (X' * w - X *w) / ww, and weight is always 0 by cross products.\r\n const a = mag === 0 ? 0.0 : (1.0 / mag); // in zero case everything multiplies right back to true zero.\r\n const aa = a * a;\r\n const fx = x * a;\r\n const fy = y * a;\r\n const fz = z * a;\r\n const dfx = (dx * w - dw * x) * aa;\r\n const dfy = (dy * w - dw * y) * aa;\r\n const dfz = (dz * w - dw * z) * aa;\r\n return Plane3dByOriginAndVectors.createOriginAndVectorsXYZ(fx, fy, fz, dfx, dfy, dfz, quotientDerivative2(ddx, dw, ddw, fx, dfx, a), quotientDerivative2(ddy, dw, ddw, fy, dfy, a), quotientDerivative2(ddz, dw, ddw, fz, dfz, a), result);\r\n }\r\n /**\r\n * * If this.w is nonzero, return Point3d with x/w,y/w,z/w.\r\n * * If this.w is zero, return 000\r\n */\r\n public realPointDefault000(result?: Point3d): Point3d {\r\n const mag = Geometry.correctSmallFraction(this.xyzw[3]);\r\n if (mag === 0.0)\r\n return Point3d.create(0, 0, 0, result);\r\n result = result ? result : new Point3d();\r\n const a = 1.0 / mag;\r\n return Point3d.create(this.xyzw[0] * a, this.xyzw[1] * a, this.xyzw[2] * a, result);\r\n }\r\n /** divide all components (x,y,z,w) by the 4d magnitude.\r\n *\r\n * * This is appropriate for normalizing a quaternion\r\n * * Use normalizeWeight to divide by the w component.\r\n */\r\n public normalizeXYZW(result?: Point4d): Point4d | undefined {\r\n const mag = Geometry.correctSmallFraction(this.magnitudeXYZW());\r\n result = result ? result : new Point4d();\r\n return this.safeDivideOrNull(mag, result);\r\n }\r\n\r\n /**\r\n * Return the determinant of the 3x3 matrix using components i,j,k of the 3 inputs.\r\n */\r\n public static determinantIndexed3X3(pointA: Point4d, pointB: Point4d, pointC: Point4d, i: number, j: number, k: number) {\r\n return Geometry.tripleProduct(\r\n pointA.xyzw[i], pointA.xyzw[j], pointA.xyzw[k],\r\n pointB.xyzw[i], pointB.xyzw[j], pointB.xyzw[k],\r\n pointC.xyzw[i], pointC.xyzw[j], pointC.xyzw[k]);\r\n }\r\n /**\r\n * Return a Point4d perpendicular to all 3 inputs. (A higher level cross product concept)\r\n * @param pointA first point\r\n * @param pointB second point\r\n * @param pointC third point\r\n */\r\n public static perpendicularPoint4dPlane(pointA: Point4d, pointB: Point4d, pointC: Point4d): Point4d {\r\n return Point4d.create(\r\n Point4d.determinantIndexed3X3(pointA, pointB, pointC, 1, 2, 3),\r\n -Point4d.determinantIndexed3X3(pointA, pointB, pointC, 2, 3, 0),\r\n Point4d.determinantIndexed3X3(pointA, pointB, pointC, 3, 0, 1),\r\n -Point4d.determinantIndexed3X3(pointA, pointB, pointC, 0, 1, 2));\r\n }\r\n /** Treating this Point4d as plane coefficients, convert to origin and normal form. */\r\n public toPlane3dByOriginAndUnitNormal(result?: Plane3dByOriginAndUnitNormal): Plane3dByOriginAndUnitNormal | undefined {\r\n return Plane3dByOriginAndUnitNormal.createFrom(this, result);\r\n }\r\n /** Normalize so sum of squares of all 4 coordinates is 1. */\r\n public normalizeQuaternion() {\r\n const magnitude = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\r\n\r\n if (magnitude > 0.0) {\r\n const f = 1.0 / magnitude;\r\n this.x *= f;\r\n this.y *= f;\r\n this.z *= f;\r\n this.w *= f;\r\n }\r\n return magnitude;\r\n }\r\n /** Return a (normalized) quaternion interpolated between two quaternions. */\r\n public static interpolateQuaternions(quaternion0: Point4d, fractionParameter: number, quaternion1: Point4d, result?: Point4d): Point4d {\r\n if (!result)\r\n result = new Point4d();\r\n const maxSafeCosine = 0.9995;\r\n\r\n // return exact quaternions for special values\r\n if (0.0 === fractionParameter) {\r\n result = quaternion0;\r\n return result;\r\n }\r\n if (1.0 === fractionParameter) {\r\n result = quaternion1;\r\n return result;\r\n }\r\n if (0.5 === fractionParameter) {\r\n quaternion0.plus(quaternion1, result);\r\n result.normalizeQuaternion();\r\n return result;\r\n }\r\n\r\n const q0 = quaternion0.clone();\r\n const q1 = quaternion1.clone();\r\n let dot = quaternion0.dotProduct(quaternion1);\r\n\r\n // prevent interpolation through the longer great arc\r\n if (dot < 0.0) {\r\n q1.negate(q1);\r\n dot = -dot;\r\n }\r\n\r\n // if nearly parallel, use interpolate and renormalize .\r\n if (dot > maxSafeCosine) {\r\n q0.interpolate(fractionParameter, q1, result);\r\n result.normalizeQuaternion();\r\n return result;\r\n }\r\n\r\n // safety check\r\n if (dot < -1.0)\r\n dot = -1.0;\r\n else if (dot > 1.0)\r\n dot = 1.0;\r\n\r\n // create orthonormal basis {q0, q2}\r\n const q2 = new Point4d();\r\n q1.plusScaled(q0, -dot, q2); // bsiDPoint4d_addScaledDPoint4d(& q2, & q1, & q0, -dot);\r\n q2.normalizeQuaternion();\r\n\r\n const angle = Math.acos(dot);\r\n const angleOfInterpolation = angle * fractionParameter;\r\n result = Point4d.createAdd2Scaled(q0, Math.cos(angleOfInterpolation), q2, Math.sin(angleOfInterpolation));\r\n return result;\r\n }\r\n /** Measure the \"angle\" between two points, using all 4 components in the dot product that\r\n * gives the cosine of the angle.\r\n */\r\n public radiansToPoint4dXYZW(other: Point4d): number | undefined {\r\n const magA = this.magnitudeXYZW();\r\n const magB = other.magnitudeXYZW();\r\n const dot = this.dotProduct(other); // == cos (theta) * magA * magB\r\n const cos = Geometry.conditionalDivideFraction(dot, magA * magB);\r\n if (cos === undefined)\r\n return undefined;\r\n return Math.acos(cos);\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"BandedSystem.js","sourceRoot":"","sources":["../../../src/numerics/BandedSystem.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*--------------------------------------------------------------------------------------------*/\nimport { Geometry } from \"../Geometry\";\n/**\n * `BandedSystem` is a class with static methods for solving banded linear systems, such as in computing\n * Bspline poles for pass-through points\n * @internal\n */\nexport class BandedSystem {\n /** apply LU decomposition to a banded system */\n public static decomposeLU(\n numRow: number,\n bw: number, /* band width */\n data: Float64Array,\n ): boolean {\n const n = numRow - 1;\n const sbw = Math.floor(bw / 2); // ASSUMES bw is odd?\n let sum;\n // Phase 1:\n // [A b C]\n // [d q f]\n // [G h I]\n // q is a diagonal (pivot\n // d, f are row vectors\n // A,C,I are blocks\n // b,h are column vectors.\n // Phase 1: [q,f] -= d * [b,C]\n // Phase 2: h = (h- G*b)/q\n // This is standard gaussian elimination, but in row-think rather than the usual column-think\n for (let i = 0; i <= n; i++) {\n const jh = Math.min(n, i + sbw);\n for (let j = i; j <= jh; j++) {\n const kl = Math.max(0, j - sbw);\n sum = 0.0;\n for (let k = kl; k < i; k++)\n sum += data[i * bw + k - i + sbw] * data[k * bw + j - k + sbw];\n data[i * bw + j - i + sbw] -= sum;\n }\n\n for (let j = i + 1; j <= jh; j++) {\n const kl = Math.max(0, j - sbw);\n sum = 0.0;\n for (let k = kl; k < i; k++)\n sum += data[j * bw + k - j + sbw] * data[k * bw + i - k + sbw];\n\n if (Math.abs(data[i * bw + sbw]) < 1e-9) // TODO -- tolerance !!!\n return false;\n\n data[j * bw + i - j + sbw] = (data[j * bw + i - j + sbw] - sum) / data[i * bw + sbw];\n }\n }\n return true;\n }\n\n /**\n *\n * @param sum evolving sum. sum.length\n * @param source data being added\n * @param sourceRow row in source. Plain offset is sourceRow * sum.length\n * @param scale scale factor to apply.\n */\n private static arrayAddScaledBlock(sum: Float64Array, source: Float64Array, sourceRow: number, scale: number) {\n const n = sum.length;\n let k = n * sourceRow;\n for (let i = 0; i < n; i++, k++) {\n sum[i] += source[k] * scale;\n }\n }\n // dest[destRow][*] = sourceA[sourceRow][*] - sourceB[*]\n private static blockAssignBlockMinusArray(dest: Float64Array, destRow: number, sourceA: Float64Array, sourceARow: number, sourceB: Float64Array) {\n const n = sourceB.length;\n let destIndex = destRow * n;\n let sourceIndex = sourceARow * n;\n for (let i = 0; i < n; i++, sourceIndex++, destIndex++) {\n dest[destIndex] = sourceA[sourceIndex] - sourceB[i];\n }\n }\n // dest[destRow][*] = sourceA[sourceBRow][*] * scaleA - sourceB[*] * scaleB\n private static blockSumOfScaledBlockScaledArray(dest: Float64Array, destRow: number, sourceA: Float64Array, sourceBRow: number, scaleA: number, sourceB: Float64Array, scaleB: number) {\n const n = sourceB.length;\n let destIndex = destRow * n;\n let sourceBIndex = sourceBRow * n;\n for (let i = 0; i < n; i++, sourceBIndex++, destIndex++) {\n dest[destIndex] = sourceA[sourceBIndex] * scaleA + sourceB[i] * scaleB;\n }\n }\n\n /**\n * Solve a linear system A*X=B where\n * * A is nominally an `numRow*numRow` matrix, but is stored in banded row-major form\n * * The band storage is `bw` numbers per row, with the middle value being the diagonal of that row.\n * * Hence rows near top and bottom have band values `outside` the matrix.\n * * The right hand side is an `numRow*numRHS` matrix in row-major order.\n * @param numRow number of rows (and columns) of the nominal full matrix.\n * @param bw total bandwidth (diagonal + equal number of values to left and right)\n * @param matrix the banded matrix, as packed row-major\n * @param numRHS the number of right hand sides.\n * @param rhs the right hand sides\n */\n public static solveBandedSystemMultipleRHS(\n numRow: number,\n bw: number, /* band width */\n matrix: Float64Array,\n numRHS: number, // number of components in each RHS row.\n rhs: Float64Array, // RHS data, packed, overwritten by solution\n ): Float64Array | undefined {\n if (!this.decomposeLU(numRow, bw, matrix))\n return undefined;\n\n const n = numRow - 1;\n const sbw = Math.floor(bw / 2);\n const rhsRowS = new Float64Array(numRHS);\n\n /* Compute solution vector */\n // Z is solution vector . . .\n const reducedRHS = new Float64Array(numRHS * numRow);\n const result = new Float64Array(numRHS * numRow);\n\n for (let i = 0; i <= n; i++) {\n rhsRowS.fill(0);\n\n const jl = Math.max(0, i - sbw);\n for (let j = jl; j < i; j++) {\n this.arrayAddScaledBlock(rhsRowS, reducedRHS, j, matrix[i * bw + j - i + sbw]);\n // S.SumOf(S, Z[j], data[i * bw + j - i + sbw]);\n }\n this.blockAssignBlockMinusArray(reducedRHS, i, rhs, i, rhsRowS);\n }\n for (let i = n; i >= 0; i--) {\n const fact = Geometry.conditionalDivideCoordinate(1.0, matrix[i * bw + sbw]);\n if (fact === undefined)\n return undefined;\n\n rhsRowS.fill(0);\n\n const jh = Math.min(n, i + sbw);\n for (let j = i + 1; j <= jh; j++) {\n // S.SumOf(S, Q[j], data[i * bw + j - i + sbw]);\n this.arrayAddScaledBlock(rhsRowS, result, j, matrix[i * bw + j - i + sbw]);\n }\n this.blockSumOfScaledBlockScaledArray(result, i, reducedRHS, i, fact, rhsRowS, -fact);\n // Q[i].SumOf(O, Z[i], fact, S, -fact);\n }\n\n return result;\n }\n /**\n * Multiply a banded numRow*numRow matrix times a full numRow*numRHS, return as new matrix\n */\n public static multiplyBandedTimesFull(\n numRow: number,\n bw: number, /* band width */\n bandedMatrix: Float64Array,\n numRHS: number, // number of components in each RHS row.\n rhs: Float64Array, // RHS data, packed, overwritten by solution\n ): Float64Array {\n const result = new Float64Array(rhs.length);\n const halfBandWidth = Math.floor(bw / 2);\n let sum, k0, k1, kRef;\n\n for (let pivot = 0; pivot < numRow; pivot++) {\n // \"k\" vars are nominal column indices in the matrix, and nominal row indices in the rhs.\n k0 = pivot - halfBandWidth;\n if (k0 < 0) k0 = 0;\n k1 = pivot + halfBandWidth + 1;\n if (k1 > numRow) k1 = numRow;\n kRef = halfBandWidth + pivot * (bw - 1);\n for (let m = 0; m < numRHS; m++) {\n sum = 0;\n for (let k = k0; k < k1; k++) {\n sum += bandedMatrix[kRef + k] * rhs[k * numRHS + m];\n }\n result[pivot * numRHS + m] = sum;\n }\n }\n return result;\n }\n}\n"]}
1
+ {"version":3,"file":"BandedSystem.js","sourceRoot":"","sources":["../../../src/numerics/BandedSystem.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\nimport { Geometry } from \"../Geometry\";\r\n/**\r\n * `BandedSystem` is a class with static methods for solving banded linear systems, such as in computing\r\n * Bspline poles for pass-through points\r\n * @internal\r\n */\r\nexport class BandedSystem {\r\n /** apply LU decomposition to a banded system */\r\n public static decomposeLU(\r\n numRow: number,\r\n bw: number, /* band width */\r\n data: Float64Array,\r\n ): boolean {\r\n const n = numRow - 1;\r\n const sbw = Math.floor(bw / 2); // ASSUMES bw is odd?\r\n let sum;\r\n // Phase 1:\r\n // [A b C]\r\n // [d q f]\r\n // [G h I]\r\n // q is a diagonal (pivot\r\n // d, f are row vectors\r\n // A,C,I are blocks\r\n // b,h are column vectors.\r\n // Phase 1: [q,f] -= d * [b,C]\r\n // Phase 2: h = (h- G*b)/q\r\n // This is standard gaussian elimination, but in row-think rather than the usual column-think\r\n for (let i = 0; i <= n; i++) {\r\n const jh = Math.min(n, i + sbw);\r\n for (let j = i; j <= jh; j++) {\r\n const kl = Math.max(0, j - sbw);\r\n sum = 0.0;\r\n for (let k = kl; k < i; k++)\r\n sum += data[i * bw + k - i + sbw] * data[k * bw + j - k + sbw];\r\n data[i * bw + j - i + sbw] -= sum;\r\n }\r\n\r\n for (let j = i + 1; j <= jh; j++) {\r\n const kl = Math.max(0, j - sbw);\r\n sum = 0.0;\r\n for (let k = kl; k < i; k++)\r\n sum += data[j * bw + k - j + sbw] * data[k * bw + i - k + sbw];\r\n\r\n if (Math.abs(data[i * bw + sbw]) < 1e-9) // TODO -- tolerance !!!\r\n return false;\r\n\r\n data[j * bw + i - j + sbw] = (data[j * bw + i - j + sbw] - sum) / data[i * bw + sbw];\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n *\r\n * @param sum evolving sum. sum.length\r\n * @param source data being added\r\n * @param sourceRow row in source. Plain offset is sourceRow * sum.length\r\n * @param scale scale factor to apply.\r\n */\r\n private static arrayAddScaledBlock(sum: Float64Array, source: Float64Array, sourceRow: number, scale: number) {\r\n const n = sum.length;\r\n let k = n * sourceRow;\r\n for (let i = 0; i < n; i++, k++) {\r\n sum[i] += source[k] * scale;\r\n }\r\n }\r\n // dest[destRow][*] = sourceA[sourceRow][*] - sourceB[*]\r\n private static blockAssignBlockMinusArray(dest: Float64Array, destRow: number, sourceA: Float64Array, sourceARow: number, sourceB: Float64Array) {\r\n const n = sourceB.length;\r\n let destIndex = destRow * n;\r\n let sourceIndex = sourceARow * n;\r\n for (let i = 0; i < n; i++, sourceIndex++, destIndex++) {\r\n dest[destIndex] = sourceA[sourceIndex] - sourceB[i];\r\n }\r\n }\r\n // dest[destRow][*] = sourceA[sourceBRow][*] * scaleA - sourceB[*] * scaleB\r\n private static blockSumOfScaledBlockScaledArray(dest: Float64Array, destRow: number, sourceA: Float64Array, sourceBRow: number, scaleA: number, sourceB: Float64Array, scaleB: number) {\r\n const n = sourceB.length;\r\n let destIndex = destRow * n;\r\n let sourceBIndex = sourceBRow * n;\r\n for (let i = 0; i < n; i++, sourceBIndex++, destIndex++) {\r\n dest[destIndex] = sourceA[sourceBIndex] * scaleA + sourceB[i] * scaleB;\r\n }\r\n }\r\n\r\n /**\r\n * Solve a linear system A*X=B where\r\n * * A is nominally an `numRow*numRow` matrix, but is stored in banded row-major form\r\n * * The band storage is `bw` numbers per row, with the middle value being the diagonal of that row.\r\n * * Hence rows near top and bottom have band values `outside` the matrix.\r\n * * The right hand side is an `numRow*numRHS` matrix in row-major order.\r\n * @param numRow number of rows (and columns) of the nominal full matrix.\r\n * @param bw total bandwidth (diagonal + equal number of values to left and right)\r\n * @param matrix the banded matrix, as packed row-major\r\n * @param numRHS the number of right hand sides.\r\n * @param rhs the right hand sides\r\n */\r\n public static solveBandedSystemMultipleRHS(\r\n numRow: number,\r\n bw: number, /* band width */\r\n matrix: Float64Array,\r\n numRHS: number, // number of components in each RHS row.\r\n rhs: Float64Array, // RHS data, packed, overwritten by solution\r\n ): Float64Array | undefined {\r\n if (!this.decomposeLU(numRow, bw, matrix))\r\n return undefined;\r\n\r\n const n = numRow - 1;\r\n const sbw = Math.floor(bw / 2);\r\n const rhsRowS = new Float64Array(numRHS);\r\n\r\n /* Compute solution vector */\r\n // Z is solution vector . . .\r\n const reducedRHS = new Float64Array(numRHS * numRow);\r\n const result = new Float64Array(numRHS * numRow);\r\n\r\n for (let i = 0; i <= n; i++) {\r\n rhsRowS.fill(0);\r\n\r\n const jl = Math.max(0, i - sbw);\r\n for (let j = jl; j < i; j++) {\r\n this.arrayAddScaledBlock(rhsRowS, reducedRHS, j, matrix[i * bw + j - i + sbw]);\r\n // S.SumOf(S, Z[j], data[i * bw + j - i + sbw]);\r\n }\r\n this.blockAssignBlockMinusArray(reducedRHS, i, rhs, i, rhsRowS);\r\n }\r\n for (let i = n; i >= 0; i--) {\r\n const fact = Geometry.conditionalDivideCoordinate(1.0, matrix[i * bw + sbw]);\r\n if (fact === undefined)\r\n return undefined;\r\n\r\n rhsRowS.fill(0);\r\n\r\n const jh = Math.min(n, i + sbw);\r\n for (let j = i + 1; j <= jh; j++) {\r\n // S.SumOf(S, Q[j], data[i * bw + j - i + sbw]);\r\n this.arrayAddScaledBlock(rhsRowS, result, j, matrix[i * bw + j - i + sbw]);\r\n }\r\n this.blockSumOfScaledBlockScaledArray(result, i, reducedRHS, i, fact, rhsRowS, -fact);\r\n // Q[i].SumOf(O, Z[i], fact, S, -fact);\r\n }\r\n\r\n return result;\r\n }\r\n /**\r\n * Multiply a banded numRow*numRow matrix times a full numRow*numRHS, return as new matrix\r\n */\r\n public static multiplyBandedTimesFull(\r\n numRow: number,\r\n bw: number, /* band width */\r\n bandedMatrix: Float64Array,\r\n numRHS: number, // number of components in each RHS row.\r\n rhs: Float64Array, // RHS data, packed, overwritten by solution\r\n ): Float64Array {\r\n const result = new Float64Array(rhs.length);\r\n const halfBandWidth = Math.floor(bw / 2);\r\n let sum, k0, k1, kRef;\r\n\r\n for (let pivot = 0; pivot < numRow; pivot++) {\r\n // \"k\" vars are nominal column indices in the matrix, and nominal row indices in the rhs.\r\n k0 = pivot - halfBandWidth;\r\n if (k0 < 0) k0 = 0;\r\n k1 = pivot + halfBandWidth + 1;\r\n if (k1 > numRow) k1 = numRow;\r\n kRef = halfBandWidth + pivot * (bw - 1);\r\n for (let m = 0; m < numRHS; m++) {\r\n sum = 0;\r\n for (let k = k0; k < k1; k++) {\r\n sum += bandedMatrix[kRef + k] * rhs[k * numRHS + m];\r\n }\r\n result[pivot * numRHS + m] = sum;\r\n }\r\n }\r\n return result;\r\n }\r\n}\r\n"]}
@@ -92,6 +92,8 @@ export declare abstract class BezierCoffs {
92
92
  subdivide(u: number, left: BezierCoffs, right: BezierCoffs): boolean;
93
93
  /** Return the maximum absolute difference between coefficients of two sets of BezierCoffs */
94
94
  static maxAbsDiff(dataA: BezierCoffs, dataB: BezierCoffs): number | undefined;
95
+ /** Assist Newton with slow-to-converge roots at e.g., Bezier endpoints. */
96
+ clampZero(maxAbs?: number): void;
95
97
  }
96
98
  /**
97
99
  * Static methods to operate on univariate bezier polynomials, with coefficients in simple Float64Array or as components of blocked arrays.
@@ -1 +1 @@
1
- {"version":3,"file":"BezierPolynomials.d.ts","sourceRoot":"","sources":["../../../src/numerics/BezierPolynomials.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BezierPolynomials.d.ts","sourceRoot":"","sources":["../../../src/numerics/BezierPolynomials.ts"],"names":[],"mappings":"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"}
@@ -99,6 +99,7 @@ class BezierCoffs {
99
99
  roots(targetValue, _restrictTo01) {
100
100
  const bezier = UnivariateBezier.create(this);
101
101
  bezier.addInPlace(-targetValue);
102
+ bezier.clampZero();
102
103
  const roots = UnivariateBezier.deflateRoots(bezier);
103
104
  return this.filter01(roots, true);
104
105
  }
@@ -162,6 +163,16 @@ class BezierCoffs {
162
163
  }
163
164
  return d;
164
165
  }
166
+ /** Assist Newton with slow-to-converge roots at e.g., Bezier endpoints. */
167
+ clampZero(maxAbs = Geometry_1.Geometry.smallFloatingPoint) {
168
+ if (maxAbs > 0) {
169
+ for (let i = 0; i < this.coffs.length; ++i) {
170
+ const coff = this.coffs[i];
171
+ if (coff && Math.abs(coff) < maxAbs)
172
+ this.coffs[i] = 0.0;
173
+ }
174
+ }
175
+ }
165
176
  }
166
177
  exports.BezierCoffs = BezierCoffs;
167
178
  /**