@itwin/core-geometry 4.1.0-dev.68 → 4.1.0-dev.69

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 (349) hide show
  1. package/lib/cjs/Geometry.js.map +1 -1
  2. package/lib/cjs/bspline/BSplineCurve.d.ts +1 -1
  3. package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -1
  4. package/lib/cjs/bspline/BSplineCurve.js +2 -2
  5. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  6. package/lib/cjs/bspline/BSplineSurface.d.ts.map +1 -1
  7. package/lib/cjs/bspline/BSplineSurface.js +1 -1
  8. package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
  9. package/lib/cjs/bspline/BezierCurveBase.d.ts +1 -1
  10. package/lib/cjs/bspline/BezierCurveBase.d.ts.map +1 -1
  11. package/lib/cjs/bspline/BezierCurveBase.js +2 -2
  12. package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
  13. package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
  14. package/lib/cjs/clipping/ClipUtils.js.map +1 -1
  15. package/lib/cjs/core-geometry.d.ts +3 -2
  16. package/lib/cjs/core-geometry.d.ts.map +1 -1
  17. package/lib/cjs/core-geometry.js +4 -5
  18. package/lib/cjs/core-geometry.js.map +1 -1
  19. package/lib/cjs/curve/Arc3d.d.ts +1 -1
  20. package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
  21. package/lib/cjs/curve/Arc3d.js +2 -2
  22. package/lib/cjs/curve/Arc3d.js.map +1 -1
  23. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +1 -1
  24. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  25. package/lib/cjs/curve/CurveChainWithDistanceIndex.js +2 -2
  26. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  27. package/lib/cjs/curve/CurveCollection.d.ts +2 -2
  28. package/lib/cjs/curve/CurveCollection.js +2 -2
  29. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  30. package/lib/cjs/curve/CurveCurve.js.map +1 -1
  31. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  32. package/lib/cjs/curve/CurveOps.d.ts +77 -0
  33. package/lib/cjs/curve/CurveOps.d.ts.map +1 -0
  34. package/lib/cjs/curve/CurveOps.js +160 -0
  35. package/lib/cjs/curve/CurveOps.js.map +1 -0
  36. package/lib/cjs/curve/CurvePrimitive.d.ts +13 -13
  37. package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -1
  38. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  39. package/lib/cjs/curve/GeometryQuery.d.ts +2 -2
  40. package/lib/cjs/curve/GeometryQuery.d.ts.map +1 -1
  41. package/lib/cjs/curve/GeometryQuery.js +2 -2
  42. package/lib/cjs/curve/GeometryQuery.js.map +1 -1
  43. package/lib/cjs/curve/LineSegment3d.d.ts +1 -1
  44. package/lib/cjs/curve/LineSegment3d.d.ts.map +1 -1
  45. package/lib/cjs/curve/LineSegment3d.js +2 -2
  46. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  47. package/lib/cjs/curve/LineString3d.d.ts +1 -1
  48. package/lib/cjs/curve/LineString3d.d.ts.map +1 -1
  49. package/lib/cjs/curve/LineString3d.js +2 -2
  50. package/lib/cjs/curve/LineString3d.js.map +1 -1
  51. package/lib/cjs/curve/Loop.js.map +1 -1
  52. package/lib/cjs/curve/OffsetOptions.d.ts +97 -0
  53. package/lib/cjs/curve/OffsetOptions.d.ts.map +1 -0
  54. package/lib/cjs/curve/OffsetOptions.js +166 -0
  55. package/lib/cjs/curve/OffsetOptions.js.map +1 -0
  56. package/lib/cjs/curve/ProxyCurve.d.ts +1 -1
  57. package/lib/cjs/curve/ProxyCurve.d.ts.map +1 -1
  58. package/lib/cjs/curve/ProxyCurve.js.map +1 -1
  59. package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
  60. package/lib/cjs/curve/RegionOps.d.ts +10 -13
  61. package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
  62. package/lib/cjs/curve/RegionOps.js +16 -17
  63. package/lib/cjs/curve/RegionOps.js.map +1 -1
  64. package/lib/cjs/curve/RegionOpsClassificationSweeps.js +2 -2
  65. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  66. package/lib/cjs/curve/StrokeOptions.js.map +1 -1
  67. package/lib/cjs/curve/{ChainCollectorContext.d.ts → internalContexts/ChainCollectorContext.d.ts} +4 -4
  68. package/lib/cjs/curve/internalContexts/ChainCollectorContext.d.ts.map +1 -0
  69. package/lib/cjs/curve/{ChainCollectorContext.js → internalContexts/ChainCollectorContext.js} +4 -4
  70. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -0
  71. package/lib/cjs/curve/internalContexts/MultiChainCollector.d.ts +59 -74
  72. package/lib/cjs/curve/internalContexts/MultiChainCollector.d.ts.map +1 -1
  73. package/lib/cjs/curve/internalContexts/MultiChainCollector.js +130 -223
  74. package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
  75. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  76. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.d.ts +6 -100
  77. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -1
  78. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js +12 -167
  79. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  80. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js +1 -1
  81. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  82. package/lib/cjs/curve/spiral/TransitionSpiral3d.d.ts +1 -1
  83. package/lib/cjs/curve/spiral/TransitionSpiral3d.d.ts.map +1 -1
  84. package/lib/cjs/curve/spiral/TransitionSpiral3d.js +2 -2
  85. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
  86. package/lib/cjs/curve/spiral/XYCurveEvaluator.js +1 -1
  87. package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
  88. package/lib/cjs/geometry3d/Angle.js.map +1 -1
  89. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
  90. package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
  91. package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
  92. package/lib/cjs/geometry3d/GrowableBlockedArray.d.ts.map +1 -1
  93. package/lib/cjs/geometry3d/GrowableBlockedArray.js +1 -1
  94. package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
  95. package/lib/cjs/geometry3d/GrowableFloat64Array.d.ts.map +1 -1
  96. package/lib/cjs/geometry3d/GrowableFloat64Array.js +1 -1
  97. package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
  98. package/lib/cjs/geometry3d/Matrix3d.js +5 -5
  99. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  100. package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
  101. package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
  102. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  103. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  104. package/lib/cjs/geometry3d/Point2dVector2d.d.ts +8 -9
  105. package/lib/cjs/geometry3d/Point2dVector2d.d.ts.map +1 -1
  106. package/lib/cjs/geometry3d/Point2dVector2d.js +9 -10
  107. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  108. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  109. package/lib/cjs/geometry3d/Point3dVector3d.d.ts +4 -4
  110. package/lib/cjs/geometry3d/Point3dVector3d.js +5 -5
  111. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  112. package/lib/cjs/geometry3d/PointHelpers.d.ts.map +1 -1
  113. package/lib/cjs/geometry3d/PointHelpers.js +5 -5
  114. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  115. package/lib/cjs/geometry3d/PolygonOps.d.ts +1 -2
  116. package/lib/cjs/geometry3d/PolygonOps.d.ts.map +1 -1
  117. package/lib/cjs/geometry3d/PolygonOps.js +2 -3
  118. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  119. package/lib/cjs/geometry3d/Range.js.map +1 -1
  120. package/lib/cjs/geometry3d/Ray2d.d.ts +69 -0
  121. package/lib/cjs/geometry3d/Ray2d.d.ts.map +1 -0
  122. package/lib/cjs/geometry3d/Ray2d.js +146 -0
  123. package/lib/cjs/geometry3d/Ray2d.js.map +1 -0
  124. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  125. package/lib/cjs/geometry3d/Transform.js +3 -3
  126. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  127. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  128. package/lib/cjs/numerics/ConvexPolygon2d.d.ts +7 -49
  129. package/lib/cjs/numerics/ConvexPolygon2d.d.ts.map +1 -1
  130. package/lib/cjs/numerics/ConvexPolygon2d.js +16 -107
  131. package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
  132. package/lib/cjs/numerics/Newton.js.map +1 -1
  133. package/lib/cjs/numerics/Polynomials.d.ts.map +1 -1
  134. package/lib/cjs/numerics/Polynomials.js +0 -2
  135. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  136. package/lib/cjs/numerics/Quadrature.js +5 -5
  137. package/lib/cjs/numerics/Quadrature.js.map +1 -1
  138. package/lib/cjs/polyface/IndexedEdgeMatcher.js +1 -1
  139. package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
  140. package/lib/cjs/polyface/PolyfaceBuilder.d.ts.map +1 -1
  141. package/lib/cjs/polyface/PolyfaceBuilder.js +2 -2
  142. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  143. package/lib/cjs/polyface/PolyfaceQuery.d.ts +10 -7
  144. package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
  145. package/lib/cjs/polyface/PolyfaceQuery.js +13 -12
  146. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  147. package/lib/cjs/polyface/TaggedNumericData.js +1 -1
  148. package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
  149. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js +2 -2
  150. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  151. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  152. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  153. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  154. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  155. package/lib/cjs/serialization/IModelJsonSchema.d.ts +2 -7
  156. package/lib/cjs/serialization/IModelJsonSchema.d.ts.map +1 -1
  157. package/lib/cjs/serialization/IModelJsonSchema.js +2 -7
  158. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  159. package/lib/cjs/topology/ChainMerge.js +1 -1
  160. package/lib/cjs/topology/ChainMerge.js.map +1 -1
  161. package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
  162. package/lib/cjs/topology/HalfEdgeGraphSearch.js +1 -1
  163. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  164. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js +1 -1
  165. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  166. package/lib/cjs/topology/HalfEdgePriorityQueue.d.ts.map +1 -1
  167. package/lib/cjs/topology/HalfEdgePriorityQueue.js +1 -1
  168. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
  169. package/lib/cjs/topology/RegularizeFace.js +3 -3
  170. package/lib/cjs/topology/RegularizeFace.js.map +1 -1
  171. package/lib/cjs/topology/Triangulation.js +1 -1
  172. package/lib/cjs/topology/Triangulation.js.map +1 -1
  173. package/lib/esm/Geometry.js.map +1 -1
  174. package/lib/esm/bspline/BSplineCurve.d.ts +1 -1
  175. package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
  176. package/lib/esm/bspline/BSplineCurve.js +1 -1
  177. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  178. package/lib/esm/bspline/BSplineSurface.d.ts.map +1 -1
  179. package/lib/esm/bspline/BSplineSurface.js +1 -1
  180. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  181. package/lib/esm/bspline/BezierCurveBase.d.ts +1 -1
  182. package/lib/esm/bspline/BezierCurveBase.d.ts.map +1 -1
  183. package/lib/esm/bspline/BezierCurveBase.js +1 -1
  184. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  185. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  186. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  187. package/lib/esm/core-geometry.d.ts +3 -2
  188. package/lib/esm/core-geometry.d.ts.map +1 -1
  189. package/lib/esm/core-geometry.js +3 -3
  190. package/lib/esm/core-geometry.js.map +1 -1
  191. package/lib/esm/curve/Arc3d.d.ts +1 -1
  192. package/lib/esm/curve/Arc3d.d.ts.map +1 -1
  193. package/lib/esm/curve/Arc3d.js +1 -1
  194. package/lib/esm/curve/Arc3d.js.map +1 -1
  195. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +1 -1
  196. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  197. package/lib/esm/curve/CurveChainWithDistanceIndex.js +1 -1
  198. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  199. package/lib/esm/curve/CurveCollection.d.ts +2 -2
  200. package/lib/esm/curve/CurveCollection.js +2 -2
  201. package/lib/esm/curve/CurveCollection.js.map +1 -1
  202. package/lib/esm/curve/CurveCurve.js.map +1 -1
  203. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  204. package/lib/esm/curve/CurveOps.d.ts +77 -0
  205. package/lib/esm/curve/CurveOps.d.ts.map +1 -0
  206. package/lib/esm/curve/CurveOps.js +156 -0
  207. package/lib/esm/curve/CurveOps.js.map +1 -0
  208. package/lib/esm/curve/CurvePrimitive.d.ts +13 -13
  209. package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
  210. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  211. package/lib/esm/curve/GeometryQuery.d.ts +2 -2
  212. package/lib/esm/curve/GeometryQuery.d.ts.map +1 -1
  213. package/lib/esm/curve/GeometryQuery.js +2 -2
  214. package/lib/esm/curve/GeometryQuery.js.map +1 -1
  215. package/lib/esm/curve/LineSegment3d.d.ts +1 -1
  216. package/lib/esm/curve/LineSegment3d.d.ts.map +1 -1
  217. package/lib/esm/curve/LineSegment3d.js +1 -1
  218. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  219. package/lib/esm/curve/LineString3d.d.ts +1 -1
  220. package/lib/esm/curve/LineString3d.d.ts.map +1 -1
  221. package/lib/esm/curve/LineString3d.js +1 -1
  222. package/lib/esm/curve/LineString3d.js.map +1 -1
  223. package/lib/esm/curve/Loop.js.map +1 -1
  224. package/lib/esm/curve/OffsetOptions.d.ts +97 -0
  225. package/lib/esm/curve/OffsetOptions.d.ts.map +1 -0
  226. package/lib/esm/curve/OffsetOptions.js +161 -0
  227. package/lib/esm/curve/OffsetOptions.js.map +1 -0
  228. package/lib/esm/curve/ProxyCurve.d.ts +1 -1
  229. package/lib/esm/curve/ProxyCurve.d.ts.map +1 -1
  230. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  231. package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
  232. package/lib/esm/curve/RegionOps.d.ts +10 -13
  233. package/lib/esm/curve/RegionOps.d.ts.map +1 -1
  234. package/lib/esm/curve/RegionOps.js +17 -18
  235. package/lib/esm/curve/RegionOps.js.map +1 -1
  236. package/lib/esm/curve/RegionOpsClassificationSweeps.js +2 -2
  237. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  238. package/lib/esm/curve/StrokeOptions.js.map +1 -1
  239. package/lib/esm/curve/{ChainCollectorContext.d.ts → internalContexts/ChainCollectorContext.d.ts} +4 -4
  240. package/lib/esm/curve/internalContexts/ChainCollectorContext.d.ts.map +1 -0
  241. package/lib/esm/curve/{ChainCollectorContext.js → internalContexts/ChainCollectorContext.js} +4 -4
  242. package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -0
  243. package/lib/esm/curve/internalContexts/MultiChainCollector.d.ts +59 -74
  244. package/lib/esm/curve/internalContexts/MultiChainCollector.d.ts.map +1 -1
  245. package/lib/esm/curve/internalContexts/MultiChainCollector.js +129 -221
  246. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  247. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  248. package/lib/esm/curve/internalContexts/PolygonOffsetContext.d.ts +6 -100
  249. package/lib/esm/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -1
  250. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js +9 -162
  251. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  252. package/lib/esm/curve/spiral/IntegratedSpiral3d.js +1 -1
  253. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  254. package/lib/esm/curve/spiral/TransitionSpiral3d.d.ts +1 -1
  255. package/lib/esm/curve/spiral/TransitionSpiral3d.d.ts.map +1 -1
  256. package/lib/esm/curve/spiral/TransitionSpiral3d.js +1 -1
  257. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
  258. package/lib/esm/curve/spiral/XYCurveEvaluator.js +1 -1
  259. package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
  260. package/lib/esm/geometry3d/Angle.js.map +1 -1
  261. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  262. package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
  263. package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
  264. package/lib/esm/geometry3d/GrowableBlockedArray.d.ts.map +1 -1
  265. package/lib/esm/geometry3d/GrowableBlockedArray.js +1 -1
  266. package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
  267. package/lib/esm/geometry3d/GrowableFloat64Array.d.ts.map +1 -1
  268. package/lib/esm/geometry3d/GrowableFloat64Array.js +1 -1
  269. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
  270. package/lib/esm/geometry3d/Matrix3d.js +5 -5
  271. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  272. package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
  273. package/lib/esm/geometry3d/Plane3d.js.map +1 -1
  274. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  275. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  276. package/lib/esm/geometry3d/Point2dVector2d.d.ts +8 -9
  277. package/lib/esm/geometry3d/Point2dVector2d.d.ts.map +1 -1
  278. package/lib/esm/geometry3d/Point2dVector2d.js +9 -10
  279. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  280. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  281. package/lib/esm/geometry3d/Point3dVector3d.d.ts +4 -4
  282. package/lib/esm/geometry3d/Point3dVector3d.js +5 -5
  283. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  284. package/lib/esm/geometry3d/PointHelpers.d.ts.map +1 -1
  285. package/lib/esm/geometry3d/PointHelpers.js +5 -5
  286. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  287. package/lib/esm/geometry3d/PolygonOps.d.ts +1 -2
  288. package/lib/esm/geometry3d/PolygonOps.d.ts.map +1 -1
  289. package/lib/esm/geometry3d/PolygonOps.js +2 -3
  290. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  291. package/lib/esm/geometry3d/Range.js.map +1 -1
  292. package/lib/esm/geometry3d/Ray2d.d.ts +69 -0
  293. package/lib/esm/geometry3d/Ray2d.d.ts.map +1 -0
  294. package/lib/esm/geometry3d/Ray2d.js +142 -0
  295. package/lib/esm/geometry3d/Ray2d.js.map +1 -0
  296. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  297. package/lib/esm/geometry3d/Transform.js +3 -3
  298. package/lib/esm/geometry3d/Transform.js.map +1 -1
  299. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  300. package/lib/esm/numerics/ConvexPolygon2d.d.ts +7 -49
  301. package/lib/esm/numerics/ConvexPolygon2d.d.ts.map +1 -1
  302. package/lib/esm/numerics/ConvexPolygon2d.js +14 -104
  303. package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
  304. package/lib/esm/numerics/Newton.js.map +1 -1
  305. package/lib/esm/numerics/Polynomials.d.ts.map +1 -1
  306. package/lib/esm/numerics/Polynomials.js +0 -2
  307. package/lib/esm/numerics/Polynomials.js.map +1 -1
  308. package/lib/esm/numerics/Quadrature.js +5 -5
  309. package/lib/esm/numerics/Quadrature.js.map +1 -1
  310. package/lib/esm/polyface/IndexedEdgeMatcher.js +1 -1
  311. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
  312. package/lib/esm/polyface/PolyfaceBuilder.d.ts.map +1 -1
  313. package/lib/esm/polyface/PolyfaceBuilder.js +2 -2
  314. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  315. package/lib/esm/polyface/PolyfaceQuery.d.ts +10 -7
  316. package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
  317. package/lib/esm/polyface/PolyfaceQuery.js +14 -13
  318. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  319. package/lib/esm/polyface/TaggedNumericData.js +1 -1
  320. package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
  321. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js +2 -2
  322. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  323. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  324. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  325. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  326. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  327. package/lib/esm/serialization/IModelJsonSchema.d.ts +2 -7
  328. package/lib/esm/serialization/IModelJsonSchema.d.ts.map +1 -1
  329. package/lib/esm/serialization/IModelJsonSchema.js +2 -7
  330. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  331. package/lib/esm/topology/ChainMerge.js +1 -1
  332. package/lib/esm/topology/ChainMerge.js.map +1 -1
  333. package/lib/esm/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
  334. package/lib/esm/topology/HalfEdgeGraphSearch.js +1 -1
  335. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  336. package/lib/esm/topology/HalfEdgeGraphSpineContext.js +1 -1
  337. package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  338. package/lib/esm/topology/HalfEdgePriorityQueue.d.ts.map +1 -1
  339. package/lib/esm/topology/HalfEdgePriorityQueue.js +1 -1
  340. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
  341. package/lib/esm/topology/RegularizeFace.js +3 -3
  342. package/lib/esm/topology/RegularizeFace.js.map +1 -1
  343. package/lib/esm/topology/Triangulation.js +1 -1
  344. package/lib/esm/topology/Triangulation.js.map +1 -1
  345. package/package.json +5 -16
  346. package/lib/cjs/curve/ChainCollectorContext.d.ts.map +0 -1
  347. package/lib/cjs/curve/ChainCollectorContext.js.map +0 -1
  348. package/lib/esm/curve/ChainCollectorContext.d.ts.map +0 -1
  349. package/lib/esm/curve/ChainCollectorContext.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"PlaneAltitudeRangeContext.js","sourceRoot":"","sources":["../../../../src/curve/internalContexts/PlaneAltitudeRangeContext.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Curve\r\n */\r\n\r\nimport { BSplineCurve3d } from \"../../bspline/BSplineCurve\";\r\nimport { BSplineCurve3dH } from \"../../bspline/BSplineCurve3dH\";\r\nimport { Geometry, PlaneAltitudeEvaluator } from \"../../Geometry\";\r\nimport { Angle } from \"../../geometry3d/Angle\";\r\nimport { RecurseToCurvesGeometryHandler } from \"../../geometry3d/GeometryHandler\";\r\nimport { GrowableXYZArray } from \"../../geometry3d/GrowableXYZArray\";\r\nimport { Plane3dByOriginAndUnitNormal } from \"../../geometry3d/Plane3dByOriginAndUnitNormal\";\r\nimport { Point3d, Vector3d } from \"../../geometry3d/Point3dVector3d\";\r\nimport { Range1d } from \"../../geometry3d/Range\";\r\nimport { Ray3d } from \"../../geometry3d/Ray3d\";\r\nimport { SineCosinePolynomial } from \"../../numerics/Polynomials\";\r\nimport { Arc3d } from \"../Arc3d\";\r\nimport { GeometryQuery } from \"../GeometryQuery\";\r\nimport { LineSegment3d } from \"../LineSegment3d\";\r\nimport { LineString3d } from \"../LineString3d\";\r\nimport { StrokeOptions } from \"../StrokeOptions\";\r\n\r\n/**\r\n * Accumulator context for searching for extrema of geometry along a plane.\r\n * @internal\r\n */\r\nexport class PlaneAltitudeRangeContext extends RecurseToCurvesGeometryHandler {\r\n public plane: PlaneAltitudeEvaluator;\r\n public range: Range1d;\r\n public lowPoint: Point3d | undefined;\r\n public highPoint: Point3d | undefined;\r\n private constructor(plane: PlaneAltitudeEvaluator) {\r\n super();\r\n this.plane = plane;\r\n this.range = Range1d.createNull();\r\n this.resetRange();\r\n }\r\n\r\n public resetRange() {\r\n this.range.setNull();\r\n }\r\n\r\n public announcePoint(point: Point3d) {\r\n const h = this.plane.altitude(point);\r\n if (this.range.extendLow(h))\r\n this.lowPoint = point.clone(this.lowPoint);\r\n if (this.range.extendHigh(h))\r\n this.highPoint = point.clone(this.highPoint);\r\n }\r\n\r\n public announcePoints(points: GrowableXYZArray) {\r\n for (let i = 0; i < points.length; i++) {\r\n const h = points.evaluateUncheckedIndexPlaneAltitude(i, this.plane);\r\n if (this.range.extendLow(h))\r\n this.lowPoint = points.getPoint3dAtUncheckedPointIndex(i, this.lowPoint);\r\n if (this.range.extendHigh(h))\r\n this.highPoint = points.getPoint3dAtUncheckedPointIndex(i, this.highPoint);\r\n }\r\n }\r\n\r\n public static createCapture(plane: PlaneAltitudeEvaluator): PlaneAltitudeRangeContext {\r\n const context = new PlaneAltitudeRangeContext(plane);\r\n return context;\r\n }\r\n\r\n public override handleLineSegment3d(segment: LineSegment3d) {\r\n this.announcePoint(segment.point0Ref);\r\n this.announcePoint(segment.point1Ref);\r\n }\r\n\r\n public override handleLineString3d(lineString: LineString3d) {\r\n this.announcePoints(lineString.packedPoints);\r\n }\r\n\r\n private _strokeOptions?: StrokeOptions;\r\n\r\n private initStrokeOptions() {\r\n // TODO: compute the exact extrema; until then stroke aggressively\r\n if (undefined === this._strokeOptions) {\r\n this._strokeOptions = new StrokeOptions();\r\n this._strokeOptions.angleTol = Angle.createDegrees(1);\r\n }\r\n }\r\n\r\n public override handleBSplineCurve3d(bcurve: BSplineCurve3d) {\r\n // ugh. The point MUST be on the curve -- usual excess-range of poles is not ok.\r\n this.initStrokeOptions();\r\n const ls = LineString3d.create();\r\n bcurve.emitStrokes(ls, this._strokeOptions);\r\n this.handleLineString3d(ls);\r\n }\r\n\r\n public override handleBSplineCurve3dH(bcurve: BSplineCurve3dH) {\r\n // ugh. The point MUST be on the curve -- usual excess-range of poles is not ok.\r\n this.initStrokeOptions();\r\n const ls = LineString3d.create();\r\n bcurve.emitStrokes(ls, this._strokeOptions);\r\n this.handleLineString3d(ls);\r\n }\r\n\r\n private _sineCosinePolynomial?: SineCosinePolynomial;\r\n\r\n private _workPoint?: Point3d;\r\n\r\n public override handleArc3d(g: Arc3d) {\r\n this._sineCosinePolynomial = g.getPlaneAltitudeSineCosinePolynomial(this.plane, this._sineCosinePolynomial);\r\n let radians = this._sineCosinePolynomial.referenceMinMaxRadians();\r\n if (g.sweep.isRadiansInSweep(radians))\r\n this.announcePoint((this._workPoint = g.radiansToPoint(radians, this._workPoint)));\r\n radians += Math.PI;\r\n if (g.sweep.isRadiansInSweep(radians))\r\n this.announcePoint((this._workPoint = g.radiansToPoint(radians, this._workPoint)));\r\n this.announcePoint((this._workPoint = g.startPoint(this._workPoint)));\r\n this.announcePoint((this._workPoint = g.endPoint(this._workPoint)));\r\n }\r\n\r\n private static findExtremesInDirection(\r\n geometry: GeometryQuery | GrowableXYZArray | Point3d[], direction: Vector3d | Ray3d\r\n ): PlaneAltitudeRangeContext | undefined {\r\n const origin = direction instanceof Ray3d ? direction.origin : Point3d.createZero();\r\n const vector = direction instanceof Ray3d ? direction.direction : direction;\r\n const plane = Plane3dByOriginAndUnitNormal.create(origin, vector); // vector is normalized, so altitudes are distances\r\n if (plane) {\r\n const context = new PlaneAltitudeRangeContext(plane);\r\n if (geometry instanceof GeometryQuery) {\r\n geometry.dispatchToGeometryHandler(context);\r\n } else if (geometry instanceof GrowableXYZArray) {\r\n context.announcePoints(geometry);\r\n } else {\r\n for (const pt of geometry)\r\n context.announcePoint(pt);\r\n }\r\n return context;\r\n }\r\n return undefined;\r\n }\r\n /**\r\n * Compute altitudes for the geometry (via dispatch) over the plane defined by the given direction, and\r\n * return points at min and max altitude, packed into a `LineSegment3d`.\r\n * @param geometry geometry to project\r\n * @param direction vector or ray on which to project the instance. A `Vector3d` is treated as a `Ray3d` with\r\n * zero origin.\r\n * @param lowHigh optional receiver for output\r\n */\r\n public static findExtremePointsInDirection(\r\n geometry: GeometryQuery | GrowableXYZArray | Point3d[], direction: Vector3d | Ray3d, lowHigh?: LineSegment3d\r\n ): LineSegment3d | undefined {\r\n const context = this.findExtremesInDirection(geometry, direction);\r\n if (context && context.highPoint && context.lowPoint)\r\n return LineSegment3d.create(context.lowPoint, context.highPoint, lowHigh);\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Compute altitudes for the geometry (via dispatch) over the plane defined by the given direction, and return\r\n * the min and max altitudes, packed into a Range1d.\r\n * @param geometry geometry to project\r\n * @param direction vector or ray on which to project the instance. A `Vector3d` is treated as a `Ray3d` with\r\n * zero origin.\r\n * @param lowHigh optional receiver for output\r\n */\r\n public static findExtremeAltitudesInDirection(\r\n geometry: GeometryQuery | GrowableXYZArray | Point3d[], direction: Vector3d | Ray3d, lowHigh?: Range1d\r\n ): Range1d | undefined {\r\n const context = this.findExtremesInDirection(geometry, direction);\r\n if (context && !context.range.isNull)\r\n return Range1d.createFrom(context.range, lowHigh);\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Project geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.\r\n * @param geometry geometry to project\r\n * @param direction vector or ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with\r\n * zero origin.\r\n * @param lowHigh optional receiver for output\r\n */\r\n public static findExtremeFractionsAlongDirection(\r\n geometry: GeometryQuery | GrowableXYZArray | Point3d[], direction: Vector3d | Ray3d, lowHigh?: Range1d\r\n ): Range1d | undefined {\r\n const range = this.findExtremeAltitudesInDirection(geometry, direction, lowHigh);\r\n if (undefined !== range) {\r\n const mag = (direction instanceof Vector3d) ? direction.magnitude() : direction.direction.magnitude();\r\n const scaleToFraction = Geometry.conditionalDivideCoordinate(1.0, mag);\r\n if (undefined !== scaleToFraction) {\r\n range.low *= scaleToFraction;\r\n range.high *= scaleToFraction;\r\n return range;\r\n }\r\n }\r\n return undefined;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"PlaneAltitudeRangeContext.js","sourceRoot":"","sources":["../../../../src/curve/internalContexts/PlaneAltitudeRangeContext.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Curve\r\n */\r\n\r\nimport { BSplineCurve3d } from \"../../bspline/BSplineCurve\";\r\nimport { BSplineCurve3dH } from \"../../bspline/BSplineCurve3dH\";\r\nimport { Geometry, PlaneAltitudeEvaluator } from \"../../Geometry\";\r\nimport { Angle } from \"../../geometry3d/Angle\";\r\nimport { RecurseToCurvesGeometryHandler } from \"../../geometry3d/GeometryHandler\";\r\nimport { GrowableXYZArray } from \"../../geometry3d/GrowableXYZArray\";\r\nimport { Plane3dByOriginAndUnitNormal } from \"../../geometry3d/Plane3dByOriginAndUnitNormal\";\r\nimport { Point3d, Vector3d } from \"../../geometry3d/Point3dVector3d\";\r\nimport { Range1d } from \"../../geometry3d/Range\";\r\nimport { Ray3d } from \"../../geometry3d/Ray3d\";\r\nimport { SineCosinePolynomial } from \"../../numerics/Polynomials\";\r\nimport { Arc3d } from \"../Arc3d\";\r\nimport { GeometryQuery } from \"../GeometryQuery\";\r\nimport { LineSegment3d } from \"../LineSegment3d\";\r\nimport { LineString3d } from \"../LineString3d\";\r\nimport { StrokeOptions } from \"../StrokeOptions\";\r\n\r\n/**\r\n * Accumulator context for searching for extrema of geometry along a plane.\r\n * @internal\r\n */\r\nexport class PlaneAltitudeRangeContext extends RecurseToCurvesGeometryHandler {\r\n public plane: PlaneAltitudeEvaluator;\r\n public range: Range1d;\r\n public lowPoint: Point3d | undefined;\r\n public highPoint: Point3d | undefined;\r\n private constructor(plane: PlaneAltitudeEvaluator) {\r\n super();\r\n this.plane = plane;\r\n this.range = Range1d.createNull();\r\n this.resetRange();\r\n }\r\n\r\n public resetRange() {\r\n this.range.setNull();\r\n }\r\n\r\n public announcePoint(point: Point3d) {\r\n const h = this.plane.altitude(point);\r\n if (this.range.extendLow(h))\r\n this.lowPoint = point.clone(this.lowPoint);\r\n if (this.range.extendHigh(h))\r\n this.highPoint = point.clone(this.highPoint);\r\n }\r\n\r\n public announcePoints(points: GrowableXYZArray) {\r\n for (let i = 0; i < points.length; i++) {\r\n const h = points.evaluateUncheckedIndexPlaneAltitude(i, this.plane);\r\n if (this.range.extendLow(h))\r\n this.lowPoint = points.getPoint3dAtUncheckedPointIndex(i, this.lowPoint);\r\n if (this.range.extendHigh(h))\r\n this.highPoint = points.getPoint3dAtUncheckedPointIndex(i, this.highPoint);\r\n }\r\n }\r\n\r\n public static createCapture(plane: PlaneAltitudeEvaluator): PlaneAltitudeRangeContext {\r\n const context = new PlaneAltitudeRangeContext(plane);\r\n return context;\r\n }\r\n\r\n public override handleLineSegment3d(segment: LineSegment3d) {\r\n this.announcePoint(segment.point0Ref);\r\n this.announcePoint(segment.point1Ref);\r\n }\r\n\r\n public override handleLineString3d(lineString: LineString3d) {\r\n this.announcePoints(lineString.packedPoints);\r\n }\r\n\r\n private _strokeOptions?: StrokeOptions;\r\n\r\n private initStrokeOptions() {\r\n // TODO: compute the exact extrema; until then stroke aggressively\r\n if (undefined === this._strokeOptions) {\r\n this._strokeOptions = new StrokeOptions();\r\n this._strokeOptions.angleTol = Angle.createDegrees(1);\r\n }\r\n }\r\n\r\n public override handleBSplineCurve3d(bcurve: BSplineCurve3d) {\r\n // ugh. The point MUST be on the curve -- usual excess-range of poles is not ok.\r\n this.initStrokeOptions();\r\n const ls = LineString3d.create();\r\n bcurve.emitStrokes(ls, this._strokeOptions);\r\n this.handleLineString3d(ls);\r\n }\r\n\r\n public override handleBSplineCurve3dH(bcurve: BSplineCurve3dH) {\r\n // ugh. The point MUST be on the curve -- usual excess-range of poles is not ok.\r\n this.initStrokeOptions();\r\n const ls = LineString3d.create();\r\n bcurve.emitStrokes(ls, this._strokeOptions);\r\n this.handleLineString3d(ls);\r\n }\r\n\r\n private _sineCosinePolynomial?: SineCosinePolynomial;\r\n\r\n private _workPoint?: Point3d;\r\n\r\n public override handleArc3d(g: Arc3d) {\r\n this._sineCosinePolynomial = g.getPlaneAltitudeSineCosinePolynomial(this.plane, this._sineCosinePolynomial);\r\n let radians = this._sineCosinePolynomial.referenceMinMaxRadians();\r\n if (g.sweep.isRadiansInSweep(radians))\r\n this.announcePoint((this._workPoint = g.radiansToPoint(radians, this._workPoint)));\r\n radians += Math.PI;\r\n if (g.sweep.isRadiansInSweep(radians))\r\n this.announcePoint((this._workPoint = g.radiansToPoint(radians, this._workPoint)));\r\n this.announcePoint((this._workPoint = g.startPoint(this._workPoint)));\r\n this.announcePoint((this._workPoint = g.endPoint(this._workPoint)));\r\n }\r\n\r\n private static findExtremesInDirection(\r\n geometry: GeometryQuery | GrowableXYZArray | Point3d[], direction: Vector3d | Ray3d,\r\n ): PlaneAltitudeRangeContext | undefined {\r\n const origin = direction instanceof Ray3d ? direction.origin : Point3d.createZero();\r\n const vector = direction instanceof Ray3d ? direction.direction : direction;\r\n const plane = Plane3dByOriginAndUnitNormal.create(origin, vector); // vector is normalized, so altitudes are distances\r\n if (plane) {\r\n const context = new PlaneAltitudeRangeContext(plane);\r\n if (geometry instanceof GeometryQuery) {\r\n geometry.dispatchToGeometryHandler(context);\r\n } else if (geometry instanceof GrowableXYZArray) {\r\n context.announcePoints(geometry);\r\n } else {\r\n for (const pt of geometry)\r\n context.announcePoint(pt);\r\n }\r\n return context;\r\n }\r\n return undefined;\r\n }\r\n /**\r\n * Compute altitudes for the geometry (via dispatch) over the plane defined by the given direction, and\r\n * return points at min and max altitude, packed into a `LineSegment3d`.\r\n * @param geometry geometry to project\r\n * @param direction vector or ray on which to project the instance. A `Vector3d` is treated as a `Ray3d` with\r\n * zero origin.\r\n * @param lowHigh optional receiver for output\r\n */\r\n public static findExtremePointsInDirection(\r\n geometry: GeometryQuery | GrowableXYZArray | Point3d[], direction: Vector3d | Ray3d, lowHigh?: LineSegment3d,\r\n ): LineSegment3d | undefined {\r\n const context = this.findExtremesInDirection(geometry, direction);\r\n if (context && context.highPoint && context.lowPoint)\r\n return LineSegment3d.create(context.lowPoint, context.highPoint, lowHigh);\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Compute altitudes for the geometry (via dispatch) over the plane defined by the given direction, and return\r\n * the min and max altitudes, packed into a Range1d.\r\n * @param geometry geometry to project\r\n * @param direction vector or ray on which to project the instance. A `Vector3d` is treated as a `Ray3d` with\r\n * zero origin.\r\n * @param lowHigh optional receiver for output\r\n */\r\n public static findExtremeAltitudesInDirection(\r\n geometry: GeometryQuery | GrowableXYZArray | Point3d[], direction: Vector3d | Ray3d, lowHigh?: Range1d,\r\n ): Range1d | undefined {\r\n const context = this.findExtremesInDirection(geometry, direction);\r\n if (context && !context.range.isNull)\r\n return Range1d.createFrom(context.range, lowHigh);\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Project geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.\r\n * @param geometry geometry to project\r\n * @param direction vector or ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with\r\n * zero origin.\r\n * @param lowHigh optional receiver for output\r\n */\r\n public static findExtremeFractionsAlongDirection(\r\n geometry: GeometryQuery | GrowableXYZArray | Point3d[], direction: Vector3d | Ray3d, lowHigh?: Range1d,\r\n ): Range1d | undefined {\r\n const range = this.findExtremeAltitudesInDirection(geometry, direction, lowHigh);\r\n if (undefined !== range) {\r\n const mag = (direction instanceof Vector3d) ? direction.magnitude() : direction.direction.magnitude();\r\n const scaleToFraction = Geometry.conditionalDivideCoordinate(1.0, mag);\r\n if (undefined !== scaleToFraction) {\r\n range.low *= scaleToFraction;\r\n range.high *= scaleToFraction;\r\n return range;\r\n }\r\n }\r\n return undefined;\r\n }\r\n}\r\n"]}
