@itwin/core-geometry 5.0.0-dev.7 → 5.0.0-dev.70

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 (986) hide show
  1. package/CHANGELOG.md +31 -1
  2. package/lib/cjs/Constant.js +17 -17
  3. package/lib/cjs/Constant.js.map +1 -1
  4. package/lib/cjs/Geometry.js +35 -35
  5. package/lib/cjs/Geometry.js.map +1 -1
  6. package/lib/cjs/bspline/AkimaCurve3d.js +3 -1
  7. package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
  8. package/lib/cjs/bspline/BSpline1dNd.d.ts +90 -54
  9. package/lib/cjs/bspline/BSpline1dNd.d.ts.map +1 -1
  10. package/lib/cjs/bspline/BSpline1dNd.js +137 -84
  11. package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
  12. package/lib/cjs/bspline/BSplineCurve.d.ts +193 -155
  13. package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -1
  14. package/lib/cjs/bspline/BSplineCurve.js +249 -181
  15. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  16. package/lib/cjs/bspline/BSplineCurve3dH.js +1 -0
  17. package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
  18. package/lib/cjs/bspline/BSplineCurveOps.d.ts.map +1 -1
  19. package/lib/cjs/bspline/BSplineCurveOps.js +18 -21
  20. package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
  21. package/lib/cjs/bspline/BSplineSurface.js +22 -2
  22. package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
  23. package/lib/cjs/bspline/Bezier1dNd.js +6 -0
  24. package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
  25. package/lib/cjs/bspline/BezierCurve3d.d.ts +3 -1
  26. package/lib/cjs/bspline/BezierCurve3d.d.ts.map +1 -1
  27. package/lib/cjs/bspline/BezierCurve3d.js +5 -5
  28. package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
  29. package/lib/cjs/bspline/BezierCurve3dH.js +2 -0
  30. package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
  31. package/lib/cjs/bspline/BezierCurveBase.d.ts.map +1 -1
  32. package/lib/cjs/bspline/BezierCurveBase.js +21 -2
  33. package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
  34. package/lib/cjs/bspline/InterpolationCurve3d.js +12 -1
  35. package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
  36. package/lib/cjs/bspline/KnotVector.d.ts +82 -60
  37. package/lib/cjs/bspline/KnotVector.d.ts.map +1 -1
  38. package/lib/cjs/bspline/KnotVector.js +144 -84
  39. package/lib/cjs/bspline/KnotVector.js.map +1 -1
  40. package/lib/cjs/bspline/SurfaceLocationDetail.js +12 -0
  41. package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -1
  42. package/lib/cjs/clipping/AlternatingConvexClipTree.js +14 -13
  43. package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
  44. package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -1
  45. package/lib/cjs/clipping/BooleanClipNode.js +4 -0
  46. package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
  47. package/lib/cjs/clipping/ClipPlane.js +10 -1
  48. package/lib/cjs/clipping/ClipPlane.js.map +1 -1
  49. package/lib/cjs/clipping/ClipPrimitive.js +19 -0
  50. package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
  51. package/lib/cjs/clipping/ClipUtils.js +5 -1
  52. package/lib/cjs/clipping/ClipUtils.js.map +1 -1
  53. package/lib/cjs/clipping/ClipVector.js +11 -8
  54. package/lib/cjs/clipping/ClipVector.js.map +1 -1
  55. package/lib/cjs/clipping/ConvexClipPlaneSet.js +5 -3
  56. package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
  57. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js +2 -1
  58. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  59. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js +3 -0
  60. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  61. package/lib/cjs/core-geometry.d.ts +1 -0
  62. package/lib/cjs/core-geometry.d.ts.map +1 -1
  63. package/lib/cjs/core-geometry.js +1 -0
  64. package/lib/cjs/core-geometry.js.map +1 -1
  65. package/lib/cjs/curve/Arc3d.d.ts +17 -3
  66. package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
  67. package/lib/cjs/curve/Arc3d.js +49 -20
  68. package/lib/cjs/curve/Arc3d.js.map +1 -1
  69. package/lib/cjs/curve/ConstructCurveBetweenCurves.js +3 -0
  70. package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
  71. package/lib/cjs/curve/CoordinateXYZ.js +3 -2
  72. package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
  73. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +0 -2
  74. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  75. package/lib/cjs/curve/CurveChainWithDistanceIndex.js +25 -10
  76. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  77. package/lib/cjs/curve/CurveCollection.d.ts +10 -0
  78. package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
  79. package/lib/cjs/curve/CurveCollection.js +35 -9
  80. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  81. package/lib/cjs/curve/CurveCurve.js.map +1 -1
  82. package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
  83. package/lib/cjs/curve/CurveFactory.d.ts +87 -53
  84. package/lib/cjs/curve/CurveFactory.d.ts.map +1 -1
  85. package/lib/cjs/curve/CurveFactory.js +213 -135
  86. package/lib/cjs/curve/CurveFactory.js.map +1 -1
  87. package/lib/cjs/curve/CurveLocationDetail.js +44 -0
  88. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  89. package/lib/cjs/curve/CurveOps.js.map +1 -1
  90. package/lib/cjs/curve/CurvePrimitive.d.ts +7 -10
  91. package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -1
  92. package/lib/cjs/curve/CurvePrimitive.js +27 -12
  93. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  94. package/lib/cjs/curve/CurveProcessor.js +2 -0
  95. package/lib/cjs/curve/CurveProcessor.js.map +1 -1
  96. package/lib/cjs/curve/CurveTypes.js.map +1 -1
  97. package/lib/cjs/curve/CurveWireMomentsXYZ.js +2 -0
  98. package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
  99. package/lib/cjs/curve/GeometryQuery.js.map +1 -1
  100. package/lib/cjs/curve/LineSegment3d.js +6 -2
  101. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  102. package/lib/cjs/curve/LineString3d.js +27 -7
  103. package/lib/cjs/curve/LineString3d.js.map +1 -1
  104. package/lib/cjs/curve/Loop.js +12 -4
  105. package/lib/cjs/curve/Loop.js.map +1 -1
  106. package/lib/cjs/curve/OffsetOptions.js +25 -21
  107. package/lib/cjs/curve/OffsetOptions.js.map +1 -1
  108. package/lib/cjs/curve/ParityRegion.js +4 -2
  109. package/lib/cjs/curve/ParityRegion.js.map +1 -1
  110. package/lib/cjs/curve/Path.js +2 -2
  111. package/lib/cjs/curve/Path.js.map +1 -1
  112. package/lib/cjs/curve/PointString3d.js +3 -2
  113. package/lib/cjs/curve/PointString3d.js.map +1 -1
  114. package/lib/cjs/curve/ProxyCurve.js +1 -0
  115. package/lib/cjs/curve/ProxyCurve.js.map +1 -1
  116. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js +1 -0
  117. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  118. package/lib/cjs/curve/Query/CurveSplitContext.js +3 -0
  119. package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
  120. package/lib/cjs/curve/Query/CylindricalRange.js +6 -2
  121. package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
  122. package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
  123. package/lib/cjs/curve/Query/PlanarSubdivision.js +4 -6
  124. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  125. package/lib/cjs/curve/Query/StrokeCountChain.js +12 -0
  126. package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
  127. package/lib/cjs/curve/Query/StrokeCountMap.js +14 -0
  128. package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
  129. package/lib/cjs/curve/RegionMomentsXY.js +4 -5
  130. package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
  131. package/lib/cjs/curve/RegionOps.js +9 -10
  132. package/lib/cjs/curve/RegionOps.js.map +1 -1
  133. package/lib/cjs/curve/RegionOpsClassificationSweeps.js +24 -1
  134. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  135. package/lib/cjs/curve/StrokeOptions.d.ts +4 -4
  136. package/lib/cjs/curve/StrokeOptions.d.ts.map +1 -1
  137. package/lib/cjs/curve/StrokeOptions.js +23 -6
  138. package/lib/cjs/curve/StrokeOptions.js.map +1 -1
  139. package/lib/cjs/curve/UnionRegion.js +4 -2
  140. package/lib/cjs/curve/UnionRegion.js.map +1 -1
  141. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js +13 -7
  142. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  143. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js +6 -0
  144. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  145. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js +2 -0
  146. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  147. package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  148. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js +13 -5
  149. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  150. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js +3 -0
  151. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  152. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js +18 -5
  153. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  154. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js +26 -13
  155. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  156. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js +11 -5
  157. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  158. package/lib/cjs/curve/internalContexts/CurveLengthContext.js +6 -0
  159. package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
  160. package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js +8 -6
  161. package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  162. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js +38 -5
  163. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  164. package/lib/cjs/curve/internalContexts/GapSearchContext.js +1 -0
  165. package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
  166. package/lib/cjs/curve/internalContexts/MultiChainCollector.js +12 -0
  167. package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
  168. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js +1 -0
  169. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  170. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js +7 -0
  171. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  172. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js +22 -4
  173. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  174. package/lib/cjs/curve/internalContexts/SumLengthsContext.js +1 -0
  175. package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
  176. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js +3 -0
  177. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  178. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js +2 -0
  179. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  180. package/lib/cjs/curve/spiral/ClothoidSeries.js +4 -0
  181. package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
  182. package/lib/cjs/curve/spiral/CubicEvaluator.js +2 -0
  183. package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
  184. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js +4 -0
  185. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  186. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js +5 -0
  187. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  188. package/lib/cjs/curve/spiral/DirectSpiral3d.js +12 -2
  189. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
  190. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js +24 -4
  191. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  192. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js +2 -0
  193. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  194. package/lib/cjs/curve/spiral/NormalizedTransition.js +5 -0
  195. package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
  196. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js +2 -0
  197. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  198. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js +10 -0
  199. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  200. package/lib/cjs/curve/spiral/TransitionSpiral3d.js +10 -0
  201. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
  202. package/lib/cjs/curve/spiral/XYCurveEvaluator.js +6 -0
  203. package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
  204. package/lib/cjs/geometry3d/Angle.js +18 -16
  205. package/lib/cjs/geometry3d/Angle.js.map +1 -1
  206. package/lib/cjs/geometry3d/AngleSweep.d.ts +1 -1
  207. package/lib/cjs/geometry3d/AngleSweep.d.ts.map +1 -1
  208. package/lib/cjs/geometry3d/AngleSweep.js +3 -1
  209. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
  210. package/lib/cjs/geometry3d/BarycentricTriangle.js +25 -0
  211. package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
  212. package/lib/cjs/geometry3d/BilinearPatch.js +8 -0
  213. package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
  214. package/lib/cjs/geometry3d/CoincidentGeometryOps.js +5 -0
  215. package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
  216. package/lib/cjs/geometry3d/Ellipsoid.js +48 -0
  217. package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
  218. package/lib/cjs/geometry3d/FrameBuilder.js +12 -4
  219. package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
  220. package/lib/cjs/geometry3d/FrustumAnimation.js +7 -0
  221. package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
  222. package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
  223. package/lib/cjs/geometry3d/GrowableBlockedArray.js +12 -0
  224. package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
  225. package/lib/cjs/geometry3d/GrowableFloat64Array.js +3 -0
  226. package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
  227. package/lib/cjs/geometry3d/GrowableXYArray.d.ts +0 -5
  228. package/lib/cjs/geometry3d/GrowableXYArray.d.ts.map +1 -1
  229. package/lib/cjs/geometry3d/GrowableXYArray.js +16 -7
  230. package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
  231. package/lib/cjs/geometry3d/GrowableXYZArray.d.ts +32 -10
  232. package/lib/cjs/geometry3d/GrowableXYZArray.d.ts.map +1 -1
  233. package/lib/cjs/geometry3d/GrowableXYZArray.js +70 -16
  234. package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
  235. package/lib/cjs/geometry3d/IndexedCollectionInterval.js +6 -0
  236. package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
  237. package/lib/cjs/geometry3d/IndexedXYCollection.js +1 -0
  238. package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
  239. package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts +13 -2
  240. package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
  241. package/lib/cjs/geometry3d/IndexedXYZCollection.js +26 -11
  242. package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
  243. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js +3 -0
  244. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  245. package/lib/cjs/geometry3d/Matrix3d.d.ts +3 -4
  246. package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -1
  247. package/lib/cjs/geometry3d/Matrix3d.js +36 -14
  248. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  249. package/lib/cjs/geometry3d/OrderedRotationAngles.js +10 -2
  250. package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
  251. package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
  252. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js +2 -0
  253. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  254. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js +7 -0
  255. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  256. package/lib/cjs/geometry3d/Point2dArrayCarrier.js +2 -0
  257. package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
  258. package/lib/cjs/geometry3d/Point2dVector2d.js +4 -0
  259. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  260. package/lib/cjs/geometry3d/Point3dArrayCarrier.js +3 -1
  261. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  262. package/lib/cjs/geometry3d/Point3dVector3d.d.ts +6 -6
  263. package/lib/cjs/geometry3d/Point3dVector3d.js +12 -6
  264. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  265. package/lib/cjs/geometry3d/PointHelpers.d.ts +3 -3
  266. package/lib/cjs/geometry3d/PointHelpers.js +8 -8
  267. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  268. package/lib/cjs/geometry3d/PointStreaming.js +12 -4
  269. package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
  270. package/lib/cjs/geometry3d/PolygonOps.d.ts +2 -2
  271. package/lib/cjs/geometry3d/PolygonOps.js +62 -25
  272. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  273. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js +7 -3
  274. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  275. package/lib/cjs/geometry3d/PolylineOps.d.ts +9 -5
  276. package/lib/cjs/geometry3d/PolylineOps.d.ts.map +1 -1
  277. package/lib/cjs/geometry3d/PolylineOps.js +12 -5
  278. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
  279. package/lib/cjs/geometry3d/Range.js +21 -4
  280. package/lib/cjs/geometry3d/Range.js.map +1 -1
  281. package/lib/cjs/geometry3d/Ray2d.js +2 -0
  282. package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
  283. package/lib/cjs/geometry3d/Ray3d.d.ts +2 -2
  284. package/lib/cjs/geometry3d/Ray3d.d.ts.map +1 -1
  285. package/lib/cjs/geometry3d/Ray3d.js +20 -11
  286. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  287. package/lib/cjs/geometry3d/ReusableObjectCache.js +4 -0
  288. package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
  289. package/lib/cjs/geometry3d/Segment1d.js +4 -0
  290. package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
  291. package/lib/cjs/geometry3d/SortablePolygon.js +11 -0
  292. package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
  293. package/lib/cjs/geometry3d/Transform.js +3 -0
  294. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  295. package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
  296. package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
  297. package/lib/cjs/geometry3d/YawPitchRollAngles.js +6 -0
  298. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  299. package/lib/cjs/geometry4d/Map4d.js +2 -0
  300. package/lib/cjs/geometry4d/Map4d.js.map +1 -1
  301. package/lib/cjs/geometry4d/Matrix4d.js +1 -0
  302. package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
  303. package/lib/cjs/geometry4d/MomentData.d.ts +72 -73
  304. package/lib/cjs/geometry4d/MomentData.d.ts.map +1 -1
  305. package/lib/cjs/geometry4d/MomentData.js +90 -66
  306. package/lib/cjs/geometry4d/MomentData.js.map +1 -1
  307. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js +6 -0
  308. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  309. package/lib/cjs/geometry4d/Point4d.js +2 -0
  310. package/lib/cjs/geometry4d/Point4d.js.map +1 -1
  311. package/lib/cjs/numerics/BandedSystem.js.map +1 -1
  312. package/lib/cjs/numerics/BezierPolynomials.js +8 -0
  313. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
  314. package/lib/cjs/numerics/ClusterableArray.js +29 -13
  315. package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
  316. package/lib/cjs/numerics/Complex.js +2 -0
  317. package/lib/cjs/numerics/Complex.js.map +1 -1
  318. package/lib/cjs/numerics/ConvexPolygon2d.js +3 -0
  319. package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
  320. package/lib/cjs/numerics/Newton.js +59 -4
  321. package/lib/cjs/numerics/Newton.js.map +1 -1
  322. package/lib/cjs/numerics/PascalCoefficients.js +1 -1
  323. package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
  324. package/lib/cjs/numerics/PolarData.js +13 -1
  325. package/lib/cjs/numerics/PolarData.js.map +1 -1
  326. package/lib/cjs/numerics/Polynomials.js +64 -26
  327. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  328. package/lib/cjs/numerics/Quadrature.js +26 -20
  329. package/lib/cjs/numerics/Quadrature.js.map +1 -1
  330. package/lib/cjs/numerics/Range1dArray.js.map +1 -1
  331. package/lib/cjs/numerics/SmallSystem.js.map +1 -1
  332. package/lib/cjs/numerics/TriDiagonalSystem.js +11 -0
  333. package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
  334. package/lib/cjs/numerics/UnionFind.js +1 -0
  335. package/lib/cjs/numerics/UnionFind.js.map +1 -1
  336. package/lib/cjs/numerics/UsageSums.js +10 -0
  337. package/lib/cjs/numerics/UsageSums.js.map +1 -1
  338. package/lib/cjs/polyface/AuxData.js +16 -0
  339. package/lib/cjs/polyface/AuxData.js.map +1 -1
  340. package/lib/cjs/polyface/BoxTopology.js +67 -67
  341. package/lib/cjs/polyface/BoxTopology.js.map +1 -1
  342. package/lib/cjs/polyface/FacetFaceData.d.ts +1 -1
  343. package/lib/cjs/polyface/FacetFaceData.js +3 -1
  344. package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
  345. package/lib/cjs/polyface/FacetLocationDetail.js +30 -0
  346. package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
  347. package/lib/cjs/polyface/FacetOrientation.js +12 -1
  348. package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
  349. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js +18 -2
  350. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  351. package/lib/cjs/polyface/IndexedEdgeMatcher.d.ts +33 -23
  352. package/lib/cjs/polyface/IndexedEdgeMatcher.d.ts.map +1 -1
  353. package/lib/cjs/polyface/IndexedEdgeMatcher.js +63 -33
  354. package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
  355. package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts +3 -2
  356. package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
  357. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js +11 -2
  358. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  359. package/lib/cjs/polyface/IndexedPolyfaceWalker.d.ts +233 -0
  360. package/lib/cjs/polyface/IndexedPolyfaceWalker.d.ts.map +1 -0
  361. package/lib/cjs/polyface/IndexedPolyfaceWalker.js +353 -0
  362. package/lib/cjs/polyface/IndexedPolyfaceWalker.js.map +1 -0
  363. package/lib/cjs/polyface/Polyface.d.ts +35 -10
  364. package/lib/cjs/polyface/Polyface.d.ts.map +1 -1
  365. package/lib/cjs/polyface/Polyface.js +73 -12
  366. package/lib/cjs/polyface/Polyface.js.map +1 -1
  367. package/lib/cjs/polyface/PolyfaceBuilder.d.ts +14 -27
  368. package/lib/cjs/polyface/PolyfaceBuilder.d.ts.map +1 -1
  369. package/lib/cjs/polyface/PolyfaceBuilder.js +47 -79
  370. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  371. package/lib/cjs/polyface/PolyfaceClip.js +8 -0
  372. package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
  373. package/lib/cjs/polyface/PolyfaceData.d.ts +28 -0
  374. package/lib/cjs/polyface/PolyfaceData.d.ts.map +1 -1
  375. package/lib/cjs/polyface/PolyfaceData.js +87 -5
  376. package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
  377. package/lib/cjs/polyface/PolyfaceQuery.js +47 -7
  378. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  379. package/lib/cjs/polyface/RangeLengthData.js +7 -0
  380. package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
  381. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js +12 -0
  382. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  383. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js +5 -2
  384. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  385. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js +12 -0
  386. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  387. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js +14 -0
  388. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  389. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js +5 -0
  390. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  391. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js +43 -0
  392. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  393. package/lib/cjs/polyface/TaggedNumericData.js +8 -0
  394. package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
  395. package/lib/cjs/polyface/TriangleCandidate.js +3 -0
  396. package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
  397. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js +7 -0
  398. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  399. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js +6 -0
  400. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  401. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js +3 -0
  402. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  403. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js +3 -0
  404. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  405. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js +32 -0
  406. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  407. package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  408. package/lib/cjs/polyface/multiclip/RangeSearch.js +5 -5
  409. package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
  410. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js +21 -8
  411. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  412. package/lib/cjs/polyface/multiclip/XYPointBuckets.js +6 -0
  413. package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
  414. package/lib/cjs/serialization/BGFBAccessors.js +82 -164
  415. package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
  416. package/lib/cjs/serialization/BGFBReader.js +22 -22
  417. package/lib/cjs/serialization/BGFBReader.js.map +1 -1
  418. package/lib/cjs/serialization/BGFBWriter.js +1 -0
  419. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  420. package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  421. package/lib/cjs/serialization/DeepCompare.js +17 -17
  422. package/lib/cjs/serialization/DeepCompare.js.map +1 -1
  423. package/lib/cjs/serialization/GeometrySamples.d.ts +5 -5
  424. package/lib/cjs/serialization/GeometrySamples.d.ts.map +1 -1
  425. package/lib/cjs/serialization/GeometrySamples.js +113 -112
  426. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  427. package/lib/cjs/serialization/IModelJsonSchema.d.ts +16 -22
  428. package/lib/cjs/serialization/IModelJsonSchema.d.ts.map +1 -1
  429. package/lib/cjs/serialization/IModelJsonSchema.js +4 -5
  430. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  431. package/lib/cjs/serialization/SerializationHelpers.js.map +1 -1
  432. package/lib/cjs/solid/Box.js +7 -2
  433. package/lib/cjs/solid/Box.js.map +1 -1
  434. package/lib/cjs/solid/Cone.js +6 -2
  435. package/lib/cjs/solid/Cone.js.map +1 -1
  436. package/lib/cjs/solid/LinearSweep.js +4 -2
  437. package/lib/cjs/solid/LinearSweep.js.map +1 -1
  438. package/lib/cjs/solid/RotationalSweep.js +5 -2
  439. package/lib/cjs/solid/RotationalSweep.js.map +1 -1
  440. package/lib/cjs/solid/RuledSweep.d.ts +26 -23
  441. package/lib/cjs/solid/RuledSweep.d.ts.map +1 -1
  442. package/lib/cjs/solid/RuledSweep.js +32 -24
  443. package/lib/cjs/solid/RuledSweep.js.map +1 -1
  444. package/lib/cjs/solid/SolidPrimitive.d.ts +12 -11
  445. package/lib/cjs/solid/SolidPrimitive.d.ts.map +1 -1
  446. package/lib/cjs/solid/SolidPrimitive.js +11 -6
  447. package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
  448. package/lib/cjs/solid/Sphere.js +4 -2
  449. package/lib/cjs/solid/Sphere.js.map +1 -1
  450. package/lib/cjs/solid/SweepContour.d.ts +24 -15
  451. package/lib/cjs/solid/SweepContour.d.ts.map +1 -1
  452. package/lib/cjs/solid/SweepContour.js +33 -15
  453. package/lib/cjs/solid/SweepContour.js.map +1 -1
  454. package/lib/cjs/solid/TorusPipe.js +7 -2
  455. package/lib/cjs/solid/TorusPipe.js.map +1 -1
  456. package/lib/cjs/topology/ChainMerge.js +16 -4
  457. package/lib/cjs/topology/ChainMerge.js.map +1 -1
  458. package/lib/cjs/topology/Graph.js +41 -6
  459. package/lib/cjs/topology/Graph.js.map +1 -1
  460. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +1 -1
  461. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js +5 -1
  462. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  463. package/lib/cjs/topology/HalfEdgeGraphSearch.js +2 -0
  464. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  465. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js +9 -2
  466. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  467. package/lib/cjs/topology/HalfEdgeGraphValidation.js +7 -9
  468. package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
  469. package/lib/cjs/topology/HalfEdgeMarkSet.js +5 -0
  470. package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
  471. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js +6 -0
  472. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  473. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js +1 -0
  474. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  475. package/lib/cjs/topology/HalfEdgePositionDetail.js +16 -0
  476. package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
  477. package/lib/cjs/topology/HalfEdgePriorityQueue.js +2 -0
  478. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
  479. package/lib/cjs/topology/InsertAndRetriangulateContext.js +4 -0
  480. package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
  481. package/lib/cjs/topology/MaskManager.js +3 -0
  482. package/lib/cjs/topology/MaskManager.js.map +1 -1
  483. package/lib/cjs/topology/Merging.js +11 -6
  484. package/lib/cjs/topology/Merging.js.map +1 -1
  485. package/lib/cjs/topology/RegularizeFace.js +22 -0
  486. package/lib/cjs/topology/RegularizeFace.js.map +1 -1
  487. package/lib/cjs/topology/SignedDataSummary.js +22 -0
  488. package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
  489. package/lib/cjs/topology/SpaceTriangulation.js.map +1 -1
  490. package/lib/cjs/topology/Triangulation.js +21 -11
  491. package/lib/cjs/topology/Triangulation.js.map +1 -1
  492. package/lib/cjs/topology/XYParitySearchContext.js +13 -0
  493. package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
  494. package/lib/esm/Constant.js +17 -17
  495. package/lib/esm/Constant.js.map +1 -1
  496. package/lib/esm/Geometry.js +35 -35
  497. package/lib/esm/Geometry.js.map +1 -1
  498. package/lib/esm/bspline/AkimaCurve3d.js +3 -1
  499. package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
  500. package/lib/esm/bspline/BSpline1dNd.d.ts +90 -54
  501. package/lib/esm/bspline/BSpline1dNd.d.ts.map +1 -1
  502. package/lib/esm/bspline/BSpline1dNd.js +137 -84
  503. package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
  504. package/lib/esm/bspline/BSplineCurve.d.ts +193 -155
  505. package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
  506. package/lib/esm/bspline/BSplineCurve.js +249 -181
  507. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  508. package/lib/esm/bspline/BSplineCurve3dH.js +1 -0
  509. package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
  510. package/lib/esm/bspline/BSplineCurveOps.d.ts.map +1 -1
  511. package/lib/esm/bspline/BSplineCurveOps.js +18 -21
  512. package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
  513. package/lib/esm/bspline/BSplineSurface.js +22 -2
  514. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  515. package/lib/esm/bspline/Bezier1dNd.js +6 -0
  516. package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
  517. package/lib/esm/bspline/BezierCurve3d.d.ts +3 -1
  518. package/lib/esm/bspline/BezierCurve3d.d.ts.map +1 -1
  519. package/lib/esm/bspline/BezierCurve3d.js +5 -5
  520. package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
  521. package/lib/esm/bspline/BezierCurve3dH.js +2 -0
  522. package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
  523. package/lib/esm/bspline/BezierCurveBase.d.ts.map +1 -1
  524. package/lib/esm/bspline/BezierCurveBase.js +21 -2
  525. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  526. package/lib/esm/bspline/InterpolationCurve3d.js +12 -1
  527. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  528. package/lib/esm/bspline/KnotVector.d.ts +82 -60
  529. package/lib/esm/bspline/KnotVector.d.ts.map +1 -1
  530. package/lib/esm/bspline/KnotVector.js +144 -84
  531. package/lib/esm/bspline/KnotVector.js.map +1 -1
  532. package/lib/esm/bspline/SurfaceLocationDetail.js +12 -0
  533. package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
  534. package/lib/esm/clipping/AlternatingConvexClipTree.js +14 -13
  535. package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
  536. package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
  537. package/lib/esm/clipping/BooleanClipNode.js +4 -0
  538. package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
  539. package/lib/esm/clipping/ClipPlane.js +10 -1
  540. package/lib/esm/clipping/ClipPlane.js.map +1 -1
  541. package/lib/esm/clipping/ClipPrimitive.js +19 -0
  542. package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
  543. package/lib/esm/clipping/ClipUtils.js +5 -1
  544. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  545. package/lib/esm/clipping/ClipVector.js +11 -8
  546. package/lib/esm/clipping/ClipVector.js.map +1 -1
  547. package/lib/esm/clipping/ConvexClipPlaneSet.js +5 -3
  548. package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
  549. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js +2 -1
  550. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  551. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js +3 -0
  552. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  553. package/lib/esm/core-geometry.d.ts +1 -0
  554. package/lib/esm/core-geometry.d.ts.map +1 -1
  555. package/lib/esm/core-geometry.js +1 -0
  556. package/lib/esm/core-geometry.js.map +1 -1
  557. package/lib/esm/curve/Arc3d.d.ts +17 -3
  558. package/lib/esm/curve/Arc3d.d.ts.map +1 -1
  559. package/lib/esm/curve/Arc3d.js +49 -20
  560. package/lib/esm/curve/Arc3d.js.map +1 -1
  561. package/lib/esm/curve/ConstructCurveBetweenCurves.js +3 -0
  562. package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
  563. package/lib/esm/curve/CoordinateXYZ.js +3 -2
  564. package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
  565. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +0 -2
  566. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  567. package/lib/esm/curve/CurveChainWithDistanceIndex.js +25 -10
  568. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  569. package/lib/esm/curve/CurveCollection.d.ts +10 -0
  570. package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
  571. package/lib/esm/curve/CurveCollection.js +35 -9
  572. package/lib/esm/curve/CurveCollection.js.map +1 -1
  573. package/lib/esm/curve/CurveCurve.js.map +1 -1
  574. package/lib/esm/curve/CurveExtendMode.js.map +1 -1
  575. package/lib/esm/curve/CurveFactory.d.ts +87 -53
  576. package/lib/esm/curve/CurveFactory.d.ts.map +1 -1
  577. package/lib/esm/curve/CurveFactory.js +213 -135
  578. package/lib/esm/curve/CurveFactory.js.map +1 -1
  579. package/lib/esm/curve/CurveLocationDetail.js +44 -0
  580. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  581. package/lib/esm/curve/CurveOps.js.map +1 -1
  582. package/lib/esm/curve/CurvePrimitive.d.ts +7 -10
  583. package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
  584. package/lib/esm/curve/CurvePrimitive.js +27 -12
  585. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  586. package/lib/esm/curve/CurveProcessor.js +2 -0
  587. package/lib/esm/curve/CurveProcessor.js.map +1 -1
  588. package/lib/esm/curve/CurveTypes.js.map +1 -1
  589. package/lib/esm/curve/CurveWireMomentsXYZ.js +2 -0
  590. package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
  591. package/lib/esm/curve/GeometryQuery.js.map +1 -1
  592. package/lib/esm/curve/LineSegment3d.js +6 -2
  593. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  594. package/lib/esm/curve/LineString3d.js +27 -7
  595. package/lib/esm/curve/LineString3d.js.map +1 -1
  596. package/lib/esm/curve/Loop.js +12 -4
  597. package/lib/esm/curve/Loop.js.map +1 -1
  598. package/lib/esm/curve/OffsetOptions.js +25 -21
  599. package/lib/esm/curve/OffsetOptions.js.map +1 -1
  600. package/lib/esm/curve/ParityRegion.js +4 -2
  601. package/lib/esm/curve/ParityRegion.js.map +1 -1
  602. package/lib/esm/curve/Path.js +2 -2
  603. package/lib/esm/curve/Path.js.map +1 -1
  604. package/lib/esm/curve/PointString3d.js +3 -2
  605. package/lib/esm/curve/PointString3d.js.map +1 -1
  606. package/lib/esm/curve/ProxyCurve.js +1 -0
  607. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  608. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js +1 -0
  609. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  610. package/lib/esm/curve/Query/CurveSplitContext.js +3 -0
  611. package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
  612. package/lib/esm/curve/Query/CylindricalRange.js +6 -2
  613. package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
  614. package/lib/esm/curve/Query/InOutTests.js.map +1 -1
  615. package/lib/esm/curve/Query/PlanarSubdivision.js +4 -6
  616. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  617. package/lib/esm/curve/Query/StrokeCountChain.js +12 -0
  618. package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
  619. package/lib/esm/curve/Query/StrokeCountMap.js +14 -0
  620. package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
  621. package/lib/esm/curve/RegionMomentsXY.js +4 -5
  622. package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
  623. package/lib/esm/curve/RegionOps.js +9 -10
  624. package/lib/esm/curve/RegionOps.js.map +1 -1
  625. package/lib/esm/curve/RegionOpsClassificationSweeps.js +24 -1
  626. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  627. package/lib/esm/curve/StrokeOptions.d.ts +4 -4
  628. package/lib/esm/curve/StrokeOptions.d.ts.map +1 -1
  629. package/lib/esm/curve/StrokeOptions.js +23 -6
  630. package/lib/esm/curve/StrokeOptions.js.map +1 -1
  631. package/lib/esm/curve/UnionRegion.js +4 -2
  632. package/lib/esm/curve/UnionRegion.js.map +1 -1
  633. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js +13 -7
  634. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  635. package/lib/esm/curve/internalContexts/ChainCollectorContext.js +6 -0
  636. package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  637. package/lib/esm/curve/internalContexts/CloneCurvesContext.js +2 -0
  638. package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  639. package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  640. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js +13 -5
  641. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  642. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js +3 -0
  643. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  644. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js +18 -5
  645. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  646. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js +26 -13
  647. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  648. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js +11 -5
  649. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  650. package/lib/esm/curve/internalContexts/CurveLengthContext.js +6 -0
  651. package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
  652. package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js +8 -6
  653. package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  654. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js +38 -5
  655. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  656. package/lib/esm/curve/internalContexts/GapSearchContext.js +1 -0
  657. package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
  658. package/lib/esm/curve/internalContexts/MultiChainCollector.js +12 -0
  659. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  660. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js +1 -0
  661. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  662. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js +7 -0
  663. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  664. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js +22 -4
  665. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  666. package/lib/esm/curve/internalContexts/SumLengthsContext.js +1 -0
  667. package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
  668. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js +3 -0
  669. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  670. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js +2 -0
  671. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  672. package/lib/esm/curve/spiral/ClothoidSeries.js +4 -0
  673. package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
  674. package/lib/esm/curve/spiral/CubicEvaluator.js +2 -0
  675. package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
  676. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js +4 -0
  677. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  678. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js +5 -0
  679. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  680. package/lib/esm/curve/spiral/DirectSpiral3d.js +12 -2
  681. package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
  682. package/lib/esm/curve/spiral/IntegratedSpiral3d.js +24 -4
  683. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  684. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js +2 -0
  685. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  686. package/lib/esm/curve/spiral/NormalizedTransition.js +5 -0
  687. package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
  688. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js +2 -0
  689. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  690. package/lib/esm/curve/spiral/TransitionConditionalProperties.js +10 -0
  691. package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  692. package/lib/esm/curve/spiral/TransitionSpiral3d.js +10 -0
  693. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
  694. package/lib/esm/curve/spiral/XYCurveEvaluator.js +6 -0
  695. package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
  696. package/lib/esm/geometry3d/Angle.js +18 -16
  697. package/lib/esm/geometry3d/Angle.js.map +1 -1
  698. package/lib/esm/geometry3d/AngleSweep.d.ts +1 -1
  699. package/lib/esm/geometry3d/AngleSweep.d.ts.map +1 -1
  700. package/lib/esm/geometry3d/AngleSweep.js +3 -1
  701. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  702. package/lib/esm/geometry3d/BarycentricTriangle.js +25 -0
  703. package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
  704. package/lib/esm/geometry3d/BilinearPatch.js +8 -0
  705. package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
  706. package/lib/esm/geometry3d/CoincidentGeometryOps.js +5 -0
  707. package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
  708. package/lib/esm/geometry3d/Ellipsoid.js +48 -0
  709. package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
  710. package/lib/esm/geometry3d/FrameBuilder.js +12 -4
  711. package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
  712. package/lib/esm/geometry3d/FrustumAnimation.js +7 -0
  713. package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
  714. package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
  715. package/lib/esm/geometry3d/GrowableBlockedArray.js +12 -0
  716. package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
  717. package/lib/esm/geometry3d/GrowableFloat64Array.js +3 -0
  718. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
  719. package/lib/esm/geometry3d/GrowableXYArray.d.ts +0 -5
  720. package/lib/esm/geometry3d/GrowableXYArray.d.ts.map +1 -1
  721. package/lib/esm/geometry3d/GrowableXYArray.js +16 -7
  722. package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
  723. package/lib/esm/geometry3d/GrowableXYZArray.d.ts +32 -10
  724. package/lib/esm/geometry3d/GrowableXYZArray.d.ts.map +1 -1
  725. package/lib/esm/geometry3d/GrowableXYZArray.js +70 -16
  726. package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
  727. package/lib/esm/geometry3d/IndexedCollectionInterval.js +6 -0
  728. package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
  729. package/lib/esm/geometry3d/IndexedXYCollection.js +1 -0
  730. package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
  731. package/lib/esm/geometry3d/IndexedXYZCollection.d.ts +13 -2
  732. package/lib/esm/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
  733. package/lib/esm/geometry3d/IndexedXYZCollection.js +26 -11
  734. package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
  735. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js +3 -0
  736. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  737. package/lib/esm/geometry3d/Matrix3d.d.ts +3 -4
  738. package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -1
  739. package/lib/esm/geometry3d/Matrix3d.js +36 -14
  740. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  741. package/lib/esm/geometry3d/OrderedRotationAngles.js +10 -2
  742. package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
  743. package/lib/esm/geometry3d/Plane3d.js.map +1 -1
  744. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js +2 -0
  745. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  746. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js +7 -0
  747. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  748. package/lib/esm/geometry3d/Point2dArrayCarrier.js +2 -0
  749. package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
  750. package/lib/esm/geometry3d/Point2dVector2d.js +4 -0
  751. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  752. package/lib/esm/geometry3d/Point3dArrayCarrier.js +3 -1
  753. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  754. package/lib/esm/geometry3d/Point3dVector3d.d.ts +6 -6
  755. package/lib/esm/geometry3d/Point3dVector3d.js +12 -6
  756. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  757. package/lib/esm/geometry3d/PointHelpers.d.ts +3 -3
  758. package/lib/esm/geometry3d/PointHelpers.js +8 -8
  759. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  760. package/lib/esm/geometry3d/PointStreaming.js +12 -4
  761. package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
  762. package/lib/esm/geometry3d/PolygonOps.d.ts +2 -2
  763. package/lib/esm/geometry3d/PolygonOps.js +62 -25
  764. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  765. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js +7 -3
  766. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  767. package/lib/esm/geometry3d/PolylineOps.d.ts +9 -5
  768. package/lib/esm/geometry3d/PolylineOps.d.ts.map +1 -1
  769. package/lib/esm/geometry3d/PolylineOps.js +12 -5
  770. package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
  771. package/lib/esm/geometry3d/Range.js +21 -4
  772. package/lib/esm/geometry3d/Range.js.map +1 -1
  773. package/lib/esm/geometry3d/Ray2d.js +2 -0
  774. package/lib/esm/geometry3d/Ray2d.js.map +1 -1
  775. package/lib/esm/geometry3d/Ray3d.d.ts +2 -2
  776. package/lib/esm/geometry3d/Ray3d.d.ts.map +1 -1
  777. package/lib/esm/geometry3d/Ray3d.js +20 -11
  778. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  779. package/lib/esm/geometry3d/ReusableObjectCache.js +4 -0
  780. package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
  781. package/lib/esm/geometry3d/Segment1d.js +4 -0
  782. package/lib/esm/geometry3d/Segment1d.js.map +1 -1
  783. package/lib/esm/geometry3d/SortablePolygon.js +11 -0
  784. package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
  785. package/lib/esm/geometry3d/Transform.js +3 -0
  786. package/lib/esm/geometry3d/Transform.js.map +1 -1
  787. package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
  788. package/lib/esm/geometry3d/XYZProps.js.map +1 -1
  789. package/lib/esm/geometry3d/YawPitchRollAngles.js +6 -0
  790. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  791. package/lib/esm/geometry4d/Map4d.js +2 -0
  792. package/lib/esm/geometry4d/Map4d.js.map +1 -1
  793. package/lib/esm/geometry4d/Matrix4d.js +1 -0
  794. package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
  795. package/lib/esm/geometry4d/MomentData.d.ts +72 -73
  796. package/lib/esm/geometry4d/MomentData.d.ts.map +1 -1
  797. package/lib/esm/geometry4d/MomentData.js +90 -66
  798. package/lib/esm/geometry4d/MomentData.js.map +1 -1
  799. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js +6 -0
  800. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  801. package/lib/esm/geometry4d/Point4d.js +2 -0
  802. package/lib/esm/geometry4d/Point4d.js.map +1 -1
  803. package/lib/esm/numerics/BandedSystem.js.map +1 -1
  804. package/lib/esm/numerics/BezierPolynomials.js +8 -0
  805. package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
  806. package/lib/esm/numerics/ClusterableArray.js +29 -13
  807. package/lib/esm/numerics/ClusterableArray.js.map +1 -1
  808. package/lib/esm/numerics/Complex.js +2 -0
  809. package/lib/esm/numerics/Complex.js.map +1 -1
  810. package/lib/esm/numerics/ConvexPolygon2d.js +3 -0
  811. package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
  812. package/lib/esm/numerics/Newton.js +59 -4
  813. package/lib/esm/numerics/Newton.js.map +1 -1
  814. package/lib/esm/numerics/PascalCoefficients.js +1 -1
  815. package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
  816. package/lib/esm/numerics/PolarData.js +13 -1
  817. package/lib/esm/numerics/PolarData.js.map +1 -1
  818. package/lib/esm/numerics/Polynomials.js +64 -26
  819. package/lib/esm/numerics/Polynomials.js.map +1 -1
  820. package/lib/esm/numerics/Quadrature.js +26 -20
  821. package/lib/esm/numerics/Quadrature.js.map +1 -1
  822. package/lib/esm/numerics/Range1dArray.js.map +1 -1
  823. package/lib/esm/numerics/SmallSystem.js.map +1 -1
  824. package/lib/esm/numerics/TriDiagonalSystem.js +11 -0
  825. package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
  826. package/lib/esm/numerics/UnionFind.js +1 -0
  827. package/lib/esm/numerics/UnionFind.js.map +1 -1
  828. package/lib/esm/numerics/UsageSums.js +10 -0
  829. package/lib/esm/numerics/UsageSums.js.map +1 -1
  830. package/lib/esm/polyface/AuxData.js +16 -0
  831. package/lib/esm/polyface/AuxData.js.map +1 -1
  832. package/lib/esm/polyface/BoxTopology.js +67 -67
  833. package/lib/esm/polyface/BoxTopology.js.map +1 -1
  834. package/lib/esm/polyface/FacetFaceData.d.ts +1 -1
  835. package/lib/esm/polyface/FacetFaceData.js +3 -1
  836. package/lib/esm/polyface/FacetFaceData.js.map +1 -1
  837. package/lib/esm/polyface/FacetLocationDetail.js +30 -0
  838. package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
  839. package/lib/esm/polyface/FacetOrientation.js +12 -1
  840. package/lib/esm/polyface/FacetOrientation.js.map +1 -1
  841. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js +18 -2
  842. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  843. package/lib/esm/polyface/IndexedEdgeMatcher.d.ts +33 -23
  844. package/lib/esm/polyface/IndexedEdgeMatcher.d.ts.map +1 -1
  845. package/lib/esm/polyface/IndexedEdgeMatcher.js +63 -33
  846. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
  847. package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts +3 -2
  848. package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
  849. package/lib/esm/polyface/IndexedPolyfaceVisitor.js +11 -2
  850. package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  851. package/lib/esm/polyface/IndexedPolyfaceWalker.d.ts +233 -0
  852. package/lib/esm/polyface/IndexedPolyfaceWalker.d.ts.map +1 -0
  853. package/lib/esm/polyface/IndexedPolyfaceWalker.js +349 -0
  854. package/lib/esm/polyface/IndexedPolyfaceWalker.js.map +1 -0
  855. package/lib/esm/polyface/Polyface.d.ts +35 -10
  856. package/lib/esm/polyface/Polyface.d.ts.map +1 -1
  857. package/lib/esm/polyface/Polyface.js +73 -12
  858. package/lib/esm/polyface/Polyface.js.map +1 -1
  859. package/lib/esm/polyface/PolyfaceBuilder.d.ts +14 -27
  860. package/lib/esm/polyface/PolyfaceBuilder.d.ts.map +1 -1
  861. package/lib/esm/polyface/PolyfaceBuilder.js +48 -80
  862. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  863. package/lib/esm/polyface/PolyfaceClip.js +8 -0
  864. package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
  865. package/lib/esm/polyface/PolyfaceData.d.ts +28 -0
  866. package/lib/esm/polyface/PolyfaceData.d.ts.map +1 -1
  867. package/lib/esm/polyface/PolyfaceData.js +87 -5
  868. package/lib/esm/polyface/PolyfaceData.js.map +1 -1
  869. package/lib/esm/polyface/PolyfaceQuery.js +47 -7
  870. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  871. package/lib/esm/polyface/RangeLengthData.js +7 -0
  872. package/lib/esm/polyface/RangeLengthData.js.map +1 -1
  873. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js +12 -0
  874. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  875. package/lib/esm/polyface/RangeTree/MinimumValueTester.js +5 -2
  876. package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  877. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js +12 -0
  878. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  879. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js +14 -0
  880. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  881. package/lib/esm/polyface/RangeTree/RangeTreeNode.js +5 -0
  882. package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  883. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js +43 -0
  884. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  885. package/lib/esm/polyface/TaggedNumericData.js +8 -0
  886. package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
  887. package/lib/esm/polyface/TriangleCandidate.js +3 -0
  888. package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
  889. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js +7 -0
  890. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  891. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js +6 -0
  892. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  893. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js +3 -0
  894. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  895. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js +3 -0
  896. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  897. package/lib/esm/polyface/multiclip/OffsetMeshContext.js +32 -0
  898. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  899. package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  900. package/lib/esm/polyface/multiclip/RangeSearch.js +5 -5
  901. package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
  902. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js +21 -8
  903. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  904. package/lib/esm/polyface/multiclip/XYPointBuckets.js +6 -0
  905. package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
  906. package/lib/esm/serialization/BGFBAccessors.js +82 -164
  907. package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
  908. package/lib/esm/serialization/BGFBReader.js +22 -22
  909. package/lib/esm/serialization/BGFBReader.js.map +1 -1
  910. package/lib/esm/serialization/BGFBWriter.js +1 -0
  911. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  912. package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  913. package/lib/esm/serialization/DeepCompare.js +17 -17
  914. package/lib/esm/serialization/DeepCompare.js.map +1 -1
  915. package/lib/esm/serialization/GeometrySamples.d.ts +5 -5
  916. package/lib/esm/serialization/GeometrySamples.d.ts.map +1 -1
  917. package/lib/esm/serialization/GeometrySamples.js +113 -112
  918. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  919. package/lib/esm/serialization/IModelJsonSchema.d.ts +16 -22
  920. package/lib/esm/serialization/IModelJsonSchema.d.ts.map +1 -1
  921. package/lib/esm/serialization/IModelJsonSchema.js +4 -5
  922. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  923. package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
  924. package/lib/esm/solid/Box.js +7 -2
  925. package/lib/esm/solid/Box.js.map +1 -1
  926. package/lib/esm/solid/Cone.js +6 -2
  927. package/lib/esm/solid/Cone.js.map +1 -1
  928. package/lib/esm/solid/LinearSweep.js +4 -2
  929. package/lib/esm/solid/LinearSweep.js.map +1 -1
  930. package/lib/esm/solid/RotationalSweep.js +5 -2
  931. package/lib/esm/solid/RotationalSweep.js.map +1 -1
  932. package/lib/esm/solid/RuledSweep.d.ts +26 -23
  933. package/lib/esm/solid/RuledSweep.d.ts.map +1 -1
  934. package/lib/esm/solid/RuledSweep.js +32 -24
  935. package/lib/esm/solid/RuledSweep.js.map +1 -1
  936. package/lib/esm/solid/SolidPrimitive.d.ts +12 -11
  937. package/lib/esm/solid/SolidPrimitive.d.ts.map +1 -1
  938. package/lib/esm/solid/SolidPrimitive.js +11 -6
  939. package/lib/esm/solid/SolidPrimitive.js.map +1 -1
  940. package/lib/esm/solid/Sphere.js +4 -2
  941. package/lib/esm/solid/Sphere.js.map +1 -1
  942. package/lib/esm/solid/SweepContour.d.ts +24 -15
  943. package/lib/esm/solid/SweepContour.d.ts.map +1 -1
  944. package/lib/esm/solid/SweepContour.js +33 -15
  945. package/lib/esm/solid/SweepContour.js.map +1 -1
  946. package/lib/esm/solid/TorusPipe.js +7 -2
  947. package/lib/esm/solid/TorusPipe.js.map +1 -1
  948. package/lib/esm/topology/ChainMerge.js +16 -4
  949. package/lib/esm/topology/ChainMerge.js.map +1 -1
  950. package/lib/esm/topology/Graph.js +41 -6
  951. package/lib/esm/topology/Graph.js.map +1 -1
  952. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +1 -1
  953. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js +5 -1
  954. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  955. package/lib/esm/topology/HalfEdgeGraphSearch.js +2 -0
  956. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  957. package/lib/esm/topology/HalfEdgeGraphSpineContext.js +9 -2
  958. package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  959. package/lib/esm/topology/HalfEdgeGraphValidation.js +7 -9
  960. package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
  961. package/lib/esm/topology/HalfEdgeMarkSet.js +5 -0
  962. package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
  963. package/lib/esm/topology/HalfEdgeNodeXYZUV.js +6 -0
  964. package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  965. package/lib/esm/topology/HalfEdgePointInGraphSearch.js +1 -0
  966. package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  967. package/lib/esm/topology/HalfEdgePositionDetail.js +16 -0
  968. package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
  969. package/lib/esm/topology/HalfEdgePriorityQueue.js +2 -0
  970. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
  971. package/lib/esm/topology/InsertAndRetriangulateContext.js +4 -0
  972. package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
  973. package/lib/esm/topology/MaskManager.js +3 -0
  974. package/lib/esm/topology/MaskManager.js.map +1 -1
  975. package/lib/esm/topology/Merging.js +11 -6
  976. package/lib/esm/topology/Merging.js.map +1 -1
  977. package/lib/esm/topology/RegularizeFace.js +22 -0
  978. package/lib/esm/topology/RegularizeFace.js.map +1 -1
  979. package/lib/esm/topology/SignedDataSummary.js +22 -0
  980. package/lib/esm/topology/SignedDataSummary.js.map +1 -1
  981. package/lib/esm/topology/SpaceTriangulation.js.map +1 -1
  982. package/lib/esm/topology/Triangulation.js +21 -11
  983. package/lib/esm/topology/Triangulation.js.map +1 -1
  984. package/lib/esm/topology/XYParitySearchContext.js +13 -0
  985. package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
  986. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"LinearSweep.js","sourceRoot":"","sources":["../../../src/solid/LinearSweep.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Solid\r\n */\r\n\r\nimport { AnyCurve } from \"../curve/CurveTypes\";\r\nimport { CurveCollection } from \"../curve/CurveCollection\";\r\nimport { GeometryQuery } from \"../curve/GeometryQuery\";\r\nimport { LineString3d } from \"../curve/LineString3d\";\r\nimport { Loop } from \"../curve/Loop\";\r\nimport { Path } from \"../curve/Path\";\r\nimport { GeometryHandler } from \"../geometry3d/GeometryHandler\";\r\nimport { Vector3d } from \"../geometry3d/Point3dVector3d\";\r\nimport { PolygonOps } from \"../geometry3d/PolygonOps\";\r\nimport { Range3d } from \"../geometry3d/Range\";\r\nimport { Transform } from \"../geometry3d/Transform\";\r\nimport { XAndY } from \"../geometry3d/XYZProps\";\r\nimport { SolidPrimitive } from \"./SolidPrimitive\";\r\nimport { SweepContour } from \"./SweepContour\";\r\n\r\n/**\r\n * A LinearSweep is a `SolidPrimitive` defined by\r\n * * A set of curves (any Loop, Path, or parityRegion)\r\n * * A sweep vector\r\n * If the object is \"capped\", the curves must be planar.\r\n * @public\r\n */\r\nexport class LinearSweep extends SolidPrimitive {\r\n /** String name for schema properties */\r\n public readonly solidPrimitiveType = \"linearSweep\";\r\n\r\n private _contour: SweepContour;\r\n private _direction: Vector3d;\r\n\r\n private constructor(contour: SweepContour, direction: Vector3d, capped: boolean) {\r\n super(capped);\r\n this._contour = contour;\r\n this._direction = direction;\r\n }\r\n /**\r\n * Create a sweep of a starting contour.\r\n * @param contour contour to be swept, CAPTURED\r\n * @param direction sweep vector. The contour is swept the full length of the vector.\r\n * @param capped true to include end caps\r\n */\r\n public static create(contour: AnyCurve, direction: Vector3d, capped: boolean): LinearSweep | undefined {\r\n const sweepable = SweepContour.createForLinearSweep(contour, direction);\r\n if (!sweepable)\r\n return undefined;\r\n return new LinearSweep(sweepable, direction, capped);\r\n }\r\n /** Create a z-direction sweep of the polyline or polygon given as xy linestring values.\r\n * * If not capped, the xyPoints array is always used unchanged.\r\n * * If capped but the xyPoints array does not close, exact closure will be enforced by one of these:\r\n * * * If the final point is almost equal to the first, it is replaced by the exact first point.\r\n * * * if the final point is not close to the first an extra point is added.\r\n * * If capped, the point order will be reversed if necessary to produce positive volume.\r\n * @param xyPoints array of xy coordinates\r\n * @param z z value to be used for all coordinates\r\n * @param zSweep the sweep distance in the z direction.\r\n * @param capped true if caps are to be added.\r\n */\r\n public static createZSweep(xyPoints: XAndY[], z: number, zSweep: number, capped: boolean): LinearSweep | undefined {\r\n const xyz = LineString3d.createXY(xyPoints, z, capped);\r\n if (capped) {\r\n xyz.addClosurePoint();\r\n const area = PolygonOps.areaXY(xyz.points);\r\n if (area * zSweep < 0.0)\r\n xyz.points.reverse();\r\n }\r\n const contour: CurveCollection = capped ? Loop.create(xyz) : Path.create(xyz);\r\n return LinearSweep.create(contour, Vector3d.create(0, 0, zSweep), capped);\r\n }\r\n /** get a reference to the swept curves */\r\n public getCurvesRef(): CurveCollection { return this._contour.curves; }\r\n /** Get a reference to the `SweepContour` carrying the plane of the curves */\r\n public getSweepContourRef(): SweepContour { return this._contour; }\r\n /** return a clone of the sweep vector */\r\n public cloneSweepVector(): Vector3d { return this._direction.clone(); }\r\n /** Test if `other` is also an instance of `LinearSweep` */\r\n public isSameGeometryClass(other: any): boolean { return other instanceof LinearSweep; }\r\n /** Return a deep clone */\r\n public clone(): LinearSweep {\r\n return new LinearSweep(this._contour.clone(), this._direction.clone(), this.capped);\r\n }\r\n /**\r\n * Apply a transform to the curves and sweep vector\r\n * * This fails if the transformation is singular.\r\n */\r\n public tryTransformInPlace(transform: Transform): boolean {\r\n if (transform.matrix.isSingular())\r\n return false;\r\n if (this._contour.tryTransformInPlace(transform)) {\r\n transform.multiplyVector(this._direction, this._direction);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /** Return a coordinate frame (right handed unit vectors)\r\n * * origin on base contour\r\n * * x, y directions from base contour.\r\n * * z direction perpendicular\r\n */\r\n public getConstructiveFrame(): Transform | undefined {\r\n return this._contour.localToWorld.cloneRigid();\r\n }\r\n /**\r\n * Return a transformed clone.\r\n * * This fails if the transformation is singular.\r\n */\r\n public cloneTransformed(transform: Transform): LinearSweep | undefined {\r\n const result = this.clone();\r\n return result.tryTransformInPlace(transform) ? result : undefined;\r\n }\r\n /** Test for near-equality of coordinates in `other` */\r\n public override isAlmostEqual(other: GeometryQuery): boolean {\r\n if (other instanceof LinearSweep) {\r\n return this._contour.isAlmostEqual(other._contour)\r\n && this._direction.isAlmostEqual(other._direction)\r\n && this.capped === other.capped;\r\n }\r\n return false;\r\n }\r\n /** Invoke strongly typed `handler.handleLinearSweep(this)` */\r\n public dispatchToGeometryHandler(handler: GeometryHandler): any {\r\n return handler.handleLinearSweep(this);\r\n }\r\n /**\r\n * Return the curves at a fraction along the sweep direction.\r\n * @param vFraction fractional position along the sweep direction\r\n */\r\n public constantVSection(vFraction: number): CurveCollection | undefined {\r\n const section = this._contour.curves.clone();\r\n if (section && vFraction !== 0.0)\r\n section.tryTransformInPlace(Transform.createTranslation(this._direction.scale(vFraction)));\r\n return section;\r\n }\r\n /** Extend `rangeToExtend` to include this geometry. */\r\n public extendRange(rangeToExtend: Range3d, transform?: Transform) {\r\n const contourRange = this._contour.curves.range(transform);\r\n rangeToExtend.extendRange(contourRange);\r\n if (transform) {\r\n const transformedDirection = transform.multiplyVector(this._direction);\r\n contourRange.low.addInPlace(transformedDirection);\r\n contourRange.high.addInPlace(transformedDirection);\r\n } else {\r\n contourRange.low.addInPlace(this._direction);\r\n contourRange.high.addInPlace(this._direction);\r\n }\r\n rangeToExtend.extendRange(contourRange);\r\n }\r\n /**\r\n * @return true if this is a closed volume.\r\n */\r\n public get isClosedVolume(): boolean {\r\n return this.capped && this._contour.curves.isAnyRegionType;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"LinearSweep.js","sourceRoot":"","sources":["../../../src/solid/LinearSweep.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Solid\n */\n\nimport { AnyCurve } from \"../curve/CurveTypes\";\nimport { CurveCollection } from \"../curve/CurveCollection\";\nimport { GeometryQuery } from \"../curve/GeometryQuery\";\nimport { LineString3d } from \"../curve/LineString3d\";\nimport { Loop } from \"../curve/Loop\";\nimport { Path } from \"../curve/Path\";\nimport { GeometryHandler } from \"../geometry3d/GeometryHandler\";\nimport { Vector3d } from \"../geometry3d/Point3dVector3d\";\nimport { PolygonOps } from \"../geometry3d/PolygonOps\";\nimport { Range3d } from \"../geometry3d/Range\";\nimport { Transform } from \"../geometry3d/Transform\";\nimport { XAndY } from \"../geometry3d/XYZProps\";\nimport { SolidPrimitive } from \"./SolidPrimitive\";\nimport { SweepContour } from \"./SweepContour\";\n\n/**\n * A LinearSweep is a `SolidPrimitive` defined by\n * * A set of curves (any Loop, Path, or parityRegion)\n * * A sweep vector\n * If the object is \"capped\", the curves must be planar.\n * @public\n */\nexport class LinearSweep extends SolidPrimitive {\n /** String name for schema properties */\n public readonly solidPrimitiveType = \"linearSweep\";\n\n private _contour: SweepContour;\n private _direction: Vector3d;\n\n private constructor(contour: SweepContour, direction: Vector3d, capped: boolean) {\n super(capped);\n this._contour = contour;\n this._direction = direction;\n }\n /**\n * Create a sweep of a starting contour.\n * @param contour contour to be swept, CAPTURED\n * @param direction sweep vector. The contour is swept the full length of the vector.\n * @param capped true to include end caps\n */\n public static create(contour: AnyCurve, direction: Vector3d, capped: boolean): LinearSweep | undefined {\n const sweepable = SweepContour.createForLinearSweep(contour, direction);\n if (!sweepable)\n return undefined;\n return new LinearSweep(sweepable, direction, capped);\n }\n /** Create a z-direction sweep of the polyline or polygon given as xy linestring values.\n * * If not capped, the xyPoints array is always used unchanged.\n * * If capped but the xyPoints array does not close, exact closure will be enforced by one of these:\n * * * If the final point is almost equal to the first, it is replaced by the exact first point.\n * * * if the final point is not close to the first an extra point is added.\n * * If capped, the point order will be reversed if necessary to produce positive volume.\n * @param xyPoints array of xy coordinates\n * @param z z value to be used for all coordinates\n * @param zSweep the sweep distance in the z direction.\n * @param capped true if caps are to be added.\n */\n public static createZSweep(xyPoints: XAndY[], z: number, zSweep: number, capped: boolean): LinearSweep | undefined {\n const xyz = LineString3d.createXY(xyPoints, z, capped);\n if (capped) {\n xyz.addClosurePoint();\n const area = PolygonOps.areaXY(xyz.points);\n if (area * zSweep < 0.0)\n xyz.points.reverse();\n }\n const contour: CurveCollection = capped ? Loop.create(xyz) : Path.create(xyz);\n return LinearSweep.create(contour, Vector3d.create(0, 0, zSweep), capped);\n }\n /** get a reference to the swept curves */\n public getCurvesRef(): CurveCollection { return this._contour.curves; }\n /** Get a reference to the `SweepContour` carrying the plane of the curves */\n public getSweepContourRef(): SweepContour { return this._contour; }\n /** return a clone of the sweep vector */\n public cloneSweepVector(): Vector3d { return this._direction.clone(); }\n /** Test if `other` is also an instance of `LinearSweep` */\n public isSameGeometryClass(other: any): boolean { return other instanceof LinearSweep; }\n /** Return a deep clone */\n public clone(): LinearSweep {\n return new LinearSweep(this._contour.clone(), this._direction.clone(), this.capped);\n }\n /**\n * Apply a transform to the curves and sweep vector\n * * This fails if the transformation is singular.\n */\n public tryTransformInPlace(transform: Transform): boolean {\n if (transform.matrix.isSingular())\n return false;\n if (this._contour.tryTransformInPlace(transform)) {\n transform.multiplyVector(this._direction, this._direction);\n return true;\n }\n return false;\n }\n\n /** Return a coordinate frame (right handed unit vectors)\n * * origin on base contour\n * * x, y directions from base contour.\n * * z direction perpendicular\n */\n public getConstructiveFrame(): Transform | undefined {\n return this._contour.localToWorld.cloneRigid();\n }\n /**\n * Return a transformed clone.\n * * This fails if the transformation is singular.\n */\n public cloneTransformed(transform: Transform): LinearSweep | undefined {\n const result = this.clone();\n return result.tryTransformInPlace(transform) ? result : undefined;\n }\n /** Test for near-equality of coordinates in `other` */\n public override isAlmostEqual(other: GeometryQuery): boolean {\n if (other instanceof LinearSweep) {\n return this._contour.isAlmostEqual(other._contour)\n && this._direction.isAlmostEqual(other._direction)\n && this.capped === other.capped;\n }\n return false;\n }\n /** Invoke strongly typed `handler.handleLinearSweep(this)` */\n public dispatchToGeometryHandler(handler: GeometryHandler): any {\n return handler.handleLinearSweep(this);\n }\n /**\n * Return the curves at a fraction along the sweep direction.\n * @param vFraction fractional position along the sweep direction\n */\n public constantVSection(vFraction: number): CurveCollection | undefined {\n const section = this._contour.curves.clone();\n if (section && vFraction !== 0.0)\n section.tryTransformInPlace(Transform.createTranslation(this._direction.scale(vFraction)));\n return section;\n }\n /** Extend `rangeToExtend` to include this geometry. */\n public extendRange(rangeToExtend: Range3d, transform?: Transform) {\n const contourRange = this._contour.curves.range(transform);\n rangeToExtend.extendRange(contourRange);\n if (transform) {\n const transformedDirection = transform.multiplyVector(this._direction);\n contourRange.low.addInPlace(transformedDirection);\n contourRange.high.addInPlace(transformedDirection);\n } else {\n contourRange.low.addInPlace(this._direction);\n contourRange.high.addInPlace(this._direction);\n }\n rangeToExtend.extendRange(contourRange);\n }\n /**\n * @return true if this is a closed volume.\n */\n public get isClosedVolume(): boolean {\n return this.capped && this._contour.curves.isAnyRegionType;\n }\n}\n"]}
