@itwin/core-geometry 5.0.0-dev.11 → 5.0.0-dev.111

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 (1066) hide show
  1. package/CHANGELOG.md +71 -1
  2. package/lib/cjs/Constant.js +17 -17
  3. package/lib/cjs/Constant.js.map +1 -1
  4. package/lib/cjs/Geometry.d.ts +13 -4
  5. package/lib/cjs/Geometry.d.ts.map +1 -1
  6. package/lib/cjs/Geometry.js +51 -39
  7. package/lib/cjs/Geometry.js.map +1 -1
  8. package/lib/cjs/bspline/AkimaCurve3d.js +3 -1
  9. package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
  10. package/lib/cjs/bspline/BSpline1dNd.d.ts +90 -54
  11. package/lib/cjs/bspline/BSpline1dNd.d.ts.map +1 -1
  12. package/lib/cjs/bspline/BSpline1dNd.js +137 -84
  13. package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
  14. package/lib/cjs/bspline/BSplineCurve.d.ts +193 -155
  15. package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -1
  16. package/lib/cjs/bspline/BSplineCurve.js +249 -181
  17. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  18. package/lib/cjs/bspline/BSplineCurve3dH.js +1 -0
  19. package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
  20. package/lib/cjs/bspline/BSplineCurveOps.d.ts.map +1 -1
  21. package/lib/cjs/bspline/BSplineCurveOps.js +18 -21
  22. package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
  23. package/lib/cjs/bspline/BSplineSurface.js +22 -2
  24. package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
  25. package/lib/cjs/bspline/Bezier1dNd.js +6 -0
  26. package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
  27. package/lib/cjs/bspline/BezierCurve3d.d.ts +3 -1
  28. package/lib/cjs/bspline/BezierCurve3d.d.ts.map +1 -1
  29. package/lib/cjs/bspline/BezierCurve3d.js +5 -5
  30. package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
  31. package/lib/cjs/bspline/BezierCurve3dH.js +2 -0
  32. package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
  33. package/lib/cjs/bspline/BezierCurveBase.d.ts.map +1 -1
  34. package/lib/cjs/bspline/BezierCurveBase.js +21 -2
  35. package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
  36. package/lib/cjs/bspline/InterpolationCurve3d.js +12 -1
  37. package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
  38. package/lib/cjs/bspline/KnotVector.d.ts +82 -60
  39. package/lib/cjs/bspline/KnotVector.d.ts.map +1 -1
  40. package/lib/cjs/bspline/KnotVector.js +144 -84
  41. package/lib/cjs/bspline/KnotVector.js.map +1 -1
  42. package/lib/cjs/bspline/SurfaceLocationDetail.js +12 -0
  43. package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -1
  44. package/lib/cjs/clipping/AlternatingConvexClipTree.js +14 -13
  45. package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
  46. package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -1
  47. package/lib/cjs/clipping/BooleanClipNode.js +4 -0
  48. package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
  49. package/lib/cjs/clipping/ClipPlane.js +10 -1
  50. package/lib/cjs/clipping/ClipPlane.js.map +1 -1
  51. package/lib/cjs/clipping/ClipPrimitive.js +19 -0
  52. package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
  53. package/lib/cjs/clipping/ClipUtils.js +5 -1
  54. package/lib/cjs/clipping/ClipUtils.js.map +1 -1
  55. package/lib/cjs/clipping/ClipVector.js +11 -8
  56. package/lib/cjs/clipping/ClipVector.js.map +1 -1
  57. package/lib/cjs/clipping/ConvexClipPlaneSet.js +5 -3
  58. package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
  59. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js +2 -1
  60. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  61. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js +3 -0
  62. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  63. package/lib/cjs/core-geometry.d.ts +1 -0
  64. package/lib/cjs/core-geometry.d.ts.map +1 -1
  65. package/lib/cjs/core-geometry.js +1 -0
  66. package/lib/cjs/core-geometry.js.map +1 -1
  67. package/lib/cjs/curve/Arc3d.d.ts +20 -4
  68. package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
  69. package/lib/cjs/curve/Arc3d.js +86 -21
  70. package/lib/cjs/curve/Arc3d.js.map +1 -1
  71. package/lib/cjs/curve/ConstructCurveBetweenCurves.js +3 -0
  72. package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
  73. package/lib/cjs/curve/CoordinateXYZ.js +3 -2
  74. package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
  75. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +0 -2
  76. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  77. package/lib/cjs/curve/CurveChainWithDistanceIndex.js +25 -10
  78. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  79. package/lib/cjs/curve/CurveCollection.d.ts +10 -0
  80. package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
  81. package/lib/cjs/curve/CurveCollection.js +35 -9
  82. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  83. package/lib/cjs/curve/CurveCurve.js.map +1 -1
  84. package/lib/cjs/curve/CurveExtendMode.d.ts +13 -5
  85. package/lib/cjs/curve/CurveExtendMode.d.ts.map +1 -1
  86. package/lib/cjs/curve/CurveExtendMode.js +19 -15
  87. package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
  88. package/lib/cjs/curve/CurveFactory.d.ts +87 -53
  89. package/lib/cjs/curve/CurveFactory.d.ts.map +1 -1
  90. package/lib/cjs/curve/CurveFactory.js +213 -135
  91. package/lib/cjs/curve/CurveFactory.js.map +1 -1
  92. package/lib/cjs/curve/CurveLocationDetail.js +44 -0
  93. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  94. package/lib/cjs/curve/CurveOps.js.map +1 -1
  95. package/lib/cjs/curve/CurvePrimitive.d.ts +74 -18
  96. package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -1
  97. package/lib/cjs/curve/CurvePrimitive.js +86 -18
  98. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  99. package/lib/cjs/curve/CurveProcessor.js +2 -0
  100. package/lib/cjs/curve/CurveProcessor.js.map +1 -1
  101. package/lib/cjs/curve/CurveTypes.js.map +1 -1
  102. package/lib/cjs/curve/CurveWireMomentsXYZ.js +2 -0
  103. package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
  104. package/lib/cjs/curve/GeometryQuery.js.map +1 -1
  105. package/lib/cjs/curve/LineSegment3d.js +6 -2
  106. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  107. package/lib/cjs/curve/LineString3d.d.ts +8 -7
  108. package/lib/cjs/curve/LineString3d.d.ts.map +1 -1
  109. package/lib/cjs/curve/LineString3d.js +52 -29
  110. package/lib/cjs/curve/LineString3d.js.map +1 -1
  111. package/lib/cjs/curve/Loop.js +12 -4
  112. package/lib/cjs/curve/Loop.js.map +1 -1
  113. package/lib/cjs/curve/OffsetOptions.js +25 -21
  114. package/lib/cjs/curve/OffsetOptions.js.map +1 -1
  115. package/lib/cjs/curve/ParityRegion.js +4 -2
  116. package/lib/cjs/curve/ParityRegion.js.map +1 -1
  117. package/lib/cjs/curve/Path.js +2 -2
  118. package/lib/cjs/curve/Path.js.map +1 -1
  119. package/lib/cjs/curve/PointString3d.js +3 -2
  120. package/lib/cjs/curve/PointString3d.js.map +1 -1
  121. package/lib/cjs/curve/ProxyCurve.js +1 -0
  122. package/lib/cjs/curve/ProxyCurve.js.map +1 -1
  123. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js +1 -0
  124. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  125. package/lib/cjs/curve/Query/CurveSplitContext.js +3 -0
  126. package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
  127. package/lib/cjs/curve/Query/CylindricalRange.js +6 -2
  128. package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
  129. package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
  130. package/lib/cjs/curve/Query/PlanarSubdivision.js +4 -6
  131. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  132. package/lib/cjs/curve/Query/StrokeCountChain.js +12 -0
  133. package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
  134. package/lib/cjs/curve/Query/StrokeCountMap.js +14 -0
  135. package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
  136. package/lib/cjs/curve/RegionMomentsXY.js +4 -5
  137. package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
  138. package/lib/cjs/curve/RegionOps.js +9 -10
  139. package/lib/cjs/curve/RegionOps.js.map +1 -1
  140. package/lib/cjs/curve/RegionOpsClassificationSweeps.js +24 -1
  141. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  142. package/lib/cjs/curve/StrokeOptions.d.ts +10 -5
  143. package/lib/cjs/curve/StrokeOptions.d.ts.map +1 -1
  144. package/lib/cjs/curve/StrokeOptions.js +30 -8
  145. package/lib/cjs/curve/StrokeOptions.js.map +1 -1
  146. package/lib/cjs/curve/UnionRegion.js +4 -2
  147. package/lib/cjs/curve/UnionRegion.js.map +1 -1
  148. package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.d.ts +71 -0
  149. package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.d.ts.map +1 -0
  150. package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.js +181 -0
  151. package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -0
  152. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js +13 -7
  153. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  154. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js +6 -0
  155. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  156. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js +2 -0
  157. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  158. package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  159. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.d.ts +21 -5
  160. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.d.ts.map +1 -1
  161. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js +53 -20
  162. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  163. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js +3 -0
  164. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  165. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js +18 -5
  166. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  167. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js +26 -13
  168. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  169. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js +11 -5
  170. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  171. package/lib/cjs/curve/internalContexts/CurveLengthContext.js +6 -0
  172. package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
  173. package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js +8 -6
  174. package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  175. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js +38 -5
  176. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  177. package/lib/cjs/curve/internalContexts/GapSearchContext.js +1 -0
  178. package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
  179. package/lib/cjs/curve/internalContexts/MultiChainCollector.js +12 -0
  180. package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
  181. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.d.ts +5 -3
  182. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.d.ts.map +1 -1
  183. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js +6 -3
  184. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  185. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js +7 -0
  186. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  187. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js +22 -4
  188. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  189. package/lib/cjs/curve/internalContexts/SumLengthsContext.js +1 -0
  190. package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
  191. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js +3 -0
  192. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  193. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js +2 -0
  194. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  195. package/lib/cjs/curve/spiral/ClothoidSeries.js +4 -0
  196. package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
  197. package/lib/cjs/curve/spiral/CubicEvaluator.js +2 -0
  198. package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
  199. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js +4 -0
  200. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  201. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js +5 -0
  202. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  203. package/lib/cjs/curve/spiral/DirectSpiral3d.js +12 -2
  204. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
  205. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js +24 -4
  206. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  207. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js +2 -0
  208. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  209. package/lib/cjs/curve/spiral/NormalizedTransition.js +5 -0
  210. package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
  211. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js +2 -0
  212. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  213. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js +10 -0
  214. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  215. package/lib/cjs/curve/spiral/TransitionSpiral3d.js +10 -0
  216. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
  217. package/lib/cjs/curve/spiral/XYCurveEvaluator.js +6 -0
  218. package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
  219. package/lib/cjs/geometry3d/Angle.js +18 -16
  220. package/lib/cjs/geometry3d/Angle.js.map +1 -1
  221. package/lib/cjs/geometry3d/AngleSweep.d.ts +8 -3
  222. package/lib/cjs/geometry3d/AngleSweep.d.ts.map +1 -1
  223. package/lib/cjs/geometry3d/AngleSweep.js +22 -10
  224. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
  225. package/lib/cjs/geometry3d/BarycentricTriangle.js +25 -0
  226. package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
  227. package/lib/cjs/geometry3d/BilinearPatch.js +8 -0
  228. package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
  229. package/lib/cjs/geometry3d/CoincidentGeometryOps.js +5 -0
  230. package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
  231. package/lib/cjs/geometry3d/Ellipsoid.d.ts +8 -7
  232. package/lib/cjs/geometry3d/Ellipsoid.d.ts.map +1 -1
  233. package/lib/cjs/geometry3d/Ellipsoid.js +63 -14
  234. package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
  235. package/lib/cjs/geometry3d/FrameBuilder.js +12 -4
  236. package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
  237. package/lib/cjs/geometry3d/FrustumAnimation.js +7 -0
  238. package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
  239. package/lib/cjs/geometry3d/GeometryHandler.d.ts +15 -16
  240. package/lib/cjs/geometry3d/GeometryHandler.d.ts.map +1 -1
  241. package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
  242. package/lib/cjs/geometry3d/GrowableBlockedArray.js +12 -0
  243. package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
  244. package/lib/cjs/geometry3d/GrowableFloat64Array.js +3 -0
  245. package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
  246. package/lib/cjs/geometry3d/GrowableXYArray.d.ts +0 -5
  247. package/lib/cjs/geometry3d/GrowableXYArray.d.ts.map +1 -1
  248. package/lib/cjs/geometry3d/GrowableXYArray.js +16 -7
  249. package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
  250. package/lib/cjs/geometry3d/GrowableXYZArray.d.ts +32 -10
  251. package/lib/cjs/geometry3d/GrowableXYZArray.d.ts.map +1 -1
  252. package/lib/cjs/geometry3d/GrowableXYZArray.js +70 -16
  253. package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
  254. package/lib/cjs/geometry3d/IndexedCollectionInterval.js +6 -0
  255. package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
  256. package/lib/cjs/geometry3d/IndexedXYCollection.js +1 -0
  257. package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
  258. package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts +13 -2
  259. package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
  260. package/lib/cjs/geometry3d/IndexedXYZCollection.js +26 -11
  261. package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
  262. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js +3 -0
  263. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  264. package/lib/cjs/geometry3d/Matrix3d.d.ts +13 -15
  265. package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -1
  266. package/lib/cjs/geometry3d/Matrix3d.js +47 -26
  267. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  268. package/lib/cjs/geometry3d/OrderedRotationAngles.js +10 -2
  269. package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
  270. package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
  271. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js +2 -0
  272. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  273. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js +7 -0
  274. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  275. package/lib/cjs/geometry3d/Point2dArrayCarrier.js +2 -0
  276. package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
  277. package/lib/cjs/geometry3d/Point2dVector2d.js +4 -0
  278. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  279. package/lib/cjs/geometry3d/Point3dArrayCarrier.js +3 -1
  280. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  281. package/lib/cjs/geometry3d/Point3dVector3d.d.ts +7 -10
  282. package/lib/cjs/geometry3d/Point3dVector3d.d.ts.map +1 -1
  283. package/lib/cjs/geometry3d/Point3dVector3d.js +16 -10
  284. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  285. package/lib/cjs/geometry3d/PointHelpers.d.ts +15 -4
  286. package/lib/cjs/geometry3d/PointHelpers.d.ts.map +1 -1
  287. package/lib/cjs/geometry3d/PointHelpers.js +29 -8
  288. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  289. package/lib/cjs/geometry3d/PointStreaming.js +12 -4
  290. package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
  291. package/lib/cjs/geometry3d/PolygonOps.d.ts +2 -2
  292. package/lib/cjs/geometry3d/PolygonOps.js +62 -25
  293. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  294. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js +7 -3
  295. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  296. package/lib/cjs/geometry3d/PolylineOps.d.ts +9 -5
  297. package/lib/cjs/geometry3d/PolylineOps.d.ts.map +1 -1
  298. package/lib/cjs/geometry3d/PolylineOps.js +12 -5
  299. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
  300. package/lib/cjs/geometry3d/Range.js +21 -4
  301. package/lib/cjs/geometry3d/Range.js.map +1 -1
  302. package/lib/cjs/geometry3d/Ray2d.js +2 -0
  303. package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
  304. package/lib/cjs/geometry3d/Ray3d.d.ts +2 -2
  305. package/lib/cjs/geometry3d/Ray3d.d.ts.map +1 -1
  306. package/lib/cjs/geometry3d/Ray3d.js +20 -11
  307. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  308. package/lib/cjs/geometry3d/ReusableObjectCache.js +4 -0
  309. package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
  310. package/lib/cjs/geometry3d/Segment1d.js +4 -0
  311. package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
  312. package/lib/cjs/geometry3d/SortablePolygon.js +11 -0
  313. package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
  314. package/lib/cjs/geometry3d/Transform.d.ts +1 -1
  315. package/lib/cjs/geometry3d/Transform.js +4 -1
  316. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  317. package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
  318. package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
  319. package/lib/cjs/geometry3d/YawPitchRollAngles.js +6 -0
  320. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  321. package/lib/cjs/geometry4d/Map4d.js +2 -0
  322. package/lib/cjs/geometry4d/Map4d.js.map +1 -1
  323. package/lib/cjs/geometry4d/Matrix4d.js +1 -0
  324. package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
  325. package/lib/cjs/geometry4d/MomentData.d.ts +72 -73
  326. package/lib/cjs/geometry4d/MomentData.d.ts.map +1 -1
  327. package/lib/cjs/geometry4d/MomentData.js +90 -66
  328. package/lib/cjs/geometry4d/MomentData.js.map +1 -1
  329. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js +6 -0
  330. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  331. package/lib/cjs/geometry4d/Point4d.js +2 -0
  332. package/lib/cjs/geometry4d/Point4d.js.map +1 -1
  333. package/lib/cjs/numerics/BandedSystem.js.map +1 -1
  334. package/lib/cjs/numerics/BezierPolynomials.js +8 -0
  335. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
  336. package/lib/cjs/numerics/ClusterableArray.js +29 -13
  337. package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
  338. package/lib/cjs/numerics/Complex.js +2 -0
  339. package/lib/cjs/numerics/Complex.js.map +1 -1
  340. package/lib/cjs/numerics/ConvexPolygon2d.js +3 -0
  341. package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
  342. package/lib/cjs/numerics/Newton.js +59 -4
  343. package/lib/cjs/numerics/Newton.js.map +1 -1
  344. package/lib/cjs/numerics/PascalCoefficients.js +1 -1
  345. package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
  346. package/lib/cjs/numerics/PolarData.js +13 -1
  347. package/lib/cjs/numerics/PolarData.js.map +1 -1
  348. package/lib/cjs/numerics/Polynomials.js +64 -26
  349. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  350. package/lib/cjs/numerics/Quadrature.js +26 -20
  351. package/lib/cjs/numerics/Quadrature.js.map +1 -1
  352. package/lib/cjs/numerics/Range1dArray.js.map +1 -1
  353. package/lib/cjs/numerics/SmallSystem.js.map +1 -1
  354. package/lib/cjs/numerics/TriDiagonalSystem.js +11 -0
  355. package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
  356. package/lib/cjs/numerics/UnionFind.js +1 -0
  357. package/lib/cjs/numerics/UnionFind.js.map +1 -1
  358. package/lib/cjs/numerics/UsageSums.js +10 -0
  359. package/lib/cjs/numerics/UsageSums.js.map +1 -1
  360. package/lib/cjs/polyface/AuxData.js +16 -0
  361. package/lib/cjs/polyface/AuxData.js.map +1 -1
  362. package/lib/cjs/polyface/BoxTopology.js +67 -67
  363. package/lib/cjs/polyface/BoxTopology.js.map +1 -1
  364. package/lib/cjs/polyface/FacetFaceData.d.ts +1 -1
  365. package/lib/cjs/polyface/FacetFaceData.js +3 -1
  366. package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
  367. package/lib/cjs/polyface/FacetLocationDetail.js +30 -0
  368. package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
  369. package/lib/cjs/polyface/FacetOrientation.js +12 -1
  370. package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
  371. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js +18 -2
  372. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  373. package/lib/cjs/polyface/IndexedEdgeMatcher.d.ts +33 -23
  374. package/lib/cjs/polyface/IndexedEdgeMatcher.d.ts.map +1 -1
  375. package/lib/cjs/polyface/IndexedEdgeMatcher.js +63 -33
  376. package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
  377. package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts +4 -3
  378. package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
  379. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js +16 -5
  380. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  381. package/lib/cjs/polyface/IndexedPolyfaceWalker.d.ts +233 -0
  382. package/lib/cjs/polyface/IndexedPolyfaceWalker.d.ts.map +1 -0
  383. package/lib/cjs/polyface/IndexedPolyfaceWalker.js +353 -0
  384. package/lib/cjs/polyface/IndexedPolyfaceWalker.js.map +1 -0
  385. package/lib/cjs/polyface/Polyface.d.ts +43 -14
  386. package/lib/cjs/polyface/Polyface.d.ts.map +1 -1
  387. package/lib/cjs/polyface/Polyface.js +90 -19
  388. package/lib/cjs/polyface/Polyface.js.map +1 -1
  389. package/lib/cjs/polyface/PolyfaceBuilder.d.ts +14 -27
  390. package/lib/cjs/polyface/PolyfaceBuilder.d.ts.map +1 -1
  391. package/lib/cjs/polyface/PolyfaceBuilder.js +47 -79
  392. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  393. package/lib/cjs/polyface/PolyfaceClip.js +8 -0
  394. package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
  395. package/lib/cjs/polyface/PolyfaceData.d.ts +36 -3
  396. package/lib/cjs/polyface/PolyfaceData.d.ts.map +1 -1
  397. package/lib/cjs/polyface/PolyfaceData.js +114 -8
  398. package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
  399. package/lib/cjs/polyface/PolyfaceQuery.js +47 -7
  400. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  401. package/lib/cjs/polyface/RangeLengthData.js +7 -0
  402. package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
  403. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js +12 -0
  404. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  405. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js +5 -2
  406. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  407. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js +12 -0
  408. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  409. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js +14 -0
  410. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  411. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js +5 -0
  412. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  413. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js +43 -0
  414. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  415. package/lib/cjs/polyface/TaggedNumericData.js +8 -0
  416. package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
  417. package/lib/cjs/polyface/TriangleCandidate.js +3 -0
  418. package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
  419. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js +7 -0
  420. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  421. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js +6 -0
  422. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  423. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js +3 -0
  424. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  425. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js +3 -0
  426. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  427. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js +32 -0
  428. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  429. package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  430. package/lib/cjs/polyface/multiclip/RangeSearch.js +5 -5
  431. package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
  432. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js +21 -8
  433. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  434. package/lib/cjs/polyface/multiclip/XYPointBuckets.js +6 -0
  435. package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
  436. package/lib/cjs/serialization/BGFBAccessors.d.ts +35 -9
  437. package/lib/cjs/serialization/BGFBAccessors.d.ts.map +1 -1
  438. package/lib/cjs/serialization/BGFBAccessors.js +141 -179
  439. package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
  440. package/lib/cjs/serialization/BGFBReader.d.ts +2 -2
  441. package/lib/cjs/serialization/BGFBReader.d.ts.map +1 -1
  442. package/lib/cjs/serialization/BGFBReader.js +75 -62
  443. package/lib/cjs/serialization/BGFBReader.js.map +1 -1
  444. package/lib/cjs/serialization/BGFBWriter.d.ts +5 -1
  445. package/lib/cjs/serialization/BGFBWriter.d.ts.map +1 -1
  446. package/lib/cjs/serialization/BGFBWriter.js +18 -3
  447. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  448. package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js +1 -0
  449. package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  450. package/lib/cjs/serialization/DeepCompare.js +17 -17
  451. package/lib/cjs/serialization/DeepCompare.js.map +1 -1
  452. package/lib/cjs/serialization/GeometrySamples.d.ts +5 -5
  453. package/lib/cjs/serialization/GeometrySamples.d.ts.map +1 -1
  454. package/lib/cjs/serialization/GeometrySamples.js +113 -112
  455. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  456. package/lib/cjs/serialization/IModelJsonSchema.d.ts +78 -64
  457. package/lib/cjs/serialization/IModelJsonSchema.d.ts.map +1 -1
  458. package/lib/cjs/serialization/IModelJsonSchema.js +107 -83
  459. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  460. package/lib/cjs/serialization/SerializationHelpers.d.ts +36 -0
  461. package/lib/cjs/serialization/SerializationHelpers.d.ts.map +1 -1
  462. package/lib/cjs/serialization/SerializationHelpers.js +117 -0
  463. package/lib/cjs/serialization/SerializationHelpers.js.map +1 -1
  464. package/lib/cjs/solid/Box.js +7 -2
  465. package/lib/cjs/solid/Box.js.map +1 -1
  466. package/lib/cjs/solid/Cone.d.ts +39 -14
  467. package/lib/cjs/solid/Cone.d.ts.map +1 -1
  468. package/lib/cjs/solid/Cone.js +52 -16
  469. package/lib/cjs/solid/Cone.js.map +1 -1
  470. package/lib/cjs/solid/LinearSweep.js +4 -2
  471. package/lib/cjs/solid/LinearSweep.js.map +1 -1
  472. package/lib/cjs/solid/RotationalSweep.d.ts +17 -17
  473. package/lib/cjs/solid/RotationalSweep.d.ts.map +1 -1
  474. package/lib/cjs/solid/RotationalSweep.js +38 -25
  475. package/lib/cjs/solid/RotationalSweep.js.map +1 -1
  476. package/lib/cjs/solid/RuledSweep.d.ts +26 -23
  477. package/lib/cjs/solid/RuledSweep.d.ts.map +1 -1
  478. package/lib/cjs/solid/RuledSweep.js +32 -24
  479. package/lib/cjs/solid/RuledSweep.js.map +1 -1
  480. package/lib/cjs/solid/SolidPrimitive.d.ts +12 -11
  481. package/lib/cjs/solid/SolidPrimitive.d.ts.map +1 -1
  482. package/lib/cjs/solid/SolidPrimitive.js +11 -6
  483. package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
  484. package/lib/cjs/solid/Sphere.d.ts +36 -17
  485. package/lib/cjs/solid/Sphere.d.ts.map +1 -1
  486. package/lib/cjs/solid/Sphere.js +53 -24
  487. package/lib/cjs/solid/Sphere.js.map +1 -1
  488. package/lib/cjs/solid/SweepContour.d.ts +24 -15
  489. package/lib/cjs/solid/SweepContour.d.ts.map +1 -1
  490. package/lib/cjs/solid/SweepContour.js +33 -15
  491. package/lib/cjs/solid/SweepContour.js.map +1 -1
  492. package/lib/cjs/solid/TorusPipe.js +7 -2
  493. package/lib/cjs/solid/TorusPipe.js.map +1 -1
  494. package/lib/cjs/topology/ChainMerge.js +16 -4
  495. package/lib/cjs/topology/ChainMerge.js.map +1 -1
  496. package/lib/cjs/topology/Graph.js +41 -6
  497. package/lib/cjs/topology/Graph.js.map +1 -1
  498. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +1 -1
  499. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js +5 -1
  500. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  501. package/lib/cjs/topology/HalfEdgeGraphSearch.js +2 -0
  502. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  503. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js +9 -2
  504. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  505. package/lib/cjs/topology/HalfEdgeGraphValidation.js +7 -9
  506. package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
  507. package/lib/cjs/topology/HalfEdgeMarkSet.js +5 -0
  508. package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
  509. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js +6 -0
  510. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  511. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js +1 -0
  512. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  513. package/lib/cjs/topology/HalfEdgePositionDetail.js +16 -0
  514. package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
  515. package/lib/cjs/topology/HalfEdgePriorityQueue.js +2 -0
  516. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
  517. package/lib/cjs/topology/InsertAndRetriangulateContext.js +4 -0
  518. package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
  519. package/lib/cjs/topology/MaskManager.js +3 -0
  520. package/lib/cjs/topology/MaskManager.js.map +1 -1
  521. package/lib/cjs/topology/Merging.js +11 -6
  522. package/lib/cjs/topology/Merging.js.map +1 -1
  523. package/lib/cjs/topology/RegularizeFace.js +22 -0
  524. package/lib/cjs/topology/RegularizeFace.js.map +1 -1
  525. package/lib/cjs/topology/SignedDataSummary.js +22 -0
  526. package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
  527. package/lib/cjs/topology/SpaceTriangulation.js.map +1 -1
  528. package/lib/cjs/topology/Triangulation.d.ts +3 -3
  529. package/lib/cjs/topology/Triangulation.d.ts.map +1 -1
  530. package/lib/cjs/topology/Triangulation.js +28 -18
  531. package/lib/cjs/topology/Triangulation.js.map +1 -1
  532. package/lib/cjs/topology/XYParitySearchContext.js +13 -0
  533. package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
  534. package/lib/esm/Constant.js +17 -17
  535. package/lib/esm/Constant.js.map +1 -1
  536. package/lib/esm/Geometry.d.ts +13 -4
  537. package/lib/esm/Geometry.d.ts.map +1 -1
  538. package/lib/esm/Geometry.js +51 -39
  539. package/lib/esm/Geometry.js.map +1 -1
  540. package/lib/esm/bspline/AkimaCurve3d.js +3 -1
  541. package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
  542. package/lib/esm/bspline/BSpline1dNd.d.ts +90 -54
  543. package/lib/esm/bspline/BSpline1dNd.d.ts.map +1 -1
  544. package/lib/esm/bspline/BSpline1dNd.js +137 -84
  545. package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
  546. package/lib/esm/bspline/BSplineCurve.d.ts +193 -155
  547. package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
  548. package/lib/esm/bspline/BSplineCurve.js +249 -181
  549. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  550. package/lib/esm/bspline/BSplineCurve3dH.js +1 -0
  551. package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
  552. package/lib/esm/bspline/BSplineCurveOps.d.ts.map +1 -1
  553. package/lib/esm/bspline/BSplineCurveOps.js +18 -21
  554. package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
  555. package/lib/esm/bspline/BSplineSurface.js +22 -2
  556. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  557. package/lib/esm/bspline/Bezier1dNd.js +6 -0
  558. package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
  559. package/lib/esm/bspline/BezierCurve3d.d.ts +3 -1
  560. package/lib/esm/bspline/BezierCurve3d.d.ts.map +1 -1
  561. package/lib/esm/bspline/BezierCurve3d.js +5 -5
  562. package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
  563. package/lib/esm/bspline/BezierCurve3dH.js +2 -0
  564. package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
  565. package/lib/esm/bspline/BezierCurveBase.d.ts.map +1 -1
  566. package/lib/esm/bspline/BezierCurveBase.js +21 -2
  567. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  568. package/lib/esm/bspline/InterpolationCurve3d.js +12 -1
  569. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  570. package/lib/esm/bspline/KnotVector.d.ts +82 -60
  571. package/lib/esm/bspline/KnotVector.d.ts.map +1 -1
  572. package/lib/esm/bspline/KnotVector.js +144 -84
  573. package/lib/esm/bspline/KnotVector.js.map +1 -1
  574. package/lib/esm/bspline/SurfaceLocationDetail.js +12 -0
  575. package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
  576. package/lib/esm/clipping/AlternatingConvexClipTree.js +14 -13
  577. package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
  578. package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
  579. package/lib/esm/clipping/BooleanClipNode.js +4 -0
  580. package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
  581. package/lib/esm/clipping/ClipPlane.js +10 -1
  582. package/lib/esm/clipping/ClipPlane.js.map +1 -1
  583. package/lib/esm/clipping/ClipPrimitive.js +19 -0
  584. package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
  585. package/lib/esm/clipping/ClipUtils.js +5 -1
  586. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  587. package/lib/esm/clipping/ClipVector.js +11 -8
  588. package/lib/esm/clipping/ClipVector.js.map +1 -1
  589. package/lib/esm/clipping/ConvexClipPlaneSet.js +5 -3
  590. package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
  591. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js +2 -1
  592. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  593. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js +3 -0
  594. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  595. package/lib/esm/core-geometry.d.ts +1 -0
  596. package/lib/esm/core-geometry.d.ts.map +1 -1
  597. package/lib/esm/core-geometry.js +1 -0
  598. package/lib/esm/core-geometry.js.map +1 -1
  599. package/lib/esm/curve/Arc3d.d.ts +20 -4
  600. package/lib/esm/curve/Arc3d.d.ts.map +1 -1
  601. package/lib/esm/curve/Arc3d.js +86 -21
  602. package/lib/esm/curve/Arc3d.js.map +1 -1
  603. package/lib/esm/curve/ConstructCurveBetweenCurves.js +3 -0
  604. package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
  605. package/lib/esm/curve/CoordinateXYZ.js +3 -2
  606. package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
  607. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +0 -2
  608. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  609. package/lib/esm/curve/CurveChainWithDistanceIndex.js +25 -10
  610. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  611. package/lib/esm/curve/CurveCollection.d.ts +10 -0
  612. package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
  613. package/lib/esm/curve/CurveCollection.js +35 -9
  614. package/lib/esm/curve/CurveCollection.js.map +1 -1
  615. package/lib/esm/curve/CurveCurve.js.map +1 -1
  616. package/lib/esm/curve/CurveExtendMode.d.ts +13 -5
  617. package/lib/esm/curve/CurveExtendMode.d.ts.map +1 -1
  618. package/lib/esm/curve/CurveExtendMode.js +19 -15
  619. package/lib/esm/curve/CurveExtendMode.js.map +1 -1
  620. package/lib/esm/curve/CurveFactory.d.ts +87 -53
  621. package/lib/esm/curve/CurveFactory.d.ts.map +1 -1
  622. package/lib/esm/curve/CurveFactory.js +213 -135
  623. package/lib/esm/curve/CurveFactory.js.map +1 -1
  624. package/lib/esm/curve/CurveLocationDetail.js +44 -0
  625. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  626. package/lib/esm/curve/CurveOps.js.map +1 -1
  627. package/lib/esm/curve/CurvePrimitive.d.ts +74 -18
  628. package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
  629. package/lib/esm/curve/CurvePrimitive.js +86 -18
  630. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  631. package/lib/esm/curve/CurveProcessor.js +2 -0
  632. package/lib/esm/curve/CurveProcessor.js.map +1 -1
  633. package/lib/esm/curve/CurveTypes.js.map +1 -1
  634. package/lib/esm/curve/CurveWireMomentsXYZ.js +2 -0
  635. package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
  636. package/lib/esm/curve/GeometryQuery.js.map +1 -1
  637. package/lib/esm/curve/LineSegment3d.js +6 -2
  638. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  639. package/lib/esm/curve/LineString3d.d.ts +8 -7
  640. package/lib/esm/curve/LineString3d.d.ts.map +1 -1
  641. package/lib/esm/curve/LineString3d.js +52 -29
  642. package/lib/esm/curve/LineString3d.js.map +1 -1
  643. package/lib/esm/curve/Loop.js +12 -4
  644. package/lib/esm/curve/Loop.js.map +1 -1
  645. package/lib/esm/curve/OffsetOptions.js +25 -21
  646. package/lib/esm/curve/OffsetOptions.js.map +1 -1
  647. package/lib/esm/curve/ParityRegion.js +4 -2
  648. package/lib/esm/curve/ParityRegion.js.map +1 -1
  649. package/lib/esm/curve/Path.js +2 -2
  650. package/lib/esm/curve/Path.js.map +1 -1
  651. package/lib/esm/curve/PointString3d.js +3 -2
  652. package/lib/esm/curve/PointString3d.js.map +1 -1
  653. package/lib/esm/curve/ProxyCurve.js +1 -0
  654. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  655. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js +1 -0
  656. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  657. package/lib/esm/curve/Query/CurveSplitContext.js +3 -0
  658. package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
  659. package/lib/esm/curve/Query/CylindricalRange.js +6 -2
  660. package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
  661. package/lib/esm/curve/Query/InOutTests.js.map +1 -1
  662. package/lib/esm/curve/Query/PlanarSubdivision.js +4 -6
  663. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  664. package/lib/esm/curve/Query/StrokeCountChain.js +12 -0
  665. package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
  666. package/lib/esm/curve/Query/StrokeCountMap.js +14 -0
  667. package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
  668. package/lib/esm/curve/RegionMomentsXY.js +4 -5
  669. package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
  670. package/lib/esm/curve/RegionOps.js +9 -10
  671. package/lib/esm/curve/RegionOps.js.map +1 -1
  672. package/lib/esm/curve/RegionOpsClassificationSweeps.js +24 -1
  673. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  674. package/lib/esm/curve/StrokeOptions.d.ts +10 -5
  675. package/lib/esm/curve/StrokeOptions.d.ts.map +1 -1
  676. package/lib/esm/curve/StrokeOptions.js +30 -8
  677. package/lib/esm/curve/StrokeOptions.js.map +1 -1
  678. package/lib/esm/curve/UnionRegion.js +4 -2
  679. package/lib/esm/curve/UnionRegion.js.map +1 -1
  680. package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.d.ts +71 -0
  681. package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.d.ts.map +1 -0
  682. package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js +177 -0
  683. package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -0
  684. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js +13 -7
  685. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  686. package/lib/esm/curve/internalContexts/ChainCollectorContext.js +6 -0
  687. package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  688. package/lib/esm/curve/internalContexts/CloneCurvesContext.js +2 -0
  689. package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  690. package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  691. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.d.ts +21 -5
  692. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.d.ts.map +1 -1
  693. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js +53 -20
  694. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  695. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js +3 -0
  696. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  697. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js +18 -5
  698. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  699. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js +26 -13
  700. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  701. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js +11 -5
  702. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  703. package/lib/esm/curve/internalContexts/CurveLengthContext.js +6 -0
  704. package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
  705. package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js +8 -6
  706. package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  707. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js +38 -5
  708. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  709. package/lib/esm/curve/internalContexts/GapSearchContext.js +1 -0
  710. package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
  711. package/lib/esm/curve/internalContexts/MultiChainCollector.js +12 -0
  712. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  713. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.d.ts +5 -3
  714. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.d.ts.map +1 -1
  715. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js +6 -3
  716. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  717. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js +7 -0
  718. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  719. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js +22 -4
  720. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  721. package/lib/esm/curve/internalContexts/SumLengthsContext.js +1 -0
  722. package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
  723. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js +3 -0
  724. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  725. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js +2 -0
  726. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  727. package/lib/esm/curve/spiral/ClothoidSeries.js +4 -0
  728. package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
  729. package/lib/esm/curve/spiral/CubicEvaluator.js +2 -0
  730. package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
  731. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js +4 -0
  732. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  733. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js +5 -0
  734. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  735. package/lib/esm/curve/spiral/DirectSpiral3d.js +12 -2
  736. package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
  737. package/lib/esm/curve/spiral/IntegratedSpiral3d.js +24 -4
  738. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  739. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js +2 -0
  740. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  741. package/lib/esm/curve/spiral/NormalizedTransition.js +5 -0
  742. package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
  743. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js +2 -0
  744. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  745. package/lib/esm/curve/spiral/TransitionConditionalProperties.js +10 -0
  746. package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  747. package/lib/esm/curve/spiral/TransitionSpiral3d.js +10 -0
  748. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
  749. package/lib/esm/curve/spiral/XYCurveEvaluator.js +6 -0
  750. package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
  751. package/lib/esm/geometry3d/Angle.js +18 -16
  752. package/lib/esm/geometry3d/Angle.js.map +1 -1
  753. package/lib/esm/geometry3d/AngleSweep.d.ts +8 -3
  754. package/lib/esm/geometry3d/AngleSweep.d.ts.map +1 -1
  755. package/lib/esm/geometry3d/AngleSweep.js +22 -10
  756. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  757. package/lib/esm/geometry3d/BarycentricTriangle.js +25 -0
  758. package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
  759. package/lib/esm/geometry3d/BilinearPatch.js +8 -0
  760. package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
  761. package/lib/esm/geometry3d/CoincidentGeometryOps.js +5 -0
  762. package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
  763. package/lib/esm/geometry3d/Ellipsoid.d.ts +8 -7
  764. package/lib/esm/geometry3d/Ellipsoid.d.ts.map +1 -1
  765. package/lib/esm/geometry3d/Ellipsoid.js +63 -14
  766. package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
  767. package/lib/esm/geometry3d/FrameBuilder.js +12 -4
  768. package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
  769. package/lib/esm/geometry3d/FrustumAnimation.js +7 -0
  770. package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
  771. package/lib/esm/geometry3d/GeometryHandler.d.ts +15 -16
  772. package/lib/esm/geometry3d/GeometryHandler.d.ts.map +1 -1
  773. package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
  774. package/lib/esm/geometry3d/GrowableBlockedArray.js +12 -0
  775. package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
  776. package/lib/esm/geometry3d/GrowableFloat64Array.js +3 -0
  777. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
  778. package/lib/esm/geometry3d/GrowableXYArray.d.ts +0 -5
  779. package/lib/esm/geometry3d/GrowableXYArray.d.ts.map +1 -1
  780. package/lib/esm/geometry3d/GrowableXYArray.js +16 -7
  781. package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
  782. package/lib/esm/geometry3d/GrowableXYZArray.d.ts +32 -10
  783. package/lib/esm/geometry3d/GrowableXYZArray.d.ts.map +1 -1
  784. package/lib/esm/geometry3d/GrowableXYZArray.js +70 -16
  785. package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
  786. package/lib/esm/geometry3d/IndexedCollectionInterval.js +6 -0
  787. package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
  788. package/lib/esm/geometry3d/IndexedXYCollection.js +1 -0
  789. package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
  790. package/lib/esm/geometry3d/IndexedXYZCollection.d.ts +13 -2
  791. package/lib/esm/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
  792. package/lib/esm/geometry3d/IndexedXYZCollection.js +26 -11
  793. package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
  794. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js +3 -0
  795. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  796. package/lib/esm/geometry3d/Matrix3d.d.ts +13 -15
  797. package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -1
  798. package/lib/esm/geometry3d/Matrix3d.js +47 -26
  799. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  800. package/lib/esm/geometry3d/OrderedRotationAngles.js +10 -2
  801. package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
  802. package/lib/esm/geometry3d/Plane3d.js.map +1 -1
  803. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js +2 -0
  804. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  805. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js +7 -0
  806. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  807. package/lib/esm/geometry3d/Point2dArrayCarrier.js +2 -0
  808. package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
  809. package/lib/esm/geometry3d/Point2dVector2d.js +4 -0
  810. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  811. package/lib/esm/geometry3d/Point3dArrayCarrier.js +3 -1
  812. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  813. package/lib/esm/geometry3d/Point3dVector3d.d.ts +7 -10
  814. package/lib/esm/geometry3d/Point3dVector3d.d.ts.map +1 -1
  815. package/lib/esm/geometry3d/Point3dVector3d.js +16 -10
  816. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  817. package/lib/esm/geometry3d/PointHelpers.d.ts +15 -4
  818. package/lib/esm/geometry3d/PointHelpers.d.ts.map +1 -1
  819. package/lib/esm/geometry3d/PointHelpers.js +29 -8
  820. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  821. package/lib/esm/geometry3d/PointStreaming.js +12 -4
  822. package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
  823. package/lib/esm/geometry3d/PolygonOps.d.ts +2 -2
  824. package/lib/esm/geometry3d/PolygonOps.js +62 -25
  825. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  826. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js +7 -3
  827. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  828. package/lib/esm/geometry3d/PolylineOps.d.ts +9 -5
  829. package/lib/esm/geometry3d/PolylineOps.d.ts.map +1 -1
  830. package/lib/esm/geometry3d/PolylineOps.js +12 -5
  831. package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
  832. package/lib/esm/geometry3d/Range.js +21 -4
  833. package/lib/esm/geometry3d/Range.js.map +1 -1
  834. package/lib/esm/geometry3d/Ray2d.js +2 -0
  835. package/lib/esm/geometry3d/Ray2d.js.map +1 -1
  836. package/lib/esm/geometry3d/Ray3d.d.ts +2 -2
  837. package/lib/esm/geometry3d/Ray3d.d.ts.map +1 -1
  838. package/lib/esm/geometry3d/Ray3d.js +20 -11
  839. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  840. package/lib/esm/geometry3d/ReusableObjectCache.js +4 -0
  841. package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
  842. package/lib/esm/geometry3d/Segment1d.js +4 -0
  843. package/lib/esm/geometry3d/Segment1d.js.map +1 -1
  844. package/lib/esm/geometry3d/SortablePolygon.js +11 -0
  845. package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
  846. package/lib/esm/geometry3d/Transform.d.ts +1 -1
  847. package/lib/esm/geometry3d/Transform.js +4 -1
  848. package/lib/esm/geometry3d/Transform.js.map +1 -1
  849. package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
  850. package/lib/esm/geometry3d/XYZProps.js.map +1 -1
  851. package/lib/esm/geometry3d/YawPitchRollAngles.js +6 -0
  852. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  853. package/lib/esm/geometry4d/Map4d.js +2 -0
  854. package/lib/esm/geometry4d/Map4d.js.map +1 -1
  855. package/lib/esm/geometry4d/Matrix4d.js +1 -0
  856. package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
  857. package/lib/esm/geometry4d/MomentData.d.ts +72 -73
  858. package/lib/esm/geometry4d/MomentData.d.ts.map +1 -1
  859. package/lib/esm/geometry4d/MomentData.js +90 -66
  860. package/lib/esm/geometry4d/MomentData.js.map +1 -1
  861. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js +6 -0
  862. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  863. package/lib/esm/geometry4d/Point4d.js +2 -0
  864. package/lib/esm/geometry4d/Point4d.js.map +1 -1
  865. package/lib/esm/numerics/BandedSystem.js.map +1 -1
  866. package/lib/esm/numerics/BezierPolynomials.js +8 -0
  867. package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
  868. package/lib/esm/numerics/ClusterableArray.js +29 -13
  869. package/lib/esm/numerics/ClusterableArray.js.map +1 -1
  870. package/lib/esm/numerics/Complex.js +2 -0
  871. package/lib/esm/numerics/Complex.js.map +1 -1
  872. package/lib/esm/numerics/ConvexPolygon2d.js +3 -0
  873. package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
  874. package/lib/esm/numerics/Newton.js +59 -4
  875. package/lib/esm/numerics/Newton.js.map +1 -1
  876. package/lib/esm/numerics/PascalCoefficients.js +1 -1
  877. package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
  878. package/lib/esm/numerics/PolarData.js +13 -1
  879. package/lib/esm/numerics/PolarData.js.map +1 -1
  880. package/lib/esm/numerics/Polynomials.js +64 -26
  881. package/lib/esm/numerics/Polynomials.js.map +1 -1
  882. package/lib/esm/numerics/Quadrature.js +26 -20
  883. package/lib/esm/numerics/Quadrature.js.map +1 -1
  884. package/lib/esm/numerics/Range1dArray.js.map +1 -1
  885. package/lib/esm/numerics/SmallSystem.js.map +1 -1
  886. package/lib/esm/numerics/TriDiagonalSystem.js +11 -0
  887. package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
  888. package/lib/esm/numerics/UnionFind.js +1 -0
  889. package/lib/esm/numerics/UnionFind.js.map +1 -1
  890. package/lib/esm/numerics/UsageSums.js +10 -0
  891. package/lib/esm/numerics/UsageSums.js.map +1 -1
  892. package/lib/esm/polyface/AuxData.js +16 -0
  893. package/lib/esm/polyface/AuxData.js.map +1 -1
  894. package/lib/esm/polyface/BoxTopology.js +67 -67
  895. package/lib/esm/polyface/BoxTopology.js.map +1 -1
  896. package/lib/esm/polyface/FacetFaceData.d.ts +1 -1
  897. package/lib/esm/polyface/FacetFaceData.js +3 -1
  898. package/lib/esm/polyface/FacetFaceData.js.map +1 -1
  899. package/lib/esm/polyface/FacetLocationDetail.js +30 -0
  900. package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
  901. package/lib/esm/polyface/FacetOrientation.js +12 -1
  902. package/lib/esm/polyface/FacetOrientation.js.map +1 -1
  903. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js +18 -2
  904. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  905. package/lib/esm/polyface/IndexedEdgeMatcher.d.ts +33 -23
  906. package/lib/esm/polyface/IndexedEdgeMatcher.d.ts.map +1 -1
  907. package/lib/esm/polyface/IndexedEdgeMatcher.js +63 -33
  908. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
  909. package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts +4 -3
  910. package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
  911. package/lib/esm/polyface/IndexedPolyfaceVisitor.js +16 -5
  912. package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  913. package/lib/esm/polyface/IndexedPolyfaceWalker.d.ts +233 -0
  914. package/lib/esm/polyface/IndexedPolyfaceWalker.d.ts.map +1 -0
  915. package/lib/esm/polyface/IndexedPolyfaceWalker.js +349 -0
  916. package/lib/esm/polyface/IndexedPolyfaceWalker.js.map +1 -0
  917. package/lib/esm/polyface/Polyface.d.ts +43 -14
  918. package/lib/esm/polyface/Polyface.d.ts.map +1 -1
  919. package/lib/esm/polyface/Polyface.js +90 -19
  920. package/lib/esm/polyface/Polyface.js.map +1 -1
  921. package/lib/esm/polyface/PolyfaceBuilder.d.ts +14 -27
  922. package/lib/esm/polyface/PolyfaceBuilder.d.ts.map +1 -1
  923. package/lib/esm/polyface/PolyfaceBuilder.js +48 -80
  924. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  925. package/lib/esm/polyface/PolyfaceClip.js +8 -0
  926. package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
  927. package/lib/esm/polyface/PolyfaceData.d.ts +36 -3
  928. package/lib/esm/polyface/PolyfaceData.d.ts.map +1 -1
  929. package/lib/esm/polyface/PolyfaceData.js +114 -8
  930. package/lib/esm/polyface/PolyfaceData.js.map +1 -1
  931. package/lib/esm/polyface/PolyfaceQuery.js +47 -7
  932. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  933. package/lib/esm/polyface/RangeLengthData.js +7 -0
  934. package/lib/esm/polyface/RangeLengthData.js.map +1 -1
  935. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js +12 -0
  936. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  937. package/lib/esm/polyface/RangeTree/MinimumValueTester.js +5 -2
  938. package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  939. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js +12 -0
  940. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  941. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js +14 -0
  942. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  943. package/lib/esm/polyface/RangeTree/RangeTreeNode.js +5 -0
  944. package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  945. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js +43 -0
  946. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  947. package/lib/esm/polyface/TaggedNumericData.js +8 -0
  948. package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
  949. package/lib/esm/polyface/TriangleCandidate.js +3 -0
  950. package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
  951. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js +7 -0
  952. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  953. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js +6 -0
  954. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  955. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js +3 -0
  956. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  957. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js +3 -0
  958. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  959. package/lib/esm/polyface/multiclip/OffsetMeshContext.js +32 -0
  960. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  961. package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  962. package/lib/esm/polyface/multiclip/RangeSearch.js +5 -5
  963. package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
  964. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js +21 -8
  965. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  966. package/lib/esm/polyface/multiclip/XYPointBuckets.js +6 -0
  967. package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
  968. package/lib/esm/serialization/BGFBAccessors.d.ts +35 -9
  969. package/lib/esm/serialization/BGFBAccessors.d.ts.map +1 -1
  970. package/lib/esm/serialization/BGFBAccessors.js +141 -179
  971. package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
  972. package/lib/esm/serialization/BGFBReader.d.ts +2 -2
  973. package/lib/esm/serialization/BGFBReader.d.ts.map +1 -1
  974. package/lib/esm/serialization/BGFBReader.js +75 -62
  975. package/lib/esm/serialization/BGFBReader.js.map +1 -1
  976. package/lib/esm/serialization/BGFBWriter.d.ts +5 -1
  977. package/lib/esm/serialization/BGFBWriter.d.ts.map +1 -1
  978. package/lib/esm/serialization/BGFBWriter.js +18 -3
  979. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  980. package/lib/esm/serialization/BentleyGeometryFlatBuffer.js +1 -0
  981. package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  982. package/lib/esm/serialization/DeepCompare.js +17 -17
  983. package/lib/esm/serialization/DeepCompare.js.map +1 -1
  984. package/lib/esm/serialization/GeometrySamples.d.ts +5 -5
  985. package/lib/esm/serialization/GeometrySamples.d.ts.map +1 -1
  986. package/lib/esm/serialization/GeometrySamples.js +113 -112
  987. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  988. package/lib/esm/serialization/IModelJsonSchema.d.ts +78 -64
  989. package/lib/esm/serialization/IModelJsonSchema.d.ts.map +1 -1
  990. package/lib/esm/serialization/IModelJsonSchema.js +107 -83
  991. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  992. package/lib/esm/serialization/SerializationHelpers.d.ts +36 -0
  993. package/lib/esm/serialization/SerializationHelpers.d.ts.map +1 -1
  994. package/lib/esm/serialization/SerializationHelpers.js +117 -0
  995. package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
  996. package/lib/esm/solid/Box.js +7 -2
  997. package/lib/esm/solid/Box.js.map +1 -1
  998. package/lib/esm/solid/Cone.d.ts +39 -14
  999. package/lib/esm/solid/Cone.d.ts.map +1 -1
  1000. package/lib/esm/solid/Cone.js +53 -17
  1001. package/lib/esm/solid/Cone.js.map +1 -1
  1002. package/lib/esm/solid/LinearSweep.js +4 -2
  1003. package/lib/esm/solid/LinearSweep.js.map +1 -1
  1004. package/lib/esm/solid/RotationalSweep.d.ts +17 -17
  1005. package/lib/esm/solid/RotationalSweep.d.ts.map +1 -1
  1006. package/lib/esm/solid/RotationalSweep.js +38 -25
  1007. package/lib/esm/solid/RotationalSweep.js.map +1 -1
  1008. package/lib/esm/solid/RuledSweep.d.ts +26 -23
  1009. package/lib/esm/solid/RuledSweep.d.ts.map +1 -1
  1010. package/lib/esm/solid/RuledSweep.js +32 -24
  1011. package/lib/esm/solid/RuledSweep.js.map +1 -1
  1012. package/lib/esm/solid/SolidPrimitive.d.ts +12 -11
  1013. package/lib/esm/solid/SolidPrimitive.d.ts.map +1 -1
  1014. package/lib/esm/solid/SolidPrimitive.js +11 -6
  1015. package/lib/esm/solid/SolidPrimitive.js.map +1 -1
  1016. package/lib/esm/solid/Sphere.d.ts +36 -17
  1017. package/lib/esm/solid/Sphere.d.ts.map +1 -1
  1018. package/lib/esm/solid/Sphere.js +54 -25
  1019. package/lib/esm/solid/Sphere.js.map +1 -1
  1020. package/lib/esm/solid/SweepContour.d.ts +24 -15
  1021. package/lib/esm/solid/SweepContour.d.ts.map +1 -1
  1022. package/lib/esm/solid/SweepContour.js +33 -15
  1023. package/lib/esm/solid/SweepContour.js.map +1 -1
  1024. package/lib/esm/solid/TorusPipe.js +7 -2
  1025. package/lib/esm/solid/TorusPipe.js.map +1 -1
  1026. package/lib/esm/topology/ChainMerge.js +16 -4
  1027. package/lib/esm/topology/ChainMerge.js.map +1 -1
  1028. package/lib/esm/topology/Graph.js +41 -6
  1029. package/lib/esm/topology/Graph.js.map +1 -1
  1030. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +1 -1
  1031. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js +5 -1
  1032. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  1033. package/lib/esm/topology/HalfEdgeGraphSearch.js +2 -0
  1034. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  1035. package/lib/esm/topology/HalfEdgeGraphSpineContext.js +9 -2
  1036. package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  1037. package/lib/esm/topology/HalfEdgeGraphValidation.js +7 -9
  1038. package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
  1039. package/lib/esm/topology/HalfEdgeMarkSet.js +5 -0
  1040. package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
  1041. package/lib/esm/topology/HalfEdgeNodeXYZUV.js +6 -0
  1042. package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  1043. package/lib/esm/topology/HalfEdgePointInGraphSearch.js +1 -0
  1044. package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  1045. package/lib/esm/topology/HalfEdgePositionDetail.js +16 -0
  1046. package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
  1047. package/lib/esm/topology/HalfEdgePriorityQueue.js +2 -0
  1048. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
  1049. package/lib/esm/topology/InsertAndRetriangulateContext.js +4 -0
  1050. package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
  1051. package/lib/esm/topology/MaskManager.js +3 -0
  1052. package/lib/esm/topology/MaskManager.js.map +1 -1
  1053. package/lib/esm/topology/Merging.js +11 -6
  1054. package/lib/esm/topology/Merging.js.map +1 -1
  1055. package/lib/esm/topology/RegularizeFace.js +22 -0
  1056. package/lib/esm/topology/RegularizeFace.js.map +1 -1
  1057. package/lib/esm/topology/SignedDataSummary.js +22 -0
  1058. package/lib/esm/topology/SignedDataSummary.js.map +1 -1
  1059. package/lib/esm/topology/SpaceTriangulation.js.map +1 -1
  1060. package/lib/esm/topology/Triangulation.d.ts +3 -3
  1061. package/lib/esm/topology/Triangulation.d.ts.map +1 -1
  1062. package/lib/esm/topology/Triangulation.js +28 -18
  1063. package/lib/esm/topology/Triangulation.js.map +1 -1
  1064. package/lib/esm/topology/XYParitySearchContext.js +13 -0
  1065. package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
  1066. package/package.json +9 -9