@@ -1,104 +1,12 @@
1
1
  /** @packageDocumentation
2
2
  * @module Curve
3
3
  */
4
- import { Angle } from "../../geometry3d/Angle";
5
4
  import { Point3d } from "../../geometry3d/Point3dVector3d";
6
5
  import { CurveChain, CurveCollection } from "../CurveCollection";
7
6
  import { CurvePrimitive } from "../CurvePrimitive";
8
7
  import { Loop } from "../Loop";
8
+ import { JointOptions, OffsetOptions } from "../OffsetOptions";
9
9
  import { Path } from "../Path";
10
- import { StrokeOptions } from "../StrokeOptions";
11
- /**
12
- * Control parameters for joint construction.
13
- * * Define a "joint" as the common point between adjacent segments of the input curve.
14
- * * Define the "turn angle" at a joint to be the angle in [0,pi] between the first derivatives (tangents) of
15
- * the segments at the joint.
16
- * * When creating offsets, if an offset needs to do an "outside" turn, the first applicable construction is applied:
17
- * * If the turn angle is larger than `options.minArcDegrees`, a circular arc is constructed to offset the joint.
18
- * * If the turn angle is less than or equal to `options.maxChamferTurnDegrees`, extend curves along tangent to
19
- * single intersection point (to create a sharp corner).
20
- * * If the turn angle is larger than `options.maxChamferDegrees`, the joint is offset with a line string whose edges:
21
- * * lie outside the arc that would have been created by the first construction
22
- * * have uniform turn angle less than `options.maxChamferDegrees`
23
- * * touch the arc at their midpoint (except first and last edge).
24
- * @public
25
- */
26
- export declare class JointOptions {
27
- /**
28
- * Smallest arc to construct.
29
- * * If this control angle is 180 degrees or more, arcs are never created.
30
- */
31
- minArcDegrees: number;
32
- /** Largest turn angle at which to construct a sharp corner, or largest turn angle in a multi-segment chamfer. */
33
- maxChamferTurnDegrees: number;
34
- /**
35
- * Whether to remove the internal turn angle upper bound for sharp corner construction.
36
- * * By default, a sharp corner is not created at a joint when the turn angle is too large, so as to avoid offsets whose
37
- * ranges blow up. Internally, this is implemented by applying an upper bound of 120 degrees to `maxChamferTurnDegrees`.
38
- * * When `allowSharpestCorners` is true, this internal upper bound is removed, allowing sharp corners for turn angles
39
- * up to `maxChamferTurnDegrees`.
40
- * * Thus, if you know your input turn angles are no greater than `maxChamferTurnDegrees`, you can create an offset with
41
- * sharp corners at each joint by setting `maxChamferTurnDegrees < minArcDegrees` and `allowSharpestCorners` to true.
42
- */
43
- allowSharpestCorners: boolean;
44
- /** Offset distance, positive to left of base curve. */
45
- leftOffsetDistance: number;
46
- /** Whether to offset elliptical arcs as elliptical arcs (true) or as B-spline curves (false, default). */
47
- preserveEllipticalArcs: boolean;
48
- /**
49
- * Construct JointOptions.
50
- * * leftOffsetDistance is required
51
- * * minArcDegrees and maxChamferDegrees are optional.
52
- */
53
- constructor(leftOffsetDistance: number, minArcDegrees?: number, maxChamferDegrees?: number, preserveEllipticalArcs?: boolean, allowSharpestCorners?: boolean);
54
- /** Return a deep clone. */
55
- clone(): JointOptions;
56
- /** Copy values of input options */
57
- setFrom(other: JointOptions): void;
58
- /**
59
- * Parse a number or JointOptions up to JointOptions:
60
- * * If leftOffsetDistanceOptions is a number, create a JointOptions with other options set to default values.
61
- * * If leftOffsetDistanceOrOptions is a JointOptions, return it unchanged.
62
- * @param leftOffsetDistanceOrOptions
63
- */
64
- static create(leftOffsetDistanceOrOptions: number | JointOptions): JointOptions;
65
- /** Return true if the options indicate this amount of turn should be handled with an arc. */
66
- needArc(theta: Angle): boolean;
67
- /** Return the number of corners needed to chamfer the given turn angle. */
68
- numChamferPoints(theta: Angle): number;
69
- }
70
- /**
71
- * Options for offsetting a curve.
72
- * @public
73
- */
74
- export declare class OffsetOptions {
75
- /** Options for offsetting and joining CurvePrimitives */
76
- jointOptions: JointOptions;
77
- /** Options for generating a B-spline curve offset */
78
- strokeOptions: StrokeOptions;
79
- /** Options that are provided are captured. */
80
- constructor(offsetDistanceOrOptions: number | JointOptions, strokeOptions?: StrokeOptions);
81
- get minArcDegrees(): number;
82
- set minArcDegrees(value: number);
83
- get maxChamferTurnDegrees(): number;
84
- set maxChamferTurnDegrees(value: number);
85
- get allowSharpestCorners(): boolean;
86
- set allowSharpestCorners(value: boolean);
87
- get leftOffsetDistance(): number;
88
- set leftOffsetDistance(value: number);
89
- get preserveEllipticalArcs(): boolean;
90
- set preserveEllipticalArcs(value: boolean);
91
- /**
92
- * Convert variant input into OffsetOptions.
93
- * * If a JointOptions is provided, it is captured.
94
- * * If an OffsetOptions is provided, a reference to it is returned.
95
- */
96
- static create(offsetDistanceOrOptions: number | JointOptions | OffsetOptions): OffsetOptions;
97
- /** Convert variant input into offset distance */
98
- static getOffsetDistance(offsetDistanceOrOptions: number | JointOptions | OffsetOptions): number;
99
- /** Return a deep clone. */
100
- clone(): OffsetOptions;
101
- }
102
10
  /**
103
11
  * Context for building a wire offset.
104
12
  * @internal
@@ -140,20 +48,18 @@ export declare class CurveChainWireOffsetContext {
140
48
  */
