@itwin/core-geometry 5.0.0-dev.1 → 5.0.0-dev.100

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 (1078) hide show
  1. package/CHANGELOG.md +74 -1
  2. package/lib/cjs/Constant.js +17 -17
  3. package/lib/cjs/Constant.js.map +1 -1
  4. package/lib/cjs/Geometry.d.ts +2 -4
  5. package/lib/cjs/Geometry.d.ts.map +1 -1
  6. package/lib/cjs/Geometry.js +37 -39
  7. package/lib/cjs/Geometry.js.map +1 -1
  8. package/lib/cjs/bspline/AkimaCurve3d.js +3 -1
  9. package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
  10. package/lib/cjs/bspline/BSpline1dNd.d.ts +90 -54
  11. package/lib/cjs/bspline/BSpline1dNd.d.ts.map +1 -1
  12. package/lib/cjs/bspline/BSpline1dNd.js +137 -84
  13. package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
  14. package/lib/cjs/bspline/BSplineCurve.d.ts +193 -155
  15. package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -1
  16. package/lib/cjs/bspline/BSplineCurve.js +249 -181
  17. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  18. package/lib/cjs/bspline/BSplineCurve3dH.js +1 -0
  19. package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
  20. package/lib/cjs/bspline/BSplineCurveOps.d.ts.map +1 -1
  21. package/lib/cjs/bspline/BSplineCurveOps.js +18 -21
  22. package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
  23. package/lib/cjs/bspline/BSplineSurface.js +22 -2
  24. package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
  25. package/lib/cjs/bspline/Bezier1dNd.js +6 -0
  26. package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
  27. package/lib/cjs/bspline/BezierCurve3d.d.ts +3 -1
  28. package/lib/cjs/bspline/BezierCurve3d.d.ts.map +1 -1
  29. package/lib/cjs/bspline/BezierCurve3d.js +5 -5
  30. package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
  31. package/lib/cjs/bspline/BezierCurve3dH.js +2 -0
  32. package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
  33. package/lib/cjs/bspline/BezierCurveBase.d.ts.map +1 -1
  34. package/lib/cjs/bspline/BezierCurveBase.js +21 -2
  35. package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
  36. package/lib/cjs/bspline/InterpolationCurve3d.js +12 -1
  37. package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
  38. package/lib/cjs/bspline/KnotVector.d.ts +82 -60
  39. package/lib/cjs/bspline/KnotVector.d.ts.map +1 -1
  40. package/lib/cjs/bspline/KnotVector.js +144 -84
  41. package/lib/cjs/bspline/KnotVector.js.map +1 -1
  42. package/lib/cjs/bspline/SurfaceLocationDetail.js +12 -0
  43. package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -1
  44. package/lib/cjs/clipping/AlternatingConvexClipTree.js +14 -13
  45. package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
  46. package/lib/cjs/clipping/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 +42 -8
  68. package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
  69. package/lib/cjs/curve/Arc3d.js +94 -26
  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 +16 -2
  80. package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
  81. package/lib/cjs/curve/CurveCollection.js +46 -11
  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.js.map +1 -1
  85. package/lib/cjs/curve/CurveFactory.d.ts +87 -53
  86. package/lib/cjs/curve/CurveFactory.d.ts.map +1 -1
  87. package/lib/cjs/curve/CurveFactory.js +213 -135
  88. package/lib/cjs/curve/CurveFactory.js.map +1 -1
  89. package/lib/cjs/curve/CurveLocationDetail.js +44 -0
  90. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  91. package/lib/cjs/curve/CurveOps.js.map +1 -1
  92. package/lib/cjs/curve/CurvePrimitive.d.ts +7 -10
  93. package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -1
  94. package/lib/cjs/curve/CurvePrimitive.js +27 -12
  95. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  96. package/lib/cjs/curve/CurveProcessor.js +2 -0
  97. package/lib/cjs/curve/CurveProcessor.js.map +1 -1
  98. package/lib/cjs/curve/CurveTypes.js.map +1 -1
  99. package/lib/cjs/curve/CurveWireMomentsXYZ.js +2 -0
  100. package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
  101. package/lib/cjs/curve/GeometryQuery.js.map +1 -1
  102. package/lib/cjs/curve/LineSegment3d.js +6 -2
  103. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  104. package/lib/cjs/curve/LineString3d.d.ts +12 -8
  105. package/lib/cjs/curve/LineString3d.d.ts.map +1 -1
  106. package/lib/cjs/curve/LineString3d.js +56 -15
  107. package/lib/cjs/curve/LineString3d.js.map +1 -1
  108. package/lib/cjs/curve/Loop.d.ts +12 -6
  109. package/lib/cjs/curve/Loop.d.ts.map +1 -1
  110. package/lib/cjs/curve/Loop.js +24 -10
  111. package/lib/cjs/curve/Loop.js.map +1 -1
  112. package/lib/cjs/curve/OffsetOptions.js +25 -21
  113. package/lib/cjs/curve/OffsetOptions.js.map +1 -1
  114. package/lib/cjs/curve/ParityRegion.js +4 -2
  115. package/lib/cjs/curve/ParityRegion.js.map +1 -1
  116. package/lib/cjs/curve/Path.js +2 -2
  117. package/lib/cjs/curve/Path.js.map +1 -1
  118. package/lib/cjs/curve/PointString3d.js +3 -2
  119. package/lib/cjs/curve/PointString3d.js.map +1 -1
  120. package/lib/cjs/curve/ProxyCurve.js +1 -0
  121. package/lib/cjs/curve/ProxyCurve.js.map +1 -1
  122. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js +1 -0
  123. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  124. package/lib/cjs/curve/Query/CurveSplitContext.js +3 -0
  125. package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
  126. package/lib/cjs/curve/Query/CylindricalRange.d.ts +8 -6
  127. package/lib/cjs/curve/Query/CylindricalRange.d.ts.map +1 -1
  128. package/lib/cjs/curve/Query/CylindricalRange.js +19 -11
  129. package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
  130. package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
  131. package/lib/cjs/curve/Query/PlanarSubdivision.js +4 -6
  132. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  133. package/lib/cjs/curve/Query/StrokeCountChain.js +12 -0
  134. package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
  135. package/lib/cjs/curve/Query/StrokeCountMap.js +14 -0
  136. package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
  137. package/lib/cjs/curve/RegionMomentsXY.js +4 -5
  138. package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
  139. package/lib/cjs/curve/RegionOps.js +9 -10
  140. package/lib/cjs/curve/RegionOps.js.map +1 -1
  141. package/lib/cjs/curve/RegionOpsClassificationSweeps.js +24 -1
  142. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  143. package/lib/cjs/curve/StrokeOptions.d.ts +10 -5
  144. package/lib/cjs/curve/StrokeOptions.d.ts.map +1 -1
  145. package/lib/cjs/curve/StrokeOptions.js +30 -8
  146. package/lib/cjs/curve/StrokeOptions.js.map +1 -1
  147. package/lib/cjs/curve/UnionRegion.js +4 -2
  148. package/lib/cjs/curve/UnionRegion.js.map +1 -1
  149. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js +13 -7
  150. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  151. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js +6 -0
  152. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  153. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js +2 -0
  154. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  155. package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  156. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js +13 -5
  157. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  158. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js +3 -0
  159. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  160. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js +18 -5
  161. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  162. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js +26 -13
  163. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  164. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js +11 -5
  165. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  166. package/lib/cjs/curve/internalContexts/CurveLengthContext.js +6 -0
  167. package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
  168. package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js +8 -6
  169. package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  170. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.d.ts.map +1 -1
  171. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js +62 -23
  172. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  173. package/lib/cjs/curve/internalContexts/GapSearchContext.js +1 -0
  174. package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
  175. package/lib/cjs/curve/internalContexts/MultiChainCollector.js +12 -0
  176. package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
  177. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js +1 -0
  178. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  179. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js +7 -0
  180. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  181. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js +22 -4
  182. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  183. package/lib/cjs/curve/internalContexts/SumLengthsContext.js +1 -0
  184. package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
  185. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js +3 -0
  186. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  187. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js +2 -0
  188. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  189. package/lib/cjs/curve/spiral/ClothoidSeries.js +4 -0
  190. package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
  191. package/lib/cjs/curve/spiral/CubicEvaluator.js +2 -0
  192. package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
  193. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js +4 -0
  194. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  195. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js +5 -0
  196. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  197. package/lib/cjs/curve/spiral/DirectSpiral3d.js +12 -2
  198. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
  199. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js +24 -4
  200. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  201. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js +2 -0
  202. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  203. package/lib/cjs/curve/spiral/NormalizedTransition.js +5 -0
  204. package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
  205. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js +2 -0
  206. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  207. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js +10 -0
  208. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  209. package/lib/cjs/curve/spiral/TransitionSpiral3d.js +10 -0
  210. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
  211. package/lib/cjs/curve/spiral/XYCurveEvaluator.js +6 -0
  212. package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
  213. package/lib/cjs/geometry3d/Angle.js +18 -16
  214. package/lib/cjs/geometry3d/Angle.js.map +1 -1
  215. package/lib/cjs/geometry3d/AngleSweep.d.ts +7 -2
  216. package/lib/cjs/geometry3d/AngleSweep.d.ts.map +1 -1
  217. package/lib/cjs/geometry3d/AngleSweep.js +14 -2
  218. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
  219. package/lib/cjs/geometry3d/BarycentricTriangle.d.ts +14 -8
  220. package/lib/cjs/geometry3d/BarycentricTriangle.d.ts.map +1 -1
  221. package/lib/cjs/geometry3d/BarycentricTriangle.js +42 -8
  222. package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
  223. package/lib/cjs/geometry3d/BilinearPatch.js +8 -0
  224. package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
  225. package/lib/cjs/geometry3d/CoincidentGeometryOps.js +5 -0
  226. package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
  227. package/lib/cjs/geometry3d/Ellipsoid.d.ts +8 -7
  228. package/lib/cjs/geometry3d/Ellipsoid.d.ts.map +1 -1
  229. package/lib/cjs/geometry3d/Ellipsoid.js +63 -14
  230. package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
  231. package/lib/cjs/geometry3d/FrameBuilder.js +12 -4
  232. package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
  233. package/lib/cjs/geometry3d/FrustumAnimation.js +7 -0
  234. package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
  235. package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
  236. package/lib/cjs/geometry3d/GrowableBlockedArray.js +12 -0
  237. package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
  238. package/lib/cjs/geometry3d/GrowableFloat64Array.d.ts +2 -0
  239. package/lib/cjs/geometry3d/GrowableFloat64Array.d.ts.map +1 -1
  240. package/lib/cjs/geometry3d/GrowableFloat64Array.js +7 -0
  241. package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
  242. package/lib/cjs/geometry3d/GrowableXYArray.d.ts +0 -5
  243. package/lib/cjs/geometry3d/GrowableXYArray.d.ts.map +1 -1
  244. package/lib/cjs/geometry3d/GrowableXYArray.js +16 -7
  245. package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
  246. package/lib/cjs/geometry3d/GrowableXYZArray.d.ts +32 -10
  247. package/lib/cjs/geometry3d/GrowableXYZArray.d.ts.map +1 -1
  248. package/lib/cjs/geometry3d/GrowableXYZArray.js +70 -16
  249. package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
  250. package/lib/cjs/geometry3d/IndexedCollectionInterval.js +6 -0
  251. package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
  252. package/lib/cjs/geometry3d/IndexedXYCollection.js +1 -0
  253. package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
  254. package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts +13 -2
  255. package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
  256. package/lib/cjs/geometry3d/IndexedXYZCollection.js +26 -11
  257. package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
  258. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js +3 -0
  259. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  260. package/lib/cjs/geometry3d/Matrix3d.d.ts +11 -8
  261. package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -1
  262. package/lib/cjs/geometry3d/Matrix3d.js +61 -36
  263. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  264. package/lib/cjs/geometry3d/OrderedRotationAngles.js +10 -2
  265. package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
  266. package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
  267. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js +2 -0
  268. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  269. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js +7 -0
  270. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  271. package/lib/cjs/geometry3d/Point2dArrayCarrier.js +2 -0
  272. package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
  273. package/lib/cjs/geometry3d/Point2dVector2d.js +4 -0
  274. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  275. package/lib/cjs/geometry3d/Point3dArrayCarrier.js +3 -1
  276. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  277. package/lib/cjs/geometry3d/Point3dVector3d.d.ts +7 -10
  278. package/lib/cjs/geometry3d/Point3dVector3d.d.ts.map +1 -1
  279. package/lib/cjs/geometry3d/Point3dVector3d.js +16 -10
  280. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  281. package/lib/cjs/geometry3d/PointHelpers.d.ts +15 -4
  282. package/lib/cjs/geometry3d/PointHelpers.d.ts.map +1 -1
  283. package/lib/cjs/geometry3d/PointHelpers.js +29 -8
  284. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  285. package/lib/cjs/geometry3d/PointStreaming.js +12 -4
  286. package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
  287. package/lib/cjs/geometry3d/PolygonOps.d.ts +12 -6
  288. package/lib/cjs/geometry3d/PolygonOps.d.ts.map +1 -1
  289. package/lib/cjs/geometry3d/PolygonOps.js +154 -70
  290. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  291. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js +7 -3
  292. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  293. package/lib/cjs/geometry3d/PolylineOps.d.ts +9 -5
  294. package/lib/cjs/geometry3d/PolylineOps.d.ts.map +1 -1
  295. package/lib/cjs/geometry3d/PolylineOps.js +12 -5
  296. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
  297. package/lib/cjs/geometry3d/Range.js +21 -4
  298. package/lib/cjs/geometry3d/Range.js.map +1 -1
  299. package/lib/cjs/geometry3d/Ray2d.js +2 -0
  300. package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
  301. package/lib/cjs/geometry3d/Ray3d.d.ts +2 -2
  302. package/lib/cjs/geometry3d/Ray3d.d.ts.map +1 -1
  303. package/lib/cjs/geometry3d/Ray3d.js +20 -11
  304. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  305. package/lib/cjs/geometry3d/ReusableObjectCache.js +4 -0
  306. package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
  307. package/lib/cjs/geometry3d/Segment1d.js +4 -0
  308. package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
  309. package/lib/cjs/geometry3d/SortablePolygon.js +11 -0
  310. package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
  311. package/lib/cjs/geometry3d/Transform.d.ts +1 -1
  312. package/lib/cjs/geometry3d/Transform.js +4 -1
  313. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  314. package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
  315. package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
  316. package/lib/cjs/geometry3d/YawPitchRollAngles.js +6 -0
  317. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  318. package/lib/cjs/geometry4d/Map4d.js +2 -0
  319. package/lib/cjs/geometry4d/Map4d.js.map +1 -1
  320. package/lib/cjs/geometry4d/Matrix4d.js +1 -0
  321. package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
  322. package/lib/cjs/geometry4d/MomentData.d.ts +72 -73
  323. package/lib/cjs/geometry4d/MomentData.d.ts.map +1 -1
  324. package/lib/cjs/geometry4d/MomentData.js +90 -66
  325. package/lib/cjs/geometry4d/MomentData.js.map +1 -1
  326. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js +6 -0
  327. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  328. package/lib/cjs/geometry4d/Point4d.js +2 -0
  329. package/lib/cjs/geometry4d/Point4d.js.map +1 -1
  330. package/lib/cjs/numerics/BandedSystem.js.map +1 -1
  331. package/lib/cjs/numerics/BezierPolynomials.js +8 -0
  332. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
  333. package/lib/cjs/numerics/ClusterableArray.js +29 -13
  334. package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
  335. package/lib/cjs/numerics/Complex.js +2 -0
  336. package/lib/cjs/numerics/Complex.js.map +1 -1
  337. package/lib/cjs/numerics/ConvexPolygon2d.js +3 -0
  338. package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
  339. package/lib/cjs/numerics/Newton.js +59 -4
  340. package/lib/cjs/numerics/Newton.js.map +1 -1
  341. package/lib/cjs/numerics/PascalCoefficients.js +1 -1
  342. package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
  343. package/lib/cjs/numerics/PolarData.js +13 -1
  344. package/lib/cjs/numerics/PolarData.js.map +1 -1
  345. package/lib/cjs/numerics/Polynomials.d.ts +5 -5
  346. package/lib/cjs/numerics/Polynomials.js +70 -32
  347. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  348. package/lib/cjs/numerics/Quadrature.js +26 -20
  349. package/lib/cjs/numerics/Quadrature.js.map +1 -1
  350. package/lib/cjs/numerics/Range1dArray.js.map +1 -1
  351. package/lib/cjs/numerics/SmallSystem.js.map +1 -1
  352. package/lib/cjs/numerics/TriDiagonalSystem.js +11 -0
  353. package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
  354. package/lib/cjs/numerics/UnionFind.js +1 -0
  355. package/lib/cjs/numerics/UnionFind.js.map +1 -1
  356. package/lib/cjs/numerics/UsageSums.js +10 -0
  357. package/lib/cjs/numerics/UsageSums.js.map +1 -1
  358. package/lib/cjs/polyface/AuxData.d.ts +2 -2
  359. package/lib/cjs/polyface/AuxData.d.ts.map +1 -1
  360. package/lib/cjs/polyface/AuxData.js +27 -3
  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 +46 -19
  386. package/lib/cjs/polyface/Polyface.d.ts.map +1 -1
  387. package/lib/cjs/polyface/Polyface.js +96 -32
  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 +70 -92
  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 +49 -6
  396. package/lib/cjs/polyface/PolyfaceData.d.ts.map +1 -1
  397. package/lib/cjs/polyface/PolyfaceData.js +133 -12
  398. package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
  399. package/lib/cjs/polyface/PolyfaceQuery.d.ts +2 -2
  400. package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
  401. package/lib/cjs/polyface/PolyfaceQuery.js +51 -10
  402. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  403. package/lib/cjs/polyface/RangeLengthData.js +7 -0
  404. package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
  405. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js +12 -0
  406. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  407. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js +5 -2
  408. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  409. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js +12 -0
  410. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  411. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js +14 -0
  412. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  413. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js +5 -0
  414. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  415. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js +43 -0
  416. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  417. package/lib/cjs/polyface/TaggedNumericData.js +8 -0
  418. package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
  419. package/lib/cjs/polyface/TriangleCandidate.js +3 -0
  420. package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
  421. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js +7 -0
  422. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  423. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js +6 -0
  424. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  425. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js +3 -0
  426. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  427. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js +3 -0
  428. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  429. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js +32 -0
  430. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  431. package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  432. package/lib/cjs/polyface/multiclip/RangeSearch.js +5 -5
  433. package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
  434. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js +21 -8
  435. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  436. package/lib/cjs/polyface/multiclip/XYPointBuckets.js +6 -0
  437. package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
  438. package/lib/cjs/serialization/BGFBAccessors.d.ts +35 -9
  439. package/lib/cjs/serialization/BGFBAccessors.d.ts.map +1 -1
  440. package/lib/cjs/serialization/BGFBAccessors.js +141 -179
  441. package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
  442. package/lib/cjs/serialization/BGFBReader.d.ts +2 -2
  443. package/lib/cjs/serialization/BGFBReader.d.ts.map +1 -1
  444. package/lib/cjs/serialization/BGFBReader.js +75 -62
  445. package/lib/cjs/serialization/BGFBReader.js.map +1 -1
  446. package/lib/cjs/serialization/BGFBWriter.d.ts +5 -1
  447. package/lib/cjs/serialization/BGFBWriter.d.ts.map +1 -1
  448. package/lib/cjs/serialization/BGFBWriter.js +18 -3
  449. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  450. package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js +1 -0
  451. package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  452. package/lib/cjs/serialization/DeepCompare.js +17 -17
  453. package/lib/cjs/serialization/DeepCompare.js.map +1 -1
  454. package/lib/cjs/serialization/GeometrySamples.d.ts +5 -5
  455. package/lib/cjs/serialization/GeometrySamples.d.ts.map +1 -1
  456. package/lib/cjs/serialization/GeometrySamples.js +113 -112
  457. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  458. package/lib/cjs/serialization/IModelJsonSchema.d.ts +78 -64
  459. package/lib/cjs/serialization/IModelJsonSchema.d.ts.map +1 -1
  460. package/lib/cjs/serialization/IModelJsonSchema.js +107 -83
  461. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  462. package/lib/cjs/serialization/SerializationHelpers.d.ts +36 -0
  463. package/lib/cjs/serialization/SerializationHelpers.d.ts.map +1 -1
  464. package/lib/cjs/serialization/SerializationHelpers.js +117 -0
  465. package/lib/cjs/serialization/SerializationHelpers.js.map +1 -1
  466. package/lib/cjs/solid/Box.d.ts +9 -3
  467. package/lib/cjs/solid/Box.d.ts.map +1 -1
  468. package/lib/cjs/solid/Box.js +17 -7
  469. package/lib/cjs/solid/Box.js.map +1 -1
  470. package/lib/cjs/solid/Cone.d.ts +42 -16
  471. package/lib/cjs/solid/Cone.d.ts.map +1 -1
  472. package/lib/cjs/solid/Cone.js +55 -19
  473. package/lib/cjs/solid/Cone.js.map +1 -1
  474. package/lib/cjs/solid/LinearSweep.d.ts +9 -3
  475. package/lib/cjs/solid/LinearSweep.d.ts.map +1 -1
  476. package/lib/cjs/solid/LinearSweep.js +13 -6
  477. package/lib/cjs/solid/LinearSweep.js.map +1 -1
  478. package/lib/cjs/solid/RotationalSweep.d.ts +27 -16
  479. package/lib/cjs/solid/RotationalSweep.d.ts.map +1 -1
  480. package/lib/cjs/solid/RotationalSweep.js +53 -27
  481. package/lib/cjs/solid/RotationalSweep.js.map +1 -1
  482. package/lib/cjs/solid/RuledSweep.d.ts +35 -26
  483. package/lib/cjs/solid/RuledSweep.d.ts.map +1 -1
  484. package/lib/cjs/solid/RuledSweep.js +43 -29
  485. package/lib/cjs/solid/RuledSweep.js.map +1 -1
  486. package/lib/cjs/solid/SolidPrimitive.d.ts +12 -11
  487. package/lib/cjs/solid/SolidPrimitive.d.ts.map +1 -1
  488. package/lib/cjs/solid/SolidPrimitive.js +11 -6
  489. package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
  490. package/lib/cjs/solid/Sphere.d.ts +53 -24
  491. package/lib/cjs/solid/Sphere.d.ts.map +1 -1
  492. package/lib/cjs/solid/Sphere.js +75 -40
  493. package/lib/cjs/solid/Sphere.js.map +1 -1
  494. package/lib/cjs/solid/SweepContour.d.ts +25 -16
  495. package/lib/cjs/solid/SweepContour.d.ts.map +1 -1
  496. package/lib/cjs/solid/SweepContour.js +34 -16
  497. package/lib/cjs/solid/SweepContour.js.map +1 -1
  498. package/lib/cjs/solid/TorusPipe.d.ts +8 -2
  499. package/lib/cjs/solid/TorusPipe.d.ts.map +1 -1
  500. package/lib/cjs/solid/TorusPipe.js +16 -7
  501. package/lib/cjs/solid/TorusPipe.js.map +1 -1
  502. package/lib/cjs/topology/ChainMerge.js +16 -4
  503. package/lib/cjs/topology/ChainMerge.js.map +1 -1
  504. package/lib/cjs/topology/Graph.js +41 -6
  505. package/lib/cjs/topology/Graph.js.map +1 -1
  506. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +1 -1
  507. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js +5 -1
  508. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  509. package/lib/cjs/topology/HalfEdgeGraphSearch.js +2 -0
  510. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  511. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js +9 -2
  512. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  513. package/lib/cjs/topology/HalfEdgeGraphValidation.js +7 -9
  514. package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
  515. package/lib/cjs/topology/HalfEdgeMarkSet.js +5 -0
  516. package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
  517. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js +6 -0
  518. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  519. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js +1 -0
  520. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  521. package/lib/cjs/topology/HalfEdgePositionDetail.js +16 -0
  522. package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
  523. package/lib/cjs/topology/HalfEdgePriorityQueue.js +2 -0
  524. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
  525. package/lib/cjs/topology/InsertAndRetriangulateContext.js +4 -0
  526. package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
  527. package/lib/cjs/topology/MaskManager.js +3 -0
  528. package/lib/cjs/topology/MaskManager.js.map +1 -1
  529. package/lib/cjs/topology/Merging.js +11 -6
  530. package/lib/cjs/topology/Merging.js.map +1 -1
  531. package/lib/cjs/topology/RegularizeFace.js +22 -0
  532. package/lib/cjs/topology/RegularizeFace.js.map +1 -1
  533. package/lib/cjs/topology/SignedDataSummary.js +22 -0
  534. package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
  535. package/lib/cjs/topology/SpaceTriangulation.js.map +1 -1
  536. package/lib/cjs/topology/Triangulation.js +21 -11
  537. package/lib/cjs/topology/Triangulation.js.map +1 -1
  538. package/lib/cjs/topology/XYParitySearchContext.js +13 -0
  539. package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
  540. package/lib/esm/Constant.js +17 -17
  541. package/lib/esm/Constant.js.map +1 -1
  542. package/lib/esm/Geometry.d.ts +2 -4
  543. package/lib/esm/Geometry.d.ts.map +1 -1
  544. package/lib/esm/Geometry.js +37 -39
  545. package/lib/esm/Geometry.js.map +1 -1
  546. package/lib/esm/bspline/AkimaCurve3d.js +3 -1
  547. package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
  548. package/lib/esm/bspline/BSpline1dNd.d.ts +90 -54
  549. package/lib/esm/bspline/BSpline1dNd.d.ts.map +1 -1
  550. package/lib/esm/bspline/BSpline1dNd.js +137 -84
  551. package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
  552. package/lib/esm/bspline/BSplineCurve.d.ts +193 -155
  553. package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
  554. package/lib/esm/bspline/BSplineCurve.js +249 -181
  555. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  556. package/lib/esm/bspline/BSplineCurve3dH.js +1 -0
  557. package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
  558. package/lib/esm/bspline/BSplineCurveOps.d.ts.map +1 -1
  559. package/lib/esm/bspline/BSplineCurveOps.js +18 -21
  560. package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
  561. package/lib/esm/bspline/BSplineSurface.js +22 -2
  562. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  563. package/lib/esm/bspline/Bezier1dNd.js +6 -0
  564. package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
  565. package/lib/esm/bspline/BezierCurve3d.d.ts +3 -1
  566. package/lib/esm/bspline/BezierCurve3d.d.ts.map +1 -1
  567. package/lib/esm/bspline/BezierCurve3d.js +5 -5
  568. package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
  569. package/lib/esm/bspline/BezierCurve3dH.js +2 -0
  570. package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
  571. package/lib/esm/bspline/BezierCurveBase.d.ts.map +1 -1
  572. package/lib/esm/bspline/BezierCurveBase.js +21 -2
  573. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  574. package/lib/esm/bspline/InterpolationCurve3d.js +12 -1
  575. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  576. package/lib/esm/bspline/KnotVector.d.ts +82 -60
  577. package/lib/esm/bspline/KnotVector.d.ts.map +1 -1
  578. package/lib/esm/bspline/KnotVector.js +144 -84
  579. package/lib/esm/bspline/KnotVector.js.map +1 -1
  580. package/lib/esm/bspline/SurfaceLocationDetail.js +12 -0
  581. package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
  582. package/lib/esm/clipping/AlternatingConvexClipTree.js +14 -13
  583. package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
  584. package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
  585. package/lib/esm/clipping/BooleanClipNode.js +4 -0
  586. package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
  587. package/lib/esm/clipping/ClipPlane.js +10 -1
  588. package/lib/esm/clipping/ClipPlane.js.map +1 -1
  589. package/lib/esm/clipping/ClipPrimitive.js +19 -0
  590. package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
  591. package/lib/esm/clipping/ClipUtils.js +5 -1
  592. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  593. package/lib/esm/clipping/ClipVector.js +11 -8
  594. package/lib/esm/clipping/ClipVector.js.map +1 -1
  595. package/lib/esm/clipping/ConvexClipPlaneSet.js +5 -3
  596. package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
  597. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js +2 -1
  598. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  599. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js +3 -0
  600. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  601. package/lib/esm/core-geometry.d.ts +1 -0
  602. package/lib/esm/core-geometry.d.ts.map +1 -1
  603. package/lib/esm/core-geometry.js +1 -0
  604. package/lib/esm/core-geometry.js.map +1 -1
  605. package/lib/esm/curve/Arc3d.d.ts +42 -8
  606. package/lib/esm/curve/Arc3d.d.ts.map +1 -1
  607. package/lib/esm/curve/Arc3d.js +94 -26
  608. package/lib/esm/curve/Arc3d.js.map +1 -1
  609. package/lib/esm/curve/ConstructCurveBetweenCurves.js +3 -0
  610. package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
  611. package/lib/esm/curve/CoordinateXYZ.js +3 -2
  612. package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
  613. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +0 -2
  614. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  615. package/lib/esm/curve/CurveChainWithDistanceIndex.js +25 -10
  616. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  617. package/lib/esm/curve/CurveCollection.d.ts +16 -2
  618. package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
  619. package/lib/esm/curve/CurveCollection.js +46 -11
  620. package/lib/esm/curve/CurveCollection.js.map +1 -1
  621. package/lib/esm/curve/CurveCurve.js.map +1 -1
  622. package/lib/esm/curve/CurveExtendMode.js.map +1 -1
  623. package/lib/esm/curve/CurveFactory.d.ts +87 -53
  624. package/lib/esm/curve/CurveFactory.d.ts.map +1 -1
  625. package/lib/esm/curve/CurveFactory.js +213 -135
  626. package/lib/esm/curve/CurveFactory.js.map +1 -1
  627. package/lib/esm/curve/CurveLocationDetail.js +44 -0
  628. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  629. package/lib/esm/curve/CurveOps.js.map +1 -1
  630. package/lib/esm/curve/CurvePrimitive.d.ts +7 -10
  631. package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
  632. package/lib/esm/curve/CurvePrimitive.js +27 -12
  633. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  634. package/lib/esm/curve/CurveProcessor.js +2 -0
  635. package/lib/esm/curve/CurveProcessor.js.map +1 -1
  636. package/lib/esm/curve/CurveTypes.js.map +1 -1
  637. package/lib/esm/curve/CurveWireMomentsXYZ.js +2 -0
  638. package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
  639. package/lib/esm/curve/GeometryQuery.js.map +1 -1
  640. package/lib/esm/curve/LineSegment3d.js +6 -2
  641. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  642. package/lib/esm/curve/LineString3d.d.ts +12 -8
  643. package/lib/esm/curve/LineString3d.d.ts.map +1 -1
  644. package/lib/esm/curve/LineString3d.js +56 -15
  645. package/lib/esm/curve/LineString3d.js.map +1 -1
  646. package/lib/esm/curve/Loop.d.ts +12 -6
  647. package/lib/esm/curve/Loop.d.ts.map +1 -1
  648. package/lib/esm/curve/Loop.js +24 -10
  649. package/lib/esm/curve/Loop.js.map +1 -1
  650. package/lib/esm/curve/OffsetOptions.js +25 -21
  651. package/lib/esm/curve/OffsetOptions.js.map +1 -1
  652. package/lib/esm/curve/ParityRegion.js +4 -2
  653. package/lib/esm/curve/ParityRegion.js.map +1 -1
  654. package/lib/esm/curve/Path.js +2 -2
  655. package/lib/esm/curve/Path.js.map +1 -1
  656. package/lib/esm/curve/PointString3d.js +3 -2
  657. package/lib/esm/curve/PointString3d.js.map +1 -1
  658. package/lib/esm/curve/ProxyCurve.js +1 -0
  659. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  660. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js +1 -0
  661. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  662. package/lib/esm/curve/Query/CurveSplitContext.js +3 -0
  663. package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
  664. package/lib/esm/curve/Query/CylindricalRange.d.ts +8 -6
  665. package/lib/esm/curve/Query/CylindricalRange.d.ts.map +1 -1
  666. package/lib/esm/curve/Query/CylindricalRange.js +19 -11
  667. package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
  668. package/lib/esm/curve/Query/InOutTests.js.map +1 -1
  669. package/lib/esm/curve/Query/PlanarSubdivision.js +4 -6
  670. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  671. package/lib/esm/curve/Query/StrokeCountChain.js +12 -0
  672. package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
  673. package/lib/esm/curve/Query/StrokeCountMap.js +14 -0
  674. package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
  675. package/lib/esm/curve/RegionMomentsXY.js +4 -5
  676. package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
  677. package/lib/esm/curve/RegionOps.js +9 -10
  678. package/lib/esm/curve/RegionOps.js.map +1 -1
  679. package/lib/esm/curve/RegionOpsClassificationSweeps.js +24 -1
  680. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  681. package/lib/esm/curve/StrokeOptions.d.ts +10 -5
  682. package/lib/esm/curve/StrokeOptions.d.ts.map +1 -1
  683. package/lib/esm/curve/StrokeOptions.js +30 -8
  684. package/lib/esm/curve/StrokeOptions.js.map +1 -1
  685. package/lib/esm/curve/UnionRegion.js +4 -2
  686. package/lib/esm/curve/UnionRegion.js.map +1 -1
  687. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js +13 -7
  688. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  689. package/lib/esm/curve/internalContexts/ChainCollectorContext.js +6 -0
  690. package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  691. package/lib/esm/curve/internalContexts/CloneCurvesContext.js +2 -0
  692. package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  693. package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  694. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js +13 -5
  695. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  696. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js +3 -0
  697. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  698. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js +18 -5
  699. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  700. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js +26 -13
  701. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  702. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js +11 -5
  703. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  704. package/lib/esm/curve/internalContexts/CurveLengthContext.js +6 -0
  705. package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
  706. package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js +8 -6
  707. package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  708. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.d.ts.map +1 -1
  709. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js +62 -23
  710. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  711. package/lib/esm/curve/internalContexts/GapSearchContext.js +1 -0
  712. package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
  713. package/lib/esm/curve/internalContexts/MultiChainCollector.js +12 -0
  714. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  715. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js +1 -0
  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 +7 -2
  754. package/lib/esm/geometry3d/AngleSweep.d.ts.map +1 -1
  755. package/lib/esm/geometry3d/AngleSweep.js +14 -2
  756. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  757. package/lib/esm/geometry3d/BarycentricTriangle.d.ts +14 -8
  758. package/lib/esm/geometry3d/BarycentricTriangle.d.ts.map +1 -1
  759. package/lib/esm/geometry3d/BarycentricTriangle.js +42 -8
  760. package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
  761. package/lib/esm/geometry3d/BilinearPatch.js +8 -0
  762. package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
  763. package/lib/esm/geometry3d/CoincidentGeometryOps.js +5 -0
  764. package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
  765. package/lib/esm/geometry3d/Ellipsoid.d.ts +8 -7
  766. package/lib/esm/geometry3d/Ellipsoid.d.ts.map +1 -1
  767. package/lib/esm/geometry3d/Ellipsoid.js +63 -14
  768. package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
  769. package/lib/esm/geometry3d/FrameBuilder.js +12 -4
  770. package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
  771. package/lib/esm/geometry3d/FrustumAnimation.js +7 -0
  772. package/lib/esm/geometry3d/FrustumAnimation.js.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.d.ts +2 -0
  777. package/lib/esm/geometry3d/GrowableFloat64Array.d.ts.map +1 -1
  778. package/lib/esm/geometry3d/GrowableFloat64Array.js +7 -0
  779. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
  780. package/lib/esm/geometry3d/GrowableXYArray.d.ts +0 -5
  781. package/lib/esm/geometry3d/GrowableXYArray.d.ts.map +1 -1
  782. package/lib/esm/geometry3d/GrowableXYArray.js +16 -7
  783. package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
  784. package/lib/esm/geometry3d/GrowableXYZArray.d.ts +32 -10
  785. package/lib/esm/geometry3d/GrowableXYZArray.d.ts.map +1 -1
  786. package/lib/esm/geometry3d/GrowableXYZArray.js +70 -16
  787. package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
  788. package/lib/esm/geometry3d/IndexedCollectionInterval.js +6 -0
  789. package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
  790. package/lib/esm/geometry3d/IndexedXYCollection.js +1 -0
  791. package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
  792. package/lib/esm/geometry3d/IndexedXYZCollection.d.ts +13 -2
  793. package/lib/esm/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
  794. package/lib/esm/geometry3d/IndexedXYZCollection.js +26 -11
  795. package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
  796. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js +3 -0
  797. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  798. package/lib/esm/geometry3d/Matrix3d.d.ts +11 -8
  799. package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -1
  800. package/lib/esm/geometry3d/Matrix3d.js +61 -36
  801. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  802. package/lib/esm/geometry3d/OrderedRotationAngles.js +10 -2
  803. package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
  804. package/lib/esm/geometry3d/Plane3d.js.map +1 -1
  805. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js +2 -0
  806. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  807. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js +7 -0
  808. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  809. package/lib/esm/geometry3d/Point2dArrayCarrier.js +2 -0
  810. package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
  811. package/lib/esm/geometry3d/Point2dVector2d.js +4 -0
  812. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  813. package/lib/esm/geometry3d/Point3dArrayCarrier.js +3 -1
  814. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  815. package/lib/esm/geometry3d/Point3dVector3d.d.ts +7 -10
  816. package/lib/esm/geometry3d/Point3dVector3d.d.ts.map +1 -1
  817. package/lib/esm/geometry3d/Point3dVector3d.js +16 -10
  818. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  819. package/lib/esm/geometry3d/PointHelpers.d.ts +15 -4
  820. package/lib/esm/geometry3d/PointHelpers.d.ts.map +1 -1
  821. package/lib/esm/geometry3d/PointHelpers.js +29 -8
  822. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  823. package/lib/esm/geometry3d/PointStreaming.js +12 -4
  824. package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
  825. package/lib/esm/geometry3d/PolygonOps.d.ts +12 -6
  826. package/lib/esm/geometry3d/PolygonOps.d.ts.map +1 -1
  827. package/lib/esm/geometry3d/PolygonOps.js +154 -70
  828. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  829. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js +7 -3
  830. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  831. package/lib/esm/geometry3d/PolylineOps.d.ts +9 -5
  832. package/lib/esm/geometry3d/PolylineOps.d.ts.map +1 -1
  833. package/lib/esm/geometry3d/PolylineOps.js +12 -5
  834. package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
  835. package/lib/esm/geometry3d/Range.js +21 -4
  836. package/lib/esm/geometry3d/Range.js.map +1 -1
  837. package/lib/esm/geometry3d/Ray2d.js +2 -0
  838. package/lib/esm/geometry3d/Ray2d.js.map +1 -1
  839. package/lib/esm/geometry3d/Ray3d.d.ts +2 -2
  840. package/lib/esm/geometry3d/Ray3d.d.ts.map +1 -1
  841. package/lib/esm/geometry3d/Ray3d.js +20 -11
  842. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  843. package/lib/esm/geometry3d/ReusableObjectCache.js +4 -0
  844. package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
  845. package/lib/esm/geometry3d/Segment1d.js +4 -0
  846. package/lib/esm/geometry3d/Segment1d.js.map +1 -1
  847. package/lib/esm/geometry3d/SortablePolygon.js +11 -0
  848. package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
  849. package/lib/esm/geometry3d/Transform.d.ts +1 -1
  850. package/lib/esm/geometry3d/Transform.js +4 -1
  851. package/lib/esm/geometry3d/Transform.js.map +1 -1
  852. package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
  853. package/lib/esm/geometry3d/XYZProps.js.map +1 -1
  854. package/lib/esm/geometry3d/YawPitchRollAngles.js +6 -0
  855. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  856. package/lib/esm/geometry4d/Map4d.js +2 -0
  857. package/lib/esm/geometry4d/Map4d.js.map +1 -1
  858. package/lib/esm/geometry4d/Matrix4d.js +1 -0
  859. package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
  860. package/lib/esm/geometry4d/MomentData.d.ts +72 -73
  861. package/lib/esm/geometry4d/MomentData.d.ts.map +1 -1
  862. package/lib/esm/geometry4d/MomentData.js +90 -66
  863. package/lib/esm/geometry4d/MomentData.js.map +1 -1
  864. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js +6 -0
  865. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  866. package/lib/esm/geometry4d/Point4d.js +2 -0
  867. package/lib/esm/geometry4d/Point4d.js.map +1 -1
  868. package/lib/esm/numerics/BandedSystem.js.map +1 -1
  869. package/lib/esm/numerics/BezierPolynomials.js +8 -0
  870. package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
  871. package/lib/esm/numerics/ClusterableArray.js +29 -13
  872. package/lib/esm/numerics/ClusterableArray.js.map +1 -1
  873. package/lib/esm/numerics/Complex.js +2 -0
  874. package/lib/esm/numerics/Complex.js.map +1 -1
  875. package/lib/esm/numerics/ConvexPolygon2d.js +3 -0
  876. package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
  877. package/lib/esm/numerics/Newton.js +59 -4
  878. package/lib/esm/numerics/Newton.js.map +1 -1
  879. package/lib/esm/numerics/PascalCoefficients.js +1 -1
  880. package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
  881. package/lib/esm/numerics/PolarData.js +13 -1
  882. package/lib/esm/numerics/PolarData.js.map +1 -1
  883. package/lib/esm/numerics/Polynomials.d.ts +5 -5
  884. package/lib/esm/numerics/Polynomials.js +70 -32
  885. package/lib/esm/numerics/Polynomials.js.map +1 -1
  886. package/lib/esm/numerics/Quadrature.js +26 -20
  887. package/lib/esm/numerics/Quadrature.js.map +1 -1
  888. package/lib/esm/numerics/Range1dArray.js.map +1 -1
  889. package/lib/esm/numerics/SmallSystem.js.map +1 -1
  890. package/lib/esm/numerics/TriDiagonalSystem.js +11 -0
  891. package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
  892. package/lib/esm/numerics/UnionFind.js +1 -0
  893. package/lib/esm/numerics/UnionFind.js.map +1 -1
  894. package/lib/esm/numerics/UsageSums.js +10 -0
  895. package/lib/esm/numerics/UsageSums.js.map +1 -1
  896. package/lib/esm/polyface/AuxData.d.ts +2 -2
  897. package/lib/esm/polyface/AuxData.d.ts.map +1 -1
  898. package/lib/esm/polyface/AuxData.js +27 -3
  899. package/lib/esm/polyface/AuxData.js.map +1 -1
  900. package/lib/esm/polyface/BoxTopology.js +67 -67
  901. package/lib/esm/polyface/BoxTopology.js.map +1 -1
  902. package/lib/esm/polyface/FacetFaceData.d.ts +1 -1
  903. package/lib/esm/polyface/FacetFaceData.js +3 -1
  904. package/lib/esm/polyface/FacetFaceData.js.map +1 -1
  905. package/lib/esm/polyface/FacetLocationDetail.js +30 -0
  906. package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
  907. package/lib/esm/polyface/FacetOrientation.js +12 -1
  908. package/lib/esm/polyface/FacetOrientation.js.map +1 -1
  909. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js +18 -2
  910. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  911. package/lib/esm/polyface/IndexedEdgeMatcher.d.ts +33 -23
  912. package/lib/esm/polyface/IndexedEdgeMatcher.d.ts.map +1 -1
  913. package/lib/esm/polyface/IndexedEdgeMatcher.js +63 -33
  914. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
  915. package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts +4 -3
  916. package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
  917. package/lib/esm/polyface/IndexedPolyfaceVisitor.js +16 -5
  918. package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  919. package/lib/esm/polyface/IndexedPolyfaceWalker.d.ts +233 -0
  920. package/lib/esm/polyface/IndexedPolyfaceWalker.d.ts.map +1 -0
  921. package/lib/esm/polyface/IndexedPolyfaceWalker.js +349 -0
  922. package/lib/esm/polyface/IndexedPolyfaceWalker.js.map +1 -0
  923. package/lib/esm/polyface/Polyface.d.ts +46 -19
  924. package/lib/esm/polyface/Polyface.d.ts.map +1 -1
  925. package/lib/esm/polyface/Polyface.js +96 -32
  926. package/lib/esm/polyface/Polyface.js.map +1 -1
  927. package/lib/esm/polyface/PolyfaceBuilder.d.ts +14 -27
  928. package/lib/esm/polyface/PolyfaceBuilder.d.ts.map +1 -1
  929. package/lib/esm/polyface/PolyfaceBuilder.js +71 -93
  930. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  931. package/lib/esm/polyface/PolyfaceClip.js +8 -0
  932. package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
  933. package/lib/esm/polyface/PolyfaceData.d.ts +49 -6
  934. package/lib/esm/polyface/PolyfaceData.d.ts.map +1 -1
  935. package/lib/esm/polyface/PolyfaceData.js +133 -12
  936. package/lib/esm/polyface/PolyfaceData.js.map +1 -1
  937. package/lib/esm/polyface/PolyfaceQuery.d.ts +2 -2
  938. package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
  939. package/lib/esm/polyface/PolyfaceQuery.js +51 -10
  940. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  941. package/lib/esm/polyface/RangeLengthData.js +7 -0
  942. package/lib/esm/polyface/RangeLengthData.js.map +1 -1
  943. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js +12 -0
  944. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  945. package/lib/esm/polyface/RangeTree/MinimumValueTester.js +5 -2
  946. package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  947. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js +12 -0
  948. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  949. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js +14 -0
  950. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  951. package/lib/esm/polyface/RangeTree/RangeTreeNode.js +5 -0
  952. package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  953. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js +43 -0
  954. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  955. package/lib/esm/polyface/TaggedNumericData.js +8 -0
  956. package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
  957. package/lib/esm/polyface/TriangleCandidate.js +3 -0
  958. package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
  959. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js +7 -0
  960. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  961. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js +6 -0
  962. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  963. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js +3 -0
  964. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  965. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js +3 -0
  966. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  967. package/lib/esm/polyface/multiclip/OffsetMeshContext.js +32 -0
  968. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  969. package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  970. package/lib/esm/polyface/multiclip/RangeSearch.js +5 -5
  971. package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
  972. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js +21 -8
  973. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  974. package/lib/esm/polyface/multiclip/XYPointBuckets.js +6 -0
  975. package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
  976. package/lib/esm/serialization/BGFBAccessors.d.ts +35 -9
  977. package/lib/esm/serialization/BGFBAccessors.d.ts.map +1 -1
  978. package/lib/esm/serialization/BGFBAccessors.js +141 -179
  979. package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
  980. package/lib/esm/serialization/BGFBReader.d.ts +2 -2
  981. package/lib/esm/serialization/BGFBReader.d.ts.map +1 -1
  982. package/lib/esm/serialization/BGFBReader.js +75 -62
  983. package/lib/esm/serialization/BGFBReader.js.map +1 -1
  984. package/lib/esm/serialization/BGFBWriter.d.ts +5 -1
  985. package/lib/esm/serialization/BGFBWriter.d.ts.map +1 -1
  986. package/lib/esm/serialization/BGFBWriter.js +18 -3
  987. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  988. package/lib/esm/serialization/BentleyGeometryFlatBuffer.js +1 -0
  989. package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  990. package/lib/esm/serialization/DeepCompare.js +17 -17
  991. package/lib/esm/serialization/DeepCompare.js.map +1 -1
  992. package/lib/esm/serialization/GeometrySamples.d.ts +5 -5
  993. package/lib/esm/serialization/GeometrySamples.d.ts.map +1 -1
  994. package/lib/esm/serialization/GeometrySamples.js +113 -112
  995. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  996. package/lib/esm/serialization/IModelJsonSchema.d.ts +78 -64
  997. package/lib/esm/serialization/IModelJsonSchema.d.ts.map +1 -1
  998. package/lib/esm/serialization/IModelJsonSchema.js +107 -83
  999. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  1000. package/lib/esm/serialization/SerializationHelpers.d.ts +36 -0
  1001. package/lib/esm/serialization/SerializationHelpers.d.ts.map +1 -1
  1002. package/lib/esm/serialization/SerializationHelpers.js +117 -0
  1003. package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
  1004. package/lib/esm/solid/Box.d.ts +9 -3
  1005. package/lib/esm/solid/Box.d.ts.map +1 -1
  1006. package/lib/esm/solid/Box.js +17 -7
  1007. package/lib/esm/solid/Box.js.map +1 -1
  1008. package/lib/esm/solid/Cone.d.ts +42 -16
  1009. package/lib/esm/solid/Cone.d.ts.map +1 -1
  1010. package/lib/esm/solid/Cone.js +56 -20
  1011. package/lib/esm/solid/Cone.js.map +1 -1
  1012. package/lib/esm/solid/LinearSweep.d.ts +9 -3
  1013. package/lib/esm/solid/LinearSweep.d.ts.map +1 -1
  1014. package/lib/esm/solid/LinearSweep.js +13 -6
  1015. package/lib/esm/solid/LinearSweep.js.map +1 -1
  1016. package/lib/esm/solid/RotationalSweep.d.ts +27 -16
  1017. package/lib/esm/solid/RotationalSweep.d.ts.map +1 -1
  1018. package/lib/esm/solid/RotationalSweep.js +53 -27
  1019. package/lib/esm/solid/RotationalSweep.js.map +1 -1
  1020. package/lib/esm/solid/RuledSweep.d.ts +35 -26
  1021. package/lib/esm/solid/RuledSweep.d.ts.map +1 -1
  1022. package/lib/esm/solid/RuledSweep.js +43 -29
  1023. package/lib/esm/solid/RuledSweep.js.map +1 -1
  1024. package/lib/esm/solid/SolidPrimitive.d.ts +12 -11
  1025. package/lib/esm/solid/SolidPrimitive.d.ts.map +1 -1
  1026. package/lib/esm/solid/SolidPrimitive.js +11 -6
  1027. package/lib/esm/solid/SolidPrimitive.js.map +1 -1
  1028. package/lib/esm/solid/Sphere.d.ts +53 -24
  1029. package/lib/esm/solid/Sphere.d.ts.map +1 -1
  1030. package/lib/esm/solid/Sphere.js +76 -41
  1031. package/lib/esm/solid/Sphere.js.map +1 -1
  1032. package/lib/esm/solid/SweepContour.d.ts +25 -16
  1033. package/lib/esm/solid/SweepContour.d.ts.map +1 -1
  1034. package/lib/esm/solid/SweepContour.js +34 -16
  1035. package/lib/esm/solid/SweepContour.js.map +1 -1
  1036. package/lib/esm/solid/TorusPipe.d.ts +8 -2
  1037. package/lib/esm/solid/TorusPipe.d.ts.map +1 -1
  1038. package/lib/esm/solid/TorusPipe.js +16 -7
  1039. package/lib/esm/solid/TorusPipe.js.map +1 -1
  1040. package/lib/esm/topology/ChainMerge.js +16 -4
  1041. package/lib/esm/topology/ChainMerge.js.map +1 -1
  1042. package/lib/esm/topology/Graph.js +41 -6
  1043. package/lib/esm/topology/Graph.js.map +1 -1
  1044. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +1 -1
  1045. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js +5 -1
  1046. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  1047. package/lib/esm/topology/HalfEdgeGraphSearch.js +2 -0
  1048. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  1049. package/lib/esm/topology/HalfEdgeGraphSpineContext.js +9 -2
  1050. package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  1051. package/lib/esm/topology/HalfEdgeGraphValidation.js +7 -9
  1052. package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
  1053. package/lib/esm/topology/HalfEdgeMarkSet.js +5 -0
  1054. package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
  1055. package/lib/esm/topology/HalfEdgeNodeXYZUV.js +6 -0
  1056. package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  1057. package/lib/esm/topology/HalfEdgePointInGraphSearch.js +1 -0
  1058. package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  1059. package/lib/esm/topology/HalfEdgePositionDetail.js +16 -0
  1060. package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
  1061. package/lib/esm/topology/HalfEdgePriorityQueue.js +2 -0
  1062. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
  1063. package/lib/esm/topology/InsertAndRetriangulateContext.js +4 -0
  1064. package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
  1065. package/lib/esm/topology/MaskManager.js +3 -0
  1066. package/lib/esm/topology/MaskManager.js.map +1 -1
  1067. package/lib/esm/topology/Merging.js +11 -6
  1068. package/lib/esm/topology/Merging.js.map +1 -1
  1069. package/lib/esm/topology/RegularizeFace.js +22 -0
  1070. package/lib/esm/topology/RegularizeFace.js.map +1 -1
  1071. package/lib/esm/topology/SignedDataSummary.js +22 -0
  1072. package/lib/esm/topology/SignedDataSummary.js.map +1 -1
  1073. package/lib/esm/topology/SpaceTriangulation.js.map +1 -1
  1074. package/lib/esm/topology/Triangulation.js +21 -11
  1075. package/lib/esm/topology/Triangulation.js.map +1 -1
  1076. package/lib/esm/topology/XYParitySearchContext.js +13 -0
  1077. package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
  1078. package/package.json +9 -9
