@itwin/core-geometry 5.0.0-dev.8 → 5.0.0-dev.82

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 (948) hide show
  1. package/CHANGELOG.md +46 -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/BooleanClipNode.js +4 -0
  45. package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
  46. package/lib/cjs/clipping/ClipPlane.js +10 -1
  47. package/lib/cjs/clipping/ClipPlane.js.map +1 -1
  48. package/lib/cjs/clipping/ClipPrimitive.js +19 -0
  49. package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
  50. package/lib/cjs/clipping/ClipUtils.js +5 -1
  51. package/lib/cjs/clipping/ClipUtils.js.map +1 -1
  52. package/lib/cjs/clipping/ClipVector.js +11 -8
  53. package/lib/cjs/clipping/ClipVector.js.map +1 -1
  54. package/lib/cjs/clipping/ConvexClipPlaneSet.js +5 -3
  55. package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
  56. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js +2 -1
  57. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  58. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js +3 -0
  59. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  60. package/lib/cjs/core-geometry.d.ts +1 -0
  61. package/lib/cjs/core-geometry.d.ts.map +1 -1
  62. package/lib/cjs/core-geometry.js +1 -0
  63. package/lib/cjs/core-geometry.js.map +1 -1
  64. package/lib/cjs/curve/Arc3d.d.ts +17 -3
  65. package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
  66. package/lib/cjs/curve/Arc3d.js +50 -21
  67. package/lib/cjs/curve/Arc3d.js.map +1 -1
  68. package/lib/cjs/curve/ConstructCurveBetweenCurves.js +3 -0
  69. package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
  70. package/lib/cjs/curve/CoordinateXYZ.js +3 -2
  71. package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
  72. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +0 -2
  73. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  74. package/lib/cjs/curve/CurveChainWithDistanceIndex.js +25 -10
  75. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  76. package/lib/cjs/curve/CurveCollection.d.ts +10 -0
  77. package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
  78. package/lib/cjs/curve/CurveCollection.js +35 -9
  79. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  80. package/lib/cjs/curve/CurveFactory.d.ts +87 -53
  81. package/lib/cjs/curve/CurveFactory.d.ts.map +1 -1
  82. package/lib/cjs/curve/CurveFactory.js +213 -135
  83. package/lib/cjs/curve/CurveFactory.js.map +1 -1
  84. package/lib/cjs/curve/CurveLocationDetail.js +44 -0
  85. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  86. package/lib/cjs/curve/CurvePrimitive.d.ts +7 -10
  87. package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -1
  88. package/lib/cjs/curve/CurvePrimitive.js +27 -12
  89. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  90. package/lib/cjs/curve/CurveProcessor.js +2 -0
  91. package/lib/cjs/curve/CurveProcessor.js.map +1 -1
  92. package/lib/cjs/curve/CurveWireMomentsXYZ.js +2 -0
  93. package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
  94. package/lib/cjs/curve/LineSegment3d.js +6 -2
  95. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  96. package/lib/cjs/curve/LineString3d.js +27 -7
  97. package/lib/cjs/curve/LineString3d.js.map +1 -1
  98. package/lib/cjs/curve/Loop.js +12 -4
  99. package/lib/cjs/curve/Loop.js.map +1 -1
  100. package/lib/cjs/curve/OffsetOptions.js +25 -21
  101. package/lib/cjs/curve/OffsetOptions.js.map +1 -1
  102. package/lib/cjs/curve/ParityRegion.js +4 -2
  103. package/lib/cjs/curve/ParityRegion.js.map +1 -1
  104. package/lib/cjs/curve/Path.js +2 -2
  105. package/lib/cjs/curve/Path.js.map +1 -1
  106. package/lib/cjs/curve/PointString3d.js +3 -2
  107. package/lib/cjs/curve/PointString3d.js.map +1 -1
  108. package/lib/cjs/curve/ProxyCurve.js +1 -0
  109. package/lib/cjs/curve/ProxyCurve.js.map +1 -1
  110. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js +1 -0
  111. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  112. package/lib/cjs/curve/Query/CurveSplitContext.js +3 -0
  113. package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
  114. package/lib/cjs/curve/Query/CylindricalRange.js +6 -2
  115. package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
  116. package/lib/cjs/curve/Query/PlanarSubdivision.js +4 -6
  117. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  118. package/lib/cjs/curve/Query/StrokeCountChain.js +12 -0
  119. package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
  120. package/lib/cjs/curve/Query/StrokeCountMap.js +14 -0
  121. package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
  122. package/lib/cjs/curve/RegionMomentsXY.js +4 -5
  123. package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
  124. package/lib/cjs/curve/RegionOps.js +9 -10
  125. package/lib/cjs/curve/RegionOps.js.map +1 -1
  126. package/lib/cjs/curve/RegionOpsClassificationSweeps.js +24 -1
  127. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  128. package/lib/cjs/curve/StrokeOptions.d.ts +4 -4
  129. package/lib/cjs/curve/StrokeOptions.d.ts.map +1 -1
  130. package/lib/cjs/curve/StrokeOptions.js +23 -6
  131. package/lib/cjs/curve/StrokeOptions.js.map +1 -1
  132. package/lib/cjs/curve/UnionRegion.js +4 -2
  133. package/lib/cjs/curve/UnionRegion.js.map +1 -1
  134. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js +13 -7
  135. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  136. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js +6 -0
  137. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  138. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js +2 -0
  139. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  140. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js +13 -5
  141. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  142. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js +3 -0
  143. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  144. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js +18 -5
  145. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  146. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js +26 -13
  147. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  148. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js +11 -5
  149. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  150. package/lib/cjs/curve/internalContexts/CurveLengthContext.js +6 -0
  151. package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
  152. package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js +8 -6
  153. package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  154. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js +38 -5
  155. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  156. package/lib/cjs/curve/internalContexts/GapSearchContext.js +1 -0
  157. package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
  158. package/lib/cjs/curve/internalContexts/MultiChainCollector.js +12 -0
  159. package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
  160. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js +1 -0
  161. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  162. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js +7 -0
  163. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  164. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js +22 -4
  165. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  166. package/lib/cjs/curve/internalContexts/SumLengthsContext.js +1 -0
  167. package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
  168. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js +3 -0
  169. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  170. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js +2 -0
  171. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  172. package/lib/cjs/curve/spiral/ClothoidSeries.js +4 -0
  173. package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
  174. package/lib/cjs/curve/spiral/CubicEvaluator.js +2 -0
  175. package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
  176. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js +4 -0
  177. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  178. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js +5 -0
  179. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  180. package/lib/cjs/curve/spiral/DirectSpiral3d.js +12 -2
  181. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
  182. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js +24 -4
  183. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  184. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js +2 -0
  185. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  186. package/lib/cjs/curve/spiral/NormalizedTransition.js +5 -0
  187. package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
  188. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js +2 -0
  189. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  190. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js +10 -0
  191. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  192. package/lib/cjs/curve/spiral/TransitionSpiral3d.js +10 -0
  193. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
  194. package/lib/cjs/curve/spiral/XYCurveEvaluator.js +6 -0
  195. package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
  196. package/lib/cjs/geometry3d/Angle.js +18 -16
  197. package/lib/cjs/geometry3d/Angle.js.map +1 -1
  198. package/lib/cjs/geometry3d/AngleSweep.d.ts +7 -2
  199. package/lib/cjs/geometry3d/AngleSweep.d.ts.map +1 -1
  200. package/lib/cjs/geometry3d/AngleSweep.js +14 -2
  201. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
  202. package/lib/cjs/geometry3d/BarycentricTriangle.js +25 -0
  203. package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
  204. package/lib/cjs/geometry3d/BilinearPatch.js +8 -0
  205. package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
  206. package/lib/cjs/geometry3d/CoincidentGeometryOps.js +5 -0
  207. package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
  208. package/lib/cjs/geometry3d/Ellipsoid.js +48 -0
  209. package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
  210. package/lib/cjs/geometry3d/FrameBuilder.js +12 -4
  211. package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
  212. package/lib/cjs/geometry3d/FrustumAnimation.js +7 -0
  213. package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
  214. package/lib/cjs/geometry3d/GrowableBlockedArray.js +12 -0
  215. package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
  216. package/lib/cjs/geometry3d/GrowableFloat64Array.js +3 -0
  217. package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
  218. package/lib/cjs/geometry3d/GrowableXYArray.d.ts +0 -5
  219. package/lib/cjs/geometry3d/GrowableXYArray.d.ts.map +1 -1
  220. package/lib/cjs/geometry3d/GrowableXYArray.js +16 -7
  221. package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
  222. package/lib/cjs/geometry3d/GrowableXYZArray.d.ts +32 -10
  223. package/lib/cjs/geometry3d/GrowableXYZArray.d.ts.map +1 -1
  224. package/lib/cjs/geometry3d/GrowableXYZArray.js +70 -16
  225. package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
  226. package/lib/cjs/geometry3d/IndexedCollectionInterval.js +6 -0
  227. package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
  228. package/lib/cjs/geometry3d/IndexedXYCollection.js +1 -0
  229. package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
  230. package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts +13 -2
  231. package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
  232. package/lib/cjs/geometry3d/IndexedXYZCollection.js +26 -11
  233. package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
  234. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js +3 -0
  235. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  236. package/lib/cjs/geometry3d/Matrix3d.d.ts +3 -4
  237. package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -1
  238. package/lib/cjs/geometry3d/Matrix3d.js +36 -14
  239. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  240. package/lib/cjs/geometry3d/OrderedRotationAngles.js +10 -2
  241. package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
  242. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js +2 -0
  243. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  244. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js +7 -0
  245. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  246. package/lib/cjs/geometry3d/Point2dArrayCarrier.js +2 -0
  247. package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
  248. package/lib/cjs/geometry3d/Point2dVector2d.js +4 -0
  249. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  250. package/lib/cjs/geometry3d/Point3dArrayCarrier.js +3 -1
  251. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  252. package/lib/cjs/geometry3d/Point3dVector3d.d.ts +6 -6
  253. package/lib/cjs/geometry3d/Point3dVector3d.js +12 -6
  254. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  255. package/lib/cjs/geometry3d/PointHelpers.d.ts +3 -3
  256. package/lib/cjs/geometry3d/PointHelpers.js +8 -8
  257. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  258. package/lib/cjs/geometry3d/PointStreaming.js +12 -4
  259. package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
  260. package/lib/cjs/geometry3d/PolygonOps.d.ts +2 -2
  261. package/lib/cjs/geometry3d/PolygonOps.js +62 -25
  262. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  263. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js +7 -3
  264. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  265. package/lib/cjs/geometry3d/PolylineOps.d.ts +9 -5
  266. package/lib/cjs/geometry3d/PolylineOps.d.ts.map +1 -1
  267. package/lib/cjs/geometry3d/PolylineOps.js +12 -5
  268. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
  269. package/lib/cjs/geometry3d/Range.js +21 -4
  270. package/lib/cjs/geometry3d/Range.js.map +1 -1
  271. package/lib/cjs/geometry3d/Ray2d.js +2 -0
  272. package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
  273. package/lib/cjs/geometry3d/Ray3d.d.ts +2 -2
  274. package/lib/cjs/geometry3d/Ray3d.d.ts.map +1 -1
  275. package/lib/cjs/geometry3d/Ray3d.js +20 -11
  276. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  277. package/lib/cjs/geometry3d/ReusableObjectCache.js +4 -0
  278. package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
  279. package/lib/cjs/geometry3d/Segment1d.js +4 -0
  280. package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
  281. package/lib/cjs/geometry3d/SortablePolygon.js +11 -0
  282. package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
  283. package/lib/cjs/geometry3d/Transform.js +3 -0
  284. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  285. package/lib/cjs/geometry3d/YawPitchRollAngles.js +6 -0
  286. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  287. package/lib/cjs/geometry4d/Map4d.js +2 -0
  288. package/lib/cjs/geometry4d/Map4d.js.map +1 -1
  289. package/lib/cjs/geometry4d/Matrix4d.js +1 -0
  290. package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
  291. package/lib/cjs/geometry4d/MomentData.d.ts +72 -73
  292. package/lib/cjs/geometry4d/MomentData.d.ts.map +1 -1
  293. package/lib/cjs/geometry4d/MomentData.js +90 -66
  294. package/lib/cjs/geometry4d/MomentData.js.map +1 -1
  295. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js +6 -0
  296. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  297. package/lib/cjs/geometry4d/Point4d.js +2 -0
  298. package/lib/cjs/geometry4d/Point4d.js.map +1 -1
  299. package/lib/cjs/numerics/BezierPolynomials.js +8 -0
  300. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
  301. package/lib/cjs/numerics/ClusterableArray.js +29 -13
  302. package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
  303. package/lib/cjs/numerics/Complex.js +2 -0
  304. package/lib/cjs/numerics/Complex.js.map +1 -1
  305. package/lib/cjs/numerics/ConvexPolygon2d.js +3 -0
  306. package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
  307. package/lib/cjs/numerics/Newton.js +59 -4
  308. package/lib/cjs/numerics/Newton.js.map +1 -1
  309. package/lib/cjs/numerics/PascalCoefficients.js +1 -1
  310. package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
  311. package/lib/cjs/numerics/PolarData.js +13 -1
  312. package/lib/cjs/numerics/PolarData.js.map +1 -1
  313. package/lib/cjs/numerics/Polynomials.js +64 -26
  314. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  315. package/lib/cjs/numerics/Quadrature.js +26 -20
  316. package/lib/cjs/numerics/Quadrature.js.map +1 -1
  317. package/lib/cjs/numerics/TriDiagonalSystem.js +11 -0
  318. package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
  319. package/lib/cjs/numerics/UnionFind.js +1 -0
  320. package/lib/cjs/numerics/UnionFind.js.map +1 -1
  321. package/lib/cjs/numerics/UsageSums.js +10 -0
  322. package/lib/cjs/numerics/UsageSums.js.map +1 -1
  323. package/lib/cjs/polyface/AuxData.js +16 -0
  324. package/lib/cjs/polyface/AuxData.js.map +1 -1
  325. package/lib/cjs/polyface/BoxTopology.js +67 -67
  326. package/lib/cjs/polyface/BoxTopology.js.map +1 -1
  327. package/lib/cjs/polyface/FacetFaceData.d.ts +1 -1
  328. package/lib/cjs/polyface/FacetFaceData.js +3 -1
  329. package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
  330. package/lib/cjs/polyface/FacetLocationDetail.js +30 -0
  331. package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
  332. package/lib/cjs/polyface/FacetOrientation.js +12 -1
  333. package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
  334. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js +18 -2
  335. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  336. package/lib/cjs/polyface/IndexedEdgeMatcher.d.ts +33 -23
  337. package/lib/cjs/polyface/IndexedEdgeMatcher.d.ts.map +1 -1
  338. package/lib/cjs/polyface/IndexedEdgeMatcher.js +63 -33
  339. package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
  340. package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts +3 -2
  341. package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
  342. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js +11 -2
  343. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  344. package/lib/cjs/polyface/IndexedPolyfaceWalker.d.ts +233 -0
  345. package/lib/cjs/polyface/IndexedPolyfaceWalker.d.ts.map +1 -0
  346. package/lib/cjs/polyface/IndexedPolyfaceWalker.js +353 -0
  347. package/lib/cjs/polyface/IndexedPolyfaceWalker.js.map +1 -0
  348. package/lib/cjs/polyface/Polyface.d.ts +35 -10
  349. package/lib/cjs/polyface/Polyface.d.ts.map +1 -1
  350. package/lib/cjs/polyface/Polyface.js +73 -12
  351. package/lib/cjs/polyface/Polyface.js.map +1 -1
  352. package/lib/cjs/polyface/PolyfaceBuilder.d.ts +14 -27
  353. package/lib/cjs/polyface/PolyfaceBuilder.d.ts.map +1 -1
  354. package/lib/cjs/polyface/PolyfaceBuilder.js +47 -79
  355. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  356. package/lib/cjs/polyface/PolyfaceClip.js +8 -0
  357. package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
  358. package/lib/cjs/polyface/PolyfaceData.d.ts +28 -0
  359. package/lib/cjs/polyface/PolyfaceData.d.ts.map +1 -1
  360. package/lib/cjs/polyface/PolyfaceData.js +87 -5
  361. package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
  362. package/lib/cjs/polyface/PolyfaceQuery.js +47 -7
  363. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  364. package/lib/cjs/polyface/RangeLengthData.js +7 -0
  365. package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
  366. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js +12 -0
  367. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  368. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js +5 -2
  369. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  370. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js +12 -0
  371. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  372. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js +14 -0
  373. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  374. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js +5 -0
  375. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  376. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js +43 -0
  377. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  378. package/lib/cjs/polyface/TaggedNumericData.js +8 -0
  379. package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
  380. package/lib/cjs/polyface/TriangleCandidate.js +3 -0
  381. package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
  382. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js +7 -0
  383. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  384. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js +6 -0
  385. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  386. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js +3 -0
  387. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  388. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js +3 -0
  389. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  390. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js +32 -0
  391. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  392. package/lib/cjs/polyface/multiclip/RangeSearch.js +5 -5
  393. package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
  394. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js +21 -8
  395. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  396. package/lib/cjs/polyface/multiclip/XYPointBuckets.js +6 -0
  397. package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
  398. package/lib/cjs/serialization/BGFBAccessors.js +82 -164
  399. package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
  400. package/lib/cjs/serialization/BGFBReader.js +22 -22
  401. package/lib/cjs/serialization/BGFBReader.js.map +1 -1
  402. package/lib/cjs/serialization/BGFBWriter.js +1 -0
  403. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  404. package/lib/cjs/serialization/DeepCompare.js +17 -17
  405. package/lib/cjs/serialization/DeepCompare.js.map +1 -1
  406. package/lib/cjs/serialization/GeometrySamples.d.ts +5 -5
  407. package/lib/cjs/serialization/GeometrySamples.d.ts.map +1 -1
  408. package/lib/cjs/serialization/GeometrySamples.js +113 -112
  409. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  410. package/lib/cjs/serialization/IModelJsonSchema.d.ts +16 -22
  411. package/lib/cjs/serialization/IModelJsonSchema.d.ts.map +1 -1
  412. package/lib/cjs/serialization/IModelJsonSchema.js +4 -5
  413. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  414. package/lib/cjs/solid/Box.js +7 -2
  415. package/lib/cjs/solid/Box.js.map +1 -1
  416. package/lib/cjs/solid/Cone.js +6 -2
  417. package/lib/cjs/solid/Cone.js.map +1 -1
  418. package/lib/cjs/solid/LinearSweep.js +4 -2
  419. package/lib/cjs/solid/LinearSweep.js.map +1 -1
  420. package/lib/cjs/solid/RotationalSweep.js +5 -2
  421. package/lib/cjs/solid/RotationalSweep.js.map +1 -1
  422. package/lib/cjs/solid/RuledSweep.d.ts +26 -23
  423. package/lib/cjs/solid/RuledSweep.d.ts.map +1 -1
  424. package/lib/cjs/solid/RuledSweep.js +32 -24
  425. package/lib/cjs/solid/RuledSweep.js.map +1 -1
  426. package/lib/cjs/solid/SolidPrimitive.d.ts +12 -11
  427. package/lib/cjs/solid/SolidPrimitive.d.ts.map +1 -1
  428. package/lib/cjs/solid/SolidPrimitive.js +11 -6
  429. package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
  430. package/lib/cjs/solid/Sphere.js +4 -2
  431. package/lib/cjs/solid/Sphere.js.map +1 -1
  432. package/lib/cjs/solid/SweepContour.d.ts +24 -15
  433. package/lib/cjs/solid/SweepContour.d.ts.map +1 -1
  434. package/lib/cjs/solid/SweepContour.js +33 -15
  435. package/lib/cjs/solid/SweepContour.js.map +1 -1
  436. package/lib/cjs/solid/TorusPipe.js +7 -2
  437. package/lib/cjs/solid/TorusPipe.js.map +1 -1
  438. package/lib/cjs/topology/ChainMerge.js +16 -4
  439. package/lib/cjs/topology/ChainMerge.js.map +1 -1
  440. package/lib/cjs/topology/Graph.js +41 -6
  441. package/lib/cjs/topology/Graph.js.map +1 -1
  442. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +1 -1
  443. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js +5 -1
  444. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  445. package/lib/cjs/topology/HalfEdgeGraphSearch.js +2 -0
  446. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  447. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js +9 -2
  448. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  449. package/lib/cjs/topology/HalfEdgeGraphValidation.js +7 -9
  450. package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
  451. package/lib/cjs/topology/HalfEdgeMarkSet.js +5 -0
  452. package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
  453. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js +6 -0
  454. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  455. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js +1 -0
  456. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  457. package/lib/cjs/topology/HalfEdgePositionDetail.js +16 -0
  458. package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
  459. package/lib/cjs/topology/HalfEdgePriorityQueue.js +2 -0
  460. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
  461. package/lib/cjs/topology/InsertAndRetriangulateContext.js +4 -0
  462. package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
  463. package/lib/cjs/topology/MaskManager.js +3 -0
  464. package/lib/cjs/topology/MaskManager.js.map +1 -1
  465. package/lib/cjs/topology/Merging.js +11 -6
  466. package/lib/cjs/topology/Merging.js.map +1 -1
  467. package/lib/cjs/topology/RegularizeFace.js +22 -0
  468. package/lib/cjs/topology/RegularizeFace.js.map +1 -1
  469. package/lib/cjs/topology/SignedDataSummary.js +22 -0
  470. package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
  471. package/lib/cjs/topology/Triangulation.js +21 -11
  472. package/lib/cjs/topology/Triangulation.js.map +1 -1
  473. package/lib/cjs/topology/XYParitySearchContext.js +13 -0
  474. package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
  475. package/lib/esm/Constant.js +17 -17
  476. package/lib/esm/Constant.js.map +1 -1
  477. package/lib/esm/Geometry.js +35 -35
  478. package/lib/esm/Geometry.js.map +1 -1
  479. package/lib/esm/bspline/AkimaCurve3d.js +3 -1
  480. package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
  481. package/lib/esm/bspline/BSpline1dNd.d.ts +90 -54
  482. package/lib/esm/bspline/BSpline1dNd.d.ts.map +1 -1
  483. package/lib/esm/bspline/BSpline1dNd.js +137 -84
  484. package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
  485. package/lib/esm/bspline/BSplineCurve.d.ts +193 -155
  486. package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
  487. package/lib/esm/bspline/BSplineCurve.js +249 -181
  488. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  489. package/lib/esm/bspline/BSplineCurve3dH.js +1 -0
  490. package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
  491. package/lib/esm/bspline/BSplineCurveOps.d.ts.map +1 -1
  492. package/lib/esm/bspline/BSplineCurveOps.js +18 -21
  493. package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
  494. package/lib/esm/bspline/BSplineSurface.js +22 -2
  495. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  496. package/lib/esm/bspline/Bezier1dNd.js +6 -0
  497. package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
  498. package/lib/esm/bspline/BezierCurve3d.d.ts +3 -1
  499. package/lib/esm/bspline/BezierCurve3d.d.ts.map +1 -1
  500. package/lib/esm/bspline/BezierCurve3d.js +5 -5
  501. package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
  502. package/lib/esm/bspline/BezierCurve3dH.js +2 -0
  503. package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
  504. package/lib/esm/bspline/BezierCurveBase.d.ts.map +1 -1
  505. package/lib/esm/bspline/BezierCurveBase.js +21 -2
  506. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  507. package/lib/esm/bspline/InterpolationCurve3d.js +12 -1
  508. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  509. package/lib/esm/bspline/KnotVector.d.ts +82 -60
  510. package/lib/esm/bspline/KnotVector.d.ts.map +1 -1
  511. package/lib/esm/bspline/KnotVector.js +144 -84
  512. package/lib/esm/bspline/KnotVector.js.map +1 -1
  513. package/lib/esm/bspline/SurfaceLocationDetail.js +12 -0
  514. package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
  515. package/lib/esm/clipping/AlternatingConvexClipTree.js +14 -13
  516. package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
  517. package/lib/esm/clipping/BooleanClipNode.js +4 -0
  518. package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
  519. package/lib/esm/clipping/ClipPlane.js +10 -1
  520. package/lib/esm/clipping/ClipPlane.js.map +1 -1
  521. package/lib/esm/clipping/ClipPrimitive.js +19 -0
  522. package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
  523. package/lib/esm/clipping/ClipUtils.js +5 -1
  524. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  525. package/lib/esm/clipping/ClipVector.js +11 -8
  526. package/lib/esm/clipping/ClipVector.js.map +1 -1
  527. package/lib/esm/clipping/ConvexClipPlaneSet.js +5 -3
  528. package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
  529. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js +2 -1
  530. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  531. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js +3 -0
  532. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  533. package/lib/esm/core-geometry.d.ts +1 -0
  534. package/lib/esm/core-geometry.d.ts.map +1 -1
  535. package/lib/esm/core-geometry.js +1 -0
  536. package/lib/esm/core-geometry.js.map +1 -1
  537. package/lib/esm/curve/Arc3d.d.ts +17 -3
  538. package/lib/esm/curve/Arc3d.d.ts.map +1 -1
  539. package/lib/esm/curve/Arc3d.js +50 -21
  540. package/lib/esm/curve/Arc3d.js.map +1 -1
  541. package/lib/esm/curve/ConstructCurveBetweenCurves.js +3 -0
  542. package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
  543. package/lib/esm/curve/CoordinateXYZ.js +3 -2
  544. package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
  545. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +0 -2
  546. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  547. package/lib/esm/curve/CurveChainWithDistanceIndex.js +25 -10
  548. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  549. package/lib/esm/curve/CurveCollection.d.ts +10 -0
  550. package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
  551. package/lib/esm/curve/CurveCollection.js +35 -9
  552. package/lib/esm/curve/CurveCollection.js.map +1 -1
  553. package/lib/esm/curve/CurveFactory.d.ts +87 -53
  554. package/lib/esm/curve/CurveFactory.d.ts.map +1 -1
  555. package/lib/esm/curve/CurveFactory.js +213 -135
  556. package/lib/esm/curve/CurveFactory.js.map +1 -1
  557. package/lib/esm/curve/CurveLocationDetail.js +44 -0
  558. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  559. package/lib/esm/curve/CurvePrimitive.d.ts +7 -10
  560. package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
  561. package/lib/esm/curve/CurvePrimitive.js +27 -12
  562. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  563. package/lib/esm/curve/CurveProcessor.js +2 -0
  564. package/lib/esm/curve/CurveProcessor.js.map +1 -1
  565. package/lib/esm/curve/CurveWireMomentsXYZ.js +2 -0
  566. package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
  567. package/lib/esm/curve/LineSegment3d.js +6 -2
  568. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  569. package/lib/esm/curve/LineString3d.js +27 -7
  570. package/lib/esm/curve/LineString3d.js.map +1 -1
  571. package/lib/esm/curve/Loop.js +12 -4
  572. package/lib/esm/curve/Loop.js.map +1 -1
  573. package/lib/esm/curve/OffsetOptions.js +25 -21
  574. package/lib/esm/curve/OffsetOptions.js.map +1 -1
  575. package/lib/esm/curve/ParityRegion.js +4 -2
  576. package/lib/esm/curve/ParityRegion.js.map +1 -1
  577. package/lib/esm/curve/Path.js +2 -2
  578. package/lib/esm/curve/Path.js.map +1 -1
  579. package/lib/esm/curve/PointString3d.js +3 -2
  580. package/lib/esm/curve/PointString3d.js.map +1 -1
  581. package/lib/esm/curve/ProxyCurve.js +1 -0
  582. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  583. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js +1 -0
  584. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  585. package/lib/esm/curve/Query/CurveSplitContext.js +3 -0
  586. package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
  587. package/lib/esm/curve/Query/CylindricalRange.js +6 -2
  588. package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
  589. package/lib/esm/curve/Query/PlanarSubdivision.js +4 -6
  590. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  591. package/lib/esm/curve/Query/StrokeCountChain.js +12 -0
  592. package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
  593. package/lib/esm/curve/Query/StrokeCountMap.js +14 -0
  594. package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
  595. package/lib/esm/curve/RegionMomentsXY.js +4 -5
  596. package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
  597. package/lib/esm/curve/RegionOps.js +9 -10
  598. package/lib/esm/curve/RegionOps.js.map +1 -1
  599. package/lib/esm/curve/RegionOpsClassificationSweeps.js +24 -1
  600. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  601. package/lib/esm/curve/StrokeOptions.d.ts +4 -4
  602. package/lib/esm/curve/StrokeOptions.d.ts.map +1 -1
  603. package/lib/esm/curve/StrokeOptions.js +23 -6
  604. package/lib/esm/curve/StrokeOptions.js.map +1 -1
  605. package/lib/esm/curve/UnionRegion.js +4 -2
  606. package/lib/esm/curve/UnionRegion.js.map +1 -1
  607. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js +13 -7
  608. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  609. package/lib/esm/curve/internalContexts/ChainCollectorContext.js +6 -0
  610. package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  611. package/lib/esm/curve/internalContexts/CloneCurvesContext.js +2 -0
  612. package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  613. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js +13 -5
  614. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  615. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js +3 -0
  616. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  617. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js +18 -5
  618. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  619. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js +26 -13
  620. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  621. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js +11 -5
  622. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  623. package/lib/esm/curve/internalContexts/CurveLengthContext.js +6 -0
  624. package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
  625. package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js +8 -6
  626. package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  627. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js +38 -5
  628. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  629. package/lib/esm/curve/internalContexts/GapSearchContext.js +1 -0
  630. package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
  631. package/lib/esm/curve/internalContexts/MultiChainCollector.js +12 -0
  632. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  633. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js +1 -0
  634. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  635. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js +7 -0
  636. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  637. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js +22 -4
  638. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  639. package/lib/esm/curve/internalContexts/SumLengthsContext.js +1 -0
  640. package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
  641. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js +3 -0
  642. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  643. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js +2 -0
  644. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  645. package/lib/esm/curve/spiral/ClothoidSeries.js +4 -0
  646. package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
  647. package/lib/esm/curve/spiral/CubicEvaluator.js +2 -0
  648. package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
  649. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js +4 -0
  650. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  651. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js +5 -0
  652. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  653. package/lib/esm/curve/spiral/DirectSpiral3d.js +12 -2
  654. package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
  655. package/lib/esm/curve/spiral/IntegratedSpiral3d.js +24 -4
  656. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  657. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js +2 -0
  658. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  659. package/lib/esm/curve/spiral/NormalizedTransition.js +5 -0
  660. package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
  661. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js +2 -0
  662. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  663. package/lib/esm/curve/spiral/TransitionConditionalProperties.js +10 -0
  664. package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  665. package/lib/esm/curve/spiral/TransitionSpiral3d.js +10 -0
  666. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
  667. package/lib/esm/curve/spiral/XYCurveEvaluator.js +6 -0
  668. package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
  669. package/lib/esm/geometry3d/Angle.js +18 -16
  670. package/lib/esm/geometry3d/Angle.js.map +1 -1
  671. package/lib/esm/geometry3d/AngleSweep.d.ts +7 -2
  672. package/lib/esm/geometry3d/AngleSweep.d.ts.map +1 -1
  673. package/lib/esm/geometry3d/AngleSweep.js +14 -2
  674. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  675. package/lib/esm/geometry3d/BarycentricTriangle.js +25 -0
  676. package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
  677. package/lib/esm/geometry3d/BilinearPatch.js +8 -0
  678. package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
  679. package/lib/esm/geometry3d/CoincidentGeometryOps.js +5 -0
  680. package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
  681. package/lib/esm/geometry3d/Ellipsoid.js +48 -0
  682. package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
  683. package/lib/esm/geometry3d/FrameBuilder.js +12 -4
  684. package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
  685. package/lib/esm/geometry3d/FrustumAnimation.js +7 -0
  686. package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
  687. package/lib/esm/geometry3d/GrowableBlockedArray.js +12 -0
  688. package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
  689. package/lib/esm/geometry3d/GrowableFloat64Array.js +3 -0
  690. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
  691. package/lib/esm/geometry3d/GrowableXYArray.d.ts +0 -5
  692. package/lib/esm/geometry3d/GrowableXYArray.d.ts.map +1 -1
  693. package/lib/esm/geometry3d/GrowableXYArray.js +16 -7
  694. package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
  695. package/lib/esm/geometry3d/GrowableXYZArray.d.ts +32 -10
  696. package/lib/esm/geometry3d/GrowableXYZArray.d.ts.map +1 -1
  697. package/lib/esm/geometry3d/GrowableXYZArray.js +70 -16
  698. package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
  699. package/lib/esm/geometry3d/IndexedCollectionInterval.js +6 -0
  700. package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
  701. package/lib/esm/geometry3d/IndexedXYCollection.js +1 -0
  702. package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
  703. package/lib/esm/geometry3d/IndexedXYZCollection.d.ts +13 -2
  704. package/lib/esm/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
  705. package/lib/esm/geometry3d/IndexedXYZCollection.js +26 -11
  706. package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
  707. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js +3 -0
  708. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  709. package/lib/esm/geometry3d/Matrix3d.d.ts +3 -4
  710. package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -1
  711. package/lib/esm/geometry3d/Matrix3d.js +36 -14
  712. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  713. package/lib/esm/geometry3d/OrderedRotationAngles.js +10 -2
  714. package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
  715. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js +2 -0
  716. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  717. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js +7 -0
  718. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  719. package/lib/esm/geometry3d/Point2dArrayCarrier.js +2 -0
  720. package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
  721. package/lib/esm/geometry3d/Point2dVector2d.js +4 -0
  722. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  723. package/lib/esm/geometry3d/Point3dArrayCarrier.js +3 -1
  724. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  725. package/lib/esm/geometry3d/Point3dVector3d.d.ts +6 -6
  726. package/lib/esm/geometry3d/Point3dVector3d.js +12 -6
  727. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  728. package/lib/esm/geometry3d/PointHelpers.d.ts +3 -3
  729. package/lib/esm/geometry3d/PointHelpers.js +8 -8
  730. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  731. package/lib/esm/geometry3d/PointStreaming.js +12 -4
  732. package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
  733. package/lib/esm/geometry3d/PolygonOps.d.ts +2 -2
  734. package/lib/esm/geometry3d/PolygonOps.js +62 -25
  735. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  736. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js +7 -3
  737. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  738. package/lib/esm/geometry3d/PolylineOps.d.ts +9 -5
  739. package/lib/esm/geometry3d/PolylineOps.d.ts.map +1 -1
  740. package/lib/esm/geometry3d/PolylineOps.js +12 -5
  741. package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
  742. package/lib/esm/geometry3d/Range.js +21 -4
  743. package/lib/esm/geometry3d/Range.js.map +1 -1
  744. package/lib/esm/geometry3d/Ray2d.js +2 -0
  745. package/lib/esm/geometry3d/Ray2d.js.map +1 -1
  746. package/lib/esm/geometry3d/Ray3d.d.ts +2 -2
  747. package/lib/esm/geometry3d/Ray3d.d.ts.map +1 -1
  748. package/lib/esm/geometry3d/Ray3d.js +20 -11
  749. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  750. package/lib/esm/geometry3d/ReusableObjectCache.js +4 -0
  751. package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
  752. package/lib/esm/geometry3d/Segment1d.js +4 -0
  753. package/lib/esm/geometry3d/Segment1d.js.map +1 -1
  754. package/lib/esm/geometry3d/SortablePolygon.js +11 -0
  755. package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
  756. package/lib/esm/geometry3d/Transform.js +3 -0
  757. package/lib/esm/geometry3d/Transform.js.map +1 -1
  758. package/lib/esm/geometry3d/YawPitchRollAngles.js +6 -0
  759. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  760. package/lib/esm/geometry4d/Map4d.js +2 -0
  761. package/lib/esm/geometry4d/Map4d.js.map +1 -1
  762. package/lib/esm/geometry4d/Matrix4d.js +1 -0
  763. package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
  764. package/lib/esm/geometry4d/MomentData.d.ts +72 -73
  765. package/lib/esm/geometry4d/MomentData.d.ts.map +1 -1
  766. package/lib/esm/geometry4d/MomentData.js +90 -66
  767. package/lib/esm/geometry4d/MomentData.js.map +1 -1
  768. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js +6 -0
  769. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  770. package/lib/esm/geometry4d/Point4d.js +2 -0
  771. package/lib/esm/geometry4d/Point4d.js.map +1 -1
  772. package/lib/esm/numerics/BezierPolynomials.js +8 -0
  773. package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
  774. package/lib/esm/numerics/ClusterableArray.js +29 -13
  775. package/lib/esm/numerics/ClusterableArray.js.map +1 -1
  776. package/lib/esm/numerics/Complex.js +2 -0
  777. package/lib/esm/numerics/Complex.js.map +1 -1
  778. package/lib/esm/numerics/ConvexPolygon2d.js +3 -0
  779. package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
  780. package/lib/esm/numerics/Newton.js +59 -4
  781. package/lib/esm/numerics/Newton.js.map +1 -1
  782. package/lib/esm/numerics/PascalCoefficients.js +1 -1
  783. package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
  784. package/lib/esm/numerics/PolarData.js +13 -1
  785. package/lib/esm/numerics/PolarData.js.map +1 -1
  786. package/lib/esm/numerics/Polynomials.js +64 -26
  787. package/lib/esm/numerics/Polynomials.js.map +1 -1
  788. package/lib/esm/numerics/Quadrature.js +26 -20
  789. package/lib/esm/numerics/Quadrature.js.map +1 -1
  790. package/lib/esm/numerics/TriDiagonalSystem.js +11 -0
  791. package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
  792. package/lib/esm/numerics/UnionFind.js +1 -0
  793. package/lib/esm/numerics/UnionFind.js.map +1 -1
  794. package/lib/esm/numerics/UsageSums.js +10 -0
  795. package/lib/esm/numerics/UsageSums.js.map +1 -1
  796. package/lib/esm/polyface/AuxData.js +16 -0
  797. package/lib/esm/polyface/AuxData.js.map +1 -1
  798. package/lib/esm/polyface/BoxTopology.js +67 -67
  799. package/lib/esm/polyface/BoxTopology.js.map +1 -1
  800. package/lib/esm/polyface/FacetFaceData.d.ts +1 -1
  801. package/lib/esm/polyface/FacetFaceData.js +3 -1
  802. package/lib/esm/polyface/FacetFaceData.js.map +1 -1
  803. package/lib/esm/polyface/FacetLocationDetail.js +30 -0
  804. package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
  805. package/lib/esm/polyface/FacetOrientation.js +12 -1
  806. package/lib/esm/polyface/FacetOrientation.js.map +1 -1
  807. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js +18 -2
  808. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  809. package/lib/esm/polyface/IndexedEdgeMatcher.d.ts +33 -23
  810. package/lib/esm/polyface/IndexedEdgeMatcher.d.ts.map +1 -1
  811. package/lib/esm/polyface/IndexedEdgeMatcher.js +63 -33
  812. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
  813. package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts +3 -2
  814. package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
  815. package/lib/esm/polyface/IndexedPolyfaceVisitor.js +11 -2
  816. package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  817. package/lib/esm/polyface/IndexedPolyfaceWalker.d.ts +233 -0
  818. package/lib/esm/polyface/IndexedPolyfaceWalker.d.ts.map +1 -0
  819. package/lib/esm/polyface/IndexedPolyfaceWalker.js +349 -0
  820. package/lib/esm/polyface/IndexedPolyfaceWalker.js.map +1 -0
  821. package/lib/esm/polyface/Polyface.d.ts +35 -10
  822. package/lib/esm/polyface/Polyface.d.ts.map +1 -1
  823. package/lib/esm/polyface/Polyface.js +73 -12
  824. package/lib/esm/polyface/Polyface.js.map +1 -1
  825. package/lib/esm/polyface/PolyfaceBuilder.d.ts +14 -27
  826. package/lib/esm/polyface/PolyfaceBuilder.d.ts.map +1 -1
  827. package/lib/esm/polyface/PolyfaceBuilder.js +48 -80
  828. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  829. package/lib/esm/polyface/PolyfaceClip.js +8 -0
  830. package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
  831. package/lib/esm/polyface/PolyfaceData.d.ts +28 -0
  832. package/lib/esm/polyface/PolyfaceData.d.ts.map +1 -1
  833. package/lib/esm/polyface/PolyfaceData.js +87 -5
  834. package/lib/esm/polyface/PolyfaceData.js.map +1 -1
  835. package/lib/esm/polyface/PolyfaceQuery.js +47 -7
  836. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  837. package/lib/esm/polyface/RangeLengthData.js +7 -0
  838. package/lib/esm/polyface/RangeLengthData.js.map +1 -1
  839. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js +12 -0
  840. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  841. package/lib/esm/polyface/RangeTree/MinimumValueTester.js +5 -2
  842. package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  843. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js +12 -0
  844. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  845. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js +14 -0
  846. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  847. package/lib/esm/polyface/RangeTree/RangeTreeNode.js +5 -0
  848. package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  849. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js +43 -0
  850. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  851. package/lib/esm/polyface/TaggedNumericData.js +8 -0
  852. package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
  853. package/lib/esm/polyface/TriangleCandidate.js +3 -0
  854. package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
  855. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js +7 -0
  856. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  857. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js +6 -0
  858. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  859. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js +3 -0
  860. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  861. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js +3 -0
  862. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  863. package/lib/esm/polyface/multiclip/OffsetMeshContext.js +32 -0
  864. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  865. package/lib/esm/polyface/multiclip/RangeSearch.js +5 -5
  866. package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
  867. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js +21 -8
  868. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  869. package/lib/esm/polyface/multiclip/XYPointBuckets.js +6 -0
  870. package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
  871. package/lib/esm/serialization/BGFBAccessors.js +82 -164
  872. package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
  873. package/lib/esm/serialization/BGFBReader.js +22 -22
  874. package/lib/esm/serialization/BGFBReader.js.map +1 -1
  875. package/lib/esm/serialization/BGFBWriter.js +1 -0
  876. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  877. package/lib/esm/serialization/DeepCompare.js +17 -17
  878. package/lib/esm/serialization/DeepCompare.js.map +1 -1
  879. package/lib/esm/serialization/GeometrySamples.d.ts +5 -5
  880. package/lib/esm/serialization/GeometrySamples.d.ts.map +1 -1
  881. package/lib/esm/serialization/GeometrySamples.js +113 -112
  882. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  883. package/lib/esm/serialization/IModelJsonSchema.d.ts +16 -22
  884. package/lib/esm/serialization/IModelJsonSchema.d.ts.map +1 -1
  885. package/lib/esm/serialization/IModelJsonSchema.js +4 -5
  886. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  887. package/lib/esm/solid/Box.js +7 -2
  888. package/lib/esm/solid/Box.js.map +1 -1
  889. package/lib/esm/solid/Cone.js +6 -2
  890. package/lib/esm/solid/Cone.js.map +1 -1
  891. package/lib/esm/solid/LinearSweep.js +4 -2
  892. package/lib/esm/solid/LinearSweep.js.map +1 -1
  893. package/lib/esm/solid/RotationalSweep.js +5 -2
  894. package/lib/esm/solid/RotationalSweep.js.map +1 -1
  895. package/lib/esm/solid/RuledSweep.d.ts +26 -23
  896. package/lib/esm/solid/RuledSweep.d.ts.map +1 -1
  897. package/lib/esm/solid/RuledSweep.js +32 -24
  898. package/lib/esm/solid/RuledSweep.js.map +1 -1
  899. package/lib/esm/solid/SolidPrimitive.d.ts +12 -11
  900. package/lib/esm/solid/SolidPrimitive.d.ts.map +1 -1
  901. package/lib/esm/solid/SolidPrimitive.js +11 -6
  902. package/lib/esm/solid/SolidPrimitive.js.map +1 -1
  903. package/lib/esm/solid/Sphere.js +4 -2
  904. package/lib/esm/solid/Sphere.js.map +1 -1
  905. package/lib/esm/solid/SweepContour.d.ts +24 -15
  906. package/lib/esm/solid/SweepContour.d.ts.map +1 -1
  907. package/lib/esm/solid/SweepContour.js +33 -15
  908. package/lib/esm/solid/SweepContour.js.map +1 -1
  909. package/lib/esm/solid/TorusPipe.js +7 -2
  910. package/lib/esm/solid/TorusPipe.js.map +1 -1
  911. package/lib/esm/topology/ChainMerge.js +16 -4
  912. package/lib/esm/topology/ChainMerge.js.map +1 -1
  913. package/lib/esm/topology/Graph.js +41 -6
  914. package/lib/esm/topology/Graph.js.map +1 -1
  915. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +1 -1
  916. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js +5 -1
  917. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  918. package/lib/esm/topology/HalfEdgeGraphSearch.js +2 -0
  919. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  920. package/lib/esm/topology/HalfEdgeGraphSpineContext.js +9 -2
  921. package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  922. package/lib/esm/topology/HalfEdgeGraphValidation.js +7 -9
  923. package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
  924. package/lib/esm/topology/HalfEdgeMarkSet.js +5 -0
  925. package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
  926. package/lib/esm/topology/HalfEdgeNodeXYZUV.js +6 -0
  927. package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  928. package/lib/esm/topology/HalfEdgePointInGraphSearch.js +1 -0
  929. package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  930. package/lib/esm/topology/HalfEdgePositionDetail.js +16 -0
  931. package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
  932. package/lib/esm/topology/HalfEdgePriorityQueue.js +2 -0
  933. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
  934. package/lib/esm/topology/InsertAndRetriangulateContext.js +4 -0
  935. package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
  936. package/lib/esm/topology/MaskManager.js +3 -0
  937. package/lib/esm/topology/MaskManager.js.map +1 -1
  938. package/lib/esm/topology/Merging.js +11 -6
  939. package/lib/esm/topology/Merging.js.map +1 -1
  940. package/lib/esm/topology/RegularizeFace.js +22 -0
  941. package/lib/esm/topology/RegularizeFace.js.map +1 -1
  942. package/lib/esm/topology/SignedDataSummary.js +22 -0
  943. package/lib/esm/topology/SignedDataSummary.js.map +1 -1
  944. package/lib/esm/topology/Triangulation.js +21 -11
  945. package/lib/esm/topology/Triangulation.js.map +1 -1
  946. package/lib/esm/topology/XYParitySearchContext.js +13 -0
  947. package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
  948. package/package.json +9 -9
