@itwin/core-geometry 4.1.0-dev.8 → 4.1.0-dev.81

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 (676) hide show
  1. package/CHANGELOG.md +87 -1
  2. package/lib/cjs/Geometry.js.map +1 -1
  3. package/lib/cjs/bspline/BSplineCurve.d.ts +1 -1
  4. package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -1
  5. package/lib/cjs/bspline/BSplineCurve.js +2 -2
  6. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  7. package/lib/cjs/bspline/BSplineSurface.d.ts.map +1 -1
  8. package/lib/cjs/bspline/BSplineSurface.js +1 -1
  9. package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
  10. package/lib/cjs/bspline/BezierCurveBase.d.ts +1 -1
  11. package/lib/cjs/bspline/BezierCurveBase.d.ts.map +1 -1
  12. package/lib/cjs/bspline/BezierCurveBase.js +2 -2
  13. package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
  14. package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
  15. package/lib/cjs/clipping/AlternatingConvexClipTree.d.ts +15 -17
  16. package/lib/cjs/clipping/AlternatingConvexClipTree.d.ts.map +1 -1
  17. package/lib/cjs/clipping/AlternatingConvexClipTree.js +24 -20
  18. package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
  19. package/lib/cjs/clipping/BooleanClipFactory.d.ts +28 -28
  20. package/lib/cjs/clipping/BooleanClipFactory.d.ts.map +1 -1
  21. package/lib/cjs/clipping/BooleanClipFactory.js +28 -28
  22. package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -1
  23. package/lib/cjs/clipping/BooleanClipNode.d.ts +11 -11
  24. package/lib/cjs/clipping/BooleanClipNode.d.ts.map +1 -1
  25. package/lib/cjs/clipping/BooleanClipNode.js +11 -11
  26. package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
  27. package/lib/cjs/clipping/ClipPlane.d.ts +73 -76
  28. package/lib/cjs/clipping/ClipPlane.d.ts.map +1 -1
  29. package/lib/cjs/clipping/ClipPlane.js +105 -86
  30. package/lib/cjs/clipping/ClipPlane.js.map +1 -1
  31. package/lib/cjs/clipping/ClipPrimitive.d.ts +78 -47
  32. package/lib/cjs/clipping/ClipPrimitive.d.ts.map +1 -1
  33. package/lib/cjs/clipping/ClipPrimitive.js +112 -54
  34. package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
  35. package/lib/cjs/clipping/ClipUtils.d.ts +54 -44
  36. package/lib/cjs/clipping/ClipUtils.d.ts.map +1 -1
  37. package/lib/cjs/clipping/ClipUtils.js +33 -29
  38. package/lib/cjs/clipping/ClipUtils.js.map +1 -1
  39. package/lib/cjs/clipping/ClipVector.d.ts +39 -25
  40. package/lib/cjs/clipping/ClipVector.d.ts.map +1 -1
  41. package/lib/cjs/clipping/ClipVector.js +35 -23
  42. package/lib/cjs/clipping/ClipVector.js.map +1 -1
  43. package/lib/cjs/clipping/ConvexClipPlaneSet.d.ts +61 -38
  44. package/lib/cjs/clipping/ConvexClipPlaneSet.d.ts.map +1 -1
  45. package/lib/cjs/clipping/ConvexClipPlaneSet.js +64 -41
  46. package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
  47. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.d.ts +49 -30
  48. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.d.ts.map +1 -1
  49. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js +50 -30
  50. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  51. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.d.ts +2 -2
  52. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.d.ts.map +1 -1
  53. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js +2 -2
  54. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  55. package/lib/cjs/core-geometry.d.ts +5 -1
  56. package/lib/cjs/core-geometry.d.ts.map +1 -1
  57. package/lib/cjs/core-geometry.js +5 -1
  58. package/lib/cjs/core-geometry.js.map +1 -1
  59. package/lib/cjs/curve/Arc3d.d.ts +4 -3
  60. package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
  61. package/lib/cjs/curve/Arc3d.js +7 -5
  62. package/lib/cjs/curve/Arc3d.js.map +1 -1
  63. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +62 -42
  64. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  65. package/lib/cjs/curve/CurveChainWithDistanceIndex.js +71 -48
  66. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  67. package/lib/cjs/curve/CurveCollection.d.ts +36 -26
  68. package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
  69. package/lib/cjs/curve/CurveCollection.js +46 -39
  70. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  71. package/lib/cjs/curve/CurveCurve.d.ts +6 -2
  72. package/lib/cjs/curve/CurveCurve.d.ts.map +1 -1
  73. package/lib/cjs/curve/CurveCurve.js +13 -9
  74. package/lib/cjs/curve/CurveCurve.js.map +1 -1
  75. package/lib/cjs/curve/CurveCurveCloseApproachXY.d.ts +74 -68
  76. package/lib/cjs/curve/CurveCurveCloseApproachXY.d.ts.map +1 -1
  77. package/lib/cjs/curve/CurveCurveCloseApproachXY.js +100 -108
  78. package/lib/cjs/curve/CurveCurveCloseApproachXY.js.map +1 -1
  79. package/lib/cjs/curve/CurveCurveIntersectXY.d.ts +46 -48
  80. package/lib/cjs/curve/CurveCurveIntersectXY.d.ts.map +1 -1
  81. package/lib/cjs/curve/CurveCurveIntersectXY.js +72 -61
  82. package/lib/cjs/curve/CurveCurveIntersectXY.js.map +1 -1
  83. package/lib/cjs/curve/CurveCurveIntersectXYZ.d.ts +32 -38
  84. package/lib/cjs/curve/CurveCurveIntersectXYZ.d.ts.map +1 -1
  85. package/lib/cjs/curve/CurveCurveIntersectXYZ.js +86 -97
  86. package/lib/cjs/curve/CurveCurveIntersectXYZ.js.map +1 -1
  87. package/lib/cjs/curve/CurveFactory.d.ts +67 -3
  88. package/lib/cjs/curve/CurveFactory.d.ts.map +1 -1
  89. package/lib/cjs/curve/CurveFactory.js +75 -7
  90. package/lib/cjs/curve/CurveFactory.js.map +1 -1
  91. package/lib/cjs/curve/CurveLocationDetail.d.ts +6 -6
  92. package/lib/cjs/curve/CurveLocationDetail.d.ts.map +1 -1
  93. package/lib/cjs/curve/CurveLocationDetail.js +9 -7
  94. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  95. package/lib/cjs/curve/CurveOps.d.ts +77 -0
  96. package/lib/cjs/curve/CurveOps.d.ts.map +1 -0
  97. package/lib/cjs/curve/CurveOps.js +160 -0
  98. package/lib/cjs/curve/CurveOps.js.map +1 -0
  99. package/lib/cjs/curve/CurvePrimitive.d.ts +26 -18
  100. package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -1
  101. package/lib/cjs/curve/CurvePrimitive.js +4 -3
  102. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  103. package/lib/cjs/curve/GeometryQuery.d.ts +2 -2
  104. package/lib/cjs/curve/GeometryQuery.d.ts.map +1 -1
  105. package/lib/cjs/curve/GeometryQuery.js +2 -2
  106. package/lib/cjs/curve/GeometryQuery.js.map +1 -1
  107. package/lib/cjs/curve/LineSegment3d.d.ts +7 -5
  108. package/lib/cjs/curve/LineSegment3d.d.ts.map +1 -1
  109. package/lib/cjs/curve/LineSegment3d.js +6 -6
  110. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  111. package/lib/cjs/curve/LineString3d.d.ts +2 -2
  112. package/lib/cjs/curve/LineString3d.d.ts.map +1 -1
  113. package/lib/cjs/curve/LineString3d.js +3 -3
  114. package/lib/cjs/curve/LineString3d.js.map +1 -1
  115. package/lib/cjs/curve/Loop.d.ts +7 -5
  116. package/lib/cjs/curve/Loop.d.ts.map +1 -1
  117. package/lib/cjs/curve/Loop.js +18 -6
  118. package/lib/cjs/curve/Loop.js.map +1 -1
  119. package/lib/cjs/curve/OffsetOptions.d.ts +97 -0
  120. package/lib/cjs/curve/OffsetOptions.d.ts.map +1 -0
  121. package/lib/cjs/curve/OffsetOptions.js +166 -0
  122. package/lib/cjs/curve/OffsetOptions.js.map +1 -0
  123. package/lib/cjs/curve/ParityRegion.d.ts +7 -7
  124. package/lib/cjs/curve/ParityRegion.d.ts.map +1 -1
  125. package/lib/cjs/curve/ParityRegion.js +19 -11
  126. package/lib/cjs/curve/ParityRegion.js.map +1 -1
  127. package/lib/cjs/curve/Path.d.ts +6 -6
  128. package/lib/cjs/curve/Path.d.ts.map +1 -1
  129. package/lib/cjs/curve/Path.js +15 -9
  130. package/lib/cjs/curve/Path.js.map +1 -1
  131. package/lib/cjs/curve/ProxyCurve.d.ts +5 -7
  132. package/lib/cjs/curve/ProxyCurve.d.ts.map +1 -1
  133. package/lib/cjs/curve/ProxyCurve.js +7 -7
  134. package/lib/cjs/curve/ProxyCurve.js.map +1 -1
  135. package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
  136. package/lib/cjs/curve/RegionOps.d.ts +76 -56
  137. package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
  138. package/lib/cjs/curve/RegionOps.js +83 -60
  139. package/lib/cjs/curve/RegionOps.js.map +1 -1
  140. package/lib/cjs/curve/RegionOpsClassificationSweeps.js +2 -2
  141. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  142. package/lib/cjs/curve/StrokeOptions.d.ts.map +1 -1
  143. package/lib/cjs/curve/StrokeOptions.js +6 -2
  144. package/lib/cjs/curve/StrokeOptions.js.map +1 -1
  145. package/lib/cjs/curve/UnionRegion.d.ts +6 -5
  146. package/lib/cjs/curve/UnionRegion.d.ts.map +1 -1
  147. package/lib/cjs/curve/UnionRegion.js +17 -8
  148. package/lib/cjs/curve/UnionRegion.js.map +1 -1
  149. package/lib/cjs/curve/{ChainCollectorContext.d.ts → internalContexts/ChainCollectorContext.d.ts} +4 -4
  150. package/lib/cjs/curve/internalContexts/ChainCollectorContext.d.ts.map +1 -0
  151. package/lib/cjs/curve/{ChainCollectorContext.js → internalContexts/ChainCollectorContext.js} +4 -4
  152. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -0
  153. package/lib/cjs/curve/internalContexts/GapSearchContext.d.ts +2 -1
  154. package/lib/cjs/curve/internalContexts/GapSearchContext.d.ts.map +1 -1
  155. package/lib/cjs/curve/internalContexts/GapSearchContext.js +6 -2
  156. package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
  157. package/lib/cjs/curve/internalContexts/MultiChainCollector.d.ts +59 -70
  158. package/lib/cjs/curve/internalContexts/MultiChainCollector.d.ts.map +1 -1
  159. package/lib/cjs/curve/internalContexts/MultiChainCollector.js +130 -220
  160. package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
  161. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.d.ts +14 -8
  162. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.d.ts.map +1 -1
  163. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js +14 -8
  164. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  165. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.d.ts +23 -95
  166. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -1
  167. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js +89 -178
  168. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  169. package/lib/cjs/curve/internalContexts/SumLengthsContext.d.ts.map +1 -1
  170. package/lib/cjs/curve/internalContexts/SumLengthsContext.js +4 -1
  171. package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
  172. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js +1 -1
  173. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  174. package/lib/cjs/curve/spiral/TransitionSpiral3d.d.ts +1 -1
  175. package/lib/cjs/curve/spiral/TransitionSpiral3d.d.ts.map +1 -1
  176. package/lib/cjs/curve/spiral/TransitionSpiral3d.js +2 -2
  177. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
  178. package/lib/cjs/curve/spiral/XYCurveEvaluator.js +1 -1
  179. package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
  180. package/lib/cjs/geometry3d/Angle.d.ts +9 -0
  181. package/lib/cjs/geometry3d/Angle.d.ts.map +1 -1
  182. package/lib/cjs/geometry3d/Angle.js +13 -0
  183. package/lib/cjs/geometry3d/Angle.js.map +1 -1
  184. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
  185. package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
  186. package/lib/cjs/geometry3d/BilinearPatch.d.ts +43 -48
  187. package/lib/cjs/geometry3d/BilinearPatch.d.ts.map +1 -1
  188. package/lib/cjs/geometry3d/BilinearPatch.js +51 -55
  189. package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
  190. package/lib/cjs/geometry3d/Ellipsoid.d.ts +1 -1
  191. package/lib/cjs/geometry3d/Ellipsoid.js +1 -1
  192. package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
  193. package/lib/cjs/geometry3d/FrameBuilder.d.ts.map +1 -1
  194. package/lib/cjs/geometry3d/FrameBuilder.js +13 -11
  195. package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
  196. package/lib/cjs/geometry3d/GeometryHandler.d.ts +103 -97
  197. package/lib/cjs/geometry3d/GeometryHandler.d.ts.map +1 -1
  198. package/lib/cjs/geometry3d/GeometryHandler.js +247 -124
  199. package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
  200. package/lib/cjs/geometry3d/GrowableBlockedArray.d.ts.map +1 -1
  201. package/lib/cjs/geometry3d/GrowableBlockedArray.js +1 -1
  202. package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
  203. package/lib/cjs/geometry3d/GrowableFloat64Array.d.ts.map +1 -1
  204. package/lib/cjs/geometry3d/GrowableFloat64Array.js +1 -1
  205. package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
  206. package/lib/cjs/geometry3d/Matrix3d.d.ts +18 -0
  207. package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -1
  208. package/lib/cjs/geometry3d/Matrix3d.js +32 -5
  209. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  210. package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
  211. package/lib/cjs/geometry3d/Plane3d.d.ts +41 -32
  212. package/lib/cjs/geometry3d/Plane3d.d.ts.map +1 -1
  213. package/lib/cjs/geometry3d/Plane3d.js +11 -8
  214. package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
  215. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.d.ts +37 -34
  216. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.d.ts.map +1 -1
  217. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js +65 -43
  218. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  219. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.d.ts +36 -32
  220. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.d.ts.map +1 -1
  221. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js +37 -32
  222. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  223. package/lib/cjs/geometry3d/Point2dVector2d.d.ts +8 -9
  224. package/lib/cjs/geometry3d/Point2dVector2d.d.ts.map +1 -1
  225. package/lib/cjs/geometry3d/Point2dVector2d.js +9 -10
  226. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  227. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  228. package/lib/cjs/geometry3d/Point3dVector3d.d.ts +12 -4
  229. package/lib/cjs/geometry3d/Point3dVector3d.d.ts.map +1 -1
  230. package/lib/cjs/geometry3d/Point3dVector3d.js +18 -5
  231. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  232. package/lib/cjs/geometry3d/PointHelpers.d.ts.map +1 -1
  233. package/lib/cjs/geometry3d/PointHelpers.js +5 -5
  234. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  235. package/lib/cjs/geometry3d/PolygonOps.d.ts +6 -2
  236. package/lib/cjs/geometry3d/PolygonOps.d.ts.map +1 -1
  237. package/lib/cjs/geometry3d/PolygonOps.js +31 -22
  238. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  239. package/lib/cjs/geometry3d/PolylineOps.d.ts +16 -1
  240. package/lib/cjs/geometry3d/PolylineOps.d.ts.map +1 -1
  241. package/lib/cjs/geometry3d/PolylineOps.js +55 -0
  242. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
  243. package/lib/cjs/geometry3d/Range.d.ts +134 -94
  244. package/lib/cjs/geometry3d/Range.d.ts.map +1 -1
  245. package/lib/cjs/geometry3d/Range.js +297 -145
  246. package/lib/cjs/geometry3d/Range.js.map +1 -1
  247. package/lib/cjs/geometry3d/Ray2d.d.ts +69 -0
  248. package/lib/cjs/geometry3d/Ray2d.d.ts.map +1 -0
  249. package/lib/cjs/geometry3d/Ray2d.js +146 -0
  250. package/lib/cjs/geometry3d/Ray2d.js.map +1 -0
  251. package/lib/cjs/geometry3d/Ray3d.d.ts.map +1 -1
  252. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  253. package/lib/cjs/geometry3d/Transform.d.ts +10 -3
  254. package/lib/cjs/geometry3d/Transform.d.ts.map +1 -1
  255. package/lib/cjs/geometry3d/Transform.js +18 -6
  256. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  257. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  258. package/lib/cjs/numerics/ConvexPolygon2d.d.ts +7 -49
  259. package/lib/cjs/numerics/ConvexPolygon2d.d.ts.map +1 -1
  260. package/lib/cjs/numerics/ConvexPolygon2d.js +16 -107
  261. package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
  262. package/lib/cjs/numerics/Newton.js.map +1 -1
  263. package/lib/cjs/numerics/Polynomials.d.ts.map +1 -1
  264. package/lib/cjs/numerics/Polynomials.js +0 -2
  265. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  266. package/lib/cjs/numerics/Quadrature.js +5 -5
  267. package/lib/cjs/numerics/Quadrature.js.map +1 -1
  268. package/lib/cjs/polyface/IndexedEdgeMatcher.js +1 -1
  269. package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
  270. package/lib/cjs/polyface/PolyfaceBuilder.d.ts.map +1 -1
  271. package/lib/cjs/polyface/PolyfaceBuilder.js +2 -2
  272. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  273. package/lib/cjs/polyface/PolyfaceQuery.d.ts +93 -14
  274. package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
  275. package/lib/cjs/polyface/PolyfaceQuery.js +173 -34
  276. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  277. package/lib/cjs/polyface/TaggedNumericData.js +1 -1
  278. package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
  279. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js +2 -2
  280. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  281. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.d.ts +27 -19
  282. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.d.ts.map +1 -1
  283. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js +30 -12
  284. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  285. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.d.ts +12 -8
  286. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.d.ts.map +1 -1
  287. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js +18 -4
  288. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  289. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.d.ts +3 -4
  290. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.d.ts.map +1 -1
  291. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js +3 -5
  292. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  293. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  294. package/lib/cjs/polyface/multiclip/Range2dSearchInterface.d.ts +15 -12
  295. package/lib/cjs/polyface/multiclip/Range2dSearchInterface.d.ts.map +1 -1
  296. package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  297. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.d.ts +38 -0
  298. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.d.ts.map +1 -1
  299. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js +104 -1
  300. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  301. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  302. package/lib/cjs/serialization/GeometrySamples.d.ts +11 -0
  303. package/lib/cjs/serialization/GeometrySamples.d.ts.map +1 -1
  304. package/lib/cjs/serialization/GeometrySamples.js +30 -0
  305. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  306. package/lib/cjs/serialization/IModelJsonSchema.d.ts +2 -7
  307. package/lib/cjs/serialization/IModelJsonSchema.d.ts.map +1 -1
  308. package/lib/cjs/serialization/IModelJsonSchema.js +2 -7
  309. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  310. package/lib/cjs/solid/LinearSweep.d.ts +2 -1
  311. package/lib/cjs/solid/LinearSweep.d.ts.map +1 -1
  312. package/lib/cjs/solid/LinearSweep.js.map +1 -1
  313. package/lib/cjs/solid/RotationalSweep.d.ts +2 -1
  314. package/lib/cjs/solid/RotationalSweep.d.ts.map +1 -1
  315. package/lib/cjs/solid/RotationalSweep.js.map +1 -1
  316. package/lib/cjs/solid/RuledSweep.d.ts +2 -1
  317. package/lib/cjs/solid/RuledSweep.d.ts.map +1 -1
  318. package/lib/cjs/solid/RuledSweep.js.map +1 -1
  319. package/lib/cjs/solid/SweepContour.d.ts +2 -2
  320. package/lib/cjs/solid/SweepContour.d.ts.map +1 -1
  321. package/lib/cjs/solid/SweepContour.js +9 -0
  322. package/lib/cjs/solid/SweepContour.js.map +1 -1
  323. package/lib/cjs/topology/ChainMerge.js +1 -1
  324. package/lib/cjs/topology/ChainMerge.js.map +1 -1
  325. package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
  326. package/lib/cjs/topology/HalfEdgeGraphSearch.js +1 -1
  327. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  328. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js +1 -1
  329. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  330. package/lib/cjs/topology/HalfEdgePriorityQueue.d.ts.map +1 -1
  331. package/lib/cjs/topology/HalfEdgePriorityQueue.js +1 -1
  332. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
  333. package/lib/cjs/topology/RegularizeFace.js +3 -3
  334. package/lib/cjs/topology/RegularizeFace.js.map +1 -1
  335. package/lib/cjs/topology/Triangulation.js +1 -1
  336. package/lib/cjs/topology/Triangulation.js.map +1 -1
  337. package/lib/esm/Geometry.js.map +1 -1
  338. package/lib/esm/bspline/BSplineCurve.d.ts +1 -1
  339. package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
  340. package/lib/esm/bspline/BSplineCurve.js +1 -1
  341. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  342. package/lib/esm/bspline/BSplineSurface.d.ts.map +1 -1
  343. package/lib/esm/bspline/BSplineSurface.js +1 -1
  344. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  345. package/lib/esm/bspline/BezierCurveBase.d.ts +1 -1
  346. package/lib/esm/bspline/BezierCurveBase.d.ts.map +1 -1
  347. package/lib/esm/bspline/BezierCurveBase.js +1 -1
  348. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  349. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  350. package/lib/esm/clipping/AlternatingConvexClipTree.d.ts +15 -17
  351. package/lib/esm/clipping/AlternatingConvexClipTree.d.ts.map +1 -1
  352. package/lib/esm/clipping/AlternatingConvexClipTree.js +24 -20
  353. package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
  354. package/lib/esm/clipping/BooleanClipFactory.d.ts +28 -28
  355. package/lib/esm/clipping/BooleanClipFactory.d.ts.map +1 -1
  356. package/lib/esm/clipping/BooleanClipFactory.js +28 -28
  357. package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
  358. package/lib/esm/clipping/BooleanClipNode.d.ts +11 -11
  359. package/lib/esm/clipping/BooleanClipNode.d.ts.map +1 -1
  360. package/lib/esm/clipping/BooleanClipNode.js +11 -11
  361. package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
  362. package/lib/esm/clipping/ClipPlane.d.ts +73 -76
  363. package/lib/esm/clipping/ClipPlane.d.ts.map +1 -1
  364. package/lib/esm/clipping/ClipPlane.js +105 -86
  365. package/lib/esm/clipping/ClipPlane.js.map +1 -1
  366. package/lib/esm/clipping/ClipPrimitive.d.ts +78 -47
  367. package/lib/esm/clipping/ClipPrimitive.d.ts.map +1 -1
  368. package/lib/esm/clipping/ClipPrimitive.js +112 -54
  369. package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
  370. package/lib/esm/clipping/ClipUtils.d.ts +54 -44
  371. package/lib/esm/clipping/ClipUtils.d.ts.map +1 -1
  372. package/lib/esm/clipping/ClipUtils.js +33 -29
  373. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  374. package/lib/esm/clipping/ClipVector.d.ts +39 -25
  375. package/lib/esm/clipping/ClipVector.d.ts.map +1 -1
  376. package/lib/esm/clipping/ClipVector.js +35 -23
  377. package/lib/esm/clipping/ClipVector.js.map +1 -1
  378. package/lib/esm/clipping/ConvexClipPlaneSet.d.ts +61 -38
  379. package/lib/esm/clipping/ConvexClipPlaneSet.d.ts.map +1 -1
  380. package/lib/esm/clipping/ConvexClipPlaneSet.js +64 -41
  381. package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
  382. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.d.ts +49 -30
  383. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.d.ts.map +1 -1
  384. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js +50 -30
  385. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  386. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.d.ts +2 -2
  387. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.d.ts.map +1 -1
  388. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js +2 -2
  389. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  390. package/lib/esm/core-geometry.d.ts +5 -1
  391. package/lib/esm/core-geometry.d.ts.map +1 -1
  392. package/lib/esm/core-geometry.js +5 -1
  393. package/lib/esm/core-geometry.js.map +1 -1
  394. package/lib/esm/curve/Arc3d.d.ts +4 -3
  395. package/lib/esm/curve/Arc3d.d.ts.map +1 -1
  396. package/lib/esm/curve/Arc3d.js +6 -4
  397. package/lib/esm/curve/Arc3d.js.map +1 -1
  398. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +62 -42
  399. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  400. package/lib/esm/curve/CurveChainWithDistanceIndex.js +70 -47
  401. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  402. package/lib/esm/curve/CurveCollection.d.ts +36 -26
  403. package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
  404. package/lib/esm/curve/CurveCollection.js +46 -39
  405. package/lib/esm/curve/CurveCollection.js.map +1 -1
  406. package/lib/esm/curve/CurveCurve.d.ts +6 -2
  407. package/lib/esm/curve/CurveCurve.d.ts.map +1 -1
  408. package/lib/esm/curve/CurveCurve.js +13 -9
  409. package/lib/esm/curve/CurveCurve.js.map +1 -1
  410. package/lib/esm/curve/CurveCurveCloseApproachXY.d.ts +74 -68
  411. package/lib/esm/curve/CurveCurveCloseApproachXY.d.ts.map +1 -1
  412. package/lib/esm/curve/CurveCurveCloseApproachXY.js +100 -108
  413. package/lib/esm/curve/CurveCurveCloseApproachXY.js.map +1 -1
  414. package/lib/esm/curve/CurveCurveIntersectXY.d.ts +46 -48
  415. package/lib/esm/curve/CurveCurveIntersectXY.d.ts.map +1 -1
  416. package/lib/esm/curve/CurveCurveIntersectXY.js +72 -61
  417. package/lib/esm/curve/CurveCurveIntersectXY.js.map +1 -1
  418. package/lib/esm/curve/CurveCurveIntersectXYZ.d.ts +32 -38
  419. package/lib/esm/curve/CurveCurveIntersectXYZ.d.ts.map +1 -1
  420. package/lib/esm/curve/CurveCurveIntersectXYZ.js +86 -97
  421. package/lib/esm/curve/CurveCurveIntersectXYZ.js.map +1 -1
  422. package/lib/esm/curve/CurveFactory.d.ts +67 -3
  423. package/lib/esm/curve/CurveFactory.d.ts.map +1 -1
  424. package/lib/esm/curve/CurveFactory.js +74 -6
  425. package/lib/esm/curve/CurveFactory.js.map +1 -1
  426. package/lib/esm/curve/CurveLocationDetail.d.ts +6 -6
  427. package/lib/esm/curve/CurveLocationDetail.d.ts.map +1 -1
  428. package/lib/esm/curve/CurveLocationDetail.js +9 -7
  429. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  430. package/lib/esm/curve/CurveOps.d.ts +77 -0
  431. package/lib/esm/curve/CurveOps.d.ts.map +1 -0
  432. package/lib/esm/curve/CurveOps.js +156 -0
  433. package/lib/esm/curve/CurveOps.js.map +1 -0
  434. package/lib/esm/curve/CurvePrimitive.d.ts +26 -18
  435. package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
  436. package/lib/esm/curve/CurvePrimitive.js +4 -3
  437. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  438. package/lib/esm/curve/GeometryQuery.d.ts +2 -2
  439. package/lib/esm/curve/GeometryQuery.d.ts.map +1 -1
  440. package/lib/esm/curve/GeometryQuery.js +2 -2
  441. package/lib/esm/curve/GeometryQuery.js.map +1 -1
  442. package/lib/esm/curve/LineSegment3d.d.ts +7 -5
  443. package/lib/esm/curve/LineSegment3d.d.ts.map +1 -1
  444. package/lib/esm/curve/LineSegment3d.js +5 -5
  445. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  446. package/lib/esm/curve/LineString3d.d.ts +2 -2
  447. package/lib/esm/curve/LineString3d.d.ts.map +1 -1
  448. package/lib/esm/curve/LineString3d.js +2 -2
  449. package/lib/esm/curve/LineString3d.js.map +1 -1
  450. package/lib/esm/curve/Loop.d.ts +7 -5
  451. package/lib/esm/curve/Loop.d.ts.map +1 -1
  452. package/lib/esm/curve/Loop.js +18 -6
  453. package/lib/esm/curve/Loop.js.map +1 -1
  454. package/lib/esm/curve/OffsetOptions.d.ts +97 -0
  455. package/lib/esm/curve/OffsetOptions.d.ts.map +1 -0
  456. package/lib/esm/curve/OffsetOptions.js +161 -0
  457. package/lib/esm/curve/OffsetOptions.js.map +1 -0
  458. package/lib/esm/curve/ParityRegion.d.ts +7 -7
  459. package/lib/esm/curve/ParityRegion.d.ts.map +1 -1
  460. package/lib/esm/curve/ParityRegion.js +19 -11
  461. package/lib/esm/curve/ParityRegion.js.map +1 -1
  462. package/lib/esm/curve/Path.d.ts +6 -6
  463. package/lib/esm/curve/Path.d.ts.map +1 -1
  464. package/lib/esm/curve/Path.js +15 -9
  465. package/lib/esm/curve/Path.js.map +1 -1
  466. package/lib/esm/curve/ProxyCurve.d.ts +5 -7
  467. package/lib/esm/curve/ProxyCurve.d.ts.map +1 -1
  468. package/lib/esm/curve/ProxyCurve.js +7 -7
  469. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  470. package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
  471. package/lib/esm/curve/RegionOps.d.ts +76 -56
  472. package/lib/esm/curve/RegionOps.d.ts.map +1 -1
  473. package/lib/esm/curve/RegionOps.js +84 -61
  474. package/lib/esm/curve/RegionOps.js.map +1 -1
  475. package/lib/esm/curve/RegionOpsClassificationSweeps.js +2 -2
  476. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  477. package/lib/esm/curve/StrokeOptions.d.ts.map +1 -1
  478. package/lib/esm/curve/StrokeOptions.js +6 -2
  479. package/lib/esm/curve/StrokeOptions.js.map +1 -1
  480. package/lib/esm/curve/UnionRegion.d.ts +6 -5
  481. package/lib/esm/curve/UnionRegion.d.ts.map +1 -1
  482. package/lib/esm/curve/UnionRegion.js +17 -8
  483. package/lib/esm/curve/UnionRegion.js.map +1 -1
  484. package/lib/esm/curve/{ChainCollectorContext.d.ts → internalContexts/ChainCollectorContext.d.ts} +4 -4
  485. package/lib/esm/curve/internalContexts/ChainCollectorContext.d.ts.map +1 -0
  486. package/lib/esm/curve/{ChainCollectorContext.js → internalContexts/ChainCollectorContext.js} +4 -4
  487. package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -0
  488. package/lib/esm/curve/internalContexts/GapSearchContext.d.ts +2 -1
  489. package/lib/esm/curve/internalContexts/GapSearchContext.d.ts.map +1 -1
  490. package/lib/esm/curve/internalContexts/GapSearchContext.js +6 -2
  491. package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
  492. package/lib/esm/curve/internalContexts/MultiChainCollector.d.ts +59 -70
  493. package/lib/esm/curve/internalContexts/MultiChainCollector.d.ts.map +1 -1
  494. package/lib/esm/curve/internalContexts/MultiChainCollector.js +129 -218
  495. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  496. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.d.ts +14 -8
  497. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.d.ts.map +1 -1
  498. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js +14 -8
  499. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  500. package/lib/esm/curve/internalContexts/PolygonOffsetContext.d.ts +23 -95
  501. package/lib/esm/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -1
  502. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js +86 -173
  503. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  504. package/lib/esm/curve/internalContexts/SumLengthsContext.d.ts.map +1 -1
  505. package/lib/esm/curve/internalContexts/SumLengthsContext.js +4 -1
  506. package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
  507. package/lib/esm/curve/spiral/IntegratedSpiral3d.js +1 -1
  508. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  509. package/lib/esm/curve/spiral/TransitionSpiral3d.d.ts +1 -1
  510. package/lib/esm/curve/spiral/TransitionSpiral3d.d.ts.map +1 -1
  511. package/lib/esm/curve/spiral/TransitionSpiral3d.js +1 -1
  512. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
  513. package/lib/esm/curve/spiral/XYCurveEvaluator.js +1 -1
  514. package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
  515. package/lib/esm/geometry3d/Angle.d.ts +9 -0
  516. package/lib/esm/geometry3d/Angle.d.ts.map +1 -1
  517. package/lib/esm/geometry3d/Angle.js +13 -0
  518. package/lib/esm/geometry3d/Angle.js.map +1 -1
  519. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  520. package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
  521. package/lib/esm/geometry3d/BilinearPatch.d.ts +43 -48
  522. package/lib/esm/geometry3d/BilinearPatch.d.ts.map +1 -1
  523. package/lib/esm/geometry3d/BilinearPatch.js +51 -55
  524. package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
  525. package/lib/esm/geometry3d/Ellipsoid.d.ts +1 -1
  526. package/lib/esm/geometry3d/Ellipsoid.js +1 -1
  527. package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
  528. package/lib/esm/geometry3d/FrameBuilder.d.ts.map +1 -1
  529. package/lib/esm/geometry3d/FrameBuilder.js +13 -11
  530. package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
  531. package/lib/esm/geometry3d/GeometryHandler.d.ts +103 -97
  532. package/lib/esm/geometry3d/GeometryHandler.d.ts.map +1 -1
  533. package/lib/esm/geometry3d/GeometryHandler.js +247 -124
  534. package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
  535. package/lib/esm/geometry3d/GrowableBlockedArray.d.ts.map +1 -1
  536. package/lib/esm/geometry3d/GrowableBlockedArray.js +1 -1
  537. package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
  538. package/lib/esm/geometry3d/GrowableFloat64Array.d.ts.map +1 -1
  539. package/lib/esm/geometry3d/GrowableFloat64Array.js +1 -1
  540. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
  541. package/lib/esm/geometry3d/Matrix3d.d.ts +18 -0
  542. package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -1
  543. package/lib/esm/geometry3d/Matrix3d.js +32 -5
  544. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  545. package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
  546. package/lib/esm/geometry3d/Plane3d.d.ts +41 -32
  547. package/lib/esm/geometry3d/Plane3d.d.ts.map +1 -1
  548. package/lib/esm/geometry3d/Plane3d.js +11 -8
  549. package/lib/esm/geometry3d/Plane3d.js.map +1 -1
  550. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.d.ts +37 -34
  551. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.d.ts.map +1 -1
  552. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js +65 -43
  553. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  554. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.d.ts +36 -32
  555. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.d.ts.map +1 -1
  556. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js +37 -32
  557. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  558. package/lib/esm/geometry3d/Point2dVector2d.d.ts +8 -9
  559. package/lib/esm/geometry3d/Point2dVector2d.d.ts.map +1 -1
  560. package/lib/esm/geometry3d/Point2dVector2d.js +9 -10
  561. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  562. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  563. package/lib/esm/geometry3d/Point3dVector3d.d.ts +12 -4
  564. package/lib/esm/geometry3d/Point3dVector3d.d.ts.map +1 -1
  565. package/lib/esm/geometry3d/Point3dVector3d.js +18 -5
  566. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  567. package/lib/esm/geometry3d/PointHelpers.d.ts.map +1 -1
  568. package/lib/esm/geometry3d/PointHelpers.js +5 -5
  569. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  570. package/lib/esm/geometry3d/PolygonOps.d.ts +6 -2
  571. package/lib/esm/geometry3d/PolygonOps.d.ts.map +1 -1
  572. package/lib/esm/geometry3d/PolygonOps.js +31 -22
  573. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  574. package/lib/esm/geometry3d/PolylineOps.d.ts +16 -1
  575. package/lib/esm/geometry3d/PolylineOps.d.ts.map +1 -1
  576. package/lib/esm/geometry3d/PolylineOps.js +56 -1
  577. package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
  578. package/lib/esm/geometry3d/Range.d.ts +134 -94
  579. package/lib/esm/geometry3d/Range.d.ts.map +1 -1
  580. package/lib/esm/geometry3d/Range.js +297 -145
  581. package/lib/esm/geometry3d/Range.js.map +1 -1
  582. package/lib/esm/geometry3d/Ray2d.d.ts +69 -0
  583. package/lib/esm/geometry3d/Ray2d.d.ts.map +1 -0
  584. package/lib/esm/geometry3d/Ray2d.js +142 -0
  585. package/lib/esm/geometry3d/Ray2d.js.map +1 -0
  586. package/lib/esm/geometry3d/Ray3d.d.ts.map +1 -1
  587. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  588. package/lib/esm/geometry3d/Transform.d.ts +10 -3
  589. package/lib/esm/geometry3d/Transform.d.ts.map +1 -1
  590. package/lib/esm/geometry3d/Transform.js +18 -6
  591. package/lib/esm/geometry3d/Transform.js.map +1 -1
  592. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  593. package/lib/esm/numerics/ConvexPolygon2d.d.ts +7 -49
  594. package/lib/esm/numerics/ConvexPolygon2d.d.ts.map +1 -1
  595. package/lib/esm/numerics/ConvexPolygon2d.js +14 -104
  596. package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
  597. package/lib/esm/numerics/Newton.js.map +1 -1
  598. package/lib/esm/numerics/Polynomials.d.ts.map +1 -1
  599. package/lib/esm/numerics/Polynomials.js +0 -2
  600. package/lib/esm/numerics/Polynomials.js.map +1 -1
  601. package/lib/esm/numerics/Quadrature.js +5 -5
  602. package/lib/esm/numerics/Quadrature.js.map +1 -1
  603. package/lib/esm/polyface/IndexedEdgeMatcher.js +1 -1
  604. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
  605. package/lib/esm/polyface/PolyfaceBuilder.d.ts.map +1 -1
  606. package/lib/esm/polyface/PolyfaceBuilder.js +2 -2
  607. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  608. package/lib/esm/polyface/PolyfaceQuery.d.ts +93 -14
  609. package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
  610. package/lib/esm/polyface/PolyfaceQuery.js +173 -35
  611. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  612. package/lib/esm/polyface/TaggedNumericData.js +1 -1
  613. package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
  614. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js +2 -2
  615. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  616. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.d.ts +27 -19
  617. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.d.ts.map +1 -1
  618. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js +30 -12
  619. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  620. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.d.ts +12 -8
  621. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.d.ts.map +1 -1
  622. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js +18 -4
  623. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  624. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.d.ts +3 -4
  625. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.d.ts.map +1 -1
  626. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js +3 -5
  627. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  628. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  629. package/lib/esm/polyface/multiclip/Range2dSearchInterface.d.ts +15 -12
  630. package/lib/esm/polyface/multiclip/Range2dSearchInterface.d.ts.map +1 -1
  631. package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  632. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.d.ts +38 -0
  633. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.d.ts.map +1 -1
  634. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js +102 -1
  635. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  636. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  637. package/lib/esm/serialization/GeometrySamples.d.ts +11 -0
  638. package/lib/esm/serialization/GeometrySamples.d.ts.map +1 -1
  639. package/lib/esm/serialization/GeometrySamples.js +30 -0
  640. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  641. package/lib/esm/serialization/IModelJsonSchema.d.ts +2 -7
  642. package/lib/esm/serialization/IModelJsonSchema.d.ts.map +1 -1
  643. package/lib/esm/serialization/IModelJsonSchema.js +2 -7
  644. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  645. package/lib/esm/solid/LinearSweep.d.ts +2 -1
  646. package/lib/esm/solid/LinearSweep.d.ts.map +1 -1
  647. package/lib/esm/solid/LinearSweep.js.map +1 -1
  648. package/lib/esm/solid/RotationalSweep.d.ts +2 -1
  649. package/lib/esm/solid/RotationalSweep.d.ts.map +1 -1
  650. package/lib/esm/solid/RotationalSweep.js.map +1 -1
  651. package/lib/esm/solid/RuledSweep.d.ts +2 -1
  652. package/lib/esm/solid/RuledSweep.d.ts.map +1 -1
  653. package/lib/esm/solid/RuledSweep.js.map +1 -1
  654. package/lib/esm/solid/SweepContour.d.ts +2 -2
  655. package/lib/esm/solid/SweepContour.d.ts.map +1 -1
  656. package/lib/esm/solid/SweepContour.js +9 -0
  657. package/lib/esm/solid/SweepContour.js.map +1 -1
  658. package/lib/esm/topology/ChainMerge.js +1 -1
  659. package/lib/esm/topology/ChainMerge.js.map +1 -1
  660. package/lib/esm/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
  661. package/lib/esm/topology/HalfEdgeGraphSearch.js +1 -1
  662. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  663. package/lib/esm/topology/HalfEdgeGraphSpineContext.js +1 -1
  664. package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  665. package/lib/esm/topology/HalfEdgePriorityQueue.d.ts.map +1 -1
  666. package/lib/esm/topology/HalfEdgePriorityQueue.js +1 -1
  667. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
  668. package/lib/esm/topology/RegularizeFace.js +3 -3
  669. package/lib/esm/topology/RegularizeFace.js.map +1 -1
  670. package/lib/esm/topology/Triangulation.js +1 -1
  671. package/lib/esm/topology/Triangulation.js.map +1 -1
  672. package/package.json +6 -17
  673. package/lib/cjs/curve/ChainCollectorContext.d.ts.map +0 -1
  674. package/lib/cjs/curve/ChainCollectorContext.js.map +0 -1
  675. package/lib/esm/curve/ChainCollectorContext.d.ts.map +0 -1
  676. package/lib/esm/curve/ChainCollectorContext.js.map +0 -1