@@ -5,7 +5,7 @@ import { GeometryQuery } from "../curve/GeometryQuery";
5
5
  import { GeometryHandler } from "../geometry3d/GeometryHandler";
6
6
  import { Point2d } from "../geometry3d/Point2dVector2d";
7
7
  import { Point3d, Vector3d } from "../geometry3d/Point3dVector3d";
8
- import { Range3d } from "../geometry3d/Range";
8
+ import { Range1d, Range3d } from "../geometry3d/Range";
9
9
  import { Transform } from "../geometry3d/Transform";
10
10
  import { FacetFaceData } from "./FacetFaceData";
11
11
  import { IndexedPolyfaceVisitor } from "./IndexedPolyfaceVisitor";
@@ -27,7 +27,9 @@ export declare abstract class Polyface extends GeometryQuery {
27
27
  * @param numWrap the number of vertices to replicate in visitor arrays.
28
28
  */
29
29
  abstract createVisitor(numWrap: number): PolyfaceVisitor;
30
- /** Flag indicating if the mesh display must assume both sides are visible. */
30
+ /**
31
+ * The [[PolyfaceData.twoSided]] flag.
32
+ */
31
33
  get twoSided(): boolean;
32
34
  set twoSided(value: boolean);
33
35
  /**
@@ -81,6 +83,15 @@ export declare class IndexedPolyface extends Polyface {
81
83
  * @param facetToFacetData optional array of face identifiers (e.g. known during clone)
82
84
  */
83
85
  protected constructor(data: PolyfaceData, facetStart?: number[], facetToFaceData?: number[]);
86
+ /** Given an edgeIndex (index into `data.pointIndex`), return the index of the facet containing the edge. */
87
+ edgeIndexToFacetIndex(k: number | undefined): number | undefined;
88
+ /**
89
+ * Given an edgeIndex (index into `data.pointIndex`), return the range of the edgeIndices of the containing facet.
90
+ * * If an edge with edgeIndex `k` is found in the facet with facetIndex `f`, then the returned range `r` satisfies
91
+ * `r.low = this.facetIndex0(f) <= k < this.facetIndex1(f) = r.high` and can be used to iterate the facet's face
92
+ * loop. See [[facetIndex0]].
93
+ */
94
+ edgeIndexToFaceLoop(k: number | undefined): Range1d | undefined;
84
95
  /** Test if other is an instance of `IndexedPolyface` */
85
96
  isSameGeometryClass(other: any): boolean;
86
97
  /** Tests for equivalence between two IndexedPolyfaces. */
@@ -89,11 +100,9 @@ export declare class IndexedPolyface extends Polyface {
89
100
  get isEmpty(): boolean;
90
101
  /**
91
102
  * Transform the mesh.
92
- * * Apply the transform to points.
93
- * * Apply the (inverse transpose of the) matrix part to normals.
94
- * * If determinant of the transform matrix is negative, also
95
- * * negate normals
96
- * * reverse index order around each facet.
103
+ * * If `transform` is a mirror, also reverse the index order around each facet.
104
+ * * Note that this method always returns true. If transforming the normals fails (due to singular matrix or zero
105
+ * normal), the original normal(s) are left unchanged.
97
106
  */
98
107
  tryTransformInPlace(transform: Transform): boolean;
99
108
  /** Reverse indices for a single facet. */
@@ -113,7 +122,7 @@ export declare class IndexedPolyface extends Polyface {
113
122
  * Return face data using a facet index.
114
123
  * * Returns `undefined` if none found.
115
124
  * * This is the REFERENCE to the FacetFaceData not a copy.
116
- */
125
+ */
117
126
  tryGetFaceData(i: number): FacetFaceData | undefined;
118
127
  /**
119
128
  * Add facets from `source` to `this` polyface.
@@ -136,7 +145,7 @@ export declare class IndexedPolyface extends Polyface {
136
145
  * @param needNormals `true` to allocate empty normal data and index arrays; `false` (default) to leave undefined.
137
146
  * @param needParams `true` to allocate empty uv parameter data and index arrays; `false` (default) to leave undefined.
138
147
  * @param needColors `true` to allocate empty color data and index arrays; `false` (default) to leave undefined.
139
- * @param twoSided `true` if the facets are to be considered viewable from the back; `false` (default) if not.
148
+ * @param twoSided `true` (default) if the facets are to be considered viewable from the back; `false` if they are amenable to backface culling.
140
149
  */
141
150
  static create(needNormals?: boolean, needParams?: boolean, needColors?: boolean, twoSided?: boolean): IndexedPolyface;
142
151
  /**
@@ -234,14 +243,32 @@ export declare class IndexedPolyface extends Polyface {
234
243
  /** Number of normals (read-only property). */
235
244
  get normalCount(): number;
236
245
  /** Test if `index` is a valid facet index. */
237
- isValidFacetIndex(index: number): boolean;
246
+ isValidFacetIndex(facetIndex: number): boolean;
238
247
  /** Return the number of edges in a particular facet. */
239
248
  numEdgeInFacet(facetIndex: number): number;
240
- /** ASSUME valid facet index. Return start index of facet in pointIndex arrays. */
241
- facetIndex0(index: number): number;
242
- /** ASSUME valid facet index. Return one past end index of facet in pointIndex arrays. */
243
- facetIndex1(index: number): number;
244
- /** Create a visitor for this polyface */
249
+ /**
250
+ * Given a valid facet index, return the index at which its face loop starts in the index arrays.
251
+ * * A "face loop" is a contiguous block of indices into the parallel polyface index arrays.
252
+ * * Each of these indices represents an edge of a facet, thus it is sometimes called an "edgeIndex".
253
+ * * Together with [[facetIndex1]], this method can be used to iterate the face loop of the facet
254
+ * with index `iFacet` as follows:
255
+ * ````
256
+ * for (let iEdge = this.facetIndex0(iFacet); iEdge < this.facetIndex1(iFacet); iEdge++) {
257
+ * const iPoint = this.data.pointIndex[iEdge];
258
+ * const p = this.data.point[iPoint];
259
+ * // ... process the edge of this facet starting at point p
260
+ * }
261
+ * ````
262
+ */
263
+ facetIndex0(facetIndex: number): number;
264
+ /**
265
+ * Given a valid facet index, return one past the index at which its face loop ends in the index arrays.
266
+ * * For details, see [[facetIndex0]].
267
+ */
268
+ facetIndex1(facetIndex: number): number;
269
+ /** Return a readonly reference to the facetStart array accessed by [[facetIndex0]] and [[facetIndex1]]. */
270
+ get facetStart(): ReadonlyArray<number>;
271
+ /** create a visitor for this polyface */
245
272
  createVisitor(numWrap?: number): IndexedPolyfaceVisitor;
246
273
  /** Return the range of (optionally transformed) points in this mesh. */
247
274
  range(transform?: Transform, result?: Range3d): Range3d;
@@ -265,8 +292,8 @@ export declare class IndexedPolyface extends Polyface {
265
292
  * A PolyfaceVisitor manages data while walking through facets.
266
293
  * * The polyface visitor holds data for one facet at a time.
267
294
  * * The caller can request the position in the addressed polyfaceData as a "readIndex".
268
- * * The readIndex values (as numbers) are not promised to be sequential (i.e., it might be a simple facet count
269
- * or might have "gaps" at the whim of the particular PolyfaceVisitor implementation).
295
+ * * The readIndex values (as numbers) are not assumed to be sequential (i.e., they might be contiguous facet indices
296
+ * or the indexing scheme might have gaps at the whim of the particular PolyfaceVisitor implementation).
270
297
  * @public
271
298
  */
272
299
  export interface PolyfaceVisitor extends PolyfaceData {
@@ -292,7 +319,7 @@ export interface PolyfaceVisitor extends PolyfaceData {
292
319
  clientPolyface(): Polyface | undefined;
293
320
  /**
294
321
  * Set the number of vertices replicated in visitor arrays (both data and index arrays).
295
- * * 0,1,2 are the most common as numWrap.
322
+ * * 0,1,2 are the most common values.
296
323
  * * Example: suppose `[6,7,8]` is the pointIndex array representing a triangle. First edge would be `6,7`. Second
297
324
  * edge is `7,8`. Third edge is `8,6`. To access `6` for the third edge, we have to go back to the start of array.
298
325
  * Therefore, it is useful to store `6` at the end of pointIndex array, i.e., `[6,7,8,6]` meaning `numWrap = 1`.
@@ -300,7 +327,7 @@ export interface PolyfaceVisitor extends PolyfaceData {
300
327
  * the next two points, e.g., to form two adjacent vectors for a cross product.
301
328
  */
302
329
  setNumWrap(numWrap: number): void;
303
- /** Clear the contents of all arrays. Use this along with `pushDataFrom` to build up new facets. */
330
+ /** Clear the contents of the data arrays. Use this along with `pushDataFrom` to build up new facets. */
304
331
  clearArrays(): void;
305
332
  /** Transfer data from a specified index of the other visitor as new data in this visitor. */
306
333
  pushDataFrom(other: PolyfaceVisitor, index: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"Polyface.d.ts","sourceRoot":"","sources":["../../../src/polyface/Polyface.ts"],"names":[],"mappings":"AAKA;;GAEG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAElE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;;GAIG;AACH,8BAAsB,QAAS,SAAQ,aAAa;IAClD,wCAAwC;IACxC,SAAgB,gBAAgB,cAAc;IAC9C,gCAAgC;IACzB,IAAI,EAAE,YAAY,CAAC;IAC1B,kBAAkB;IAClB,SAAS,aAAa,IAAI,EAAE,YAAY;IAIxC;;;OAGG;aACa,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe;IAC/D,8EAA8E;IAC9E,IAAW,QAAQ,IAGQ,OAAO,CADjC;IACD,IAAW,QAAQ,CAAC,KAAK,EAAE,OAAO,EAEjC;IACD;;;;OAIG;IACH,IAAW,eAAe,IAAI,MAAM,CAEnC;IACD,IAAW,eAAe,CAAC,KAAK,EAAE,MAAM,EAEvC;IACD;;;;;;;;;;OAUG;WACW,eAAe,CAC3B,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,EAC7B,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,GAAG,EACT,UAAU,EAAE,MAAM,GACjB,OAAO;IAcV,mDAAmD;IACnD,aAAoB,OAAO,IAAI,OAAO,CAAC;IACvC,iFAAiF;IACjF,IAAW,UAAU,IAAI,MAAM,GAAG,SAAS,CAE1C;CACF;AAED;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,QAAQ;IAC3C;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAChC;;;OAGG;IACH,SAAS,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IACrC;;;;;OAKG;IACH,SAAS,aAAa,IAAI,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE;IAa3F,wDAAwD;IACjD,mBAAmB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAG/C,0DAA0D;IAC1C,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAQlD,gFAAgF;IAChF,IAAW,OAAO,IAAI,OAAO,CAE5B;IACD;;;;;;;OAOG;IACI,mBAAmB,CAAC,SAAS,EAAE,SAAS;IAU/C,0CAA0C;IACnC,kBAAkB,CAAC,OAAO,EAAE,MAAM;IAGzC,2BAA2B;IACpB,KAAK,IAAI,eAAe;IAI/B;;;OAGG;IACI,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,eAAe;IAK9D,sDAAsD;IAC/C,cAAc;IAGrB,mDAAmD;IAC5C,cAAc;IAGrB;;;;OAIG;IACI,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAQ3D;;;;;;OAMG;IACI,kBAAkB,CAAC,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS;IAsGtG;;;;;;OAMG;IACH,IAAW,wBAAwB,IAAI,MAAM,CAE5C;IACD;;;;;;OAMG;WACW,MAAM,CAClB,WAAW,GAAE,OAAe,EAC5B,UAAU,GAAE,OAAe,EAC3B,UAAU,GAAE,OAAe,EAC3B,QAAQ,GAAE,OAAe,GACxB,eAAe;IAGlB;;;;;OAKG;IACI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;IAS5D;;;;;;OAMG;IACI,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAI3D;;;;OAIG;IACI,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAMvC;;;;;;;OAOG;IACI,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM;IAU3F;;;;;;OAMG;IACI,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM;IAoBtF;;;;;;OAMG;IACI,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAM5D;;;;OAIG;IACI,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAMtC,mDAAmD;IAC5C,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,OAAc,GAAG,IAAI;IAIlE,0BAA0B;IACnB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1C,yBAAyB;IAClB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKzC,yBAAyB;IAClB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKzC;;;;OAIG;IACI,gBAAgB,IAAI,IAAI;IAI/B;;;;;OAKG;IACI,kBAAkB,CAAC,MAAM,GAAE,MAAU,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO;IAsBzE;;;;;;;OAOG;IACI,cAAc,CAAC,kBAAkB,GAAE,OAAc,GAAG,MAAM,EAAE,GAAG,SAAS;IAmB/E,6CAA6C;IAC7C,IAAoB,UAAU,IAAI,MAAM,CAEvC;IACD,4CAA4C;IAC5C,IAAW,SAAS,IAAI,MAAM,CAE7B;IACD,6CAA6C;IAC7C,IAAW,UAAU,IAAI,MAAM,CAE9B;IACD,6CAA6C;IAC7C,IAAW,UAAU,IAAI,MAAM,CAE9B;IACD,iDAAiD;IACjD,IAAW,UAAU,IAAI,MAAM,CAE9B;IACD,8CAA8C;IAC9C,IAAW,WAAW,IAAI,MAAM,CAE/B;IACD,8CAA8C;IACvC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAGhD,wDAAwD;IACjD,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAKjD,kFAAkF;IAC3E,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAGzC,yFAAyF;IAClF,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAGzC,yCAAyC;IAClC,aAAa,CAAC,OAAO,GAAE,MAAU,GAAG,sBAAsB;IAGjE,wEAAwE;IACxD,KAAK,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO;IAGvE,sDAAsD;IAC/C,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI;IAG/D;;;OAGG;IACI,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa;IAGjE;;;;OAIG;IACI,cAAc,CAAC,aAAa,GAAE,MAAU,GAAG,OAAO;IA0BzD,kFAAkF;IAC3E,yBAAyB,CAAC,OAAO,EAAE,eAAe,GAAG,GAAG;CAGhE;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,gDAAgD;IAChD,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IACxC,0DAA0D;IAC1D,gBAAgB,IAAI,MAAM,CAAC;IAC3B,oCAAoC;IACpC,eAAe,IAAI,OAAO,CAAC;IAC3B,uFAAuF;IACvF,KAAK,IAAI,IAAI,CAAC;IACd,4EAA4E;IAC5E,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,4EAA4E;IAC5E,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,6EAA6E;IAC7E,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrC,4EAA4E;IAC5E,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,+EAA+E;IAC/E,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAClC,kCAAkC;IAClC,cAAc,IAAI,QAAQ,GAAG,SAAS,CAAC;IACvC;;;;;;;;OAQG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,mGAAmG;IACnG,WAAW,IAAI,IAAI,CAAC;IACpB,6FAA6F;IAC7F,YAAY,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1D;;;OAGG;IACH,wBAAwB,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACzG;;;OAGG;IACH,sBAAsB,CAAC,IAAI,MAAM,CAAC;CACnC"}
1
+ {"version":3,"file":"Polyface.d.ts","sourceRoot":"","sources":["../../../src/polyface/Polyface.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ import { GrowableXYArray } from "../geometry3d/GrowableXYArray";
12
12
  import { GrowableXYZArray } from "../geometry3d/GrowableXYZArray";
13
13
  import { Point3d } from "../geometry3d/Point3dVector3d";
14
14
  import { NumberArray } from "../geometry3d/PointHelpers";
15
+ import { Range1d } from "../geometry3d/Range";
15
16
  import { FacetFaceData } from "./FacetFaceData";
16
17
  import { IndexedPolyfaceVisitor } from "./IndexedPolyfaceVisitor";
17
18
  import { PolyfaceData } from "./PolyfaceData";
@@ -21,14 +22,18 @@ import { PolyfaceData } from "./PolyfaceData";
21
22
  * @public
22
23
  */
23
24
  export class Polyface extends GeometryQuery {
25
+ /** String name for schema properties */
26
+ geometryCategory = "polyface";
27
+ /** Underlying polyface data. */
28
+ data;
24
29
  /** Constructor */
25
30
  constructor(data) {
26
31
  super();
27
- /** String name for schema properties */
28
- this.geometryCategory = "polyface";
29
32
  this.data = data;
30
33
  }
31
- /** Flag indicating if the mesh display must assume both sides are visible. */
34
+ /**
35
+ * The [[PolyfaceData.twoSided]] flag.
36
+ */
32
37
  get twoSided() {
33
38
  return this.data.twoSided;
34
39
  }
@@ -82,6 +87,20 @@ export class Polyface extends GeometryQuery {
82
87
  * @public
83
88
  */
84
89
  export class IndexedPolyface extends Polyface {
90
+ /**
91
+ * Start indices of all facets of the polyface.
92
+ * * Each element is an index to the `this.data.pointIndex` array entry for a specific facet.
93
+ * * The facet count is `_facetStart.length - 1`.
94
+ * * The face loop for the i_th facet consists of the entries in `this.data.pointIndex` at indices `_facetStart[i]`
95
+ * up to (but not including) `_facetStart[i + 1]`.
96
+ * * Note the array is initialized with one entry (value 0).
97
+ */
98
+ _facetStart;
99
+ /**
100
+ * Index to the `this.data.face` array entry for a specific facet.
101
+ * * `_facetToFaceData` has one entry per facet.
102
+ */
103
+ _facetToFaceData;
85
104
  /**
86
105
  * Constructor for a new polyface.
87
106
  * @param data PolyfaceData arrays to capture.
@@ -101,6 +120,24 @@ export class IndexedPolyface extends Polyface {
101
120
  else
102
121
  this._facetToFaceData = [];
103
122
  }
123
+ /** Given an edgeIndex (index into `data.pointIndex`), return the index of the facet containing the edge. */
124
+ edgeIndexToFacetIndex(k) {
125
+ if (k === undefined)
126
+ return undefined;
127
+ return NumberArray.searchStrictlyIncreasingNumbers(this._facetStart, k);
128
+ }
129
+ /**
130
+ * Given an edgeIndex (index into `data.pointIndex`), return the range of the edgeIndices of the containing facet.
131
+ * * If an edge with edgeIndex `k` is found in the facet with facetIndex `f`, then the returned range `r` satisfies
132
+ * `r.low = this.facetIndex0(f) <= k < this.facetIndex1(f) = r.high` and can be used to iterate the facet's face
133
+ * loop. See [[facetIndex0]].
134
+ */
135
+ edgeIndexToFaceLoop(k) {
136
+ const q = this.edgeIndexToFacetIndex(k);
137
+ if (q !== undefined)
138
+ return Range1d.createXX(this.facetIndex0(q), this.facetIndex1(q));
139
+ return undefined;
140
+ }
104
141
  /** Test if other is an instance of `IndexedPolyface` */
105
142
  isSameGeometryClass(other) {
106
143
  return other instanceof IndexedPolyface;
@@ -120,20 +157,14 @@ export class IndexedPolyface extends Polyface {
120
157
  }
121
158
  /**
122
159
  * Transform the mesh.
123
- * * Apply the transform to points.
124
- * * Apply the (inverse transpose of the) matrix part to normals.
125
- * * If determinant of the transform matrix is negative, also
126
- * * negate normals
127
- * * reverse index order around each facet.
160
+ * * If `transform` is a mirror, also reverse the index order around each facet.
161
+ * * Note that this method always returns true. If transforming the normals fails (due to singular matrix or zero
162
+ * normal), the original normal(s) are left unchanged.
128
163
  */
129
164
  tryTransformInPlace(transform) {
130
- if (!this.data.tryTransformInPlace(transform))
131
- return false;
132
- const determinant = transform.matrix.determinant();
133
- if (determinant < 0) {
165
+ this.data.tryTransformInPlace(transform);
166
+ if (transform.matrix.determinant() < 0)
134
167
  this.reverseIndices();
135
- this.reverseNormals();
136
- }
137
168
  return true;
138
169
  }
139
170
  /** Reverse indices for a single facet. */
@@ -142,8 +173,7 @@ export class IndexedPolyface extends Polyface {
142
173
  }
143
174
  /** Return a deep clone. */
144
175
  clone() {
145
- const result = new IndexedPolyface(this.data.clone(), this._facetStart.slice(), this._facetToFaceData.slice());
146
- return result;
176
+ return new IndexedPolyface(this.data.clone(), this._facetStart.slice(), this._facetToFaceData.slice());
147
177
  }
148
178
  /**
149
179
  * Return a deep clone with transformed points and normals.
@@ -166,7 +196,7 @@ export class IndexedPolyface extends Polyface {
166
196
  * Return face data using a facet index.
167
197
  * * Returns `undefined` if none found.
168
198
  * * This is the REFERENCE to the FacetFaceData not a copy.
169
- */
199
+ */
170
200
  tryGetFaceData(i) {
171
201
  if (i < 0 || i >= this._facetToFaceData.length)
172
202
  return undefined;
@@ -298,9 +328,9 @@ export class IndexedPolyface extends Polyface {
298
328
  * @param needNormals `true` to allocate empty normal data and index arrays; `false` (default) to leave undefined.
299
329
  * @param needParams `true` to allocate empty uv parameter data and index arrays; `false` (default) to leave undefined.
300
330
  * @param needColors `true` to allocate empty color data and index arrays; `false` (default) to leave undefined.
301
- * @param twoSided `true` if the facets are to be considered viewable from the back; `false` (default) if not.
331
+ * @param twoSided `true` (default) if the facets are to be considered viewable from the back; `false` if they are amenable to backface culling.
302
332
  */
303
- static create(needNormals = false, needParams = false, needColors = false, twoSided = false) {
333
+ static create(needNormals = false, needParams = false, needColors = false, twoSided = true) {
304
334
  return new IndexedPolyface(new PolyfaceData(needNormals, needParams, needColors, twoSided));
305
335
  }
306
336
  /**
@@ -449,6 +479,14 @@ export class IndexedPolyface extends Polyface {
449
479
  validateAllIndices(index0 = 0, errors) {
450
480
  const numPointIndices = this.data.pointIndex.length;
451
481
  const messages = errors ?? [];
482
+ if (0 === numPointIndices) {
483
+ messages.push("empty pointIndex array");
484
+ return false;
485
+ }
486
+ if (index0 < 0 || index0 >= numPointIndices) {
487
+ messages.push("invalid input offset");
488
+ return false;
489
+ }
452
490
  if (this.data.normalIndex && this.data.normalIndex.length !== numPointIndices)
453
491
  messages.push("normalIndex count must match pointIndex count");
454
492
  if (this.data.paramIndex && this.data.paramIndex.length !== numPointIndices)
@@ -458,13 +496,19 @@ export class IndexedPolyface extends Polyface {
458
496
  if (this.data.edgeVisible.length !== numPointIndices)
459
497
  messages.push("visibleIndex count must equal pointIndex count");
460
498
  if (!Polyface.areIndicesValid(this.data.pointIndex, index0, numPointIndices, this.data.point, this.data.point ? this.data.point.length : 0))
461
- messages.push("invalid point indices in the last facet");
499
+ messages.push("invalid point index encountered");
462
500
  if (!Polyface.areIndicesValid(this.data.normalIndex, index0, numPointIndices, this.data.normal, this.data.normal ? this.data.normal.length : 0))
463
- messages.push("invalid normal indices in the last facet");
501
+ messages.push("invalid normal index encountered");
464
502
  if (!Polyface.areIndicesValid(this.data.paramIndex, index0, numPointIndices, this.data.param, this.data.param ? this.data.param.length : 0))
465
- messages.push("invalid param indices in the last facet");
503
+ messages.push("invalid param index encountered");
466
504
  if (!Polyface.areIndicesValid(this.data.colorIndex, index0, numPointIndices, this.data.color, this.data.color ? this.data.color.length : 0))
467
- messages.push("invalid color indices in the last facet");
505
+ messages.push("invalid color index encountered");
506
+ if (this.data.edgeMateIndex) {
507
+ if (this.data.edgeMateIndex.length !== numPointIndices)
508
+ messages.push("edgeMateIndex count must equal pointIndex count");
509
+ else if (!this.data.edgeMateIndex.every((i) => i === undefined || this.data.isValidEdgeIndex(i)))
510
+ messages.push("invalid edgeMate encountered");
511
+ }
468
512
  return 0 === messages.length;
469
513
  }
470
514
  /**
@@ -519,8 +563,8 @@ export class IndexedPolyface extends Polyface {
519
563
  return this.data.normalCount;
520
564
  }
521
565
  /** Test if `index` is a valid facet index. */
522
- isValidFacetIndex(index) {
523
- return index >= 0 && index < this.facetCount;
566
+ isValidFacetIndex(facetIndex) {
567
+ return facetIndex >= 0 && facetIndex < this.facetCount;
524
568
  }
525
569
  /** Return the number of edges in a particular facet. */
526
570
  numEdgeInFacet(facetIndex) {
@@ -528,15 +572,35 @@ export class IndexedPolyface extends Polyface {
528
572
  return this._facetStart[facetIndex + 1] - this._facetStart[facetIndex];
529
573
  return 0;
530
574
  }
531
- /** ASSUME valid facet index. Return start index of facet in pointIndex arrays. */
532
- facetIndex0(index) {
533
- return this._facetStart[index];
575
+ /**
576
+ * Given a valid facet index, return the index at which its face loop starts in the index arrays.
577
+ * * A "face loop" is a contiguous block of indices into the parallel polyface index arrays.
578
+ * * Each of these indices represents an edge of a facet, thus it is sometimes called an "edgeIndex".
579
+ * * Together with [[facetIndex1]], this method can be used to iterate the face loop of the facet
580
+ * with index `iFacet` as follows:
581
+ * ````
582
+ * for (let iEdge = this.facetIndex0(iFacet); iEdge < this.facetIndex1(iFacet); iEdge++) {
583
+ * const iPoint = this.data.pointIndex[iEdge];
584
+ * const p = this.data.point[iPoint];
585
+ * // ... process the edge of this facet starting at point p
586
+ * }
587
+ * ````
588
+ */
589
+ facetIndex0(facetIndex) {
590
+ return this._facetStart[facetIndex];
591
+ }
592
+ /**
593
+ * Given a valid facet index, return one past the index at which its face loop ends in the index arrays.
594
+ * * For details, see [[facetIndex0]].
595
+ */
596
+ facetIndex1(facetIndex) {
597
+ return this._facetStart[facetIndex + 1];
534
598
  }
535
- /** ASSUME valid facet index. Return one past end index of facet in pointIndex arrays. */
536
- facetIndex1(index) {
537
- return this._facetStart[index + 1];
599
+ /** Return a readonly reference to the facetStart array accessed by [[facetIndex0]] and [[facetIndex1]]. */
600
+ get facetStart() {
601
+ return this._facetStart;
538
602
  }
539
- /** Create a visitor for this polyface */
603
+ /** create a visitor for this polyface */
540
604
  createVisitor(numWrap = 0) {
541
605
  return IndexedPolyfaceVisitor.create(this, numWrap);
542
606
  }