@@ -130,15 +130,26 @@ export declare abstract class IndexedXYZCollection {
130
130
  * @param index1 second point index
131
131
  */
132
132
  abstract distanceIndexIndex(index0: number, index1: number): number | undefined;
133
+ /**
134
+ * Test if index is valid for an xyz within this array.
135
+ * @param index xyz index to test.
136
+ */
137
+ isIndexValid(index: number): boolean;
133
138
  /** Adjust index into range by modulo with the length. */
134
139
  cyclicIndex(i: number): number;
135
140
  /** Return the range of the points. */
136
141
  getRange(): Range3d;
137
142
  /**
138
- * For each run of points with indices i+1 to i+n within distance tolerance of points[i], return the indices i+1, ..., i+n.
143
+ * For each subset of `k` successive points within tolerance of the first point in the subset, return the indices of
144
+ * the last `k-1` duplicates.
145
+ * * Index `0` is never returned.
146
+ * @param tolerance optional distance tol for compression (default [[Geometry.smallMetricDistance]])
147
+ * @param preserveLast if the last `k < this.length` points of the instance are duplicates, whether to return the
148
+ * indices of the *first* `k-1` duplicates for this last run. If true, index `this.length - 1` is not returned
149
+ * unless all points are duplicates, in which case all indices but `0` are returned. Default value is false.
139
150
  * @return ordered array of 0-based indices of duplicate points
140
151
  */
141
- findOrderedDuplicates(tolerance?: number): number[];
152
+ findOrderedDuplicates(tolerance?: number, preserveLast?: boolean): number[];
142
153
  /** Accumulate scale times the x,y,z values at index.
143
154
  * * No action if index is out of bounds.
144
155
  */
@@ -1 +1 @@
1
- {"version":3,"file":"IndexedXYZCollection.d.ts","sourceRoot":"","sources":["../../../src/geometry3d/IndexedXYZCollection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IndexedXYZCollection.d.ts","sourceRoot":"","sources":["../../../src/geometry3d/IndexedXYZCollection.ts"],"names":[],"mappings":"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"}
@@ -12,8 +12,9 @@ const Geometry_1 = require("../Geometry");
12
12
  const Point3dVector3d_1 = require("./Point3dVector3d");
13
13
  const Range_1 = require("./Range");
14
14
  class PointsIterator {
15
+ _collection;
16
+ _curIndex = -1;
15
17
  constructor(collection) {
16
- this._curIndex = -1;
17
18
  this._collection = collection;
18
19
  }
19
20
  next() {
@@ -109,6 +110,13 @@ class IndexedXYZCollection {
109
110
  return undefined;
110
111
  return Geometry_1.Geometry.hypotenuseSquaredXYZ(target.x - this.getXAtUncheckedPointIndex(index0), target.y - this.getYAtUncheckedPointIndex(index0), target.z - this.getZAtUncheckedPointIndex(index0));
111
112
  }
113
+ /**
114
+ * Test if index is valid for an xyz within this array.
115
+ * @param index xyz index to test.
116
+ */
117
+ isIndexValid(index) {
118
+ return index >= 0 && index < this.length;
119
+ }
112
120
  /** Adjust index into range by modulo with the length. */
113
121
  cyclicIndex(i) {
114
122
  return (i % this.length);
@@ -125,24 +133,31 @@ class IndexedXYZCollection {
125
133
  return range;
126
134
  }
127
135
  /**
128
- * For each run of points with indices i+1 to i+n within distance tolerance of points[i], return the indices i+1, ..., i+n.
136
+ * For each subset of `k` successive points within tolerance of the first point in the subset, return the indices of
137
+ * the last `k-1` duplicates.
138
+ * * Index `0` is never returned.
139
+ * @param tolerance optional distance tol for compression (default [[Geometry.smallMetricDistance]])
140
+ * @param preserveLast if the last `k < this.length` points of the instance are duplicates, whether to return the
141
+ * indices of the *first* `k-1` duplicates for this last run. If true, index `this.length - 1` is not returned
142
+ * unless all points are duplicates, in which case all indices but `0` are returned. Default value is false.
129
143
  * @return ordered array of 0-based indices of duplicate points
130
144
  */
131
- findOrderedDuplicates(tolerance = Geometry_1.Geometry.smallMetricDistance) {
132
- const tol2 = tolerance * tolerance;
145
+ findOrderedDuplicates(tolerance = Geometry_1.Geometry.smallMetricDistance, preserveLast = false) {
133
146
  const indices = [];
134
147
  if (this.length > 1) {
135
148
  for (let i = 0; i < this.length - 1;) {
136
149
  let j = i + 1;
137
- for (; j < this.length; ++j) {
138
- const dist2 = this.distanceSquaredIndexIndex(i, j);
139
- if (dist2 !== undefined && dist2 < tol2)
140
- indices.push(j);
141
- else
142
- break;
143
- }
150
+ for (; this.almostEqualIndexIndex(i, j, tolerance); ++j)
151
+ indices.push(j);
144
152
  i = j; // found next unique point
145
153
  }
154
+ if (preserveLast && indices.length > 0 && indices.length < this.length - 1) { // not all points are duplicate
155
+ let numLastRun = 0;
156
+ for (; numLastRun <= indices.length - 1 && indices[indices.length - 1 - numLastRun] === this.length - 1 - numLastRun; ++numLastRun)
157
+ ;
158
+ for (let i = 0; i < numLastRun; ++i)
159
+ indices[indices.length - 1 - i] -= 1; // decrement the indices of the last run so that the last point is preserved
160
+ }
146
161
  }
147
162
  return indices;
148
163
  }
@@ -1 +1 @@
1
- {"version":3,"file":"IndexedXYZCollection.js","sourceRoot":"","sources":["../../../src/geometry3d/IndexedXYZCollection.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 ArraysAndInterfaces\r\n */\r\n\r\nimport { Geometry } from \"../Geometry\";\r\nimport { Point3d, Vector3d, XYZ } from \"./Point3dVector3d\";\r\nimport { Range3d } from \"./Range\";\r\nimport { XAndY, XYAndZ } from \"./XYZProps\";\r\n\r\nclass PointsIterator implements Iterator<Point3d>, Iterable<Point3d> {\r\n private readonly _collection: IndexedXYZCollection;\r\n private _curIndex = -1;\r\n\r\n public constructor(collection: IndexedXYZCollection) {\r\n this._collection = collection;\r\n }\r\n\r\n public next(): IteratorResult<Point3d> {\r\n if (++this._curIndex >= this._collection.length) {\r\n // The ECMAScript spec states that value=undefined is valid if done=true. The TypeScript interface violates the spec hence the cast to any and back below.\r\n return { done: true } as any as IteratorResult<Point3d>;\r\n }\r\n\r\n return {\r\n value: this._collection.getPoint3dAtUncheckedPointIndex(this._curIndex),\r\n done: false,\r\n };\r\n }\r\n\r\n public [Symbol.iterator](): Iterator<Point3d> { return this; }\r\n}\r\n/**\r\n * abstract base class for read-only access to XYZ data with indexed reference.\r\n * * This allows algorithms to work with Point3d[] or GrowableXYZ.\r\n * * GrowableXYZArray implements these for its data.\r\n * * Point3dArrayCarrier carries a (reference to) a Point3d[] and implements the methods with calls on that array reference.\r\n * * In addition to \"point by point\" accessors, other abstract members compute commonly useful vector data \"between points\".\r\n * * Methods that create vectors among multiple indices allow callers to avoid creating temporaries.\r\n * @public\r\n */\r\nexport abstract class IndexedXYZCollection {\r\n /**\r\n * Return the point at `index` as a strongly typed Point3d.\r\n * @param index index of point within the array\r\n * @param result caller-allocated destination\r\n * @returns undefined if the index is out of bounds\r\n */\r\n public abstract getPoint3dAtCheckedPointIndex(index: number, result?: Point3d): Point3d | undefined;\r\n /**\r\n * Return the point at `index` as a strongly typed Point3d, without checking the point index validity.\r\n * @param index index of point within the array\r\n * @param result caller-allocated destination\r\n * @returns undefined if the index is out of bounds\r\n */\r\n public abstract getPoint3dAtUncheckedPointIndex(index: number, result?: Point3d): Point3d;\r\n /**\r\n * Get from `index` as a strongly typed Vector3d.\r\n * @param index index of point within the array\r\n * @param result caller-allocated destination\r\n * @returns undefined if the index is out of bounds\r\n */\r\n public abstract getVector3dAtCheckedVectorIndex(index: number, result?: Vector3d): Vector3d | undefined;\r\n /**\r\n * Return a vector from the point at `indexA` to the point at `indexB`\r\n * @param indexA index of point within the array\r\n * @param indexB index of point within the array\r\n * @param result caller-allocated vector.\r\n * @returns undefined if either index is out of bounds\r\n */\r\n public abstract vectorIndexIndex(indexA: number, indexB: number, result?: Vector3d): Vector3d | undefined;\r\n /**\r\n * Return a vector from `origin` to the point at `indexB`\r\n * @param origin origin for vector\r\n * @param indexB index of point within the array\r\n * @param result caller-allocated vector.\r\n * @returns undefined if index is out of bounds\r\n */\r\n public abstract vectorXYAndZIndex(origin: XYAndZ, indexB: number, result?: Vector3d): Vector3d | undefined;\r\n /**\r\n * Return a vector from the point at `indexA` to `target`\r\n * @param indexA index of point within the array\r\n * @param target target for vector\r\n * @param result caller-allocated vector.\r\n * @returns undefined if index is out of bounds\r\n */\r\n public vectorIndexXYAndZ(indexA: number, target: XYAndZ, result?: Vector3d): Vector3d | undefined {\r\n const reversed = this.vectorXYAndZIndex(target, indexA, result);\r\n return reversed?.negate(reversed);\r\n }\r\n /**\r\n * Return the dot product of the vectors from the point at `origin` to the points at `indexA` and `indexB`.\r\n * @param origin index of point within the array; origin of both vectors\r\n * @param indexA index of point within the array; target of the first vector\r\n * @param indexA index of point within the array; target of the second vector\r\n * @returns undefined if index is out of bounds\r\n */\r\n public dotProductIndexIndexIndex(origin: number, indexA: number, indexB: number): number | undefined {\r\n if (origin < 0 || origin >= this.length || indexA < 0 || indexA >= this.length || indexB < 0 || indexB >= this.length)\r\n return undefined;\r\n const x0 = this.getXAtUncheckedPointIndex(origin);\r\n const y0 = this.getYAtUncheckedPointIndex(origin);\r\n const z0 = this.getZAtUncheckedPointIndex(origin);\r\n return (this.getXAtUncheckedPointIndex(indexA) - x0) * (this.getXAtUncheckedPointIndex(indexB) - x0) +\r\n (this.getYAtUncheckedPointIndex(indexA) - y0) * (this.getYAtUncheckedPointIndex(indexB) - y0) +\r\n (this.getZAtUncheckedPointIndex(indexA) - z0) * (this.getZAtUncheckedPointIndex(indexB) - z0);\r\n }\r\n /**\r\n * Return the dot product of the vectors from the point at `origin` to the point at `indexA` and to `targetB`.\r\n * @param origin index of point within the array; origin of both vectors\r\n * @param indexA index of point within the array; target of the first vector\r\n * @param targetB target for second vector\r\n * @returns undefined if index is out of bounds\r\n */\r\n public dotProductIndexIndexXYAndZ(origin: number, indexA: number, targetB: XYAndZ): number | undefined {\r\n if (origin < 0 || origin >= this.length || indexA < 0 || indexA >= this.length)\r\n return undefined;\r\n const x0 = this.getXAtUncheckedPointIndex(origin);\r\n const y0 = this.getYAtUncheckedPointIndex(origin);\r\n const z0 = this.getZAtUncheckedPointIndex(origin);\r\n return (this.getXAtUncheckedPointIndex(indexA) - x0) * (targetB.x - x0) +\r\n (this.getYAtUncheckedPointIndex(indexA) - y0) * (targetB.y - y0) +\r\n (this.getZAtUncheckedPointIndex(indexA) - z0) * (targetB.z - z0);\r\n }\r\n /**\r\n * Return the cross product of the vectors from `origin` to points at `indexA` and `indexB`\r\n * @param origin origin for vector\r\n * @param indexA index of first target within the array\r\n * @param indexB index of second target within the array\r\n * @param result caller-allocated vector.\r\n * @returns undefined if either index is out of bounds\r\n */\r\n public abstract crossProductXYAndZIndexIndex(origin: XYAndZ, indexA: number, indexB: number, result?: Vector3d): Vector3d | undefined;\r\n /**\r\n * Return the cross product of the vectors from `origin` to the point at `indexA` and to `targetB`\r\n * @param origin index of point within the array; origin of both vectors\r\n * @param indexA index of point within the array; target of the first vector\r\n * @param targetB target of second vector\r\n * @param result optional caller-allocated result to fill and return\r\n * @returns undefined if an index is out of bounds\r\n */\r\n public crossProductIndexIndexXYAndZ(origin: number, indexA: number, targetB: XYAndZ, result?: Vector3d): Vector3d | undefined {\r\n if (origin < 0 || origin >= this.length || indexA < 0 || indexA >= this.length)\r\n return undefined;\r\n const x0 = this.getXAtUncheckedPointIndex(origin);\r\n const y0 = this.getYAtUncheckedPointIndex(origin);\r\n const z0 = this.getZAtUncheckedPointIndex(origin);\r\n return Vector3d.createCrossProduct(this.getXAtUncheckedPointIndex(indexA) - x0,\r\n this.getYAtUncheckedPointIndex(indexA) - y0,\r\n this.getZAtUncheckedPointIndex(indexA) - z0,\r\n targetB.x - x0,\r\n targetB.y - y0,\r\n targetB.z - z0, result);\r\n }\r\n /**\r\n * Return the cross product of vectors from `origin` to points at `indexA` and `indexB`\r\n * @param origin origin for vector\r\n * @param indexA index of first target within the array\r\n * @param indexB index of second target within the array\r\n * @param result optional caller-allocated vector.\r\n * @returns undefined if either index is out of bounds\r\n */\r\n public abstract crossProductIndexIndexIndex(origin: number, indexA: number, indexB: number, result?: Vector3d): Vector3d | undefined;\r\n /**\r\n * Return the cross product of vectors from origin point at `indexA` to target points at `indexB` and `indexC`\r\n * @param origin index of origin\r\n * @param indexA index of first target within the array\r\n * @param indexB index of second target within the array\r\n * @param result caller-allocated vector.\r\n * @returns return true if indexA, indexB both valid\r\n */\r\n public abstract accumulateCrossProductIndexIndexIndex(origin: number, indexA: number, indexB: number, result: Vector3d): void;\r\n\r\n /**\r\n * read-only property for number of XYZ in the collection.\r\n */\r\n public abstract get length(): number;\r\n /**\r\n * Return distance squared between indicated points.\r\n * @param index0 first point index\r\n * @param index1 second point index\r\n */\r\n public abstract distanceSquaredIndexIndex(index0: number, index1: number): number | undefined;\r\n /**\r\n * Return distance squared between the point at index0 and target.\r\n * @param index0 first point index\r\n * @param target second point\r\n */\r\n public distanceSquaredIndexXYAndZ(index0: number, target: XYAndZ): number | undefined {\r\n if (index0 < 0 || index0 >= this.length)\r\n return undefined;\r\n return Geometry.hypotenuseSquaredXYZ(\r\n target.x - this.getXAtUncheckedPointIndex(index0),\r\n target.y - this.getYAtUncheckedPointIndex(index0),\r\n target.z - this.getZAtUncheckedPointIndex(index0));\r\n }\r\n /**\r\n * Return distance between indicated points.\r\n * @param index0 first point index\r\n * @param index1 second point index\r\n */\r\n public abstract distanceIndexIndex(index0: number, index1: number): number | undefined;\r\n\r\n /** Adjust index into range by modulo with the length. */\r\n public cyclicIndex(i: number): number {\r\n return (i % this.length);\r\n }\r\n /** Return the range of the points. */\r\n public getRange(): Range3d {\r\n const range = Range3d.createNull();\r\n const n = this.length;\r\n const point = Point3d.create();\r\n for (let i = 0; i < n; i++) {\r\n this.getPoint3dAtUncheckedPointIndex(i, point);\r\n range.extendPoint(point);\r\n }\r\n return range;\r\n }\r\n\r\n /**\r\n * For each run of points with indices i+1 to i+n within distance tolerance of points[i], return the indices i+1, ..., i+n.\r\n * @return ordered array of 0-based indices of duplicate points\r\n */\r\n public findOrderedDuplicates(tolerance: number = Geometry.smallMetricDistance): number[] {\r\n const tol2 = tolerance * tolerance;\r\n const indices: number[] = [];\r\n if (this.length > 1) {\r\n for (let i = 0; i < this.length - 1;) {\r\n let j = i + 1;\r\n for (; j < this.length; ++j) {\r\n const dist2 = this.distanceSquaredIndexIndex(i, j);\r\n if (dist2 !== undefined && dist2 < tol2)\r\n indices.push(j);\r\n else\r\n break;\r\n }\r\n i = j; // found next unique point\r\n }\r\n }\r\n return indices;\r\n }\r\n\r\n /** Accumulate scale times the x,y,z values at index.\r\n * * No action if index is out of bounds.\r\n */\r\n public abstract accumulateScaledXYZ(index: number, scale: number, sum: Point3d): void;\r\n\r\n /** Compute the linear combination s of the indexed p_i and given scales s_i.\r\n * @param scales array of scales. For best results, scales should have same length as the instance.\r\n * @param result optional pre-allocated object to fill and return\r\n * @return s = sum(p_i * s_i), where i ranges from 0 to min(this.length, scales.length).\r\n */\r\n public linearCombination(scales: number[], result?: Point3d | Vector3d): XYZ {\r\n const n = Math.min(this.length, scales.length);\r\n const sum = (result instanceof Vector3d) ? Vector3d.createZero(result) : Point3d.createZero(result);\r\n for (let i = 0; i < n; ++i) {\r\n sum.x += scales[i] * this.getXAtUncheckedPointIndex(i);\r\n sum.y += scales[i] * this.getYAtUncheckedPointIndex(i);\r\n sum.z += scales[i] * this.getZAtUncheckedPointIndex(i);\r\n }\r\n return sum;\r\n }\r\n\r\n /**\r\n * Interpolate the points at the given indices.\r\n * @param index0 index of point p0 within the array\r\n * @param fraction fraction f such that returned point is p0 + f * (p1 - p0)\r\n * @param index1 index of point p1 within the array\r\n * @param result optional caller-allocated result to fill and return\r\n * @returns undefined if an index is out of bounds\r\n */\r\n public interpolateIndexIndex(index0: number, fraction: number, index1: number, result?: Point3d): Point3d | undefined {\r\n if (index0 < 0 || index0 >= this.length || index1 < 0 || index1 >= this.length)\r\n return undefined;\r\n return Point3d.create(Geometry.interpolate(this.getXAtUncheckedPointIndex(index0), fraction, this.getXAtUncheckedPointIndex(index1)),\r\n Geometry.interpolate(this.getYAtUncheckedPointIndex(index0), fraction, this.getYAtUncheckedPointIndex(index1)),\r\n Geometry.interpolate(this.getZAtUncheckedPointIndex(index0), fraction, this.getZAtUncheckedPointIndex(index1)), result);\r\n }\r\n\r\n /** access x of indexed point */\r\n public abstract getXAtUncheckedPointIndex(pointIndex: number): number;\r\n\r\n /** access y of indexed point */\r\n public abstract getYAtUncheckedPointIndex(pointIndex: number): number;\r\n\r\n /** access z of indexed point */\r\n public abstract getZAtUncheckedPointIndex(pointIndex: number): number;\r\n\r\n /** Return iterator over the points in this collection. Usage:\r\n * ```ts\r\n * for (const point: Point3d of collection.points) { ... }\r\n * ```\r\n */\r\n public get points(): Iterable<Point3d> {\r\n return new PointsIterator(this);\r\n }\r\n /** convert to Point3d[] */\r\n public getArray(): Point3d[] {\r\n const result = [];\r\n for (const p of this.points)\r\n result.push(p);\r\n return result;\r\n }\r\n /** Return the first point, or undefined if the array is empty. */\r\n public front(result?: Point3d): Point3d | undefined {\r\n if (this.length === 0)\r\n return undefined;\r\n return this.getPoint3dAtUncheckedPointIndex(0, result);\r\n }\r\n /** Return the last point, or undefined if the array is empty. */\r\n public back(result?: Point3d): Point3d | undefined {\r\n if (this.length === 0)\r\n return undefined;\r\n return this.getPoint3dAtUncheckedPointIndex(this.length - 1, result);\r\n }\r\n /**\r\n * Test whether the indexed points are equal within tolerance.\r\n * @param index0 index of first point\r\n * @param index1 index of second point\r\n * @param tolerance max coordinate difference to be considered equal. For exact test, pass 0. Defaults to `Geometry.smallMetricDistance`.\r\n */\r\n public almostEqualIndexIndex(index0: number, index1: number, tolerance = Geometry.smallMetricDistance): boolean | undefined {\r\n if (index0 < 0 || index0 >= this.length || index1 < 0 || index1 >= this.length)\r\n return undefined;\r\n return Geometry.isSameCoordinate(this.getXAtUncheckedPointIndex(index0), this.getXAtUncheckedPointIndex(index1), tolerance)\r\n && Geometry.isSameCoordinate(this.getYAtUncheckedPointIndex(index0), this.getYAtUncheckedPointIndex(index1), tolerance)\r\n && Geometry.isSameCoordinate(this.getZAtUncheckedPointIndex(index0), this.getZAtUncheckedPointIndex(index1), tolerance);\r\n }\r\n}\r\n/**\r\n * abstract base class extends IndexedXYZCollection, adding methods to push, peek, and pop, and rewrite.\r\n * @public\r\n */\r\nexport abstract class IndexedReadWriteXYZCollection extends IndexedXYZCollection {\r\n /** push a (clone of) point onto the collection\r\n * * point itself is not pushed -- xyz data is extracted into the native form of the collection.\r\n */\r\n public abstract push(data: XYAndZ): void;\r\n /**\r\n * push a new point (given by coordinates) onto the collection\r\n * @param x x coordinate\r\n * @param y y coordinate\r\n * @param z z coordinate\r\n */\r\n public abstract pushXYZ(x?: number, y?: number, z?: number): void;\r\n /** remove the final point. */\r\n public abstract pop(): void;\r\n /** clear all entries */\r\n public abstract clear(): void;\r\n /** reverse the points in place. */\r\n public abstract reverseInPlace(): void;\r\n}\r\n\r\n/**\r\n * Type for use as signature for xyz data of a single linestring appearing in a parameter list.\r\n * @public\r\n */\r\nexport type LineStringDataVariant = IndexedXYZCollection | XYAndZ[] | XAndY[] | number[][];\r\n\r\n/**\r\n * Type for use as signature for multiple xyz data of multiple linestrings appearing in a parameter list.\r\n * @public\r\n */\r\nexport type MultiLineStringDataVariant = LineStringDataVariant | LineStringDataVariant[];\r\n"]}
1
+ {"version":3,"file":"IndexedXYZCollection.js","sourceRoot":"","sources":["../../../src/geometry3d/IndexedXYZCollection.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 ArraysAndInterfaces\n */\n\nimport { Geometry } from \"../Geometry\";\nimport { Point3d, Vector3d, XYZ } from \"./Point3dVector3d\";\nimport { Range3d } from \"./Range\";\nimport { XAndY, XYAndZ } from \"./XYZProps\";\n\nclass PointsIterator implements Iterator<Point3d>, Iterable<Point3d> {\n private readonly _collection: IndexedXYZCollection;\n private _curIndex = -1;\n\n public constructor(collection: IndexedXYZCollection) {\n this._collection = collection;\n }\n\n public next(): IteratorResult<Point3d> {\n if (++this._curIndex >= this._collection.length) {\n // The ECMAScript spec states that value=undefined is valid if done=true. The TypeScript interface violates the spec hence the cast to any and back below.\n return { done: true } as any as IteratorResult<Point3d>;\n }\n\n return {\n value: this._collection.getPoint3dAtUncheckedPointIndex(this._curIndex),\n done: false,\n };\n }\n\n public [Symbol.iterator](): Iterator<Point3d> { return this; }\n}\n/**\n * abstract base class for read-only access to XYZ data with indexed reference.\n * * This allows algorithms to work with Point3d[] or GrowableXYZ.\n * * GrowableXYZArray implements these for its data.\n * * Point3dArrayCarrier carries a (reference to) a Point3d[] and implements the methods with calls on that array reference.\n * * In addition to \"point by point\" accessors, other abstract members compute commonly useful vector data \"between points\".\n * * Methods that create vectors among multiple indices allow callers to avoid creating temporaries.\n * @public\n */\nexport abstract class IndexedXYZCollection {\n /**\n * Return the point at `index` as a strongly typed Point3d.\n * @param index index of point within the array\n * @param result caller-allocated destination\n * @returns undefined if the index is out of bounds\n */\n public abstract getPoint3dAtCheckedPointIndex(index: number, result?: Point3d): Point3d | undefined;\n /**\n * Return the point at `index` as a strongly typed Point3d, without checking the point index validity.\n * @param index index of point within the array\n * @param result caller-allocated destination\n * @returns undefined if the index is out of bounds\n */\n public abstract getPoint3dAtUncheckedPointIndex(index: number, result?: Point3d): Point3d;\n /**\n * Get from `index` as a strongly typed Vector3d.\n * @param index index of point within the array\n * @param result caller-allocated destination\n * @returns undefined if the index is out of bounds\n */\n public abstract getVector3dAtCheckedVectorIndex(index: number, result?: Vector3d): Vector3d | undefined;\n /**\n * Return a vector from the point at `indexA` to the point at `indexB`\n * @param indexA index of point within the array\n * @param indexB index of point within the array\n * @param result caller-allocated vector.\n * @returns undefined if either index is out of bounds\n */\n public abstract vectorIndexIndex(indexA: number, indexB: number, result?: Vector3d): Vector3d | undefined;\n /**\n * Return a vector from `origin` to the point at `indexB`\n * @param origin origin for vector\n * @param indexB index of point within the array\n * @param result caller-allocated vector.\n * @returns undefined if index is out of bounds\n */\n public abstract vectorXYAndZIndex(origin: XYAndZ, indexB: number, result?: Vector3d): Vector3d | undefined;\n /**\n * Return a vector from the point at `indexA` to `target`\n * @param indexA index of point within the array\n * @param target target for vector\n * @param result caller-allocated vector.\n * @returns undefined if index is out of bounds\n */\n public vectorIndexXYAndZ(indexA: number, target: XYAndZ, result?: Vector3d): Vector3d | undefined {\n const reversed = this.vectorXYAndZIndex(target, indexA, result);\n return reversed?.negate(reversed);\n }\n /**\n * Return the dot product of the vectors from the point at `origin` to the points at `indexA` and `indexB`.\n * @param origin index of point within the array; origin of both vectors\n * @param indexA index of point within the array; target of the first vector\n * @param indexA index of point within the array; target of the second vector\n * @returns undefined if index is out of bounds\n */\n public dotProductIndexIndexIndex(origin: number, indexA: number, indexB: number): number | undefined {\n if (origin < 0 || origin >= this.length || indexA < 0 || indexA >= this.length || indexB < 0 || indexB >= this.length)\n return undefined;\n const x0 = this.getXAtUncheckedPointIndex(origin);\n const y0 = this.getYAtUncheckedPointIndex(origin);\n const z0 = this.getZAtUncheckedPointIndex(origin);\n return (this.getXAtUncheckedPointIndex(indexA) - x0) * (this.getXAtUncheckedPointIndex(indexB) - x0) +\n (this.getYAtUncheckedPointIndex(indexA) - y0) * (this.getYAtUncheckedPointIndex(indexB) - y0) +\n (this.getZAtUncheckedPointIndex(indexA) - z0) * (this.getZAtUncheckedPointIndex(indexB) - z0);\n }\n /**\n * Return the dot product of the vectors from the point at `origin` to the point at `indexA` and to `targetB`.\n * @param origin index of point within the array; origin of both vectors\n * @param indexA index of point within the array; target of the first vector\n * @param targetB target for second vector\n * @returns undefined if index is out of bounds\n */\n public dotProductIndexIndexXYAndZ(origin: number, indexA: number, targetB: XYAndZ): number | undefined {\n if (origin < 0 || origin >= this.length || indexA < 0 || indexA >= this.length)\n return undefined;\n const x0 = this.getXAtUncheckedPointIndex(origin);\n const y0 = this.getYAtUncheckedPointIndex(origin);\n const z0 = this.getZAtUncheckedPointIndex(origin);\n return (this.getXAtUncheckedPointIndex(indexA) - x0) * (targetB.x - x0) +\n (this.getYAtUncheckedPointIndex(indexA) - y0) * (targetB.y - y0) +\n (this.getZAtUncheckedPointIndex(indexA) - z0) * (targetB.z - z0);\n }\n /**\n * Return the cross product of the vectors from `origin` to points at `indexA` and `indexB`\n * @param origin origin for vector\n * @param indexA index of first target within the array\n * @param indexB index of second target within the array\n * @param result caller-allocated vector.\n * @returns undefined if either index is out of bounds\n */\n public abstract crossProductXYAndZIndexIndex(origin: XYAndZ, indexA: number, indexB: number, result?: Vector3d): Vector3d | undefined;\n /**\n * Return the cross product of the vectors from `origin` to the point at `indexA` and to `targetB`\n * @param origin index of point within the array; origin of both vectors\n * @param indexA index of point within the array; target of the first vector\n * @param targetB target of second vector\n * @param result optional caller-allocated result to fill and return\n * @returns undefined if an index is out of bounds\n */\n public crossProductIndexIndexXYAndZ(origin: number, indexA: number, targetB: XYAndZ, result?: Vector3d): Vector3d | undefined {\n if (origin < 0 || origin >= this.length || indexA < 0 || indexA >= this.length)\n return undefined;\n const x0 = this.getXAtUncheckedPointIndex(origin);\n const y0 = this.getYAtUncheckedPointIndex(origin);\n const z0 = this.getZAtUncheckedPointIndex(origin);\n return Vector3d.createCrossProduct(this.getXAtUncheckedPointIndex(indexA) - x0,\n this.getYAtUncheckedPointIndex(indexA) - y0,\n this.getZAtUncheckedPointIndex(indexA) - z0,\n targetB.x - x0,\n targetB.y - y0,\n targetB.z - z0, result);\n }\n /**\n * Return the cross product of vectors from `origin` to points at `indexA` and `indexB`\n * @param origin origin for vector\n * @param indexA index of first target within the array\n * @param indexB index of second target within the array\n * @param result optional caller-allocated vector.\n * @returns undefined if either index is out of bounds\n */\n public abstract crossProductIndexIndexIndex(origin: number, indexA: number, indexB: number, result?: Vector3d): Vector3d | undefined;\n /**\n * Return the cross product of vectors from origin point at `indexA` to target points at `indexB` and `indexC`\n * @param origin index of origin\n * @param indexA index of first target within the array\n * @param indexB index of second target within the array\n * @param result caller-allocated vector.\n * @returns return true if indexA, indexB both valid\n */\n public abstract accumulateCrossProductIndexIndexIndex(origin: number, indexA: number, indexB: number, result: Vector3d): void;\n\n /**\n * read-only property for number of XYZ in the collection.\n */\n public abstract get length(): number;\n /**\n * Return distance squared between indicated points.\n * @param index0 first point index\n * @param index1 second point index\n */\n public abstract distanceSquaredIndexIndex(index0: number, index1: number): number | undefined;\n /**\n * Return distance squared between the point at index0 and target.\n * @param index0 first point index\n * @param target second point\n */\n public distanceSquaredIndexXYAndZ(index0: number, target: XYAndZ): number | undefined {\n if (index0 < 0 || index0 >= this.length)\n return undefined;\n return Geometry.hypotenuseSquaredXYZ(\n target.x - this.getXAtUncheckedPointIndex(index0),\n target.y - this.getYAtUncheckedPointIndex(index0),\n target.z - this.getZAtUncheckedPointIndex(index0));\n }\n /**\n * Return distance between indicated points.\n * @param index0 first point index\n * @param index1 second point index\n */\n public abstract distanceIndexIndex(index0: number, index1: number): number | undefined;\n /**\n * Test if index is valid for an xyz within this array.\n * @param index xyz index to test.\n */\n public isIndexValid(index: number): boolean {\n return index >= 0 && index < this.length;\n }\n /** Adjust index into range by modulo with the length. */\n public cyclicIndex(i: number): number {\n return (i % this.length);\n }\n /** Return the range of the points. */\n public getRange(): Range3d {\n const range = Range3d.createNull();\n const n = this.length;\n const point = Point3d.create();\n for (let i = 0; i < n; i++) {\n this.getPoint3dAtUncheckedPointIndex(i, point);\n range.extendPoint(point);\n }\n return range;\n }\n\n /**\n * For each subset of `k` successive points within tolerance of the first point in the subset, return the indices of\n * the last `k-1` duplicates.\n * * Index `0` is never returned.\n * @param tolerance optional distance tol for compression (default [[Geometry.smallMetricDistance]])\n * @param preserveLast if the last `k < this.length` points of the instance are duplicates, whether to return the\n * indices of the *first* `k-1` duplicates for this last run. If true, index `this.length - 1` is not returned\n * unless all points are duplicates, in which case all indices but `0` are returned. Default value is false.\n * @return ordered array of 0-based indices of duplicate points\n */\n public findOrderedDuplicates(tolerance: number = Geometry.smallMetricDistance, preserveLast: boolean = false): number[] {\n const indices: number[] = [];\n if (this.length > 1) {\n for (let i = 0; i < this.length - 1;) {\n let j = i + 1;\n for (; this.almostEqualIndexIndex(i, j, tolerance); ++j)\n indices.push(j);\n i = j; // found next unique point\n }\n if (preserveLast && indices.length > 0 && indices.length < this.length - 1) { // not all points are duplicate\n let numLastRun = 0;\n for (; numLastRun <= indices.length - 1 && indices[indices.length - 1 - numLastRun] === this.length - 1 - numLastRun; ++numLastRun);\n for (let i = 0; i < numLastRun; ++i)\n indices[indices.length - 1 - i] -= 1; // decrement the indices of the last run so that the last point is preserved\n }\n }\n return indices;\n }\n\n /** Accumulate scale times the x,y,z values at index.\n * * No action if index is out of bounds.\n */\n public abstract accumulateScaledXYZ(index: number, scale: number, sum: Point3d): void;\n\n /** Compute the linear combination s of the indexed p_i and given scales s_i.\n * @param scales array of scales. For best results, scales should have same length as the instance.\n * @param result optional pre-allocated object to fill and return\n * @return s = sum(p_i * s_i), where i ranges from 0 to min(this.length, scales.length).\n */\n public linearCombination(scales: number[], result?: Point3d | Vector3d): XYZ {\n const n = Math.min(this.length, scales.length);\n const sum = (result instanceof Vector3d) ? Vector3d.createZero(result) : Point3d.createZero(result);\n for (let i = 0; i < n; ++i) {\n sum.x += scales[i] * this.getXAtUncheckedPointIndex(i);\n sum.y += scales[i] * this.getYAtUncheckedPointIndex(i);\n sum.z += scales[i] * this.getZAtUncheckedPointIndex(i);\n }\n return sum;\n }\n\n /**\n * Interpolate the points at the given indices.\n * @param index0 index of point p0 within the array\n * @param fraction fraction f such that returned point is p0 + f * (p1 - p0)\n * @param index1 index of point p1 within the array\n * @param result optional caller-allocated result to fill and return\n * @returns undefined if an index is out of bounds\n */\n public interpolateIndexIndex(index0: number, fraction: number, index1: number, result?: Point3d): Point3d | undefined {\n if (index0 < 0 || index0 >= this.length || index1 < 0 || index1 >= this.length)\n return undefined;\n return Point3d.create(Geometry.interpolate(this.getXAtUncheckedPointIndex(index0), fraction, this.getXAtUncheckedPointIndex(index1)),\n Geometry.interpolate(this.getYAtUncheckedPointIndex(index0), fraction, this.getYAtUncheckedPointIndex(index1)),\n Geometry.interpolate(this.getZAtUncheckedPointIndex(index0), fraction, this.getZAtUncheckedPointIndex(index1)), result);\n }\n\n /** access x of indexed point */\n public abstract getXAtUncheckedPointIndex(pointIndex: number): number;\n\n /** access y of indexed point */\n public abstract getYAtUncheckedPointIndex(pointIndex: number): number;\n\n /** access z of indexed point */\n public abstract getZAtUncheckedPointIndex(pointIndex: number): number;\n\n /** Return iterator over the points in this collection. Usage:\n * ```ts\n * for (const point: Point3d of collection.points) { ... }\n * ```\n */\n public get points(): Iterable<Point3d> {\n return new PointsIterator(this);\n }\n /** convert to Point3d[] */\n public getArray(): Point3d[] {\n const result = [];\n for (const p of this.points)\n result.push(p);\n return result;\n }\n /** Return the first point, or undefined if the array is empty. */\n public front(result?: Point3d): Point3d | undefined {\n if (this.length === 0)\n return undefined;\n return this.getPoint3dAtUncheckedPointIndex(0, result);\n }\n /** Return the last point, or undefined if the array is empty. */\n public back(result?: Point3d): Point3d | undefined {\n if (this.length === 0)\n return undefined;\n return this.getPoint3dAtUncheckedPointIndex(this.length - 1, result);\n }\n /**\n * Test whether the indexed points are equal within tolerance.\n * @param index0 index of first point\n * @param index1 index of second point\n * @param tolerance max coordinate difference to be considered equal. For exact test, pass 0. Defaults to `Geometry.smallMetricDistance`.\n */\n public almostEqualIndexIndex(index0: number, index1: number, tolerance = Geometry.smallMetricDistance): boolean | undefined {\n if (index0 < 0 || index0 >= this.length || index1 < 0 || index1 >= this.length)\n return undefined;\n return Geometry.isSameCoordinate(this.getXAtUncheckedPointIndex(index0), this.getXAtUncheckedPointIndex(index1), tolerance)\n && Geometry.isSameCoordinate(this.getYAtUncheckedPointIndex(index0), this.getYAtUncheckedPointIndex(index1), tolerance)\n && Geometry.isSameCoordinate(this.getZAtUncheckedPointIndex(index0), this.getZAtUncheckedPointIndex(index1), tolerance);\n }\n}\n/**\n * abstract base class extends IndexedXYZCollection, adding methods to push, peek, and pop, and rewrite.\n * @public\n */\nexport abstract class IndexedReadWriteXYZCollection extends IndexedXYZCollection {\n /** push a (clone of) point onto the collection\n * * point itself is not pushed -- xyz data is extracted into the native form of the collection.\n */\n public abstract push(data: XYAndZ): void;\n /**\n * push a new point (given by coordinates) onto the collection\n * @param x x coordinate\n * @param y y coordinate\n * @param z z coordinate\n */\n public abstract pushXYZ(x?: number, y?: number, z?: number): void;\n /** remove the final point. */\n public abstract pop(): void;\n /** clear all entries */\n public abstract clear(): void;\n /** reverse the points in place. */\n public abstract reverseInPlace(): void;\n}\n\n/**\n * Type for use as signature for xyz data of a single linestring appearing in a parameter list.\n * @public\n */\nexport type LineStringDataVariant = IndexedXYZCollection | XYAndZ[] | XAndY[] | number[][];\n\n/**\n * Type for use as signature for multiple xyz data of multiple linestrings appearing in a parameter list.\n * @public\n */\nexport type MultiLineStringDataVariant = LineStringDataVariant | LineStringDataVariant[];\n"]}
@@ -20,6 +20,9 @@ const Angle_1 = require("./Angle");
20
20
  * @public
21
21
  */
22
22
  class LongitudeLatitudeNumber {
23
+ _longitude;
24
+ _latitude;
25
+ _altitude;
23
26
  /** (property getter) longitude in radians */
24
27
  get longitudeRadians() { return this._longitude.radians; }
25
28
  /** (property getter) longitude in degrees */
@@ -1 +1 @@
1
- {"version":3,"file":"LongitudeLatitudeAltitude.js","sourceRoot":"","sources":["../../../src/geometry3d/LongitudeLatitudeAltitude.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module CartesianGeometry\r\n */\r\n\r\nimport { BeJSONFunctions, Geometry } from \"../Geometry\";\r\nimport { Angle } from \"./Angle\";\r\n\r\n/**\r\n * An `AngleAngleNumber` is a pair of angles (named `longitude` and `latitude`) and an additional number.\r\n * * This is directly intended to support `Ellipsoid` computations, with the two angles used as\r\n * * `longitude` is \"around the equator\"\r\n * * `latitude` is \"equator to pole\"\r\n * * `h` is altitude above the `Ellipsoid surface.\r\n * * The structure may also be used for torus coordinates.\r\n * @public\r\n */\r\nexport class LongitudeLatitudeNumber implements BeJSONFunctions {\r\n private _longitude: Angle;\r\n private _latitude: Angle;\r\n private _altitude: number;\r\n /** (property getter) longitude in radians */\r\n public get longitudeRadians(): number { return this._longitude.radians; }\r\n /** (property getter) longitude in degrees */\r\n public get longitudeDegrees(): number { return this._longitude.degrees; }\r\n /** (property getter) (reference to) longitude as a strongly typed `Angle` */\r\n public get longitudeRef(): Angle { return this._longitude; }\r\n /** (property getter) (clone of) longitude as a strongly typed `Angle` */\r\n public get longitude(): Angle { return this._longitude.clone(); }\r\n\r\n /** (property getter) latitude in radians */\r\n public get latitudeRadians(): number { return this._latitude.radians; }\r\n /** (property getter) latitude in degrees */\r\n public get latitudeDegrees(): number { return this._latitude.degrees; }\r\n /** (property getter) (reference to) latitude as a strongly typed `Angle` */\r\n public get latitudeRef(): Angle { return this._latitude; }\r\n /** (property getter) (clone of) latitude as a strongly typed `Angle` */\r\n public get latitude(): Angle { return this._latitude.clone(); }\r\n\r\n /** Get or set the altitude. */\r\n public get altitude(): number { return this._altitude; }\r\n public set altitude(value: number) { this._altitude = value; }\r\n /** Constructor: Capture angles and altitude */\r\n private constructor(longitude: Angle, latitude: Angle, altitude: number) {\r\n this._longitude = longitude;\r\n this._latitude = latitude;\r\n this._altitude = altitude;\r\n }\r\n /** Create with all zero angles and altitude. */\r\n public static createZero(): LongitudeLatitudeNumber { return new LongitudeLatitudeNumber(Angle.createDegrees(0), Angle.createDegrees(0), 0); }\r\n /** Create with strongly typed `Angle` inputs */\r\n public static create(longitude: Angle, latitude: Angle, h: number = 0, result?: LongitudeLatitudeNumber): LongitudeLatitudeNumber {\r\n if (result) {\r\n result._latitude.setFrom(latitude);\r\n result._longitude.setFrom(longitude);\r\n result._altitude = h;\r\n return result;\r\n }\r\n return new LongitudeLatitudeNumber(longitude.clone(), latitude.clone(), h);\r\n }\r\n /** Create with angles in radians. */\r\n public static createRadians(longitudeRadians: number, latitudeRadians: number, h: number = 0, result?: LongitudeLatitudeNumber): LongitudeLatitudeNumber {\r\n if (result) {\r\n result._longitude.setRadians(longitudeRadians);\r\n result._latitude.setRadians(latitudeRadians);\r\n result._altitude = h;\r\n return result;\r\n }\r\n return new LongitudeLatitudeNumber(Angle.createRadians(longitudeRadians), Angle.createRadians(latitudeRadians), h);\r\n }\r\n /** Create with angles in degrees. */\r\n public static createDegrees(longitudeDegrees: number, latitudeDegrees: number, h: number = 0, result?: LongitudeLatitudeNumber): LongitudeLatitudeNumber {\r\n if (result) {\r\n result._longitude.setRadians(longitudeDegrees);\r\n result._latitude.setRadians(latitudeDegrees);\r\n result._altitude = h;\r\n return result;\r\n }\r\n return new LongitudeLatitudeNumber(Angle.createDegrees(longitudeDegrees), Angle.createDegrees(latitudeDegrees), h);\r\n }\r\n /**\r\n * Set content from a JSON object.\r\n * If the json object is undefined or unrecognized, always set a default value.\r\n *\r\n */\r\n public setFromJSON(json: any) {\r\n if (json.latitude !== undefined) {\r\n this._latitude.setFromJSON(json.latitude);\r\n } else {\r\n this._latitude.setDegrees(0);\r\n }\r\n\r\n if (json.longitude !== undefined) {\r\n this._longitude.setFromJSON(json.longitude);\r\n } else {\r\n this._longitude.setDegrees(0);\r\n }\r\n\r\n if (json.h !== undefined && Number.isFinite(json.h)) {\r\n this._altitude = json.h;\r\n } else {\r\n this._altitude = 0;\r\n }\r\n }\r\n\r\n /** Return a json object with this object's contents.\r\n * * Tag names are: longitude, latitude, h\r\n */\r\n public toJSON(): any {\r\n return { latitude: this._latitude.toJSON(), longitude: this._longitude.toJSON(), h: this._altitude };\r\n }\r\n /** Test for near equality */\r\n public isAlmostEqual(other: LongitudeLatitudeNumber): boolean {\r\n return this._latitude.isAlmostEqual(other._latitude)\r\n && this._longitude.isAlmostEqual(other._longitude)\r\n && Geometry.isSameCoordinate(this._altitude, other._altitude);\r\n }\r\n /** Return a copy */\r\n public clone(): LongitudeLatitudeNumber {\r\n return new LongitudeLatitudeNumber(this._longitude.clone(), this._latitude.clone(), this._altitude);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"LongitudeLatitudeAltitude.js","sourceRoot":"","sources":["../../../src/geometry3d/LongitudeLatitudeAltitude.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module CartesianGeometry\n */\n\nimport { BeJSONFunctions, Geometry } from \"../Geometry\";\nimport { Angle } from \"./Angle\";\n\n/**\n * An `AngleAngleNumber` is a pair of angles (named `longitude` and `latitude`) and an additional number.\n * * This is directly intended to support `Ellipsoid` computations, with the two angles used as\n * * `longitude` is \"around the equator\"\n * * `latitude` is \"equator to pole\"\n * * `h` is altitude above the `Ellipsoid surface.\n * * The structure may also be used for torus coordinates.\n * @public\n */\nexport class LongitudeLatitudeNumber implements BeJSONFunctions {\n private _longitude: Angle;\n private _latitude: Angle;\n private _altitude: number;\n /** (property getter) longitude in radians */\n public get longitudeRadians(): number { return this._longitude.radians; }\n /** (property getter) longitude in degrees */\n public get longitudeDegrees(): number { return this._longitude.degrees; }\n /** (property getter) (reference to) longitude as a strongly typed `Angle` */\n public get longitudeRef(): Angle { return this._longitude; }\n /** (property getter) (clone of) longitude as a strongly typed `Angle` */\n public get longitude(): Angle { return this._longitude.clone(); }\n\n /** (property getter) latitude in radians */\n public get latitudeRadians(): number { return this._latitude.radians; }\n /** (property getter) latitude in degrees */\n public get latitudeDegrees(): number { return this._latitude.degrees; }\n /** (property getter) (reference to) latitude as a strongly typed `Angle` */\n public get latitudeRef(): Angle { return this._latitude; }\n /** (property getter) (clone of) latitude as a strongly typed `Angle` */\n public get latitude(): Angle { return this._latitude.clone(); }\n\n /** Get or set the altitude. */\n public get altitude(): number { return this._altitude; }\n public set altitude(value: number) { this._altitude = value; }\n /** Constructor: Capture angles and altitude */\n private constructor(longitude: Angle, latitude: Angle, altitude: number) {\n this._longitude = longitude;\n this._latitude = latitude;\n this._altitude = altitude;\n }\n /** Create with all zero angles and altitude. */\n public static createZero(): LongitudeLatitudeNumber { return new LongitudeLatitudeNumber(Angle.createDegrees(0), Angle.createDegrees(0), 0); }\n /** Create with strongly typed `Angle` inputs */\n public static create(longitude: Angle, latitude: Angle, h: number = 0, result?: LongitudeLatitudeNumber): LongitudeLatitudeNumber {\n if (result) {\n result._latitude.setFrom(latitude);\n result._longitude.setFrom(longitude);\n result._altitude = h;\n return result;\n }\n return new LongitudeLatitudeNumber(longitude.clone(), latitude.clone(), h);\n }\n /** Create with angles in radians. */\n public static createRadians(longitudeRadians: number, latitudeRadians: number, h: number = 0, result?: LongitudeLatitudeNumber): LongitudeLatitudeNumber {\n if (result) {\n result._longitude.setRadians(longitudeRadians);\n result._latitude.setRadians(latitudeRadians);\n result._altitude = h;\n return result;\n }\n return new LongitudeLatitudeNumber(Angle.createRadians(longitudeRadians), Angle.createRadians(latitudeRadians), h);\n }\n /** Create with angles in degrees. */\n public static createDegrees(longitudeDegrees: number, latitudeDegrees: number, h: number = 0, result?: LongitudeLatitudeNumber): LongitudeLatitudeNumber {\n if (result) {\n result._longitude.setRadians(longitudeDegrees);\n result._latitude.setRadians(latitudeDegrees);\n result._altitude = h;\n return result;\n }\n return new LongitudeLatitudeNumber(Angle.createDegrees(longitudeDegrees), Angle.createDegrees(latitudeDegrees), h);\n }\n /**\n * Set content from a JSON object.\n * If the json object is undefined or unrecognized, always set a default value.\n *\n */\n public setFromJSON(json: any) {\n if (json.latitude !== undefined) {\n this._latitude.setFromJSON(json.latitude);\n } else {\n this._latitude.setDegrees(0);\n }\n\n if (json.longitude !== undefined) {\n this._longitude.setFromJSON(json.longitude);\n } else {\n this._longitude.setDegrees(0);\n }\n\n if (json.h !== undefined && Number.isFinite(json.h)) {\n this._altitude = json.h;\n } else {\n this._altitude = 0;\n }\n }\n\n /** Return a json object with this object's contents.\n * * Tag names are: longitude, latitude, h\n */\n public toJSON(): any {\n return { latitude: this._latitude.toJSON(), longitude: this._longitude.toJSON(), h: this._altitude };\n }\n /** Test for near equality */\n public isAlmostEqual(other: LongitudeLatitudeNumber): boolean {\n return this._latitude.isAlmostEqual(other._latitude)\n && this._longitude.isAlmostEqual(other._longitude)\n && Geometry.isSameCoordinate(this._altitude, other._altitude);\n }\n /** Return a copy */\n public clone(): LongitudeLatitudeNumber {\n return new LongitudeLatitudeNumber(this._longitude.clone(), this._latitude.clone(), this._altitude);\n }\n}\n"]}
@@ -358,12 +358,11 @@ export declare class Matrix3d implements BeJSONFunctions {
358
358
  */
359
359
  static createRigidFromColumns(vectorA: Vector3d, vectorB: Vector3d, axisOrder: AxisOrder, result?: Matrix3d): Matrix3d | undefined;
360
360
  /**
361
- * Construct a rigid matrix (orthogonal matrix with +1 determinant) using vectorA and its 2 perpendicular.
361
+ * Construct a rigid matrix (orthogonal matrix with determinant 1) using vectorA and its 2 perpendiculars.
362
362
  * * If axisOrder is not passed then `AxisOrder = AxisOrder.ZXY` is used as default.
363
363
  * * This function internally uses createPerpendicularVectorFavorXYPlane and createRigidFromColumns.
364
- * * If you want to rotate a given plane (which contains (0,0,0)) to the xy-plane, pass the normal vector of
365
- * your plane into createRigidHeadsUp. The transpose of the returned Matrix3d can be used to rotate your plane
366
- * to the xy-plane. If plane does not contain (0,0,0) then the plane is rotated to a plane parallel to the xy-plane.
364
+ * * Passing the normal of a plane P into this method returns a matrix whose transpose rotates geometry in P
365
+ * to the xy-plane if P contains the origin, or to a plane parallel to the xy-plane if P does not contain the origin.
367
366
  * * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/2PerpendicularVectorsTo1Vector
368
367
  */
369
368
  static createRigidHeadsUp(vectorA: Vector3d, axisOrder?: AxisOrder, result?: Matrix3d): Matrix3d;
@@ -1195,20 +1194,19 @@ export declare class Matrix3d implements BeJSONFunctions {
1195
1194
  /** Test if `this` matrix reorders and/or negates the columns of the `identity` matrix. */
1196
1195
  get isSignedPermutation(): boolean;
1197
1196
  /**
1198
- * Adjust the matrix in place to make is a `rigid` matrix so that:
1199
- * * columns are perpendicular and have unit length.
1200
- * * transpose equals inverse.
1201
- * * mirroring is removed.
1202
- * * This function internally uses `axisOrderCrossProductsInPlace` to make the matrix rigid.
1203
- * @param axisOrder how to reorder the matrix columns
1204
- * @return whether the adjusted matrix is `rigid` on return
1197
+ * Adjust the matrix in place to make it rigid:
1198
+ * * Columns are perpendicular and have unit length.
1199
+ * * Transpose equals inverse.
1200
+ * @param axisOrder how to reorder the matrix columns. A left-handed ordering will return a mirror.
1201
+ * @return whether the adjusted matrix is rigid on return
1205
1202
  */
1206
1203
  makeRigid(axisOrder?: AxisOrder): boolean;
1207
1204
  /**
1208
- * Create a new orthogonal matrix (perpendicular columns, unit length, transpose is inverse).
1209
- * * Columns are taken from the source Matrix3d in order indicated by the axis order.
1210
- * * Mirroring in the matrix is removed.
1211
- * * This function internally uses `axisOrderCrossProductsInPlace` to make the matrix rigid.
1205
+ * Create a new orthogonal matrix by calling [[makeRigid]] on a clone of `source`.
1206
+ * @param source input matrix
1207
+ * @param axisOrder how to reorder the matrix columns. A left-handed ordering will return a mirror.
1208
+ * @param result optional preallocated result to populate and return
1209
+ * @returns rigid matrix, or `undefined` if the operation failed.
1212
1210
  */
1213
1211
  static createRigidFromMatrix3d(source: Matrix3d, axisOrder?: AxisOrder, result?: Matrix3d): Matrix3d | undefined;
1214
1212
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Matrix3d.d.ts","sourceRoot":"","sources":["../../../src/geometry3d/Matrix3d.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Matrix3d.d.ts","sourceRoot":"","sources":["../../../src/geometry3d/Matrix3d.ts"],"names":[],"mappings":"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"}
@@ -194,6 +194,37 @@ var InverseMatrixState;
194
194
  * @public
195
195
  */
196
196
  class Matrix3d {
197
+ /** Control flag for whether this class uses cached inverse of matrices. */
198
+ static useCachedInverse = true; // cached inverse can be suppressed for testing.
199
+ /** Total number of times a cached inverse was used to avoid recompute */
200
+ static numUseCache = 0;
201
+ /** Total number of times a cached inverse was computed. */
202
+ static numComputeCache = 0;
203
+ /**
204
+ * Matrix contents as a flat array of numbers in row-major order.
205
+ * ```
206
+ * equation
207
+ * \mxy{B}
208
+ * \mij{B}
209
+ * ```
210
+ * * DO NOT directly modify this array. It will destroy safety of the cached inverse state.
211
+ */
212
+ coffs;
213
+ /**
214
+ * Matrix inverse contents.
215
+ * ```
216
+ * equation
217
+ * \mxy{A}
218
+ * ```
219
+ * * DO NOT directly modify this array. It will destroy integrity of the cached inverse state.
220
+ */
221
+ inverseCoffs;
222
+ /** Indicates if inverse is unknown, available, or known singular */
223
+ inverseState;
224
+ /** The identity matrix */
225
+ static _identity;
226
+ /** temporary buffer to store a matrix as a Float64Array (array of 9 floats) */
227
+ static _productBuffer = new Float64Array(9);
197
228
  /** The identity Matrix3d. Value is frozen and cannot be modified. */
198
229
  static get identity() {
199
230
  if (undefined === this._identity) {
@@ -664,12 +695,11 @@ class Matrix3d {
664
695
  return undefined;
665
696
  }
666
697
  /**
667
- * Construct a rigid matrix (orthogonal matrix with +1 determinant) using vectorA and its 2 perpendicular.
698
+ * Construct a rigid matrix (orthogonal matrix with determinant 1) using vectorA and its 2 perpendiculars.
668
699
  * * If axisOrder is not passed then `AxisOrder = AxisOrder.ZXY` is used as default.
669
700
  * * This function internally uses createPerpendicularVectorFavorXYPlane and createRigidFromColumns.
670
- * * If you want to rotate a given plane (which contains (0,0,0)) to the xy-plane, pass the normal vector of
671
- * your plane into createRigidHeadsUp. The transpose of the returned Matrix3d can be used to rotate your plane
672
- * to the xy-plane. If plane does not contain (0,0,0) then the plane is rotated to a plane parallel to the xy-plane.
701
+ * * Passing the normal of a plane P into this method returns a matrix whose transpose rotates geometry in P
702
+ * to the xy-plane if P contains the origin, or to a plane parallel to the xy-plane if P does not contain the origin.
673
703
  * * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/2PerpendicularVectorsTo1Vector
674
704
  */
675
705
  static createRigidHeadsUp(vectorA, axisOrder = Geometry_1.AxisOrder.ZXY, result) {
@@ -1228,7 +1258,7 @@ class Matrix3d {
1228
1258
  let upVector = vectorA.unitCrossProduct(vectorB);
1229
1259
  // the usual case (both vectors and also their cross product is non-zero)
1230
1260
  if (upVector) {
1231
- return Matrix3d.createRotationAroundVector(upVector, Angle_1.Angle.createRadians(fraction * vectorA.planarAngleTo(vectorB, upVector).radians));
1261
+ return Matrix3d.createRotationAroundVector(upVector, Angle_1.Angle.createRadians(fraction * vectorA.planarAngleTo(vectorB, upVector).radians), result);
1232
1262
  }
1233
1263
  // if either vector is zero
1234
1264
  if (Geometry_1.Geometry.isSmallMetricDistance(vectorA.magnitude())
@@ -1239,7 +1269,7 @@ class Matrix3d {
1239
1269
  return Matrix3d.createIdentity(result);
1240
1270
  // opposing vectors (cross product = 0, dot product < 0)
1241
1271
  upVector = Matrix3d.createPerpendicularVectorFavorPlaneContainingZ(vectorA, upVector);
1242
- return Matrix3d.createRotationAroundVector(upVector, Angle_1.Angle.createRadians(fraction * Math.PI));
1272
+ return Matrix3d.createRotationAroundVector(upVector, Angle_1.Angle.createRadians(fraction * Math.PI), result);
1243
1273
  }
1244
1274
  /** Returns a matrix that rotates from vectorA to vectorB. */
1245
1275
  static createRotationVectorToVector(vectorA, vectorB, result) {
@@ -2595,28 +2625,27 @@ class Matrix3d {
2595
2625
  return count === 3;
2596
2626
  }
2597
2627
  /**
2598
- * Adjust the matrix in place to make is a `rigid` matrix so that:
2599
- * * columns are perpendicular and have unit length.
2600
- * * transpose equals inverse.
2601
- * * mirroring is removed.
2602
- * * This function internally uses `axisOrderCrossProductsInPlace` to make the matrix rigid.
2603
- * @param axisOrder how to reorder the matrix columns
2604
- * @return whether the adjusted matrix is `rigid` on return
2628
+ * Adjust the matrix in place to make it rigid:
2629
+ * * Columns are perpendicular and have unit length.
2630
+ * * Transpose equals inverse.
2631
+ * @param axisOrder how to reorder the matrix columns. A left-handed ordering will return a mirror.
2632
+ * @return whether the adjusted matrix is rigid on return
2605
2633
  */
2606
2634
  makeRigid(axisOrder = Geometry_1.AxisOrder.XYZ) {
2607
2635
  const maxAbs = this.maxAbs();
2608
2636
  if (Geometry_1.Geometry.isSmallMetricDistance(maxAbs))
2609
2637
  return false;
2610
2638
  const scale = 1.0 / maxAbs;
2611
- this.scaleColumnsInPlace(scale, scale, scale);
2639
+ this.scaleColumnsInPlace(scale, scale, scale); // improve numerical stability
2612
2640
  this.axisOrderCrossProductsInPlace(axisOrder);
2613
2641
  return this.normalizeColumnsInPlace();
2614
2642
  }
2615
2643
  /**
2616
- * Create a new orthogonal matrix (perpendicular columns, unit length, transpose is inverse).
2617
- * * Columns are taken from the source Matrix3d in order indicated by the axis order.
2618
- * * Mirroring in the matrix is removed.
2619
- * * This function internally uses `axisOrderCrossProductsInPlace` to make the matrix rigid.
2644
+ * Create a new orthogonal matrix by calling [[makeRigid]] on a clone of `source`.
2645
+ * @param source input matrix
2646
+ * @param axisOrder how to reorder the matrix columns. A left-handed ordering will return a mirror.
2647
+ * @param result optional preallocated result to populate and return
2648
+ * @returns rigid matrix, or `undefined` if the operation failed.
2620
2649
  */
2621
2650
  static createRigidFromMatrix3d(source, axisOrder = Geometry_1.AxisOrder.XYZ, result) {
2622
2651
  result = source.clone(result);
@@ -2729,12 +2758,4 @@ class Matrix3d {
2729
2758
  }
2730
2759
  }
2731
2760
  exports.Matrix3d = Matrix3d;
2732
- /** Control flag for whether this class uses cached inverse of matrices. */
2733
- Matrix3d.useCachedInverse = true; // cached inverse can be suppressed for testing.
2734
- /** Total number of times a cached inverse was used to avoid recompute */
2735
- Matrix3d.numUseCache = 0;
2736
- /** Total number of times a cached inverse was computed. */
2737
- Matrix3d.numComputeCache = 0;
2738
- /** temporary buffer to store a matrix as a Float64Array (array of 9 floats) */
2739
- Matrix3d._productBuffer = new Float64Array(9);
2740
2761
  //# sourceMappingURL=Matrix3d.js.map