@@ -16,11 +16,12 @@ import { CurvePrimitive } from "../CurvePrimitive";
16
16
  import { LineSegment3d } from "../LineSegment3d";
17
17
  import { LineString3d } from "../LineString3d";
18
18
  import { Loop } from "../Loop";
19
+ import { JointOptions, OffsetOptions } from "../OffsetOptions";
19
20
  import { Path } from "../Path";
20
21
  import { RegionOps } from "../RegionOps";
21
- import { StrokeOptions } from "../StrokeOptions";
22
+ // cspell:word CCWXY
22
23
  /**
23
- * Classification of contortions at a joint.
24
+ * Classification of how the joint is constructed.
24
25
  * @internal
25
26
  */
26
27
  var JointMode;
@@ -32,109 +33,6 @@ var JointMode;
32
33
  JointMode[JointMode["JustGeometry"] = 3] = "JustGeometry";
33
34
  JointMode[JointMode["Gap"] = 4] = "Gap";
34
35
  })(JointMode || (JointMode = {}));
35
- /**
36
- * * Control parameters for joint construction.
37
- * * Decision order is:
38
- * * if turn angle is greater than minArcDegrees, make an arc.
39
- * * if turn angle is less than or equal maxChamferTurnDegrees, extend curves along tangent to single intersection point.
40
- * * if turn angle is greater than maxChamferTurnDegrees, construct multiple lines that are tangent to the turn circle "from the outside",
41
- * with each equal turn less than maxChamferTurnDegrees.
42
- * * otherwise make single edge.
43
- * @public
44
- */
45
- export class JointOptions {
46
- /** Construct JointOptions.
47
- * * leftOffsetDistance is required
48
- * * minArcDegrees and maxChamferDegrees are optional.
49
- */
50
- constructor(leftOffsetDistance, minArcDegrees = 180, maxChamferDegrees = 90, preserveEllipticalArcs = false) {
51
- /** smallest arc to construct.
52
- * * If this control angle is large, arcs are never created.
53
- */
54
- this.minArcDegrees = 180.0;
55
- this.maxChamferTurnDegrees = 90;
56
- /** Offset distance, positive to left of base curve. */
57
- this.leftOffsetDistance = 0;
58
- /** Whether to offset elliptical arcs as elliptical arcs (true) or as B-spline curves (false, default). */
59
- this.preserveEllipticalArcs = false;
60
- this.leftOffsetDistance = leftOffsetDistance;
61
- this.minArcDegrees = minArcDegrees;
62
- this.maxChamferTurnDegrees = maxChamferDegrees;
63
- this.preserveEllipticalArcs = preserveEllipticalArcs;
64
- }
65
- /** Return a deep clone. */
66
- clone() {
67
- return new JointOptions(this.leftOffsetDistance, this.minArcDegrees, this.maxChamferTurnDegrees, this.preserveEllipticalArcs);
68
- }
69
- /** Copy values of input options */
70
- setFrom(other) {
71
- this.leftOffsetDistance = other.leftOffsetDistance;
72
- this.minArcDegrees = other.minArcDegrees;
73
- this.maxChamferTurnDegrees = other.maxChamferTurnDegrees;
74
- this.preserveEllipticalArcs = other.preserveEllipticalArcs;
75
- }
76
- /**
77
- * Parse a number or JointOptions up to JointOptions:
78
- * * If leftOffsetDistanceOptions is a number, create a JointOptions with other options set to default values.
79
- * * If leftOffsetDistanceOrOptions is a JointOptions, return it unchanged.
80
- * @param leftOffsetDistanceOrOptions
81
- */
82
- static create(leftOffsetDistanceOrOptions) {
83
- if (leftOffsetDistanceOrOptions instanceof JointOptions)
84
- return leftOffsetDistanceOrOptions;
85
- // if (Number.isFinite(leftOffsetDistanceOrOptions))
86
- return new JointOptions(leftOffsetDistanceOrOptions);
87
- }
88
- /** return true if the options indicate this amount of turn should be handled with an arc. */
89
- needArc(theta) {
90
- return Math.abs(theta.degrees) >= this.minArcDegrees;
91
- }
92
- /** Test if turn by theta should be output as single point. */
93
- numChamferPoints(theta) {
94
- const degrees = Math.abs(theta.degrees);
95
- const stepDegrees = Geometry.clamp(this.maxChamferTurnDegrees, 10, 120);
96
- if (degrees <= stepDegrees)
97
- return 1;
98
- return Math.ceil(degrees / stepDegrees);
99
- }
100
- }
101
- /**
102
- * Options for offsetting a curve.
103
- * @public
104
- */
105
- export class OffsetOptions {
106
- /** Options that are provided are captured. */
107
- constructor(offsetDistanceOrOptions, strokeOptions) {
108
- this.jointOptions = JointOptions.create(offsetDistanceOrOptions);
109
- this.strokeOptions = (strokeOptions !== undefined) ? strokeOptions : StrokeOptions.createForCurves();
110
- }
111
- get minArcDegrees() { return this.jointOptions.minArcDegrees; }
112
- set minArcDegrees(value) { this.jointOptions.minArcDegrees = value; }
113
- get maxChamferTurnDegrees() { return this.jointOptions.maxChamferTurnDegrees; }
114
- set maxChamferTurnDegrees(value) { this.jointOptions.maxChamferTurnDegrees = value; }
115
- get leftOffsetDistance() { return this.jointOptions.leftOffsetDistance; }
116
- set leftOffsetDistance(value) { this.jointOptions.leftOffsetDistance = value; }
117
- get preserveEllipticalArcs() { return this.jointOptions.preserveEllipticalArcs; }
118
- set preserveEllipticalArcs(value) { this.jointOptions.preserveEllipticalArcs = value; }
119
- /** Convert variant input into OffsetOptions.
120
- * * If a JointOptions is provided, it is captured.
121
- * * If an OffsetOptions is provided, a reference to it is returned. */
122
- static create(offsetDistanceOrOptions) {
123
- if (offsetDistanceOrOptions instanceof OffsetOptions)
124
- return offsetDistanceOrOptions;
125
- return new OffsetOptions(offsetDistanceOrOptions);
126
- }
127
- /** Convert variant input into offset distance */
128
- static getOffsetDistance(offsetDistanceOrOptions) {
129
- if (typeof offsetDistanceOrOptions === "number")
130
- return offsetDistanceOrOptions;
131
- return offsetDistanceOrOptions.leftOffsetDistance;
132
- }
133
- /** Return a deep clone. */
134
- clone() {
135
- return new OffsetOptions(this.jointOptions.clone(), this.strokeOptions.clone());
136
- }
137
- }
138
36
  /**
139
37
  * Description of geometry around a joint.
140
38
  * @internal
@@ -147,7 +45,9 @@ class Joint {
147
45
  this.swingPoint = swingPoint;
148
46
  this.flexure = JointMode.Unknown;
149
47
  }
150
- /** try to construct an arc transition from ray0 to ray1 with given center. */
48
+ /**
49
+ * Try to construct an arc transition from ray0 to ray1 with given center.
50
+ */
151
51
  static constructArc(ray0, center, ray1) {
152
52
  if (center !== undefined && Geometry.isSameCoordinate(ray0.origin.distance(center), ray1.origin.distance(center))) {
153
53
  const angle = ray0.direction.angleToXY(ray1.direction);
@@ -192,6 +92,7 @@ class Joint {
192
92
  destination.packedPoints.push(point);
193
93
  }
194
94
  }
95
+ /** Append stroke points along the offset curve defined by the Joint chain to the destination line string. */
195
96
  static collectStrokesFromChain(start, destination, maxTest = 100) {
196
97
  let numOut = -2 * maxTest; // allow extra things to happen
197
98
  Joint.visitJointsOnChain(start, (joint) => {
@@ -203,7 +104,7 @@ class Joint {
203
104
  if (fA === 0.0 && fB === 1.0)
204
105
  curve1 = joint.curve1.clone();
205
106
  else if (fA < fB)
206
- curve1 = joint.curve1.clonePartialCurve(fA, fB);
107
+ curve1 = joint.curve1.clonePartialCurve(fA, fB); // trimming is done by clonePartialCurve
207
108
  if (curve1) {
208
109
  if (!joint.jointCurve) {
209
110
  this.addPoint(destination, curve1.startPoint());
@@ -243,6 +144,7 @@ class Joint {
243
144
  }
244
145
  }
245
146
  }
147
+ /** Append CurvePrimitives along the offset curve defined by the Joint chain to the destination array. */
246
148
  static collectCurvesFromChain(start, destination, maxTest = 100) {
247
149
  if (start === undefined)
248
150
  return;
@@ -257,13 +159,13 @@ class Joint {
257
159
  if (fA === 0.0 && fB === 1.0)
258
160
  curve1 = joint.curve1.clone();
259
161
  else if (fA < fB)
260
- curve1 = joint.curve1.clonePartialCurve(fA, fB);
162
+ curve1 = joint.curve1.clonePartialCurve(fA, fB); // trimming is done by clonePartialCurve
261
163
  this.collectPrimitive(destination, curve1);
262
164
  }
263
165
  return numOut++ < maxTest;
264
166
  }, maxTest);
265
167
  }
266
- /** Execute `joint.annotateJointMode()` at all joints on the chain. */
168
+ /** Execute `joint.annotateJointMode()` at all joints on the chain to set some of the joints attributes. */
267
169
  static annotateChain(start, options, maxTest = 100) {
268
170
  if (start)
269
171
  Joint.visitJointsOnChain(start, (joint) => { joint.annotateJointMode(options); return true; }, maxTest);
@@ -271,7 +173,7 @@ class Joint {
271
173
  /**
272
174
  * Visit joints on a chain.
273
175
  * * terminate on `false` return from `callback`
274
- * @param start first (and, for cyclic chain, final) Joint
176
+ * @param start first (and, for cyclic chain, final) joint
275
177
  * @param callback function to call with each Joint as a single parameter.
276
178
  */
277
179
  static visitJointsOnChain(start, callback, maxTest = 100) {
@@ -279,7 +181,7 @@ class Joint {
279
181
  if (joint) {
280
182
  let numTest = 0;
281
183
  while (joint !== undefined) {
282
- if (numTest++ >= maxTest + 5)
184
+ if (numTest++ >= maxTest + 5) // allow extra things to happen
283
185
  return true;
284
186
  if (!callback(joint))
285
187
  return false;
@@ -295,13 +197,13 @@ class Joint {
295
197
  if (this.curve0 && this.curve1) {
296
198
  const ray0 = this.curve0.fractionToPointAndDerivative(1.0);
297
199
  const ray1 = this.curve1.fractionToPointAndDerivative(0.0);
298
- const intersection = Ray3d.closestApproachRay3dRay3d(ray0, ray1);
200
+ const intersection = Ray3d.closestApproachRay3dRay3d(ray0, ray1); // intersection of the 2 ray lines
299
201
  if (intersection.approachType === CurveCurveApproachType.Intersection) {
300
202
  if (intersection.detailA.fraction >= 0.0 && intersection.detailB.fraction <= 0.0) {
301
203
  this.fraction0 = 1.0;
302
204
  this.fraction1 = 0.0;
303
205
  this.flexure = JointMode.Extend;
304
- const theta = ray0.getDirectionRef().angleToXY(ray1.getDirectionRef());
206
+ const theta = ray0.getDirectionRef().angleToXY(ray1.getDirectionRef()); // angle between the 2 ray lines
305
207
  if (options.needArc(theta)) {
306
208
  const arc = Joint.constructArc(ray0, this.curve0.baseCurveEnd, ray1);
307
209
  if (arc) {
@@ -309,13 +211,12 @@ class Joint {
309
211
  return;
310
212
  }
311
213
  }
312
- const numChamferPoints = options.numChamferPoints(theta);
313
- if (numChamferPoints <= 1) {
214
+ const numChamferPoints = options.numChamferPoints(theta); // how many interior points in the linestring
215
+ if (numChamferPoints <= 1) { // create sharp corner
314
216
  this.jointCurve = LineString3d.create(ray0.origin, intersection.detailA.point, ray1.origin);
315
217
  return;
316
218
  }
317
- if (numChamferPoints > 1) {
318
- // A nontrivial linestring ...
219
+ if (numChamferPoints > 1) { // create chamfer corner (a line string)
319
220
  const radians0 = theta.radians;
320
221
  const numHalfStep = 2.0 * numChamferPoints;
321
222
  const halfStepRadians = radians0 / numHalfStep;
@@ -335,19 +236,20 @@ class Joint {
335
236
  }
336
237
  }
337
238
  }
338
- // desperation appears ...
239
+ // if there is no intersection between the 2 ray lines, fill the gap by a line segment
339
240
  this.flexure = JointMode.Gap;
340
241
  this.jointCurve = LineSegment3d.create(this.curve0.fractionToPoint(1.0), this.curve1.fractionToPoint(0.0));
341
242
  this.fraction0 = 1.0;
342
243
  this.fraction1 = 0.0;
343
244
  }
344
245
  }
345
- // Select the index at which summed fraction difference is smallest.
246
+ /** Select the index at which summed fraction difference is smallest */
346
247
  selectIntersectionIndexByFraction(fractionA, fractionB, intersections) {
347
248
  let index = -1;
348
249
  let aMin = Number.MAX_VALUE;
349
250
  for (let i = 0; i < intersections.length; i++) {
350
- const a = Math.abs(intersections[i].detailA.fraction - fractionA) + Math.abs(intersections[i].detailB.fraction - fractionB);
251
+ const a = Math.abs(intersections[i].detailA.fraction - fractionA)
252
+ + Math.abs(intersections[i].detailB.fraction - fractionB);
351
253
  if (a < aMin) {
352
254
  aMin = a;
353
255
  index = i;
@@ -356,42 +258,42 @@ class Joint {
356
258
  return index;
357
259
  }
358
260
  /**
359
- * Examine the adjacent geometry
360
- * * set JointMode: one of Cap Extend, or Trim
261
+ * Examine the adjacent geometry to set some of joint attributes:
262
+ * * set JointMode: one of Cap, Extend, or Trim
361
263
  * * set fraction0 and fraction1 of intersection of curve0 and curve1
264
+ * * set joint curve
362
265
  * * this REFERENCES curve0, curve1, fraction0, fraction1
363
266
  * * this does not reference nextJoint and previousJoint
364
267
  */
365
268
  annotateJointMode(options) {
366
- if (this.curve0 && !this.curve1) {
269
+ if (!this.curve0 && this.curve1) { // joint at the start of the chain
367
270
  this.flexure = JointMode.Cap;
368
- this.fraction0 = 1.0;
271
+ this.fraction1 = 0.0;
369
272
  }
370
- else if (this.curve1 && !this.curve0) {
273
+ else if (this.curve0 && !this.curve1) { // joint at the end of the chain
371
274
  this.flexure = JointMode.Cap;
372
- this.fraction1 = 0.0;
275
+ this.fraction0 = 1.0;
373
276
  }
374
- else if (this.curve0 && this.curve1) {
375
- // check for direct intersection -- occurs on offset of colinear base segments, and closed primitives
376
- if (this.curve0.endPoint().isAlmostEqual(this.curve1.startPoint())) {
277
+ else if (this.curve0 && this.curve1) { // joints at the middle of the chain
278
+ if (this.curve0.endPoint().isAlmostEqual(this.curve1.startPoint())) { // joint between colinear segments
377
279
  this.fraction0 = 1.0;
378
280
  this.fraction1 = 0.0;
379
281
  this.flexure = JointMode.Trim;
380
282
  }
381
- else if (this.curve0 instanceof LineSegment3d && this.curve1 instanceof LineSegment3d) {
382
- const ray0 = this.curve0.fractionToPointAndDerivative(0.0); // And we know that is full length ray !
383
- const ray1 = this.curve1.fractionToPointAndDerivative(0.0); // ditto
384
- const intersection = Ray3d.closestApproachRay3dRay3d(ray0, ray1);
283
+ else if (this.curve0 instanceof LineSegment3d && this.curve1 instanceof LineSegment3d) { // pair of lines
284
+ const ray0 = this.curve0.fractionToPointAndDerivative(0.0);
285
+ const ray1 = this.curve1.fractionToPointAndDerivative(0.0);
286
+ const intersection = Ray3d.closestApproachRay3dRay3d(ray0, ray1); // intersection of the 2 ray lines
385
287
  if (intersection.approachType === CurveCurveApproachType.Intersection) {
386
288
  this.fraction0 = intersection.detailA.fraction;
387
289
  this.fraction1 = intersection.detailB.fraction;
388
- if (this.fraction0 >= 1.0 && this.fraction1 <= 0.0) {
290
+ if (this.fraction0 >= 1.0 && this.fraction1 <= 0.0) { // need to extend
389
291
  this.annotateExtension(options);
390
292
  }
391
- else if (this.fraction0 < 1.0 && this.fraction1 > 0.0) {
293
+ else if (this.fraction0 < 1.0 && this.fraction1 > 0.0) { // need to trim
392
294
  this.flexure = JointMode.Trim;
393
295
  }
394
- else if (this.fraction0 > 1.0 && this.fraction1 > 1.0) {
296
+ else if (this.fraction0 > 1.0 && this.fraction1 > 1.0) { // need to fill gap with a single line segment
395
297
  this.flexure = JointMode.Gap;
396
298
  this.jointCurve = LineSegment3d.create(this.curve0.fractionToPoint(1.0), this.curve1.fractionToPoint(0.0));
397
299
  this.fraction0 = 1.0;
@@ -399,15 +301,15 @@ class Joint {
399
301
  }
400
302
  }
401
303
  }
402
- else { // generic pair of curves ...
304
+ else { // generic pair of curves
403
305
  const intersections = CurveCurve.intersectionXYPairs(this.curve0, false, this.curve1, false);
404
306
  const intersectionIndex = this.selectIntersectionIndexByFraction(1.0, 0.0, intersections);
405
- if (intersectionIndex >= 0) {
307
+ if (intersectionIndex >= 0) { // need to trim
406
308
  this.flexure = JointMode.Trim;
407
309
  this.fraction0 = intersections[intersectionIndex].detailA.fraction;
408
310
  this.fraction1 = intersections[intersectionIndex].detailB.fraction;
409
311
  }
410
- else {
312
+ else { // need to extend
411
313
  this.annotateExtension(options);
412
314
  }
413
315
  }
@@ -415,7 +317,8 @@ class Joint {
415
317
  }
416
318
  /**
417
319
  * * Examine the primitive trim fractions between each pair of joints.
418
- * * If trim fractions indicate the primitive must disappear, replace the joint pair by a new joint pointing at surrounding primitives
320
+ * * If trim fractions indicate the primitive must disappear, replace the joint pair by a new joint pointing at
321
+ * surrounding primitives
419
322
  * @param start
420
323
  */
421
324
  static removeDegeneratePrimitives(start, options, maxTest) {
@@ -450,8 +353,7 @@ class Joint {
450
353
  }
451
354
  */
452
355
  const eliminateF = f0 >= f1 || f0 > 1.0;
453
- const eliminateG = (g0 !== undefined && g0 > 1.0)
454
- || (g0 !== undefined && g1 !== undefined && g0 >= g1);
356
+ const eliminateG = (g0 !== undefined && g0 > 1.0) || (g0 !== undefined && g1 !== undefined && g0 >= g1);
455
357
  if (eliminateF && eliminateG) {
456
358
  const jointC = jointB.nextJoint;
457
359
  const newJoint = new Joint(jointA.curve0, jointC.curve1, undefined);
@@ -507,9 +409,8 @@ class Joint {
507
409
  * @internal
508
410
  */
509
411
  class PolygonWireOffsetContext {
510
- /** construct a context. */
511
- constructor() {
512
- }
412
+ /** Construct a context. */
413
+ constructor() { }
513
414
  // Construct a single offset from base points
514
415
  static createOffsetSegment(basePointA, basePointB, distance) {
515
416
  Vector3d.createStartEnd(basePointA, basePointB, this._unitAlong);
@@ -522,13 +423,25 @@ class PolygonWireOffsetContext {
522
423
  return undefined;
523
424
  }
524
425
  /**
525
- * Construct curves that are offset from a polygon.
526
- * * The construction will remove "some" local effects of features smaller than the offset distance, but will not detect self intersection with far-away edges.
527
- * @param points
528
- * @param wrap
529
- * @param offsetDistance
426
+ * Construct a wire (not area) that is offset from given polyline or polygon (which must be in xy-plane or in
427
+ * a plane parallel to xy-plane).
428
+ * * This is a simple wire offset (in the form of a line string), not an area.
429
+ * * If offsetDistance is given as a number, default OffsetOptions are applied.
430
+ * * See [[JointOptions]] class doc for offset construction rules.
431
+ * @param points a single loop or path
432
+ * @param wrap true to offset the wraparound joint. Assumes first = last point.
433
+ * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or JointOptions
434
+ * object.
530
435
  */
531
436
  constructPolygonWireXYOffset(points, wrap, leftOffsetDistanceOrOptions) {
437
+ /**
438
+ * if "wrap = true", then first and last point in the points array must be close; otherwise
439
+ * generated offset will be invalid.
440
+ */
441
+ if (wrap && !points[0].isAlmostEqual(points[points.length - 1])) {
442
+ wrap = false;
443
+ }
444
+ /** create raw offsets as a linked list (joint0) */
532
445
  const options = JointOptions.create(leftOffsetDistanceOrOptions);
533
446
  const numPoints = points.length;
534
447
  let fragment0 = PolygonWireOffsetContext.createOffsetSegment(points[0], points[1], options.leftOffsetDistance);
@@ -548,7 +461,9 @@ class PolygonWireOffsetContext {
548
461
  newJoint = new Joint(fragment0, undefined, points[numPoints - 1]);
549
462
  Joint.link(previousJoint, newJoint);
550
463
  }
464
+ /** annotateChain sets some of the joints attributes (including how to extend curves or fill the gap between curves) */
551
465
  Joint.annotateChain(joint0, options, numPoints);
466
+ /** make limited passes through the Joint chain until no self-intersections are removed */
552
467
  for (let pass = 0; pass++ < 5;) {
553
468
  const state = Joint.removeDegeneratePrimitives(joint0, options, numPoints);
554
469
  joint0 = state.newStart;
@@ -562,6 +477,7 @@ class PolygonWireOffsetContext {
562
477
  */
563
478
  }
564
479
  // Joint.collectPrimitivesFromChain(joint0, result, numPoints);
480
+ /** turn the Joint linked list into a CurveCollection (Loop or Path). trimming is done in collectStrokesFromChain */
565
481
  const chain = LineString3d.create();
566
482
  Joint.collectStrokesFromChain(joint0, chain, numPoints);
567
483
  const n = chain.packedPoints.length;
@@ -585,14 +501,13 @@ export { PolygonWireOffsetContext };
585
501
  */
586
502
  export class CurveChainWireOffsetContext {
587
503
  /** construct a context. */
588
- constructor() {
589
- }
504
+ constructor() { }
590
505
  /**
591
506
  * Annotate a CurvePrimitive with properties `baseCurveStart` and `baseCurveEnd`.
592
- * * return cp
593
- * @param cp primitive to annotate
507
+ * @param cp curve primitive to annotate
594
508
  * @param startPoint optional start point
595
509
  * @param endPoint optional end point
510
+ * @return the input CurvePrimitive with annotations
596
511
  */
597
512
  static applyBasePoints(cp, startPoint, endPoint) {
598
513
  if (cp !== undefined) {
@@ -604,39 +519,33 @@ export class CurveChainWireOffsetContext {
604
519
  return cp;
605
520
  }
606
521
  /**
607
- * Create the offset of a single primitive.
608
- * * each primitive may be labeled (as an `any` object) with start or end point of base curve:
522
+ * Create the offset of a single curve primitive as viewed in the xy-plane (ignoring z).
523
+ * * Each primitive may be labeled (as an `any` object) with start or end point of base curve:
609
524
  * * `(primitive as any).baseCurveStart: Point3d`
610
525
  * * `(primitive as any).baseCurveEnd: Point3d`
611
- * @param g primitive to offset
612
- * @param offsetDistanceOrOptions offset distance (positive to left of g), or options object
526
+ * @param curve primitive to offset
527
+ * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or options object
613
528
  */
614
- static createSingleOffsetPrimitiveXY(g, offsetDistanceOrOptions) {
615
- const offset = g.constructOffsetXY(offsetDistanceOrOptions);
529
+ static createSingleOffsetPrimitiveXY(curve, offsetDistanceOrOptions) {
530
+ const offset = curve.constructOffsetXY(offsetDistanceOrOptions);
616
531
  if (offset === undefined)
617
532
  return undefined;
618
533
  // decorate each offset with its base curve's endpoints
619
534
  if (Array.isArray(offset)) {
620
- const basePrims = g.collectCurvePrimitives(undefined, true, true);
535
+ const basePrims = curve.collectCurvePrimitives(undefined, true, true);
621
536
  if (basePrims.length !== offset.length)
622
537
  return undefined; // unexpected aggregate curve type!
623
538
  for (let i = 0; i < basePrims.length; ++i)
624
539
  this.applyBasePoints(offset[i], basePrims[i].startPoint(), basePrims[i].endPoint());
625
540
  return offset;
626
541
  }
627
- return this.applyBasePoints(offset, g.startPoint(), g.endPoint());
542
+ return this.applyBasePoints(offset, curve.startPoint(), curve.endPoint());
628
543
  }
629
544
  /**
630
545
  * Construct curves that are offset from a Path or Loop as viewed in xy-plane (ignoring z).
631
- * * The construction will remove "some" local effects of features smaller than the offset distance, but will not detect self intersection among widely separated edges.
632
- * * If offsetDistance is given as a number, default OffsetOptions are applied.
633
- * * When the offset needs to do an "outside" turn, the first applicable construction is applied:
634
- * * If the turn is larger than `options.minArcDegrees`, a circular arc is constructed.
635
- * * If the turn is less than or equal to `options.maxChamferTurnDegrees`, extend curves along tangent to single intersection point.
636
- * * If the turn is larger than `options.maxChamferDegrees`, the turn is constructed as a sequence of straight lines that are:
637
- * * outside the arc
638
- * * have uniform turn angle less than `options.maxChamferDegrees`
639
- * * each line segment (except first and last) touches the arc at its midpoint.
546
+ * * The construction will remove "some" local effects of features smaller than the offset distance, but will
547
+ * not detect self intersection among widely separated edges.
548
+ * * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/Offset
640
549
  * @param curves base curves.
641
550
  * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or options object.
642
551
  */
@@ -644,14 +553,15 @@ export class CurveChainWireOffsetContext {
644
553
  const wrap = curves instanceof Loop;
645
554
  const offsetOptions = OffsetOptions.create(offsetDistanceOrOptions);
646
555
  const simpleOffsets = [];
647
- // setup pass: get simple offsets of each primitive
556
+ /** traverse primitives (children of curves) and create simple offsets of each primitive as an array */
648
557
  for (const c of curves.children) {
649
558
  const c1 = CurveChainWireOffsetContext.createSingleOffsetPrimitiveXY(c, offsetOptions);
650
559
  if (c1 === undefined) {
651
560
  // bad .. maybe arc to inside?
652
561
  }
653
- else if (c1 instanceof CurvePrimitive)
562
+ else if (c1 instanceof CurvePrimitive) {
654
563
  simpleOffsets.push(c1);
564
+ }
655
565
  else if (Array.isArray(c1)) {
656
566
  for (const c2 of c1) {
657
567
  if (c2 instanceof CurvePrimitive)
@@ -659,6 +569,7 @@ export class CurveChainWireOffsetContext {
659
569
  }
660
570
  }
661
571
  }
572
+ /** create joints between array elements to make offsets as a linked list (joint0) */
662
573
  let fragment0;
663
574
  let newJoint;
664
575
  let previousJoint;
@@ -677,8 +588,10 @@ export class CurveChainWireOffsetContext {
677
588
  }
678
589
  if (joint0 && previousJoint && curves instanceof Loop)
679
590
  Joint.link(previousJoint, joint0);
591
+ /** annotateChain sets some of the joints attributes (including how to extend curves or fill the gap between curves) */
680
592
  const numOffset = simpleOffsets.length;
681
593
  Joint.annotateChain(joint0, offsetOptions.jointOptions, numOffset);
594
+ /** turn the Joint linked list into a CurveCollection. trimming is done in collectCurvesFromChain */
682
595
  const outputCurves = [];
683
596
  Joint.collectCurvesFromChain(joint0, outputCurves, numOffset);
684
597
  return RegionOps.createLoopPathOrBagOfCurves(outputCurves, wrap, true);