141
49
  static applyBasePoints(cp: CurvePrimitive | undefined, startPoint: Point3d | undefined, endPoint: Point3d | undefined): CurvePrimitive | undefined;
142
50
  /**
143
- * Create the offset of a single primitive as viewed in the xy-plane (ignoring z).
144
- * * each primitive may be labeled (as an `any` object) with start or end point of base curve:
51
+ * Create the offset of a single curve primitive as viewed in the xy-plane (ignoring z).
52
+ * * Each primitive may be labeled (as an `any` object) with start or end point of base curve:
145
53
  * * `(primitive as any).baseCurveStart: Point3d`
146
54
  * * `(primitive as any).baseCurveEnd: Point3d`
147
- * @param g primitive to offset
148
- * @param offsetDistanceOrOptions offset distance (positive to left of g), or options object
55
+ * @param curve primitive to offset
56
+ * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or options object
149
57
  */
150
- static createSingleOffsetPrimitiveXY(g: CurvePrimitive, offsetDistanceOrOptions: number | OffsetOptions): CurvePrimitive | CurvePrimitive[] | undefined;
58
+ static createSingleOffsetPrimitiveXY(curve: CurvePrimitive, offsetDistanceOrOptions: number | OffsetOptions): CurvePrimitive | CurvePrimitive[] | undefined;
151
59
  /**
152
60
  * Construct curves that are offset from a Path or Loop as viewed in xy-plane (ignoring z).
153
61
  * * The construction will remove "some" local effects of features smaller than the offset distance, but will
154
62
  * not detect self intersection among widely separated edges.
155
- * * If offsetDistance is given as a number, default OffsetOptions are applied.
156
- * * See [[JointOptions]] class doc for offset construction rules.
157
63
  * * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/Offset
158
64
  * @param curves base curves.
159
65
  * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or options object.
@@ -1 +1 @@
1
- {"version":3,"file":"PolygonOffsetContext.d.ts","sourceRoot":"","sources":["../../../../src/curve/internalContexts/PolygonOffsetContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PolygonOffsetContext.d.ts","sourceRoot":"","sources":["../../../../src/curve/internalContexts/PolygonOffsetContext.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAE,OAAO,EAAY,MAAM,kCAAkC,CAAC;AAGrE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGjE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAia/B;;;GAGG;AACH,qBAAa,wBAAwB;IACnC,2BAA2B;;IAE3B,OAAO,CAAC,MAAM,CAAC,UAAU,CAAqB;IAC9C,OAAO,CAAC,MAAM,CAAC,SAAS,CAAqB;IAC7C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAoB;IAC3C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAoB;IAE3C,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAelC;;;;;;;;;;OAUG;IACI,4BAA4B,CACjC,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,2BAA2B,EAAE,MAAM,GAAG,YAAY,GACnF,UAAU,GAAG,SAAS;CAwD1B;AAED;;;GAGG;AACH,qBAAa,2BAA2B;IACtC,2BAA2B;;IAE3B;;;;;;OAMG;WACW,eAAe,CAC3B,EAAE,EAAE,cAAc,GAAG,SAAS,EAAE,UAAU,EAAE,OAAO,GAAG,SAAS,EAAE,QAAQ,EAAE,OAAO,GAAG,SAAS,GAC7F,cAAc,GAAG,SAAS;IAS7B;;;;;;;OAOG;WACW,6BAA6B,CACzC,KAAK,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,GAAG,aAAa,GACrE,cAAc,GAAG,cAAc,EAAE,GAAG,SAAS;IAehD;;;;;;;OAOG;WACW,sBAAsB,CAClC,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE,uBAAuB,EAAE,MAAM,GAAG,YAAY,GAAG,aAAa,GAClF,eAAe,GAAG,SAAS;CA6C/B"}
@@ -7,7 +7,7 @@
7
7
  * @module Curve
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.CurveChainWireOffsetContext = exports.PolygonWireOffsetContext = exports.OffsetOptions = exports.JointOptions = void 0;
10
+ exports.CurveChainWireOffsetContext = exports.PolygonWireOffsetContext = void 0;
11
11
  const Geometry_1 = require("../../Geometry");
12
12
  const AngleSweep_1 = require("../../geometry3d/AngleSweep");
13
13
  const Point3dVector3d_1 = require("../../geometry3d/Point3dVector3d");
@@ -19,9 +19,9 @@ const CurvePrimitive_1 = require("../CurvePrimitive");
19
19
  const LineSegment3d_1 = require("../LineSegment3d");
20
20
  const LineString3d_1 = require("../LineString3d");
21
21
  const Loop_1 = require("../Loop");
22
+ const OffsetOptions_1 = require("../OffsetOptions");
22
23
  const Path_1 = require("../Path");
23
24
  const RegionOps_1 = require("../RegionOps");
24
- const StrokeOptions_1 = require("../StrokeOptions");
25
25
  // cspell:word CCWXY
26
26
  /**
27
27
  * Classification of how the joint is constructed.
@@ -36,159 +36,6 @@ var JointMode;
36
36
  JointMode[JointMode["JustGeometry"] = 3] = "JustGeometry";
37
37
  JointMode[JointMode["Gap"] = 4] = "Gap";
38
38
  })(JointMode || (JointMode = {}));
39
- /**
40
- * Control parameters for joint construction.
41
- * * Define a "joint" as the common point between adjacent segments of the input curve.
42
- * * Define the "turn angle" at a joint to be the angle in [0,pi] between the first derivatives (tangents) of
43
- * the segments at the joint.
44
- * * When creating offsets, if an offset needs to do an "outside" turn, the first applicable construction is applied:
45
- * * If the turn angle is larger than `options.minArcDegrees`, a circular arc is constructed to offset the joint.
46
- * * If the turn angle is less than or equal to `options.maxChamferTurnDegrees`, extend curves along tangent to
47
- * single intersection point (to create a sharp corner).
48
- * * If the turn angle is larger than `options.maxChamferDegrees`, the joint is offset with a line string whose edges:
49
- * * lie outside the arc that would have been created by the first construction
50
- * * have uniform turn angle less than `options.maxChamferDegrees`
51
- * * touch the arc at their midpoint (except first and last edge).
52
- * @public
53
- */
54
- class JointOptions {
55
- /**
56
- * Construct JointOptions.
57
- * * leftOffsetDistance is required
58
- * * minArcDegrees and maxChamferDegrees are optional.
59
- */
60
- constructor(leftOffsetDistance, minArcDegrees = 180, maxChamferDegrees = 90, preserveEllipticalArcs = false, allowSharpestCorners = false) {
61
- /**
62
- * Smallest arc to construct.
63
- * * If this control angle is 180 degrees or more, arcs are never created.
64
- */
65
- this.minArcDegrees = 180.0;
66
- /** Largest turn angle at which to construct a sharp corner, or largest turn angle in a multi-segment chamfer. */
67
- this.maxChamferTurnDegrees = 90;
68
- /**
69
- * Whether to remove the internal turn angle upper bound for sharp corner construction.
70
- * * By default, a sharp corner is not created at a joint when the turn angle is too large, so as to avoid offsets whose
71
- * ranges blow up. Internally, this is implemented by applying an upper bound of 120 degrees to `maxChamferTurnDegrees`.
72
- * * When `allowSharpestCorners` is true, this internal upper bound is removed, allowing sharp corners for turn angles
73
- * up to `maxChamferTurnDegrees`.
74
- * * Thus, if you know your input turn angles are no greater than `maxChamferTurnDegrees`, you can create an offset with
75
- * sharp corners at each joint by setting `maxChamferTurnDegrees < minArcDegrees` and `allowSharpestCorners` to true.
76
- */
77
- this.allowSharpestCorners = false;
78
- /** Offset distance, positive to left of base curve. */
79
- this.leftOffsetDistance = 0;
80
- /** Whether to offset elliptical arcs as elliptical arcs (true) or as B-spline curves (false, default). */
81
- this.preserveEllipticalArcs = false;
82
- this.leftOffsetDistance = leftOffsetDistance;
83
- this.minArcDegrees = minArcDegrees;
84
- this.maxChamferTurnDegrees = maxChamferDegrees;
85
- this.preserveEllipticalArcs = preserveEllipticalArcs;
86
- this.allowSharpestCorners = allowSharpestCorners;
87
- }
88
- /** Return a deep clone. */
89
- clone() {
90
- return new JointOptions(this.leftOffsetDistance, this.minArcDegrees, this.maxChamferTurnDegrees, this.preserveEllipticalArcs, this.allowSharpestCorners);
91
- }
92
- /** Copy values of input options */
93
- setFrom(other) {
94
- this.leftOffsetDistance = other.leftOffsetDistance;
95
- this.minArcDegrees = other.minArcDegrees;
96
- this.maxChamferTurnDegrees = other.maxChamferTurnDegrees;
97
- this.preserveEllipticalArcs = other.preserveEllipticalArcs;
98
- this.allowSharpestCorners = other.allowSharpestCorners;
99
- }
100
- /**
101
- * Parse a number or JointOptions up to JointOptions:
102
- * * If leftOffsetDistanceOptions is a number, create a JointOptions with other options set to default values.
103
- * * If leftOffsetDistanceOrOptions is a JointOptions, return it unchanged.
104
- * @param leftOffsetDistanceOrOptions
105
- */
106
- static create(leftOffsetDistanceOrOptions) {
107
- if (leftOffsetDistanceOrOptions instanceof JointOptions)
108
- return leftOffsetDistanceOrOptions;
109
- return new JointOptions(leftOffsetDistanceOrOptions);
110
- }
111
- /** Return true if the options indicate this amount of turn should be handled with an arc. */
112
- needArc(theta) {
113
- return Math.abs(theta.degrees) >= this.minArcDegrees;
114
- }
115
- /** Return the number of corners needed to chamfer the given turn angle. */
116
- numChamferPoints(theta) {
117
- const degrees = Math.abs(theta.degrees);
118
- const minStepDegreesClamp = 10;
119
- let maxStepDegreesClamp = 120;
120
- if (this.allowSharpestCorners) {
121
- maxStepDegreesClamp = this.maxChamferTurnDegrees;
122
- }
123
- const stepDegrees = Geometry_1.Geometry.clamp(this.maxChamferTurnDegrees, minStepDegreesClamp, maxStepDegreesClamp);
124
- if (degrees <= stepDegrees)
125
- return 1;
126
- return Math.ceil(degrees / stepDegrees);
127
- }
128
- }
129
- exports.JointOptions = JointOptions;
130
- /**
131
- * Options for offsetting a curve.
132
- * @public
133
- */
134
- class OffsetOptions {
135
- /** Options that are provided are captured. */
136
- constructor(offsetDistanceOrOptions, strokeOptions) {
137
- this.jointOptions = JointOptions.create(offsetDistanceOrOptions);
138
- this.strokeOptions = (strokeOptions !== undefined) ? strokeOptions : StrokeOptions_1.StrokeOptions.createForCurves();
139
- }
140
- get minArcDegrees() {
141
- return this.jointOptions.minArcDegrees;
142
- }
143
- set minArcDegrees(value) {
144
- this.jointOptions.minArcDegrees = value;
145
- }
146
- get maxChamferTurnDegrees() {
147
- return this.jointOptions.maxChamferTurnDegrees;
148
- }
149
- set maxChamferTurnDegrees(value) {
150
- this.jointOptions.maxChamferTurnDegrees = value;
151
- }
152
- get allowSharpestCorners() {
153
- return this.jointOptions.allowSharpestCorners;
154
- }
155
- set allowSharpestCorners(value) {
156
- this.jointOptions.allowSharpestCorners = value;
157
- }
158
- get leftOffsetDistance() {
159
- return this.jointOptions.leftOffsetDistance;
160
- }
161
- set leftOffsetDistance(value) {
162
- this.jointOptions.leftOffsetDistance = value;
163
- }
164
- get preserveEllipticalArcs() {
165
- return this.jointOptions.preserveEllipticalArcs;
166
- }
167
- set preserveEllipticalArcs(value) {
168
- this.jointOptions.preserveEllipticalArcs = value;
169
- }
170
- /**
171
- * Convert variant input into OffsetOptions.
172
- * * If a JointOptions is provided, it is captured.
173
- * * If an OffsetOptions is provided, a reference to it is returned.
174
- */
175
- static create(offsetDistanceOrOptions) {
176
- if (offsetDistanceOrOptions instanceof OffsetOptions)
177
- return offsetDistanceOrOptions;
178
- return new OffsetOptions(offsetDistanceOrOptions);
179
- }
180
- /** Convert variant input into offset distance */
181
- static getOffsetDistance(offsetDistanceOrOptions) {
182
- if (typeof offsetDistanceOrOptions === "number")
183
- return offsetDistanceOrOptions;
184
- return offsetDistanceOrOptions.leftOffsetDistance;
185
- }
186
- /** Return a deep clone. */
187
- clone() {
188
- return new OffsetOptions(this.jointOptions.clone(), this.strokeOptions.clone());
189
- }
190
- }
191
- exports.OffsetOptions = OffsetOptions;
192
39
  /**
193
40
  * Description of geometry around a joint.
194
41
  * @internal
@@ -598,7 +445,7 @@ class PolygonWireOffsetContext {
598
445
  wrap = false;
599
446
  }
600
447
  /** create raw offsets as a linked list (joint0) */