@@ -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":["/*---------------------------------------------------------------------------------------------\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) 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[] { return this._contours; }\n /** Return clones of all the sweep contours\n * * See also cloneContours, which returns the spatial 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 /** Return clones of all the contours\n * * See also cloneContours, which returns the contours in their local coordinate systems\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 /** 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) 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 { return other instanceof RuledSweep; }\n /** test same contour geometry and capping. */\n public override isAlmostEqual(other: GeometryQuery): boolean {\n if (other instanceof RuledSweep) {\n if (this.capped !== other.capped) return false;\n if (this._contours.length !== other._contours.length) 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(this._contours[section0].curves, 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 /** 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 /** Construct a CurveCollection with the same structure as collectionA and collectionB, with primitives constructed 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(collectionA: CurveCollection, collectionB: CurveCollection, primitiveMutator: CurvePrimitiveMutator): 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, as observed by\n * * cap flag\n * identical first and last contours.\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}\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":["/*---------------------------------------------------------------------------------------------\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/** 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.\n *\n * - \"box\" => [[Box]]\n * - \"cone\" => [[Cone]]\n * - \"sphere\" => [[Sphere]]\n * - \"linearSweep\" => [[LinearSweep]]\n * - \"rotationalSweep\" => [[RotationalSweep]]\n * - \"ruledSweep\" => [[RuledSweep]]\n * - \"torusPipe\" => [[TorusPipe]]\n *\n * @public\n */\nexport type SolidPrimitiveType = \"box\" | \"cone\" | \"sphere\" | \"linearSweep\" | \"rotationalSweep\" | \"ruledSweep\" | \"torusPipe\";\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 *\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\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) { super(); this._capped = capped; }\n /** Whether this is a capped solid */\n public get capped(): boolean { return this._capped; }\n public set capped(capped: boolean) { this._capped = capped; }\n /** Return a cross section at specified vFraction. */\n public abstract constantVSection(_vFraction: number): CurveCollection | undefined;\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"]}
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();
@@ -1 +1 @@
1
- {"version":3,"file":"Sphere.js","sourceRoot":"","sources":["../../../src/solid/Sphere.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 { Arc3d } from \"../curve/Arc3d\";\nimport { CurveCollection } from \"../curve/CurveCollection\";\nimport { GeometryQuery } from \"../curve/GeometryQuery\";\nimport { LineString3d } from \"../curve/LineString3d\";\nimport { Loop } from \"../curve/Loop\";\nimport { StrokeOptions } from \"../curve/StrokeOptions\";\nimport { Geometry } from \"../Geometry\";\nimport { AngleSweep } from \"../geometry3d/AngleSweep\";\nimport { GeometryHandler, UVSurface } from \"../geometry3d/GeometryHandler\";\nimport { Matrix3d } from \"../geometry3d/Matrix3d\";\nimport { Plane3dByOriginAndVectors } from \"../geometry3d/Plane3dByOriginAndVectors\";\nimport { Vector2d } from \"../geometry3d/Point2dVector2d\";\nimport { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\nimport { Range3d } from \"../geometry3d/Range\";\nimport { Transform } from \"../geometry3d/Transform\";\nimport { SolidPrimitive } from \"./SolidPrimitive\";\n\n/**\n * A Sphere is\n *\n * * A unit sphere (but read on ....)\n * * mapped by an arbitrary (possibly skewed, non-uniform scaled) transform\n * * hence possibly the final geometry is ellipsoidal\n * @public\n */\nexport class Sphere extends SolidPrimitive implements UVSurface {\n /** String name for schema properties */\n public readonly solidPrimitiveType = \"sphere\";\n\n private _localToWorld: Transform; // local coordinates = unit sphere at origin\n private _latitudeSweep: AngleSweep;\n /** Return the latitude (in radians) all fractional v. */\n public vFractionToRadians(v: number): number {\n return this._latitudeSweep.fractionToRadians(v);\n }\n /** Return the longitude (in radians) all fractional u. */\n public uFractionToRadians(u: number): number {\n return u * Math.PI * 2.0;\n }\n\n /** Constructor CAPTURES inputs */\n private constructor(localToWorld: Transform, latitudeSweep: AngleSweep, capped: boolean) {\n super(capped);\n this._localToWorld = localToWorld;\n this._latitudeSweep = latitudeSweep;\n this._latitudeSweep.capLatitudeInPlace();\n }\n /** return a deep clone */\n public clone(): Sphere {\n return new Sphere(this._localToWorld.clone(), this._latitudeSweep.clone(), this.capped);\n }\n /**\n * Transform the sphere in place.\n * * Fails if the transform is singular.\n */\n public tryTransformInPlace(transform: Transform): boolean {\n if (transform.matrix.isSingular())\n return false;\n transform.multiplyTransformTransform(this._localToWorld, this._localToWorld);\n if (transform.matrix.determinant() < 0.0)\n this._latitudeSweep.reverseInPlace();\n return true;\n }\n /**\n * Return a transformed clone.\n * * Fails if the transform is singular.\n */\n public cloneTransformed(transform: Transform): Sphere | undefined {\n const result = this.clone();\n return result.tryTransformInPlace(transform) ? result : undefined;\n }\n /** Return a coordinate frame (right handed, unit axes)\n * * origin at sphere center\n * * equator in xy plane\n * * z axis perpendicular\n */\n public getConstructiveFrame(): Transform | undefined {\n return this._localToWorld.cloneRigid();\n }\n /** Return the latitude sweep as fraction of south pole to north pole. */\n public get latitudeSweepFraction(): number { return this._latitudeSweep.sweepRadians / Math.PI; }\n /** Create from center and radius, with optional restricted latitudes. */\n public static createCenterRadius(center: Point3d, radius: number, latitudeSweep?: AngleSweep): Sphere {\n const localToWorld = Transform.createOriginAndMatrix(center, Matrix3d.createUniformScale(radius));\n return new Sphere(localToWorld, latitudeSweep ? latitudeSweep.clone() : AngleSweep.createFullLatitude(), false);\n }\n /** Create an ellipsoid which is a unit sphere mapped to position by an (arbitrary, possibly skewed and scaled) transform. */\n public static createEllipsoid(localToWorld: Transform, latitudeSweep: AngleSweep, capped: boolean): Sphere | undefined {\n return new Sphere(localToWorld.clone(), latitudeSweep.clone(), capped);\n }\n\n /** Create a sphere from the typical parameters of the Dgn file */\n public static createDgnSphere(center: Point3d, vectorX: Vector3d, vectorZ: Vector3d, radiusXY: number, radiusZ: number,\n latitudeSweep: AngleSweep,\n capped: boolean): Sphere | undefined {\n const vectorY = vectorX.rotate90Around(vectorZ);\n if (vectorY && !vectorX.isParallelTo(vectorZ)) {\n const matrix = Matrix3d.createColumns(vectorX, vectorY, vectorZ);\n matrix.scaleColumns(radiusXY, radiusXY, radiusZ, matrix);\n const frame = Transform.createOriginAndMatrix(center, matrix);\n return new Sphere(frame, latitudeSweep.clone(), capped);\n }\n return undefined;\n }\n\n /** Create a sphere from the typical parameters of the Dgn file */\n public static createFromAxesAndScales(center: Point3d, axes: undefined | Matrix3d, radiusX: number, radiusY: number, radiusZ: number,\n latitudeSweep: AngleSweep | undefined,\n capped: boolean): Sphere | undefined {\n const localToWorld = Transform.createOriginAndMatrix(center, axes);\n localToWorld.matrix.scaleColumnsInPlace(radiusX, radiusY, radiusZ);\n return new Sphere(localToWorld, latitudeSweep ? latitudeSweep.clone() : AngleSweep.createFullLatitude(), capped);\n }\n\n /** return (copy of) sphere center */\n public cloneCenter(): Point3d { return this._localToWorld.getOrigin(); }\n /** return the (full length, i.e. scaled by radius) X vector from the sphere transform */\n public cloneVectorX(): Vector3d { return this._localToWorld.matrix.columnX(); }\n /** return the (full length, i.e. scaled by radius) Y vector from the sphere transform */\n public cloneVectorY(): Vector3d { return this._localToWorld.matrix.columnY(); }\n /** return the (full length, i.e. scaled by radius) Z vector from the sphere transform */\n public cloneVectorZ(): Vector3d { return this._localToWorld.matrix.columnZ(); }\n /** return (a copy of) the sphere's angle sweep. */\n public cloneLatitudeSweep(): AngleSweep { return this._latitudeSweep.clone(); }\n /** Test if the geometry is a true sphere taking the transform (which might have nonuniform scaling) is applied. */\n public trueSphereRadius(): number | undefined {\n const factors = this._localToWorld.matrix.factorRigidWithSignedScale();\n if (!factors) return undefined;\n if (factors && factors.scale > 0) // why do we rule out mirror?\n return factors.scale;\n return undefined;\n }\n /**\n * Return the largest of the primary xyz axis radii\n */\n public maxAxisRadius(): number {\n const matrix = this._localToWorld.matrix;\n return Geometry.maxXYZ(matrix.columnXMagnitude(), matrix.columnYMagnitude(), matrix.columnZMagnitude());\n }\n /**\n * Return a (clone of) the sphere's local to world transformation.\n */\n public cloneLocalToWorld(): Transform { return this._localToWorld.clone(); }\n /** Test if `other` is a `Sphere` */\n public isSameGeometryClass(other: any): boolean { return other instanceof Sphere; }\n /** Test for same geometry in `other` */\n public override isAlmostEqual(other: GeometryQuery): boolean {\n if (other instanceof Sphere) {\n if (this.capped !== other.capped) return false;\n if (!this._localToWorld.isAlmostEqual(other._localToWorld)) return false;\n return true;\n }\n return false;\n }\n /**\n * Return strokes for the elliptical arc cross-section at latitude sweep fraction v.\n * * Optional inputs control the number of strokes along the cross-section:\n * * If `fixedStrokeCount` is supplied, it is taken as the cross-section stroke count.\n * * If `fixedStrokeCount` is undefined, stroke count is computed by applying `options` to the cross-section.\n * * If neither input is supplied, the stroke count default is 16.\n * * In any case, stroke count is clamped to the interval [4,64].\n * @param v fractional position along the sphere axis\n * @param fixedStrokeCount optional stroke count in u-direction\n * @param options optional stroke options in u-direction\n * @return strokes as line string\n */\n public strokeConstantVSection(v: number, fixedStrokeCount?: number, options?: StrokeOptions): LineString3d {\n let strokeCount = 16;\n if (fixedStrokeCount !== undefined && Number.isFinite(fixedStrokeCount)) {\n strokeCount = fixedStrokeCount;\n } else if (options instanceof StrokeOptions) {\n strokeCount = options.applyTolerancesToArc(Geometry.maxXY(this._localToWorld.matrix.columnXMagnitude(), this._localToWorld.matrix.columnYMagnitude()));\n }\n strokeCount = Geometry.clampToStartEnd(strokeCount, 4, 64);\n const transform = this._localToWorld;\n const phi = this.vFractionToRadians(v);\n const c1 = Math.cos(phi);\n const s1 = Math.sin(phi);\n let c0, s0;\n const result = LineString3d.createForStrokes(strokeCount, options);\n const deltaRadians = Math.PI * 2.0 / strokeCount;\n const fractions = result.fractions; // possibly undefined !!!\n const derivatives = result.packedDerivatives; // possibly undefined !!!\n const uvParams = result.packedUVParams; // possibly undefined !!\n const surfaceNormals = result.packedSurfaceNormals;\n const dXdu = Vector3d.create();\n const dXdv = Vector3d.create();\n const normal = Vector3d.create();\n let radians = 0;\n for (let i = 0; i <= strokeCount; i++) {\n if (i * 2 <= strokeCount)\n radians = i * deltaRadians;\n else\n radians = (i - strokeCount) * deltaRadians;\n c0 = Math.cos(radians);\n s0 = Math.sin(radians);\n const xyz = transform.multiplyXYZ(c1 * c0, c1 * s0, s1);\n result.addPoint(xyz);\n\n if (fractions)\n fractions.push(i / strokeCount);\n\n if (derivatives) {\n transform.matrix.multiplyXYZ(-c1 * s0, c1 * c0, 0.0, dXdu);\n derivatives.push(dXdu);\n }\n if (uvParams) {\n uvParams.pushXY(i / strokeCount, v);\n }\n if (surfaceNormals) {\n transform.matrix.multiplyXYZ(-s0, c0, 0, dXdu);\n transform.matrix.multiplyXYZ(-s1 * c0, -s1 * s0, c1, dXdv);\n dXdu.unitCrossProduct(dXdv, normal);\n surfaceNormals.push(normal);\n }\n }\n return result;\n }\n\n /** Second step of double dispatch: call `handler.handleSphere(this)` */\n public dispatchToGeometryHandler(handler: GeometryHandler): any {\n return handler.handleSphere(this);\n }\n /**\n * Return the Arc3d section at vFraction. For the sphere, this is a latitude circle.\n * @param vFraction fractional position along the sweep direction\n */\n public constantVSection(vFraction: number): CurveCollection | undefined {\n const phi = this._latitudeSweep.fractionToRadians(vFraction);\n const s1 = Math.sin(phi);\n const c1 = Math.cos(phi);\n const transform = this._localToWorld;\n const center = transform.multiplyXYZ(0, 0, s1);\n const vector0 = transform.matrix.multiplyXYZ(c1, 0, 0);\n const vector90 = transform.matrix.multiplyXYZ(0, c1, 0);\n return Loop.create(Arc3d.create(center, vector0, vector90));\n }\n /** Extend a range to contain this sphere. */\n public extendRange(range: Range3d, transform?: Transform): void {\n let placement = this._localToWorld;\n if (transform) {\n placement = transform.multiplyTransformTransform(placement);\n }\n\n range.extendTransformedXYZ(placement, -1, -1, -1);\n range.extendTransformedXYZ(placement, 1, -1, -1);\n range.extendTransformedXYZ(placement, -1, 1, -1);\n range.extendTransformedXYZ(placement, 1, 1, -1);\n\n range.extendTransformedXYZ(placement, -1, -1, 1);\n range.extendTransformedXYZ(placement, 1, -1, 1);\n range.extendTransformedXYZ(placement, -1, 1, 1);\n range.extendTransformedXYZ(placement, 1, 1, 1);\n\n }\n /** Evaluate as a uv surface\n * @param uFraction fractional position on minor arc (theta, longitude)\n * @param vFraction fractional position on major arc (phi, latitude)\n */\n public uvFractionToPoint(uFraction: number, vFraction: number, result?: Point3d): Point3d {\n // sphere with radius 1 . . .\n const thetaRadians = this.uFractionToRadians(uFraction);\n const phiRadians = this.vFractionToRadians(vFraction);\n const cosTheta = Math.cos(thetaRadians);\n const sinTheta = Math.sin(thetaRadians);\n const sinPhi = Math.sin(phiRadians);\n const cosPhi = Math.cos(phiRadians);\n return this._localToWorld.multiplyXYZ(cosTheta * cosPhi, sinTheta * cosPhi, sinPhi, result);\n }\n /** Evaluate as a uv surface, returning point and two vectors.\n * @param uFraction fractional position on minor arc (theta, longitude)\n * @param vFraction fractional position on major arc (phi, latitude)\n */\n public uvFractionToPointAndTangents(uFraction: number, vFraction: number, result?: Plane3dByOriginAndVectors): Plane3dByOriginAndVectors {\n const thetaRadians = this.uFractionToRadians(uFraction);\n const phiRadians = this.vFractionToRadians(vFraction);\n const fTheta = Math.PI * 2.0;\n const fPhi = this._latitudeSweep.sweepRadians;\n const cosTheta = Math.cos(thetaRadians);\n const sinTheta = Math.sin(thetaRadians);\n const sinPhi = Math.sin(phiRadians);\n const cosPhi = Math.cos(phiRadians);\n return Plane3dByOriginAndVectors.createOriginAndVectors(\n this._localToWorld.multiplyXYZ(cosTheta * cosPhi, sinTheta * cosPhi, sinPhi),\n this._localToWorld.matrix.multiplyXYZ(-fTheta * sinTheta, fTheta * cosTheta, 0), // !!! note cosTheta term is omitted -- scale is wrong, but remains non-zero at poles.\n this._localToWorld.matrix.multiplyXYZ(-fPhi * cosTheta * sinPhi, -fPhi * sinTheta * sinPhi, fPhi * cosPhi),\n result);\n }\n /**\n * * A sphere is can be closed two ways:\n * * full sphere (no caps needed for closure)\n * * incomplete but with caps\n * @return true if this is a closed volume.\n */\n public get isClosedVolume(): boolean {\n return this.capped || this._latitudeSweep.isFullLatitudeSweep;\n }\n /**\n * Directional distance query\n * * u direction is around latitude circle at maximum distance from axis.\n * * v direction is on a line of longitude between the latitude limits.\n */\n public maxIsoParametricDistance(): Vector2d {\n // approximate radius at equator .. if elliptic, this is not exact . . .\n const rX = this._localToWorld.matrix.columnXMagnitude();\n const rY = this._localToWorld.matrix.columnYMagnitude();\n const rZ = this._localToWorld.matrix.columnZMagnitude();\n const rMaxU = Math.max(rX, rY);\n let dMaxU = Math.PI * 2.0 * rMaxU;\n if (!this._latitudeSweep.isRadiansInSweep(0.0))\n dMaxU *= Math.max(Math.cos(Math.abs(this._latitudeSweep.startRadians)), Math.cos(Math.abs(this._latitudeSweep.endRadians)));\n const dMaxV = Math.max(rMaxU, rZ) * Math.abs(this._latitudeSweep.sweepRadians);\n\n return Vector2d.create(dMaxU, dMaxV);\n }\n}\n"]}
1
+ {"version":3,"file":"Sphere.js","sourceRoot":"","sources":["../../../src/solid/Sphere.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 { Arc3d } from \"../curve/Arc3d\";\nimport { CurveCollection } from \"../curve/CurveCollection\";\nimport { GeometryQuery } from \"../curve/GeometryQuery\";\nimport { LineString3d } from \"../curve/LineString3d\";\nimport { Loop } from \"../curve/Loop\";\nimport { StrokeOptions } from \"../curve/StrokeOptions\";\nimport { Geometry } from \"../Geometry\";\nimport { AngleSweep } from \"../geometry3d/AngleSweep\";\nimport { GeometryHandler, UVSurface } from \"../geometry3d/GeometryHandler\";\nimport { Matrix3d } from \"../geometry3d/Matrix3d\";\nimport { Plane3dByOriginAndVectors } from \"../geometry3d/Plane3dByOriginAndVectors\";\nimport { Vector2d } from \"../geometry3d/Point2dVector2d\";\nimport { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\nimport { Range3d } from \"../geometry3d/Range\";\nimport { Transform } from \"../geometry3d/Transform\";\nimport { SolidPrimitive } from \"./SolidPrimitive\";\n\n/**\n * A Sphere is\n *\n * * A unit sphere (but read on ....)\n * * mapped by an arbitrary (possibly skewed, non-uniform scaled) transform\n * * hence possibly the final geometry is ellipsoidal\n * @public\n */\nexport class Sphere extends SolidPrimitive implements UVSurface {\n /** String name for schema properties */\n public readonly solidPrimitiveType = \"sphere\";\n\n private _localToWorld: Transform; // local coordinates = unit sphere at origin\n private _latitudeSweep: AngleSweep;\n /** Return the latitude (in radians) all fractional v. */\n public vFractionToRadians(v: number): number {\n return this._latitudeSweep.fractionToRadians(v);\n }\n /** Return the longitude (in radians) all fractional u. */\n public uFractionToRadians(u: number): number {\n return u * Math.PI * 2.0;\n }\n\n /** Constructor CAPTURES inputs */\n private constructor(localToWorld: Transform, latitudeSweep: AngleSweep, capped: boolean) {\n super(capped);\n this._localToWorld = localToWorld;\n this._latitudeSweep = latitudeSweep;\n this._latitudeSweep.capLatitudeInPlace();\n }\n /** return a deep clone */\n public clone(): Sphere {\n return new Sphere(this._localToWorld.clone(), this._latitudeSweep.clone(), this.capped);\n }\n /**\n * Transform the sphere in place.\n * * Fails if the transform is singular.\n */\n public tryTransformInPlace(transform: Transform): boolean {\n if (transform.matrix.isSingular())\n return false;\n transform.multiplyTransformTransform(this._localToWorld, this._localToWorld);\n if (transform.matrix.determinant() < 0.0)\n this._latitudeSweep.reverseInPlace();\n return true;\n }\n /**\n * Return a transformed clone.\n * * Fails if the transform is singular.\n */\n public cloneTransformed(transform: Transform): Sphere | undefined {\n const result = this.clone();\n return result.tryTransformInPlace(transform) ? result : undefined;\n }\n /** Return a coordinate frame (right handed, unit axes)\n * * origin at sphere center\n * * equator in xy plane\n * * z axis perpendicular\n */\n public getConstructiveFrame(): Transform | undefined {\n return this._localToWorld.cloneRigid();\n }\n /** Return the latitude sweep as fraction of south pole to north pole. */\n public get latitudeSweepFraction(): number { return this._latitudeSweep.sweepRadians / Math.PI; }\n /** Create from center and radius, with optional restricted latitudes. */\n public static createCenterRadius(center: Point3d, radius: number, latitudeSweep?: AngleSweep): Sphere {\n const localToWorld = Transform.createOriginAndMatrix(center, Matrix3d.createUniformScale(radius));\n return new Sphere(localToWorld, latitudeSweep ? latitudeSweep.clone() : AngleSweep.createFullLatitude(), false);\n }\n /** Create an ellipsoid which is a unit sphere mapped to position by an (arbitrary, possibly skewed and scaled) transform. */\n public static createEllipsoid(localToWorld: Transform, latitudeSweep: AngleSweep, capped: boolean): Sphere | undefined {\n return new Sphere(localToWorld.clone(), latitudeSweep.clone(), capped);\n }\n\n /** Create a sphere from the typical parameters of the Dgn file */\n public static createDgnSphere(center: Point3d, vectorX: Vector3d, vectorZ: Vector3d, radiusXY: number, radiusZ: number,\n latitudeSweep: AngleSweep,\n capped: boolean): Sphere | undefined {\n const vectorY = vectorX.rotate90Around(vectorZ);\n if (vectorY && !vectorX.isParallelTo(vectorZ)) {\n const matrix = Matrix3d.createColumns(vectorX, vectorY, vectorZ);\n matrix.scaleColumns(radiusXY, radiusXY, radiusZ, matrix);\n const frame = Transform.createOriginAndMatrix(center, matrix);\n return new Sphere(frame, latitudeSweep.clone(), capped);\n }\n return undefined;\n }\n\n /** Create a sphere from the typical parameters of the Dgn file */\n public static createFromAxesAndScales(center: Point3d, axes: undefined | Matrix3d, radiusX: number, radiusY: number, radiusZ: number,\n latitudeSweep: AngleSweep | undefined,\n capped: boolean): Sphere | undefined {\n const localToWorld = Transform.createOriginAndMatrix(center, axes);\n localToWorld.matrix.scaleColumnsInPlace(radiusX, radiusY, radiusZ);\n return new Sphere(localToWorld, latitudeSweep ? latitudeSweep.clone() : AngleSweep.createFullLatitude(), capped);\n }\n\n /** return (copy of) sphere center */\n public cloneCenter(): Point3d { return this._localToWorld.getOrigin(); }\n /** return the (full length, i.e. scaled by radius) X vector from the sphere transform */\n public cloneVectorX(): Vector3d { return this._localToWorld.matrix.columnX(); }\n /** return the (full length, i.e. scaled by radius) Y vector from the sphere transform */\n public cloneVectorY(): Vector3d { return this._localToWorld.matrix.columnY(); }\n /** return the (full length, i.e. scaled by radius) Z vector from the sphere transform */\n public cloneVectorZ(): Vector3d { return this._localToWorld.matrix.columnZ(); }\n /** return (a copy of) the sphere's angle sweep. */\n public cloneLatitudeSweep(): AngleSweep { return this._latitudeSweep.clone(); }\n /** Test if the geometry is a true sphere taking the transform (which might have nonuniform scaling) is applied. */\n public trueSphereRadius(): number | undefined {\n const factors = this._localToWorld.matrix.factorRigidWithSignedScale();\n if (!factors) return undefined;\n if (factors && factors.scale > 0) // why do we rule out mirror?\n return factors.scale;\n return undefined;\n }\n /**\n * Return the largest of the primary xyz axis radii\n */\n public maxAxisRadius(): number {\n const matrix = this._localToWorld.matrix;\n return Geometry.maxXYZ(matrix.columnXMagnitude(), matrix.columnYMagnitude(), matrix.columnZMagnitude());\n }\n /**\n * Return a (clone of) the sphere's local to world transformation.\n */\n public cloneLocalToWorld(): Transform { return this._localToWorld.clone(); }\n /** Test if `other` is a `Sphere` */\n public isSameGeometryClass(other: any): boolean { return other instanceof Sphere; }\n /** Test for same geometry in `other` */\n public override isAlmostEqual(other: GeometryQuery): boolean {\n if (other instanceof Sphere) {\n if (this.capped !== other.capped) return false;\n if (!this._localToWorld.isAlmostEqual(other._localToWorld)) return false;\n return true;\n }\n return false;\n }\n /**\n * Return strokes for the elliptical arc cross-section at latitude sweep fraction v.\n * * Optional inputs control the number of strokes along the cross-section:\n * * If `fixedStrokeCount` is supplied, it is taken as the cross-section stroke count.\n * * If `fixedStrokeCount` is undefined, stroke count is computed by applying `options` to the cross-section.\n * * If neither input is supplied, the stroke count default is 16.\n * * In any case, stroke count is clamped to the interval [4,64].\n * @param v fractional position along the sphere axis\n * @param fixedStrokeCount optional stroke count in u-direction\n * @param options optional stroke options in u-direction\n * @return strokes as line string\n */\n public strokeConstantVSection(v: number, fixedStrokeCount?: number, options?: StrokeOptions): LineString3d {\n let strokeCount = 16;\n if (fixedStrokeCount !== undefined && Number.isFinite(fixedStrokeCount)) {\n strokeCount = fixedStrokeCount;\n } else if (options instanceof StrokeOptions) {\n strokeCount = options.applyTolerancesToArc(Geometry.maxXY(this._localToWorld.matrix.columnXMagnitude(), this._localToWorld.matrix.columnYMagnitude()));\n }\n strokeCount = Geometry.clampToStartEnd(strokeCount, 4, 64);\n const transform = this._localToWorld;\n const phi = this.vFractionToRadians(v);\n const c1 = Math.cos(phi);\n const s1 = Math.sin(phi);\n let c0, s0;\n const result = LineString3d.createForStrokes(strokeCount, options);\n const deltaRadians = Math.PI * 2.0 / strokeCount;\n const fractions = result.fractions; // possibly undefined !!!\n const derivatives = result.packedDerivatives; // possibly undefined !!!\n const uvParams = result.packedUVParams; // possibly undefined !!\n const surfaceNormals = result.packedSurfaceNormals;\n const dXdu = Vector3d.create();\n const dXdv = Vector3d.create();\n const normal = Vector3d.create();\n let radians = 0;\n for (let i = 0; i <= strokeCount; i++) {\n if (i * 2 <= strokeCount)\n radians = i * deltaRadians;\n else\n radians = (i - strokeCount) * deltaRadians;\n c0 = Math.cos(radians);\n s0 = Math.sin(radians);\n const xyz = transform.multiplyXYZ(c1 * c0, c1 * s0, s1);\n result.addPoint(xyz);\n\n if (fractions)\n fractions.push(i / strokeCount);\n\n if (derivatives) {\n transform.matrix.multiplyXYZ(-c1 * s0, c1 * c0, 0.0, dXdu);\n derivatives.push(dXdu);\n }\n if (uvParams) {\n uvParams.pushXY(i / strokeCount, v);\n }\n if (surfaceNormals) {\n transform.matrix.multiplyXYZ(-s0, c0, 0, dXdu);\n transform.matrix.multiplyXYZ(-s1 * c0, -s1 * s0, c1, dXdv);\n dXdu.unitCrossProduct(dXdv, normal);\n surfaceNormals.push(normal);\n }\n }\n return result;\n }\n\n /** Second step of double dispatch: call `handler.handleSphere(this)` */\n public dispatchToGeometryHandler(handler: GeometryHandler): any {\n return handler.handleSphere(this);\n }\n /**\n * Return the Arc3d section at vFraction. For the sphere, this is a latitude circle.\n * @param vFraction fractional position along the sweep direction\n */\n public constantVSection(vFraction: number): CurveCollection | undefined {\n const phi = this._latitudeSweep.fractionToRadians(vFraction);\n const s1 = Math.sin(phi);\n const c1 = Math.cos(phi);\n const transform = this._localToWorld;\n const center = transform.multiplyXYZ(0, 0, s1);\n const vector0 = transform.matrix.multiplyXYZ(c1, 0, 0);\n const vector90 = transform.matrix.multiplyXYZ(0, c1, 0);\n return Loop.create(Arc3d.create(center, vector0, vector90));\n }\n /** Extend a range to contain this sphere. */\n public extendRange(range: Range3d, transform?: Transform): void {\n let placement = this._localToWorld;\n if (transform) {\n placement = transform.multiplyTransformTransform(placement);\n }\n\n range.extendTransformedXYZ(placement, -1, -1, -1);\n range.extendTransformedXYZ(placement, 1, -1, -1);\n range.extendTransformedXYZ(placement, -1, 1, -1);\n range.extendTransformedXYZ(placement, 1, 1, -1);\n\n range.extendTransformedXYZ(placement, -1, -1, 1);\n range.extendTransformedXYZ(placement, 1, -1, 1);\n range.extendTransformedXYZ(placement, -1, 1, 1);\n range.extendTransformedXYZ(placement, 1, 1, 1);\n\n }\n /** Evaluate as a uv surface\n * @param uFraction fractional position on minor arc (theta, longitude)\n * @param vFraction fractional position on major arc (phi, latitude)\n */\n public uvFractionToPoint(uFraction: number, vFraction: number, result?: Point3d): Point3d {\n // sphere with radius 1 . . .\n const thetaRadians = this.uFractionToRadians(uFraction);\n const phiRadians = this.vFractionToRadians(vFraction);\n const cosTheta = Math.cos(thetaRadians);\n const sinTheta = Math.sin(thetaRadians);\n const sinPhi = Math.sin(phiRadians);\n const cosPhi = Math.cos(phiRadians);\n return this._localToWorld.multiplyXYZ(cosTheta * cosPhi, sinTheta * cosPhi, sinPhi, result);\n }\n /** Evaluate as a uv surface, returning point and two vectors.\n * @param uFraction fractional position on minor arc (theta, longitude)\n * @param vFraction fractional position on major arc (phi, latitude)\n */\n public uvFractionToPointAndTangents(uFraction: number, vFraction: number, result?: Plane3dByOriginAndVectors): Plane3dByOriginAndVectors {\n const thetaRadians = this.uFractionToRadians(uFraction);\n const phiRadians = this.vFractionToRadians(vFraction);\n const fTheta = Math.PI * 2.0;\n const fPhi = this._latitudeSweep.sweepRadians;\n const cosTheta = Math.cos(thetaRadians);\n const sinTheta = Math.sin(thetaRadians);\n const sinPhi = Math.sin(phiRadians);\n const cosPhi = Math.cos(phiRadians);\n return Plane3dByOriginAndVectors.createOriginAndVectors(\n this._localToWorld.multiplyXYZ(cosTheta * cosPhi, sinTheta * cosPhi, sinPhi),\n this._localToWorld.matrix.multiplyXYZ(-fTheta * sinTheta, fTheta * cosTheta, 0), // !!! note cosTheta term is omitted -- scale is wrong, but remains non-zero at poles.\n this._localToWorld.matrix.multiplyXYZ(-fPhi * cosTheta * sinPhi, -fPhi * sinTheta * sinPhi, fPhi * cosPhi),\n result);\n }\n /**\n * * A sphere is can be closed two ways:\n * * full sphere (no caps needed for closure)\n * * incomplete but with caps\n * @return true if this is a closed volume.\n */\n public get isClosedVolume(): boolean {\n return this.capped || this._latitudeSweep.isFullLatitudeSweep;\n }\n /**\n * Directional distance query\n * * u direction is around latitude circle at maximum distance from axis.\n * * v direction is on a line of longitude between the latitude limits.\n */\n public maxIsoParametricDistance(): Vector2d {\n // approximate radius at equator .. if elliptic, this is not exact . . .\n const rX = this._localToWorld.matrix.columnXMagnitude();\n const rY = this._localToWorld.matrix.columnYMagnitude();\n const rZ = this._localToWorld.matrix.columnZMagnitude();\n const rMaxU = Math.max(rX, rY);\n let dMaxU = Math.PI * 2.0 * rMaxU;\n if (!this._latitudeSweep.isRadiansInSweep(0.0))\n dMaxU *= Math.max(Math.cos(Math.abs(this._latitudeSweep.startRadians)), Math.cos(Math.abs(this._latitudeSweep.endRadians)));\n const dMaxV = Math.max(rMaxU, rZ) * Math.abs(this._latitudeSweep.sweepRadians);\n\n return Vector2d.create(dMaxU, dMaxV);\n }\n}\n"]}
@@ -20,27 +20,31 @@ export declare class SweepContour {
20
20
  localToWorld: Transform;
21
21
  /** Axis used only in rotational case. */
22
22
  axis: Ray3d | undefined;
23
- /** caches */
23
+ /** Caches */
24
24
  private _xyStrokes?;
25
25
  private _facets?;
26
26
  private constructor();
27
- /** Create for linear sweep.
27
+ /**
28
+ * Create for linear sweep.
28
29
  * @param contour curve to sweep, CAPTURED. For best results, contour should be planar.
29
30
  * @param defaultNormal optional default normal for guiding coordinate frame setup.
30
31
  */
31
32
  static createForLinearSweep(contour: AnyCurve, defaultNormal?: Vector3d): SweepContour | undefined;
32
- /** Create for linear sweep.
33
- * @param points polygon to sweep, CAPTURED as a Loop. Closure point is optional. If multiple polygons are passed in, parity logic is employed.
33
+ /**
34
+ * Create for linear sweep.
35
+ * @param points polygon to sweep, CAPTURED as a Loop. Closure point is optional. If multiple polygons are passed in,
36
+ * parity logic is employed.
34
37
  * For best results, all points should be coplanar.
35
38
  * @param defaultNormal optional default normal for guiding coordinate frame setup.
36
39
  */
37
40
  static createForPolygon(points: MultiLineStringDataVariant, defaultNormal?: Vector3d): SweepContour | undefined;
38
- /** Create for rotational sweep.
41
+ /**
42
+ * Create for rotational sweep.
39
43
  * @param contour curve to sweep, CAPTURED. For best results, contour should be coplanar with axis.
40
44
  * @param axis rotation axis
41
45
  */
42
46
  static createForRotation(contour: AnyCurve, axis: Ray3d): SweepContour | undefined;
43
- /** Return (Reference to) the curves */
47
+ /** Return (Reference to) the curves. */
44
48
  getCurves(): CurveCollection;
45
49
  /**
46
50
  * Apply `transform` to the curves, axis.
@@ -53,14 +57,15 @@ export declare class SweepContour {
53
57
  cloneTransformed(transform: Transform): SweepContour | undefined;
54
58
  /** Test for near equality of curves, frame, and axis. */
55
59
  isAlmostEqual(other: any): boolean;
56
- /** Recompute the local strokes cache for this contour */
60
+ /** Recompute the local strokes cache for this contour. */
57
61
  computeXYStrokes(options?: StrokeOptions): void;
58
- /** Return cached contour strokes */
62
+ /** Return cached contour strokes. */
59
63
  get xyStrokes(): CurveCollection | undefined;
60
64
  /**
61
65
  * Build the (cached) internal facets for the contour.
62
66
  * @param options primarily how to stroke the contour, but also how to facet it.
63
- * * By default, a triangulation is computed, but if `options.maximizeConvexFacets === true`, edges between coplanar triangles are removed to return maximally convex facets.
67
+ * * By default, a triangulation is computed, but if `options.maximizeConvexFacets === true`, edges between coplanar
68
+ * triangles are removed to return maximally convex facets.
64
69
  */
65
70
  buildFacets(options?: StrokeOptions): void;
66
71
  /**
@@ -68,21 +73,25 @@ export declare class SweepContour {
68
73
  * * This protects against PolyfaceBuilder reusing facets constructed with different options settings.
69
74
  */
70
75
  purgeFacets(): void;
71
- /** Emit facets to a builder.
76
+ /**
77
+ * Emit facets to a builder.
72
78
  * This method may cache and reuse facets over multiple calls.
73
79
  */
74
80
  emitFacets(builder: PolyfaceBuilder, reverse: boolean, transform?: Transform): void;
75
- /** Emit facets to a function
81
+ /**
82
+ * Emit facets to a function.
76
83
  * This method may cache and reuse facets over multiple calls.
77
- * @param announce callback to receive the facet set
78
- * @param options how to stroke the contour
84
+ * @param announce callback to receive the facet set.
85
+ * @param options how to stroke the contour.
79
86
  */
80
87
  announceFacets(announce: (facets: IndexedPolyface) => void, options?: StrokeOptions): void;
81
88
  /**
82
89
  * Create a UnionOfConvexClipPlaneSets that clips to the swept faceted contour region.
83
90
  * @param sweepVector the sweep direction and distance:
84
- * * If undefined, the sweep direction is along the contour normal and no caps are constructed (the sweep is infinite in both directions).
85
- * * If defined, the returned clipper is inverted if and only if sweepVector is in the opposite half-space as the computed contour normal.
91
+ * * If undefined, the sweep direction is along the contour normal and no caps are constructed (the sweep is infinite
92
+ * in both directions).
93
+ * * If defined, the returned clipper is inverted if and only if sweepVector is in the opposite half-space as the
94
+ * computed contour normal.
86
95
  * @param cap0 construct a clip plane equal to the contour plane. Note that `sweepVector` must be defined.
87
96
  * @param cap1 construct a clip plane parallel to the contour plane at the end of `sweepVector`.
88
97
  * @param options how to stroke the contour
@@ -1 +1 @@
1
- {"version":3,"file":"SweepContour.d.ts","sourceRoot":"","sources":["../../../src/solid/SweepContour.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,QAAQ,EAAa,MAAM,qBAAqB,CAAC;AAM1D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAW,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D;;;;GAIG;AACH,qBAAa,YAAY;IACvB,0EAA0E;IACnE,MAAM,EAAE,eAAe,CAAC;IAC/B,yEAAyE;IAClE,YAAY,EAAE,SAAS,CAAC;IAC/B,yCAAyC;IAClC,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC;IAE/B,aAAa;IACb,OAAO,CAAC,UAAU,CAAC,CAAkB;IACrC,OAAO,CAAC,OAAO,CAAC,CAAkB;IAElC,OAAO;IAaP;;;OAGG;WACW,oBAAoB,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,SAAS;IAOzG;;;;OAIG;WACW,gBAAgB,CAAC,MAAM,EAAE,0BAA0B,EAAE,aAAa,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,SAAS;IAiBtH;;;OAGG;WACW,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,GAAG,YAAY,GAAG,SAAS;IAQzF,uCAAuC;IAChC,SAAS,IAAI,eAAe;IACnC;;;OAGG;IACI,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO;IAgBzD,2BAA2B;IACpB,KAAK,IAAI,YAAY;IAG5B,kCAAkC;IAC3B,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS;IAMvE,yDAAyD;IAClD,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAezC,yDAAyD;IAClD,gBAAgB,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAStD,oCAAoC;IACpC,IAAW,SAAS,IAAI,eAAe,GAAG,SAAS,CAElD;IAED;;;;OAIG;IACI,WAAW,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAcjD;;;OAGG;IACI,WAAW;IAGlB;;OAEG;IACI,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,SAAS;IAKnF;;;;OAIG;IACI,cAAc,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAKjG;;;;;;;;;OASG;IACI,iCAAiC,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,GAAE,OAAe,EAAE,IAAI,GAAE,OAAe,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,0BAA0B,GAAG,SAAS;CA8ChL"}
1
+ {"version":3,"file":"SweepContour.d.ts","sourceRoot":"","sources":["../../../src/solid/SweepContour.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,QAAQ,EAAa,MAAM,qBAAqB,CAAC;AAM1D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAW,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D;;;;GAIG;AACH,qBAAa,YAAY;IACvB,0EAA0E;IACnE,MAAM,EAAE,eAAe,CAAC;IAC/B,yEAAyE;IAClE,YAAY,EAAE,SAAS,CAAC;IAC/B,yCAAyC;IAClC,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC;IAC/B,aAAa;IACb,OAAO,CAAC,UAAU,CAAC,CAAkB;IACrC,OAAO,CAAC,OAAO,CAAC,CAAkB;IAElC,OAAO;IAaP;;;;OAIG;WACW,oBAAoB,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,SAAS;IAOzG;;;;;;OAMG;WACW,gBAAgB,CAAC,MAAM,EAAE,0BAA0B,EAAE,aAAa,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,SAAS;IAiBtH;;;;OAIG;WACW,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,GAAG,YAAY,GAAG,SAAS;IAQzF,wCAAwC;IACjC,SAAS,IAAI,eAAe;IACnC;;;OAGG;IACI,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO;IAezD,2BAA2B;IACpB,KAAK,IAAI,YAAY;IAG5B,kCAAkC;IAC3B,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS;IAMvE,yDAAyD;IAClD,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAczC,0DAA0D;IACnD,gBAAgB,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAStD,qCAAqC;IACrC,IAAW,SAAS,IAAI,eAAe,GAAG,SAAS,CAElD;IACD;;;;;OAKG;IACI,WAAW,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAcjD;;;OAGG;IACI,WAAW;IAGlB;;;OAGG;IACI,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,SAAS;IAKnF;;;;;OAKG;IACI,cAAc,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAKjG;;;;;;;;;;;OAWG;IACI,iCAAiC,CACtC,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,GAAE,OAAe,EAAE,IAAI,GAAE,OAAe,EAAE,OAAO,CAAC,EAAE,aAAa,GAC5F,0BAA0B,GAAG,SAAS;CA8C1C"}