@@ -19,10 +19,13 @@ import { SweepContour } from "./SweepContour";
19
19
  * @public
20
20
  */
21
21
  export class RotationalSweep extends SolidPrimitive {
22
+ /** String name for schema properties */
23
+ solidPrimitiveType = "rotationalSweep";
24
+ _contour;
25
+ _normalizedAxis;
26
+ _sweepAngle;
22
27
  constructor(contour, normalizedAxis, sweepAngle, capped) {
23
28
  super(capped);
24
- /** String name for schema properties */
25
- this.solidPrimitiveType = "rotationalSweep";
26
29
  this._contour = contour;
27
30
  this._normalizedAxis = normalizedAxis;
28
31
  this.capped = capped;
@@ -1 +1 @@
1
- {"version":3,"file":"RotationalSweep.js","sourceRoot":"","sources":["../../../src/solid/RotationalSweep.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Solid\r\n */\r\n\r\nimport { AnyCurve } from \"../curve/CurveTypes\";\r\nimport { CurveCollection } from \"../curve/CurveCollection\";\r\nimport { GeometryQuery } from \"../curve/GeometryQuery\";\r\nimport { StrokeOptions } from \"../curve/StrokeOptions\";\r\nimport { AxisOrder, Geometry } from \"../Geometry\";\r\nimport { Angle } from \"../geometry3d/Angle\";\r\nimport { GeometryHandler } from \"../geometry3d/GeometryHandler\";\r\nimport { Matrix3d } from \"../geometry3d/Matrix3d\";\r\nimport { Range3d } from \"../geometry3d/Range\";\r\nimport { Ray3d } from \"../geometry3d/Ray3d\";\r\nimport { Transform } from \"../geometry3d/Transform\";\r\nimport { SolidPrimitive } from \"./SolidPrimitive\";\r\nimport { SweepContour } from \"./SweepContour\";\r\n\r\n/**\r\n * A LinearSweep is\r\n * * A planar contour (any Loop, Path, or parityRegion)\r\n * * An axis vector.\r\n * * The planar contour is expected to be in the plane of the axis vector\r\n * * The contour may have points and/or lines that are on the axis, but otherwise is entirely on one side of the axis.\r\n * * A sweep angle.\r\n * @public\r\n */\r\nexport class RotationalSweep extends SolidPrimitive {\r\n /** String name for schema properties */\r\n public readonly solidPrimitiveType = \"rotationalSweep\";\r\n\r\n private _contour: SweepContour;\r\n private _normalizedAxis: Ray3d;\r\n private _sweepAngle: Angle;\r\n private constructor(contour: SweepContour, normalizedAxis: Ray3d, sweepAngle: Angle, capped: boolean) {\r\n super(capped);\r\n this._contour = contour;\r\n this._normalizedAxis = normalizedAxis;\r\n this.capped = capped;\r\n this._sweepAngle = sweepAngle;\r\n }\r\n /** Create a rotational sweep.\r\n * @param contour profile to sweep, coplanar with axis. CAPTURED\r\n * @param axis rotation axis\r\n * @param sweepAngle signed angular sweep\r\n * @param capped whether to cap the surface to make a solid\r\n */\r\n public static create(contour: AnyCurve, axis: Ray3d, sweepAngle: Angle, capped: boolean): RotationalSweep | undefined {\r\n if (!axis.direction.normalizeInPlace())\r\n return undefined;\r\n const sweepable = SweepContour.createForRotation(contour, axis);\r\n if (!sweepable)\r\n return undefined;\r\n return new RotationalSweep(sweepable, axis, sweepAngle.clone(), capped);\r\n }\r\n\r\n /** Return a coordinate frame (right handed unit vectors)\r\n * * origin at origin of rotation ray\r\n * * z direction along the rotation ray.\r\n * * y direction perpendicular to the base contour plane\r\n */\r\n public getConstructiveFrame(): Transform | undefined {\r\n const contourPerpendicular = this._contour.localToWorld.matrix.columnZ();\r\n const axes = Matrix3d.createRigidFromColumns(contourPerpendicular, this._normalizedAxis.direction, AxisOrder.YZX);\r\n if (axes) {\r\n return Transform.createOriginAndMatrix(this._normalizedAxis.origin, axes);\r\n }\r\n return undefined;\r\n }\r\n /** return clone of (not reference to) the axis vector. */\r\n public cloneAxisRay(): Ray3d { return this._normalizedAxis.clone(); }\r\n /** Return (REFERENCE TO) the swept curves. */\r\n public getCurves(): CurveCollection { return this._contour.curves; }\r\n /** Return (REFERENCE TO) the swept curves with containing plane markup. */\r\n public getSweepContourRef(): SweepContour { return this._contour; }\r\n /** Return the sweep angle. */\r\n public getSweep(): Angle { return this._sweepAngle.clone(); }\r\n /** Test if `other` is a `RotationalSweep` */\r\n public isSameGeometryClass(other: any): boolean { return other instanceof RotationalSweep; }\r\n /** Test for same axis, capping, and swept geometry. */\r\n public override isAlmostEqual(other: GeometryQuery): boolean {\r\n if (other instanceof RotationalSweep) {\r\n return this._contour.isAlmostEqual(other._contour)\r\n && this._normalizedAxis.isAlmostEqual(other._normalizedAxis)\r\n && this.capped === other.capped;\r\n }\r\n return false;\r\n }\r\n /** return a deep clone */\r\n public clone(): RotationalSweep {\r\n return new RotationalSweep(this._contour.clone(), this._normalizedAxis.clone(), this._sweepAngle.clone(), this.capped);\r\n }\r\n /**\r\n * Transform the contour and axis.\r\n * * This fails if the transformation is singular.\r\n */\r\n public tryTransformInPlace(transform: Transform): boolean {\r\n if (transform.matrix.isSingular())\r\n return false;\r\n if (this._contour.tryTransformInPlace(transform)) {\r\n this._normalizedAxis.transformInPlace(transform);\r\n if (transform.matrix.determinant() < 0.0)\r\n this._sweepAngle.setRadians(-this._sweepAngle.radians);\r\n return this._normalizedAxis.direction.normalizeInPlace();\r\n }\r\n return false;\r\n }\r\n /**\r\n * Return a transformed clone.\r\n * * This fails if the transformation is singular.\r\n */\r\n public cloneTransformed(transform: Transform): RotationalSweep | undefined {\r\n const result = this.clone();\r\n return result.tryTransformInPlace(transform) ? result : undefined;\r\n }\r\n /** Dispatch to strongly typed handler `handler.handleRotationalSweep(this)` */\r\n public dispatchToGeometryHandler(handler: GeometryHandler): any {\r\n return handler.handleRotationalSweep(this);\r\n }\r\n /** Return a transform that rotates around the rotational axis by a fraction of the total sweep. */\r\n public getFractionalRotationTransform(vFraction: number, result?: Transform): Transform {\r\n const radians = this._sweepAngle.radians * vFraction;\r\n const rotation = Transform.createFixedPointAndMatrix(this._normalizedAxis.origin,\r\n Matrix3d.createRotationAroundVector(this._normalizedAxis.direction, Angle.createRadians(radians),\r\n result ? result.matrix : undefined) as Matrix3d);\r\n return rotation;\r\n }\r\n /**\r\n * Return the curves of a constant-v section of the solid.\r\n * @param vFraction fractional position along the sweep direction\r\n */\r\n public constantVSection(vFraction: number): CurveCollection | undefined {\r\n const section = this._contour.curves.clone();\r\n if (section) {\r\n section.tryTransformInPlace(this.getFractionalRotationTransform(vFraction));\r\n }\r\n return section;\r\n }\r\n /** Extend range using sampled points on the surface. */\r\n public extendRange(range: Range3d, transform?: Transform) {\r\n const degreeStep = 360 / 32;\r\n const options = StrokeOptions.createForCurves();\r\n options.angleTol = Angle.createDegrees(degreeStep);\r\n const strokes = this._contour.curves.cloneStroked(options);\r\n const numStep = Geometry.stepCount(degreeStep, this._sweepAngle.degrees, 4, 32);\r\n const stepTransform = Transform.createIdentity();\r\n if (transform) {\r\n const compositeTransform = Transform.createIdentity();\r\n for (let i = 0; i <= numStep; i++) {\r\n transform.multiplyTransformTransform(this.getFractionalRotationTransform(i / numStep, stepTransform), compositeTransform);\r\n strokes.extendRange(range, compositeTransform);\r\n }\r\n\r\n } else {\r\n for (let i = 0; i <= numStep; i++)\r\n strokes.extendRange(range, this.getFractionalRotationTransform(i / numStep, stepTransform));\r\n }\r\n }\r\n /**\r\n * @return true if this is a closed volume.\r\n */\r\n public get isClosedVolume(): boolean {\r\n return this.capped || this._sweepAngle.isFullCircle;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"RotationalSweep.js","sourceRoot":"","sources":["../../../src/solid/RotationalSweep.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Solid\n */\n\nimport { AnyCurve } from \"../curve/CurveTypes\";\nimport { CurveCollection } from \"../curve/CurveCollection\";\nimport { GeometryQuery } from \"../curve/GeometryQuery\";\nimport { StrokeOptions } from \"../curve/StrokeOptions\";\nimport { AxisOrder, Geometry } from \"../Geometry\";\nimport { Angle } from \"../geometry3d/Angle\";\nimport { GeometryHandler } from \"../geometry3d/GeometryHandler\";\nimport { Matrix3d } from \"../geometry3d/Matrix3d\";\nimport { Range3d } from \"../geometry3d/Range\";\nimport { Ray3d } from \"../geometry3d/Ray3d\";\nimport { Transform } from \"../geometry3d/Transform\";\nimport { SolidPrimitive } from \"./SolidPrimitive\";\nimport { SweepContour } from \"./SweepContour\";\n\n/**\n * A LinearSweep is\n * * A planar contour (any Loop, Path, or parityRegion)\n * * An axis vector.\n * * The planar contour is expected to be in the plane of the axis vector\n * * The contour may have points and/or lines that are on the axis, but otherwise is entirely on one side of the axis.\n * * A sweep angle.\n * @public\n */\nexport class RotationalSweep extends SolidPrimitive {\n /** String name for schema properties */\n public readonly solidPrimitiveType = \"rotationalSweep\";\n\n private _contour: SweepContour;\n private _normalizedAxis: Ray3d;\n private _sweepAngle: Angle;\n private constructor(contour: SweepContour, normalizedAxis: Ray3d, sweepAngle: Angle, capped: boolean) {\n super(capped);\n this._contour = contour;\n this._normalizedAxis = normalizedAxis;\n this.capped = capped;\n this._sweepAngle = sweepAngle;\n }\n /** Create a rotational sweep.\n * @param contour profile to sweep, coplanar with axis. CAPTURED\n * @param axis rotation axis\n * @param sweepAngle signed angular sweep\n * @param capped whether to cap the surface to make a solid\n */\n public static create(contour: AnyCurve, axis: Ray3d, sweepAngle: Angle, capped: boolean): RotationalSweep | undefined {\n if (!axis.direction.normalizeInPlace())\n return undefined;\n const sweepable = SweepContour.createForRotation(contour, axis);\n if (!sweepable)\n return undefined;\n return new RotationalSweep(sweepable, axis, sweepAngle.clone(), capped);\n }\n\n /** Return a coordinate frame (right handed unit vectors)\n * * origin at origin of rotation ray\n * * z direction along the rotation ray.\n * * y direction perpendicular to the base contour plane\n */\n public getConstructiveFrame(): Transform | undefined {\n const contourPerpendicular = this._contour.localToWorld.matrix.columnZ();\n const axes = Matrix3d.createRigidFromColumns(contourPerpendicular, this._normalizedAxis.direction, AxisOrder.YZX);\n if (axes) {\n return Transform.createOriginAndMatrix(this._normalizedAxis.origin, axes);\n }\n return undefined;\n }\n /** return clone of (not reference to) the axis vector. */\n public cloneAxisRay(): Ray3d { return this._normalizedAxis.clone(); }\n /** Return (REFERENCE TO) the swept curves. */\n public getCurves(): CurveCollection { return this._contour.curves; }\n /** Return (REFERENCE TO) the swept curves with containing plane markup. */\n public getSweepContourRef(): SweepContour { return this._contour; }\n /** Return the sweep angle. */\n public getSweep(): Angle { return this._sweepAngle.clone(); }\n /** Test if `other` is a `RotationalSweep` */\n public isSameGeometryClass(other: any): boolean { return other instanceof RotationalSweep; }\n /** Test for same axis, capping, and swept geometry. */\n public override isAlmostEqual(other: GeometryQuery): boolean {\n if (other instanceof RotationalSweep) {\n return this._contour.isAlmostEqual(other._contour)\n && this._normalizedAxis.isAlmostEqual(other._normalizedAxis)\n && this.capped === other.capped;\n }\n return false;\n }\n /** return a deep clone */\n public clone(): RotationalSweep {\n return new RotationalSweep(this._contour.clone(), this._normalizedAxis.clone(), this._sweepAngle.clone(), this.capped);\n }\n /**\n * Transform the contour and axis.\n * * This fails if the transformation is singular.\n */\n public tryTransformInPlace(transform: Transform): boolean {\n if (transform.matrix.isSingular())\n return false;\n if (this._contour.tryTransformInPlace(transform)) {\n this._normalizedAxis.transformInPlace(transform);\n if (transform.matrix.determinant() < 0.0)\n this._sweepAngle.setRadians(-this._sweepAngle.radians);\n return this._normalizedAxis.direction.normalizeInPlace();\n }\n return false;\n }\n /**\n * Return a transformed clone.\n * * This fails if the transformation is singular.\n */\n public cloneTransformed(transform: Transform): RotationalSweep | undefined {\n const result = this.clone();\n return result.tryTransformInPlace(transform) ? result : undefined;\n }\n /** Dispatch to strongly typed handler `handler.handleRotationalSweep(this)` */\n public dispatchToGeometryHandler(handler: GeometryHandler): any {\n return handler.handleRotationalSweep(this);\n }\n /** Return a transform that rotates around the rotational axis by a fraction of the total sweep. */\n public getFractionalRotationTransform(vFraction: number, result?: Transform): Transform {\n const radians = this._sweepAngle.radians * vFraction;\n const rotation = Transform.createFixedPointAndMatrix(this._normalizedAxis.origin,\n Matrix3d.createRotationAroundVector(this._normalizedAxis.direction, Angle.createRadians(radians),\n result ? result.matrix : undefined) as Matrix3d);\n return rotation;\n }\n /**\n * Return the curves of a constant-v section of the solid.\n * @param vFraction fractional position along the sweep direction\n */\n public constantVSection(vFraction: number): CurveCollection | undefined {\n const section = this._contour.curves.clone();\n if (section) {\n section.tryTransformInPlace(this.getFractionalRotationTransform(vFraction));\n }\n return section;\n }\n /** Extend range using sampled points on the surface. */\n public extendRange(range: Range3d, transform?: Transform) {\n const degreeStep = 360 / 32;\n const options = StrokeOptions.createForCurves();\n options.angleTol = Angle.createDegrees(degreeStep);\n const strokes = this._contour.curves.cloneStroked(options);\n const numStep = Geometry.stepCount(degreeStep, this._sweepAngle.degrees, 4, 32);\n const stepTransform = Transform.createIdentity();\n if (transform) {\n const compositeTransform = Transform.createIdentity();\n for (let i = 0; i <= numStep; i++) {\n transform.multiplyTransformTransform(this.getFractionalRotationTransform(i / numStep, stepTransform), compositeTransform);\n strokes.extendRange(range, compositeTransform);\n }\n\n } else {\n for (let i = 0; i <= numStep; i++)\n strokes.extendRange(range, this.getFractionalRotationTransform(i / numStep, stepTransform));\n }\n }\n /**\n * @return true if this is a closed volume.\n */\n public get isClosedVolume(): boolean {\n return this.capped || this._sweepAngle.isFullCircle;\n }\n}\n"]}
@@ -8,37 +8,39 @@ import { Transform } from "../geometry3d/Transform";
8
8
  import { SolidPrimitive } from "./SolidPrimitive";
9
9
  import { SweepContour } from "./SweepContour";
10
10
  /**
11
- * * type for a function argument taking 2 curves and returning another curve or failing with undefined.
12
- * * This is used (for instance) by `RuleSweep.mutatePartners`
11
+ * Type for a function argument taking 2 curves and returning another curve or failing with undefined.
12
+ * * This is used (for instance) by `RuleSweep.mutatePartners`.
13
13
  * @public
14
14
  */
15
15
  export type CurvePrimitiveMutator = (primitiveA: CurvePrimitive, primitiveB: CurvePrimitive) => CurvePrimitive | undefined;
16
16
  /**
17
17
  * A ruled sweep (surface) is a collection of 2 or more contours.
18
- * * All contours must have identical number and type of geometry. (paths, loops, parity regions, lines, arcs, other curves)
18
+ * * All contours must have identical number and type of geometry. (paths, loops, parity regions, lines, arcs, other curves).
19
19
  * @public
20
20
  */
21
21
  export declare class RuledSweep extends SolidPrimitive {
22
- /** String name for schema properties */
22
+ /** String name for schema properties. */
23
23
  readonly solidPrimitiveType = "ruledSweep";
24
24
  private _contours;
25
25
  private constructor();
26
26
  /**
27
27
  * Create a ruled sweep from an array of contours.
28
- * * the contours are CAPTURED (not cloned)
28
+ * * The contours are CAPTURED (not cloned).
29
29
  */
30
30
  static create(contours: AnyCurve[], capped: boolean): RuledSweep | undefined;
31
31
  /** Return a reference to the array of SweepContour. */
32
32
  sweepContoursRef(): SweepContour[];
33
- /** Return clones of all the sweep contours
34
- * * See also cloneContours, which returns the spatial contours without their local coordinate system definitions)
33
+ /**
34
+ * Return clones of the sweep contours.
35
+ * * See also [[cloneContours]], which returns the contours without their local coordinate system definitions.
35
36
  */
36
37
  cloneSweepContours(): SweepContour[];
37
- /** Return clones of all the contours
38
- * * See also cloneContours, which returns the contours in their local coordinate systems
38
+ /**
39
+ * Return clones of the sweep contours, each as a [[CurveCollection]].
40
+ * * See also [[cloneSweepContours]], which returns the contours with their local coordinate system definitions.
39
41
  */
40
42
  cloneContours(): CurveCollection[];
41
- /** Return a deep clone */
43
+ /** Return a deep clone. */
42
44
  clone(): RuledSweep;
43
45
  /**
44
46
  * Transform all contours in place.
@@ -50,33 +52,34 @@ export declare class RuledSweep extends SolidPrimitive {
50
52
  * * This fails if the transformation is singular.
51
53
  */
52
54
  cloneTransformed(transform: Transform): RuledSweep | undefined;
53
- /** Return a coordinate frame (right handed unit vectors)
54
- * * origin on base contour
55
+ /**
56
+ * Return a coordinate frame (right handed unit vectors)
57
+ * * origin on base contour.
55
58
  * * x, y directions from base contour.
56
- * * z direction perpendicular
59
+ * * z direction perpendicular.
57
60
  */
58
61
  getConstructiveFrame(): Transform | undefined;
59
- /** Test if `other` is an instance of a `RuledSweep` */
62
+ /** Test if `other` is an instance of a `RuledSweep`. */
60
63
  isSameGeometryClass(other: any): boolean;
61
- /** test same contour geometry and capping. */
64
+ /** Test for near equality of two RuledSweeps. */
62
65
  isAlmostEqual(other: GeometryQuery): boolean;
63
- /** dispatch to strongly typed `handler.handleRuledSweep(this)` */
66
+ /** Dispatch to strongly typed `handler.handleRuledSweep(this)`. */
64
67
  dispatchToGeometryHandler(handler: GeometryHandler): any;
65
68
  /**
66
- * Return the section curves at a fraction of the sweep
67
- * @param vFraction fractional position along the sweep direction
69
+ * Return the section curves at a fraction of the sweep.
70
+ * @param vFraction fractional position along the sweep direction.
68
71
  */
69
72
  constantVSection(vFraction: number): CurveCollection | undefined;
70
- /** Pass each contour to `extendRange` */
73
+ /** Pass each contour to `extendRange`. */
71
74
  extendRange(rangeToExtend: Range3d, transform?: Transform): void;
72
- /** Construct a CurveCollection with the same structure as collectionA and collectionB, with primitives constructed by the caller-supplied primitiveMutator function.
75
+ /**
76
+ * Construct a CurveCollection with the same structure as collectionA and collectionB, with primitives constructed
77
+ * by the caller-supplied primitiveMutator function.
73
78
  * @returns Returns undefined if there is any type mismatch between the two collections.
74
79
  */
75
80
  static mutatePartners(collectionA: CurveCollection, collectionB: CurveCollection, primitiveMutator: CurvePrimitiveMutator): CurveCollection | undefined;
76
81
  /**
77
- * Return true if this is a closed volume, as observed by
78
- * * cap flag
79
- * identical first and last contours.
82
+ * @return true if this is a closed volume.
80
83
  */
81
84
  get isClosedVolume(): boolean;
82
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RuledSweep.d.ts","sourceRoot":"","sources":["../../../src/solid/RuledSweep.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAc,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,KAAK,cAAc,GAAG,SAAS,CAAC;AAC3H;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,cAAc;IAC5C,wCAAwC;IACxC,SAAgB,kBAAkB,gBAAgB;IAElD,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO;IAIP;;;OAGG;WACW,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS;IASnF,uDAAuD;IAChD,gBAAgB,IAAI,YAAY,EAAE;IACzC;;OAEG;IACI,kBAAkB,IAAI,YAAY,EAAE;IAO3C;;OAEG;IACI,aAAa,IAAI,eAAe,EAAE;IAOzC,0BAA0B;IACnB,KAAK,IAAI,UAAU;IAG1B;;;OAGG;IACI,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO;IASzD;;;OAGG;IACI,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS;IAIrE;;;;OAIG;IACI,oBAAoB,IAAI,SAAS,GAAG,SAAS;IAIpD,uDAAuD;IAChD,mBAAmB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAC/C,8CAA8C;IAC9B,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO;IAY5D,kEAAkE;IAC3D,yBAAyB,CAAC,OAAO,EAAE,eAAe,GAAG,GAAG;IAG/D;;;OAGG;IACI,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAqBvE,yCAAyC;IAClC,WAAW,CAAC,aAAa,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI;IAKvE;;OAEG;WACW,cAAc,CAAC,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,qBAAqB,GAAG,eAAe,GAAG,SAAS;IA6C9J;;;;OAIG;IACH,IAAW,cAAc,IAAI,OAAO,CAGnC;CAEF"}
1
+ {"version":3,"file":"RuledSweep.d.ts","sourceRoot":"","sources":["../../../src/solid/RuledSweep.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAc,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,KAAK,cAAc,GAAG,SAAS,CAAC;AAC3H;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,cAAc;IAC5C,yCAAyC;IACzC,SAAgB,kBAAkB,gBAAgB;IAElD,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO;IAIP;;;OAGG;WACW,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS;IAUnF,uDAAuD;IAChD,gBAAgB,IAAI,YAAY,EAAE;IAGzC;;;OAGG;IACI,kBAAkB,IAAI,YAAY,EAAE;IAO3C;;;OAGG;IACI,aAAa,IAAI,eAAe,EAAE;IAOzC,2BAA2B;IACpB,KAAK,IAAI,UAAU;IAG1B;;;OAGG;IACI,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO;IASzD;;;OAGG;IACI,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS;IAIrE;;;;;OAKG;IACI,oBAAoB,IAAI,SAAS,GAAG,SAAS;IAKpD,wDAAwD;IACjD,mBAAmB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAG/C,iDAAiD;IACjC,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO;IAc5D,mEAAmE;IAC5D,yBAAyB,CAAC,OAAO,EAAE,eAAe,GAAG,GAAG;IAG/D;;;OAGG;IACI,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAwBvE,0CAA0C;IACnC,WAAW,CAAC,aAAa,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI;IAKvE;;;;OAIG;WACW,cAAc,CAC1B,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,qBAAqB,GAClG,eAAe,GAAG,SAAS;IA6C9B;;OAEG;IACH,IAAW,cAAc,IAAI,OAAO,CAGnC;CACF"}
@@ -13,19 +13,20 @@ import { SolidPrimitive } from "./SolidPrimitive";
13
13
  import { SweepContour } from "./SweepContour";
14
14
  /**
15
15
  * A ruled sweep (surface) is a collection of 2 or more contours.
16
- * * All contours must have identical number and type of geometry. (paths, loops, parity regions, lines, arcs, other curves)
16
+ * * All contours must have identical number and type of geometry. (paths, loops, parity regions, lines, arcs, other curves).
17
17
  * @public
18
18
  */
19
19
  export class RuledSweep extends SolidPrimitive {
20
+ /** String name for schema properties. */
21
+ solidPrimitiveType = "ruledSweep";
22
+ _contours;
20
23
  constructor(contours, capped) {
21
24
  super(capped);
22
- /** String name for schema properties */
23
- this.solidPrimitiveType = "ruledSweep";
24
25
  this._contours = contours;
25
26
  }
26
27
  /**
27
28
  * Create a ruled sweep from an array of contours.
28
- * * the contours are CAPTURED (not cloned)
29
+ * * The contours are CAPTURED (not cloned).
29
30
  */
30
31
  static create(contours, capped) {
31
32
  const sweepContours = [];
@@ -38,9 +39,12 @@ export class RuledSweep extends SolidPrimitive {
38
39
  return new RuledSweep(sweepContours, capped);
39
40
  }
40
41
  /** Return a reference to the array of SweepContour. */
41
- sweepContoursRef() { return this._contours; }
42
- /** Return clones of all the sweep contours
43
- * * See also cloneContours, which returns the spatial contours without their local coordinate system definitions)
42
+ sweepContoursRef() {
43
+ return this._contours;
44
+ }
45
+ /**
46
+ * Return clones of the sweep contours.
47
+ * * See also [[cloneContours]], which returns the contours without their local coordinate system definitions.
44
48
  */
45
49
  cloneSweepContours() {
46
50
  const result = [];
@@ -49,8 +53,9 @@ export class RuledSweep extends SolidPrimitive {
49
53
  }
50
54
  return result;
51
55
  }
52
- /** Return clones of all the contours
53
- * * See also cloneContours, which returns the contours in their local coordinate systems
56
+ /**
57
+ * Return clones of the sweep contours, each as a [[CurveCollection]].
58
+ * * See also [[cloneSweepContours]], which returns the contours with their local coordinate system definitions.
54
59
  */
55
60
  cloneContours() {
56
61
  const result = [];
@@ -59,7 +64,7 @@ export class RuledSweep extends SolidPrimitive {
59
64
  }
60
65
  return result;
61
66
  }
62
- /** Return a deep clone */
67
+ /** Return a deep clone. */
63
68
  clone() {
64
69
  return new RuledSweep(this.cloneSweepContours(), this.capped);
65
70
  }
@@ -84,19 +89,22 @@ export class RuledSweep extends SolidPrimitive {
84
89
  const result = this.clone();
85
90
  return result.tryTransformInPlace(transform) ? result : undefined;
86
91
  }
87
- /** Return a coordinate frame (right handed unit vectors)
88
- * * origin on base contour
92
+ /**
93
+ * Return a coordinate frame (right handed unit vectors)
94
+ * * origin on base contour.
89
95
  * * x, y directions from base contour.
90
- * * z direction perpendicular
96
+ * * z direction perpendicular.
91
97
  */
92
98
  getConstructiveFrame() {
93
99
  if (this._contours.length === 0)
94
100
  return undefined;
95
101
  return this._contours[0].localToWorld.cloneRigid();
96
102
  }
97
- /** Test if `other` is an instance of a `RuledSweep` */
98
- isSameGeometryClass(other) { return other instanceof RuledSweep; }
99
- /** test same contour geometry and capping. */
103
+ /** Test if `other` is an instance of a `RuledSweep`. */
104
+ isSameGeometryClass(other) {
105
+ return other instanceof RuledSweep;
106
+ }
107
+ /** Test for near equality of two RuledSweeps. */
100
108
  isAlmostEqual(other) {
101
109
  if (other instanceof RuledSweep) {
102
110
  if (this.capped !== other.capped)
@@ -111,13 +119,13 @@ export class RuledSweep extends SolidPrimitive {
111
119
  }
112
120
  return false;
113
121
  }
114
- /** dispatch to strongly typed `handler.handleRuledSweep(this)` */
122
+ /** Dispatch to strongly typed `handler.handleRuledSweep(this)`. */
115
123
  dispatchToGeometryHandler(handler) {
116
124
  return handler.handleRuledSweep(this);
117
125
  }
118
126
  /**
119
- * Return the section curves at a fraction of the sweep
120
- * @param vFraction fractional position along the sweep direction
127
+ * Return the section curves at a fraction of the sweep.
128
+ * @param vFraction fractional position along the sweep direction.
121
129
  */
122
130
  constantVSection(vFraction) {
123
131
  const numSection = this._contours.length;
@@ -140,12 +148,14 @@ export class RuledSweep extends SolidPrimitive {
140
148
  return undefined;
141
149
  });
142
150
  }
143
- /** Pass each contour to `extendRange` */
151
+ /** Pass each contour to `extendRange`. */
144
152
  extendRange(rangeToExtend, transform) {
145
153
  for (const contour of this._contours)
146
154
  contour.curves.extendRange(rangeToExtend, transform);
147
155
  }
148
- /** Construct a CurveCollection with the same structure as collectionA and collectionB, with primitives constructed by the caller-supplied primitiveMutator function.
156
+ /**
157
+ * Construct a CurveCollection with the same structure as collectionA and collectionB, with primitives constructed
158
+ * by the caller-supplied primitiveMutator function.
149
159
  * @returns Returns undefined if there is any type mismatch between the two collections.
150
160
  */
151
161
  static mutatePartners(collectionA, collectionB, primitiveMutator) {
@@ -196,9 +206,7 @@ export class RuledSweep extends SolidPrimitive {
196
206
  return undefined;
197
207
  }
198
208
  /**
199
- * Return true if this is a closed volume, as observed by
200
- * * cap flag
201
- * identical first and last contours.
209
+ * @return true if this is a closed volume.
202
210
  */
203
211
  get isClosedVolume() {
204
212
  const n = this._contours.length;
@@ -1 +1 @@
1
- {"version":3,"file":"RuledSweep.js","sourceRoot":"","sources":["../../../src/solid/RuledSweep.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Solid\r\n */\r\n\r\nimport { ConstructCurveBetweenCurves } from \"../curve/ConstructCurveBetweenCurves\";\r\nimport { AnyCurve } from \"../curve/CurveTypes\";\r\nimport { CurveChain, CurveCollection } from \"../curve/CurveCollection\";\r\nimport { CurvePrimitive } from \"../curve/CurvePrimitive\";\r\nimport { GeometryQuery } from \"../curve/GeometryQuery\";\r\nimport { Geometry } from \"../Geometry\";\r\nimport { GeometryHandler } from \"../geometry3d/GeometryHandler\";\r\nimport { Range3d } from \"../geometry3d/Range\";\r\nimport { Transform } from \"../geometry3d/Transform\";\r\nimport { SolidPrimitive } from \"./SolidPrimitive\";\r\nimport { SweepContour } from \"./SweepContour\";\r\n\r\n/**\r\n * * type for a function argument taking 2 curves and returning another curve or failing with undefined.\r\n * * This is used (for instance) by `RuleSweep.mutatePartners`\r\n * @public\r\n */\r\nexport type CurvePrimitiveMutator = (primitiveA: CurvePrimitive, primitiveB: CurvePrimitive) => CurvePrimitive | undefined;\r\n/**\r\n * A ruled sweep (surface) is a collection of 2 or more contours.\r\n * * All contours must have identical number and type of geometry. (paths, loops, parity regions, lines, arcs, other curves)\r\n * @public\r\n */\r\nexport class RuledSweep extends SolidPrimitive {\r\n /** String name for schema properties */\r\n public readonly solidPrimitiveType = \"ruledSweep\";\r\n\r\n private _contours: SweepContour[];\r\n private constructor(contours: SweepContour[], capped: boolean) {\r\n super(capped);\r\n this._contours = contours;\r\n }\r\n /**\r\n * Create a ruled sweep from an array of contours.\r\n * * the contours are CAPTURED (not cloned)\r\n */\r\n public static create(contours: AnyCurve[], capped: boolean): RuledSweep | undefined {\r\n const sweepContours = [];\r\n for (const contour of contours) {\r\n const sweepable = SweepContour.createForLinearSweep(contour);\r\n if (sweepable === undefined) return undefined;\r\n sweepContours.push(sweepable);\r\n }\r\n return new RuledSweep(sweepContours, capped);\r\n }\r\n /** Return a reference to the array of SweepContour. */\r\n public sweepContoursRef(): SweepContour[] { return this._contours; }\r\n /** Return clones of all the sweep contours\r\n * * See also cloneContours, which returns the spatial contours without their local coordinate system definitions)\r\n */\r\n public cloneSweepContours(): SweepContour[] {\r\n const result = [];\r\n for (const sweepable of this._contours) {\r\n result.push(sweepable.clone());\r\n }\r\n return result;\r\n }\r\n /** Return clones of all the contours\r\n * * See also cloneContours, which returns the contours in their local coordinate systems\r\n */\r\n public cloneContours(): CurveCollection[] {\r\n const result = [];\r\n for (const sweepable of this._contours) {\r\n result.push(sweepable.curves.clone());\r\n }\r\n return result;\r\n }\r\n /** Return a deep clone */\r\n public clone(): RuledSweep {\r\n return new RuledSweep(this.cloneSweepContours(), this.capped);\r\n }\r\n /**\r\n * Transform all contours in place.\r\n * * This fails if the transformation is singular.\r\n */\r\n public tryTransformInPlace(transform: Transform): boolean {\r\n if (transform.matrix.isSingular())\r\n return false;\r\n for (const contour of this._contours) {\r\n if (!contour.tryTransformInPlace(transform))\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Return a transformed clone.\r\n * * This fails if the transformation is singular.\r\n */\r\n public cloneTransformed(transform: Transform): RuledSweep | undefined {\r\n const result = this.clone();\r\n return result.tryTransformInPlace(transform) ? result : undefined;\r\n }\r\n /** Return a coordinate frame (right handed unit vectors)\r\n * * origin on base contour\r\n * * x, y directions from base contour.\r\n * * z direction perpendicular\r\n */\r\n public getConstructiveFrame(): Transform | undefined {\r\n if (this._contours.length === 0) return undefined;\r\n return this._contours[0].localToWorld.cloneRigid();\r\n }\r\n /** Test if `other` is an instance of a `RuledSweep` */\r\n public isSameGeometryClass(other: any): boolean { return other instanceof RuledSweep; }\r\n /** test same contour geometry and capping. */\r\n public override isAlmostEqual(other: GeometryQuery): boolean {\r\n if (other instanceof RuledSweep) {\r\n if (this.capped !== other.capped) return false;\r\n if (this._contours.length !== other._contours.length) return false;\r\n for (let i = 0; i < this._contours.length; i++) {\r\n if (!this._contours[i].isAlmostEqual(other._contours[i]))\r\n return false;\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n /** dispatch to strongly typed `handler.handleRuledSweep(this)` */\r\n public dispatchToGeometryHandler(handler: GeometryHandler): any {\r\n return handler.handleRuledSweep(this);\r\n }\r\n /**\r\n * Return the section curves at a fraction of the sweep\r\n * @param vFraction fractional position along the sweep direction\r\n */\r\n public constantVSection(vFraction: number): CurveCollection | undefined {\r\n const numSection = this._contours.length;\r\n if (numSection < 2)\r\n return undefined;\r\n const q = vFraction * numSection;\r\n let section0 = 0;\r\n if (vFraction >= 1.0)\r\n section0 = numSection - 1;\r\n else\r\n section0 = Math.floor(q);\r\n if (section0 + 1 >= numSection)\r\n section0 = numSection - 2;\r\n const section1 = section0 + 1;\r\n const localFraction = Geometry.clampToStartEnd(q - section0, 0, 1);\r\n return RuledSweep.mutatePartners(this._contours[section0].curves, this._contours[section1].curves,\r\n (primitive0: CurvePrimitive, primitive1: CurvePrimitive): CurvePrimitive | undefined => {\r\n const newPrimitive = ConstructCurveBetweenCurves.interpolateBetween(primitive0, localFraction, primitive1);\r\n if (newPrimitive instanceof CurvePrimitive) return newPrimitive;\r\n return undefined;\r\n });\r\n }\r\n /** Pass each contour to `extendRange` */\r\n public extendRange(rangeToExtend: Range3d, transform?: Transform): void {\r\n for (const contour of this._contours)\r\n contour.curves.extendRange(rangeToExtend, transform);\r\n }\r\n\r\n /** Construct a CurveCollection with the same structure as collectionA and collectionB, with primitives constructed by the caller-supplied primitiveMutator function.\r\n * @returns Returns undefined if there is any type mismatch between the two collections.\r\n */\r\n public static mutatePartners(collectionA: CurveCollection, collectionB: CurveCollection, primitiveMutator: CurvePrimitiveMutator): CurveCollection | undefined {\r\n if (!collectionA.isSameGeometryClass(collectionB))\r\n return undefined;\r\n if (collectionA instanceof CurveChain && collectionB instanceof CurveChain) {\r\n const chainA = collectionA;\r\n const chainB = collectionB;\r\n const chainC = chainA.cloneEmptyPeer() as CurveChain;\r\n const childrenA = chainA.children;\r\n const childrenB = chainB.children;\r\n if (childrenA.length !== childrenB.length)\r\n return undefined;\r\n for (let i = 0; i < childrenA.length; i++) {\r\n const newChild = primitiveMutator(childrenA[i], childrenB[i]);\r\n if (!newChild)\r\n return undefined;\r\n chainC.children.push(newChild);\r\n }\r\n return chainC;\r\n } else if (collectionA instanceof CurveCollection && collectionB instanceof CurveCollection) {\r\n const collectionC = collectionA.cloneEmptyPeer();\r\n const childrenA = collectionA.children;\r\n const childrenB = collectionB.children;\r\n const childrenC = collectionC.children;\r\n if (childrenA === undefined || childrenB === undefined || childrenC === undefined || childrenA.length !== childrenB.length)\r\n return undefined;\r\n for (let i = 0; i < childrenA.length; i++) {\r\n const childA = childrenA[i];\r\n const childB = childrenB[i];\r\n if (childA instanceof CurvePrimitive && childB instanceof CurvePrimitive) {\r\n const newPrimitive = primitiveMutator(childA, childB);\r\n if (!newPrimitive)\r\n return undefined;\r\n childrenC.push(newPrimitive);\r\n } else if (childA instanceof CurveCollection && childB instanceof CurveCollection) {\r\n const newChild = this.mutatePartners(childA, childB, primitiveMutator);\r\n if (!newChild)\r\n return undefined;\r\n if (newChild instanceof CurveCollection)\r\n childrenC.push(newChild);\r\n }\r\n }\r\n return collectionC;\r\n }\r\n return undefined;\r\n }\r\n /**\r\n * Return true if this is a closed volume, as observed by\r\n * * cap flag\r\n * identical first and last contours.\r\n */\r\n public get isClosedVolume(): boolean {\r\n const n = this._contours.length;\r\n return n > 1 && (this.capped || this._contours[0].isAlmostEqual(this._contours[n - 1]));\r\n }\r\n\r\n}\r\n"]}
1
+ {"version":3,"file":"RuledSweep.js","sourceRoot":"","sources":["../../../src/solid/RuledSweep.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Solid\n */\n\nimport { ConstructCurveBetweenCurves } from \"../curve/ConstructCurveBetweenCurves\";\nimport { AnyCurve } from \"../curve/CurveTypes\";\nimport { CurveChain, CurveCollection } from \"../curve/CurveCollection\";\nimport { CurvePrimitive } from \"../curve/CurvePrimitive\";\nimport { GeometryQuery } from \"../curve/GeometryQuery\";\nimport { Geometry } from \"../Geometry\";\nimport { GeometryHandler } from \"../geometry3d/GeometryHandler\";\nimport { Range3d } from \"../geometry3d/Range\";\nimport { Transform } from \"../geometry3d/Transform\";\nimport { SolidPrimitive } from \"./SolidPrimitive\";\nimport { SweepContour } from \"./SweepContour\";\n\n/**\n * Type for a function argument taking 2 curves and returning another curve or failing with undefined.\n * * This is used (for instance) by `RuleSweep.mutatePartners`.\n * @public\n */\nexport type CurvePrimitiveMutator = (primitiveA: CurvePrimitive, primitiveB: CurvePrimitive) => CurvePrimitive | undefined;\n/**\n * A ruled sweep (surface) is a collection of 2 or more contours.\n * * All contours must have identical number and type of geometry. (paths, loops, parity regions, lines, arcs, other curves).\n * @public\n */\nexport class RuledSweep extends SolidPrimitive {\n /** String name for schema properties. */\n public readonly solidPrimitiveType = \"ruledSweep\";\n\n private _contours: SweepContour[];\n private constructor(contours: SweepContour[], capped: boolean) {\n super(capped);\n this._contours = contours;\n }\n /**\n * Create a ruled sweep from an array of contours.\n * * The contours are CAPTURED (not cloned).\n */\n public static create(contours: AnyCurve[], capped: boolean): RuledSweep | undefined {\n const sweepContours = [];\n for (const contour of contours) {\n const sweepable = SweepContour.createForLinearSweep(contour);\n if (sweepable === undefined)\n return undefined;\n sweepContours.push(sweepable);\n }\n return new RuledSweep(sweepContours, capped);\n }\n /** Return a reference to the array of SweepContour. */\n public sweepContoursRef(): SweepContour[] {\n return this._contours;\n }\n /**\n * Return clones of the sweep contours.\n * * See also [[cloneContours]], which returns the contours without their local coordinate system definitions.\n */\n public cloneSweepContours(): SweepContour[] {\n const result = [];\n for (const sweepable of this._contours) {\n result.push(sweepable.clone());\n }\n return result;\n }\n /**\n * Return clones of the sweep contours, each as a [[CurveCollection]].\n * * See also [[cloneSweepContours]], which returns the contours with their local coordinate system definitions.\n */\n public cloneContours(): CurveCollection[] {\n const result = [];\n for (const sweepable of this._contours) {\n result.push(sweepable.curves.clone());\n }\n return result;\n }\n /** Return a deep clone. */\n public clone(): RuledSweep {\n return new RuledSweep(this.cloneSweepContours(), this.capped);\n }\n /**\n * Transform all contours in place.\n * * This fails if the transformation is singular.\n */\n public tryTransformInPlace(transform: Transform): boolean {\n if (transform.matrix.isSingular())\n return false;\n for (const contour of this._contours) {\n if (!contour.tryTransformInPlace(transform))\n return false;\n }\n return true;\n }\n /**\n * Return a transformed clone.\n * * This fails if the transformation is singular.\n */\n public cloneTransformed(transform: Transform): RuledSweep | undefined {\n const result = this.clone();\n return result.tryTransformInPlace(transform) ? result : undefined;\n }\n /**\n * Return a coordinate frame (right handed unit vectors)\n * * origin on base contour.\n * * x, y directions from base contour.\n * * z direction perpendicular.\n */\n public getConstructiveFrame(): Transform | undefined {\n if (this._contours.length === 0)\n return undefined;\n return this._contours[0].localToWorld.cloneRigid();\n }\n /** Test if `other` is an instance of a `RuledSweep`. */\n public isSameGeometryClass(other: any): boolean {\n return other instanceof RuledSweep;\n }\n /** Test for near equality of two RuledSweeps. */\n public override isAlmostEqual(other: GeometryQuery): boolean {\n if (other instanceof RuledSweep) {\n if (this.capped !== other.capped)\n return false;\n if (this._contours.length !== other._contours.length)\n return false;\n for (let i = 0; i < this._contours.length; i++) {\n if (!this._contours[i].isAlmostEqual(other._contours[i]))\n return false;\n }\n return true;\n }\n return false;\n }\n /** Dispatch to strongly typed `handler.handleRuledSweep(this)`. */\n public dispatchToGeometryHandler(handler: GeometryHandler): any {\n return handler.handleRuledSweep(this);\n }\n /**\n * Return the section curves at a fraction of the sweep.\n * @param vFraction fractional position along the sweep direction.\n */\n public constantVSection(vFraction: number): CurveCollection | undefined {\n const numSection = this._contours.length;\n if (numSection < 2)\n return undefined;\n const q = vFraction * numSection;\n let section0 = 0;\n if (vFraction >= 1.0)\n section0 = numSection - 1;\n else\n section0 = Math.floor(q);\n if (section0 + 1 >= numSection)\n section0 = numSection - 2;\n const section1 = section0 + 1;\n const localFraction = Geometry.clampToStartEnd(q - section0, 0, 1);\n return RuledSweep.mutatePartners(\n this._contours[section0].curves,\n this._contours[section1].curves,\n (primitive0: CurvePrimitive, primitive1: CurvePrimitive): CurvePrimitive | undefined => {\n const newPrimitive = ConstructCurveBetweenCurves.interpolateBetween(primitive0, localFraction, primitive1);\n if (newPrimitive instanceof CurvePrimitive) return newPrimitive;\n return undefined;\n },\n );\n }\n /** Pass each contour to `extendRange`. */\n public extendRange(rangeToExtend: Range3d, transform?: Transform): void {\n for (const contour of this._contours)\n contour.curves.extendRange(rangeToExtend, transform);\n }\n\n /**\n * Construct a CurveCollection with the same structure as collectionA and collectionB, with primitives constructed\n * by the caller-supplied primitiveMutator function.\n * @returns Returns undefined if there is any type mismatch between the two collections.\n */\n public static mutatePartners(\n collectionA: CurveCollection, collectionB: CurveCollection, primitiveMutator: CurvePrimitiveMutator,\n ): CurveCollection | undefined {\n if (!collectionA.isSameGeometryClass(collectionB))\n return undefined;\n if (collectionA instanceof CurveChain && collectionB instanceof CurveChain) {\n const chainA = collectionA;\n const chainB = collectionB;\n const chainC = chainA.cloneEmptyPeer() as CurveChain;\n const childrenA = chainA.children;\n const childrenB = chainB.children;\n if (childrenA.length !== childrenB.length)\n return undefined;\n for (let i = 0; i < childrenA.length; i++) {\n const newChild = primitiveMutator(childrenA[i], childrenB[i]);\n if (!newChild)\n return undefined;\n chainC.children.push(newChild);\n }\n return chainC;\n } else if (collectionA instanceof CurveCollection && collectionB instanceof CurveCollection) {\n const collectionC = collectionA.cloneEmptyPeer();\n const childrenA = collectionA.children;\n const childrenB = collectionB.children;\n const childrenC = collectionC.children;\n if (childrenA === undefined || childrenB === undefined || childrenC === undefined || childrenA.length !== childrenB.length)\n return undefined;\n for (let i = 0; i < childrenA.length; i++) {\n const childA = childrenA[i];\n const childB = childrenB[i];\n if (childA instanceof CurvePrimitive && childB instanceof CurvePrimitive) {\n const newPrimitive = primitiveMutator(childA, childB);\n if (!newPrimitive)\n return undefined;\n childrenC.push(newPrimitive);\n } else if (childA instanceof CurveCollection && childB instanceof CurveCollection) {\n const newChild = this.mutatePartners(childA, childB, primitiveMutator);\n if (!newChild)\n return undefined;\n if (newChild instanceof CurveCollection)\n childrenC.push(newChild);\n }\n }\n return collectionC;\n }\n return undefined;\n }\n /**\n * @return true if this is a closed volume.\n */\n public get isClosedVolume(): boolean {\n const n = this._contours.length;\n return n > 1 && (this.capped || this._contours[0].isAlmostEqual(this._contours[n - 1]));\n }\n}\n"]}
@@ -11,8 +11,9 @@ import { RotationalSweep } from "./RotationalSweep";
11
11
  import { RuledSweep } from "./RuledSweep";
12
12
  import { Sphere } from "./Sphere";
13
13
  import { TorusPipe } from "./TorusPipe";
14
- /** Describes the concrete type of a [[SolidPrimitive]]. Each type name maps to a specific subclass and can be used for type-switching in conditional statements.
15
- *
14
+ /**
15
+ * Describes the concrete type of a [[SolidPrimitive]]. Each type name maps to a specific subclass and can be used for
16
+ * type-switching in conditional statements.
16
17
  * - "box" => [[Box]]
17
18
  * - "cone" => [[Cone]]
18
19
  * - "sphere" => [[Sphere]]
@@ -20,39 +21,39 @@ import { TorusPipe } from "./TorusPipe";
20
21
  * - "rotationalSweep" => [[RotationalSweep]]
21
22
  * - "ruledSweep" => [[RuledSweep]]
22
23
  * - "torusPipe" => [[TorusPipe]]
23
- *
24
24
  * @public
25
25
  */
26
26
  export type SolidPrimitiveType = "box" | "cone" | "sphere" | "linearSweep" | "rotationalSweep" | "ruledSweep" | "torusPipe";
27
- /** Union type of all subclasses of [[SolidPrimitive]].
27
+ /**
28
+ * Union type of all subclasses of [[SolidPrimitive]].
28
29
  * @public
29
30
  */
30
31
  export type AnySolidPrimitive = Box | Cone | Sphere | LinearSweep | RotationalSweep | RuledSweep | TorusPipe;
31
32
  /**
32
33
  * Base class for SolidPrimitive variants.
33
- *
34
34
  * * The base class holds capped flag for all derived classes.
35
35
  * @public
36
36
  */
37
37
  export declare abstract class SolidPrimitive extends GeometryQuery {
38
- /** String name for schema properties */
38
+ /** String name for schema properties. */
39
39
  readonly geometryCategory = "solid";
40
- /** String name for schema properties */
40
+ /** String name for schema properties. */
41
41
  abstract readonly solidPrimitiveType: SolidPrimitiveType;
42
- /** flag indicating whether cap region is considered closed (i.e. a planar region, rather than just a wire in space) */
42
+ /** Flag indicating whether cap region is considered closed (i.e. a planar region, rather than just a wire in space). */
43
43
  protected _capped: boolean;
44
44
  protected constructor(capped: boolean);
45
- /** Whether this is a capped solid */
45
+ /** Whether this is a capped solid. */
46
46
  get capped(): boolean;
47
47
  set capped(capped: boolean);
48
48
  /** Return a cross section at specified vFraction. */
49
49
  abstract constantVSection(_vFraction: number): CurveCollection | undefined;
50
- /** Return a Transform from the local system of the solid to world.
50
+ /**
51
+ * Return a Transform from the local system of the solid to world.
51
52
  * * The particulars of origin and orientation are specific to each SolidPrimitive type.
52
53
  */
53
54
  abstract getConstructiveFrame(): Transform | undefined;
54
55
  /**
55
- * @return true if this is a closed volume.
56
+ * Return true if this is a closed volume
56
57
  * * LinearSweep, Box, Cone only depend on capped.
57
58
  * * Sphere affected by capped and latitude sweep
58
59
  * * TorusPipe and RotationalSweep affected by capped and sweep
@@ -1 +1 @@
1
- {"version":3,"file":"SolidPrimitive.d.ts","sourceRoot":"","sources":["../../../src/solid/SolidPrimitive.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,aAAa,GAAG,iBAAiB,GAAG,YAAY,GAAG,WAAW,CAAC;AAE5H;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,GAAG,GAAG,IAAI,GAAG,MAAM,GAAG,WAAW,GAAG,eAAe,GAAG,UAAU,GAAG,SAAS,CAAC;AAE7G;;;;;GAKG;AACH,8BAAsB,cAAe,SAAQ,aAAa;IACxD,wCAAwC;IACxC,SAAgB,gBAAgB,WAAW;IAC3C,wCAAwC;IACxC,kBAAyB,kBAAkB,EAAE,kBAAkB,CAAC;IAEhE,uHAAuH;IACvH,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;IAC3B,SAAS,aAAa,MAAM,EAAE,OAAO;IACrC,qCAAqC;IACrC,IAAW,MAAM,IAAI,OAAO,CAAyB;IACrD,IAAW,MAAM,CAAC,MAAM,EAAE,OAAO,EAA4B;IAC7D,qDAAqD;aACrC,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IACjF;;OAEG;aACa,oBAAoB,IAAI,SAAS,GAAG,SAAS;IAC7D;;;;;;OAMG;IACH,aAAoB,cAAc,IAAI,OAAO,CAAC;CAC/C"}
1
+ {"version":3,"file":"SolidPrimitive.d.ts","sourceRoot":"","sources":["../../../src/solid/SolidPrimitive.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,aAAa,GAAG,iBAAiB,GAAG,YAAY,GAAG,WAAW,CAAC;AAE5H;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,GAAG,GAAG,IAAI,GAAG,MAAM,GAAG,WAAW,GAAG,eAAe,GAAG,UAAU,GAAG,SAAS,CAAC;AAE7G;;;;GAIG;AACH,8BAAsB,cAAe,SAAQ,aAAa;IACxD,yCAAyC;IACzC,SAAgB,gBAAgB,WAAW;IAC3C,yCAAyC;IACzC,kBAAyB,kBAAkB,EAAE,kBAAkB,CAAC;IAChE,wHAAwH;IACxH,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;IAC3B,SAAS,aAAa,MAAM,EAAE,OAAO;IAIrC,sCAAsC;IACtC,IAAW,MAAM,IAAI,OAAO,CAE3B;IACD,IAAW,MAAM,CAAC,MAAM,EAAE,OAAO,EAEhC;IACD,qDAAqD;aACrC,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IACjF;;;OAGG;aACa,oBAAoB,IAAI,SAAS,GAAG,SAAS;IAC7D;;;;;;OAMG;IACH,aAAoB,cAAc,IAAI,OAAO,CAAC;CAC/C"}
@@ -5,19 +5,24 @@
5
5
  import { GeometryQuery } from "../curve/GeometryQuery";
6
6
  /**
7
7
  * Base class for SolidPrimitive variants.
8
- *
9
8
  * * The base class holds capped flag for all derived classes.
10
9
  * @public
11
10
  */
12
11
  export class SolidPrimitive extends GeometryQuery {
12
+ /** String name for schema properties. */
13
+ geometryCategory = "solid";
14
+ /** Flag indicating whether cap region is considered closed (i.e. a planar region, rather than just a wire in space). */
15
+ _capped;
13
16
  constructor(capped) {
14
17
  super();
15
- /** String name for schema properties */
16
- this.geometryCategory = "solid";
17
18
  this._capped = capped;
18
19
  }
19
- /** Whether this is a capped solid */
20
- get capped() { return this._capped; }
21
- set capped(capped) { this._capped = capped; }
20
+ /** Whether this is a capped solid. */
21
+ get capped() {
22
+ return this._capped;
23
+ }
24
+ set capped(capped) {
25
+ this._capped = capped;
26
+ }
22
27
  }
23
28
  //# sourceMappingURL=SolidPrimitive.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SolidPrimitive.js","sourceRoot":"","sources":["../../../src/solid/SolidPrimitive.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAO/F,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AA6BvD;;;;;GAKG;AACH,MAAM,OAAgB,cAAe,SAAQ,aAAa;IAQxD,YAAsB,MAAe;QAAI,KAAK,EAAE,CAAC;QAPjD,wCAAwC;QACxB,qBAAgB,GAAG,OAAO,CAAC;QAMO,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAAC,CAAC;IAC1E,qCAAqC;IACrC,IAAW,MAAM,KAAc,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,IAAW,MAAM,CAAC,MAAe,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;CAe9D","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Solid\r\n */\r\n\r\nimport { CurveCollection } from \"../curve/CurveCollection\";\r\nimport { GeometryQuery } from \"../curve/GeometryQuery\";\r\nimport { Transform } from \"../geometry3d/Transform\";\r\nimport { Box } from \"./Box\";\r\nimport { Cone } from \"./Cone\";\r\nimport { LinearSweep } from \"./LinearSweep\";\r\nimport { RotationalSweep } from \"./RotationalSweep\";\r\nimport { RuledSweep } from \"./RuledSweep\";\r\nimport { Sphere } from \"./Sphere\";\r\nimport { TorusPipe } from \"./TorusPipe\";\r\n\r\n/** Describes the concrete type of a [[SolidPrimitive]]. Each type name maps to a specific subclass and can be used for type-switching in conditional statements.\r\n *\r\n * - \"box\" => [[Box]]\r\n * - \"cone\" => [[Cone]]\r\n * - \"sphere\" => [[Sphere]]\r\n * - \"linearSweep\" => [[LinearSweep]]\r\n * - \"rotationalSweep\" => [[RotationalSweep]]\r\n * - \"ruledSweep\" => [[RuledSweep]]\r\n * - \"torusPipe\" => [[TorusPipe]]\r\n *\r\n * @public\r\n */\r\nexport type SolidPrimitiveType = \"box\" | \"cone\" | \"sphere\" | \"linearSweep\" | \"rotationalSweep\" | \"ruledSweep\" | \"torusPipe\";\r\n\r\n/** Union type of all subclasses of [[SolidPrimitive]].\r\n * @public\r\n */\r\nexport type AnySolidPrimitive = Box | Cone | Sphere | LinearSweep | RotationalSweep | RuledSweep | TorusPipe;\r\n\r\n/**\r\n * Base class for SolidPrimitive variants.\r\n *\r\n * * The base class holds capped flag for all derived classes.\r\n * @public\r\n */\r\nexport abstract class SolidPrimitive extends GeometryQuery {\r\n /** String name for schema properties */\r\n public readonly geometryCategory = \"solid\";\r\n /** String name for schema properties */\r\n public abstract readonly solidPrimitiveType: SolidPrimitiveType;\r\n\r\n /** flag indicating whether cap region is considered closed (i.e. a planar region, rather than just a wire in space) */\r\n protected _capped: boolean;\r\n protected constructor(capped: boolean) { super(); this._capped = capped; }\r\n /** Whether this is a capped solid */\r\n public get capped(): boolean { return this._capped; }\r\n public set capped(capped: boolean) { this._capped = capped; }\r\n /** Return a cross section at specified vFraction. */\r\n public abstract constantVSection(_vFraction: number): CurveCollection | undefined;\r\n /** Return a Transform from the local system of the solid to world.\r\n * * The particulars of origin and orientation are specific to each SolidPrimitive type.\r\n */\r\n public abstract getConstructiveFrame(): Transform | undefined;\r\n /**\r\n * @return true if this is a closed volume.\r\n * * LinearSweep, Box, Cone only depend on capped.\r\n * * Sphere affected by capped and latitude sweep\r\n * * TorusPipe and RotationalSweep affected by capped and sweep\r\n * * RuledSweep is affected by capped and match of first, last contour\r\n */\r\n public abstract get isClosedVolume(): boolean;\r\n}\r\n"]}
1
+ {"version":3,"file":"SolidPrimitive.js","sourceRoot":"","sources":["../../../src/solid/SolidPrimitive.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAO/F,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AA8BvD;;;;GAIG;AACH,MAAM,OAAgB,cAAe,SAAQ,aAAa;IACxD,yCAAyC;IACzB,gBAAgB,GAAG,OAAO,CAAC;IAG3C,wHAAwH;IAC9G,OAAO,CAAU;IAC3B,YAAsB,MAAe;QACnC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IACD,sCAAsC;IACtC,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACD,IAAW,MAAM,CAAC,MAAe;QAC/B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;CAgBF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Solid\n */\n\nimport { CurveCollection } from \"../curve/CurveCollection\";\nimport { GeometryQuery } from \"../curve/GeometryQuery\";\nimport { Transform } from \"../geometry3d/Transform\";\nimport { Box } from \"./Box\";\nimport { Cone } from \"./Cone\";\nimport { LinearSweep } from \"./LinearSweep\";\nimport { RotationalSweep } from \"./RotationalSweep\";\nimport { RuledSweep } from \"./RuledSweep\";\nimport { Sphere } from \"./Sphere\";\nimport { TorusPipe } from \"./TorusPipe\";\n\n/**\n * Describes the concrete type of a [[SolidPrimitive]]. Each type name maps to a specific subclass and can be used for\n * type-switching in conditional statements.\n * - \"box\" => [[Box]]\n * - \"cone\" => [[Cone]]\n * - \"sphere\" => [[Sphere]]\n * - \"linearSweep\" => [[LinearSweep]]\n * - \"rotationalSweep\" => [[RotationalSweep]]\n * - \"ruledSweep\" => [[RuledSweep]]\n * - \"torusPipe\" => [[TorusPipe]]\n * @public\n */\nexport type SolidPrimitiveType = \"box\" | \"cone\" | \"sphere\" | \"linearSweep\" | \"rotationalSweep\" | \"ruledSweep\" | \"torusPipe\";\n\n/**\n * Union type of all subclasses of [[SolidPrimitive]].\n * @public\n */\nexport type AnySolidPrimitive = Box | Cone | Sphere | LinearSweep | RotationalSweep | RuledSweep | TorusPipe;\n\n/**\n * Base class for SolidPrimitive variants.\n * * The base class holds capped flag for all derived classes.\n * @public\n */\nexport abstract class SolidPrimitive extends GeometryQuery {\n /** String name for schema properties. */\n public readonly geometryCategory = \"solid\";\n /** String name for schema properties. */\n public abstract readonly solidPrimitiveType: SolidPrimitiveType;\n /** Flag indicating whether cap region is considered closed (i.e. a planar region, rather than just a wire in space). */\n protected _capped: boolean;\n protected constructor(capped: boolean) {\n super();\n this._capped = capped;\n }\n /** Whether this is a capped solid. */\n public get capped(): boolean {\n return this._capped;\n }\n public set capped(capped: boolean) {\n this._capped = capped;\n }\n /** Return a cross section at specified vFraction. */\n public abstract constantVSection(_vFraction: number): CurveCollection | undefined;\n /**\n * Return a Transform from the local system of the solid to world.\n * * The particulars of origin and orientation are specific to each SolidPrimitive type.\n */\n public abstract getConstructiveFrame(): Transform | undefined;\n /**\n * Return true if this is a closed volume\n * * LinearSweep, Box, Cone only depend on capped.\n * * Sphere affected by capped and latitude sweep\n * * TorusPipe and RotationalSweep affected by capped and sweep\n * * RuledSweep is affected by capped and match of first, last contour\n */\n public abstract get isClosedVolume(): boolean;\n}\n"]}
@@ -26,6 +26,10 @@ import { SolidPrimitive } from "./SolidPrimitive";
26
26
  * @public
27
27
  */
28
28
  export class Sphere extends SolidPrimitive {
29
+ /** String name for schema properties */
30
+ solidPrimitiveType = "sphere";
31
+ _localToWorld; // local coordinates = unit sphere at origin
32
+ _latitudeSweep;
29
33
  /** Return the latitude (in radians) all fractional v. */
30
34
  vFractionToRadians(v) {
31
35
  return this._latitudeSweep.fractionToRadians(v);
@@ -37,8 +41,6 @@ export class Sphere extends SolidPrimitive {
37
41
  /** Constructor CAPTURES inputs */
38
42
  constructor(localToWorld, latitudeSweep, capped) {
39
43
  super(capped);
40
- /** String name for schema properties */
41
- this.solidPrimitiveType = "sphere";
42
44
  this._localToWorld = localToWorld;
43
45
  this._latitudeSweep = latitudeSweep;
44
46
  this._latitudeSweep.capLatitudeInPlace();