601
- const options = JointOptions.create(leftOffsetDistanceOrOptions);
448
+ const options = OffsetOptions_1.JointOptions.create(leftOffsetDistanceOrOptions);
602
449
  const numPoints = points.length;
603
450
  let fragment0 = PolygonWireOffsetContext.createOffsetSegment(points[0], points[1], options.leftOffsetDistance);
604
451
  let joint0 = new Joint(undefined, fragment0, points[0]);
@@ -675,41 +522,39 @@ class CurveChainWireOffsetContext {
675
522
  return cp;
676
523
  }
677
524
  /**
678
- * Create the offset of a single primitive as viewed in the xy-plane (ignoring z).
679
- * * each primitive may be labeled (as an `any` object) with start or end point of base curve:
525
+ * Create the offset of a single curve primitive as viewed in the xy-plane (ignoring z).
526
+ * * Each primitive may be labeled (as an `any` object) with start or end point of base curve:
680
527
  * * `(primitive as any).baseCurveStart: Point3d`
681
528
  * * `(primitive as any).baseCurveEnd: Point3d`
682
- * @param g primitive to offset
683
- * @param offsetDistanceOrOptions offset distance (positive to left of g), or options object
529
+ * @param curve primitive to offset
530
+ * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or options object
684
531
  */
685
- static createSingleOffsetPrimitiveXY(g, offsetDistanceOrOptions) {
686
- const offset = g.constructOffsetXY(offsetDistanceOrOptions);
532
+ static createSingleOffsetPrimitiveXY(curve, offsetDistanceOrOptions) {
533
+ const offset = curve.constructOffsetXY(offsetDistanceOrOptions);
687
534
  if (offset === undefined)
688
535
  return undefined;
689
536
  // decorate each offset with its base curve's endpoints
690
537
  if (Array.isArray(offset)) {
691
- const basePrims = g.collectCurvePrimitives(undefined, true, true);
538
+ const basePrims = curve.collectCurvePrimitives(undefined, true, true);
692
539
  if (basePrims.length !== offset.length)
693
540
  return undefined; // unexpected aggregate curve type!
694
541
  for (let i = 0; i < basePrims.length; ++i)
695
542
  this.applyBasePoints(offset[i], basePrims[i].startPoint(), basePrims[i].endPoint());
696
543
  return offset;
697
544
  }
698
- return this.applyBasePoints(offset, g.startPoint(), g.endPoint());
545
+ return this.applyBasePoints(offset, curve.startPoint(), curve.endPoint());
699
546
  }
700
547
  /**
701
548
  * Construct curves that are offset from a Path or Loop as viewed in xy-plane (ignoring z).
702
549
  * * The construction will remove "some" local effects of features smaller than the offset distance, but will
703
550
  * not detect self intersection among widely separated edges.
704
- * * If offsetDistance is given as a number, default OffsetOptions are applied.
705
- * * See [[JointOptions]] class doc for offset construction rules.
706
551
  * * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/Offset
707
552
  * @param curves base curves.
708
553
  * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or options object.
709
554
  */
710
555
  static constructCurveXYOffset(curves, offsetDistanceOrOptions) {
711
556
  const wrap = curves instanceof Loop_1.Loop;
712
- const offsetOptions = OffsetOptions.create(offsetDistanceOrOptions);
557
+ const offsetOptions = OffsetOptions_1.OffsetOptions.create(offsetDistanceOrOptions);
713
558
  const simpleOffsets = [];
714
559
  /** traverse primitives (children of curves) and create simple offsets of each primitive as an array */
715
560
  for (const c of curves.children) {