@itwin/core-geometry 4.1.0-dev.67 → 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 (367) 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 +11 -13
  61. package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
  62. package/lib/cjs/curve/RegionOps.js +17 -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 +7 -101
  77. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -1
  78. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js +13 -168
  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.d.ts +41 -32
  102. package/lib/cjs/geometry3d/Plane3d.d.ts.map +1 -1
  103. package/lib/cjs/geometry3d/Plane3d.js +11 -8
  104. package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
  105. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.d.ts +37 -34
  106. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.d.ts.map +1 -1
  107. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js +65 -43
  108. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  109. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.d.ts.map +1 -1
  110. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js +2 -0
  111. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  112. package/lib/cjs/geometry3d/Point2dVector2d.d.ts +8 -9
  113. package/lib/cjs/geometry3d/Point2dVector2d.d.ts.map +1 -1
  114. package/lib/cjs/geometry3d/Point2dVector2d.js +9 -10
  115. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  116. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  117. package/lib/cjs/geometry3d/Point3dVector3d.d.ts +4 -4
  118. package/lib/cjs/geometry3d/Point3dVector3d.js +5 -5
  119. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  120. package/lib/cjs/geometry3d/PointHelpers.d.ts.map +1 -1
  121. package/lib/cjs/geometry3d/PointHelpers.js +5 -5
  122. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  123. package/lib/cjs/geometry3d/PolygonOps.d.ts +1 -2
  124. package/lib/cjs/geometry3d/PolygonOps.d.ts.map +1 -1
  125. package/lib/cjs/geometry3d/PolygonOps.js +2 -3
  126. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  127. package/lib/cjs/geometry3d/Range.js.map +1 -1
  128. package/lib/cjs/geometry3d/Ray2d.d.ts +69 -0
  129. package/lib/cjs/geometry3d/Ray2d.d.ts.map +1 -0
  130. package/lib/cjs/geometry3d/Ray2d.js +146 -0
  131. package/lib/cjs/geometry3d/Ray2d.js.map +1 -0
  132. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  133. package/lib/cjs/geometry3d/Transform.d.ts +3 -3
  134. package/lib/cjs/geometry3d/Transform.js +6 -6
  135. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  136. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  137. package/lib/cjs/numerics/ConvexPolygon2d.d.ts +7 -49
  138. package/lib/cjs/numerics/ConvexPolygon2d.d.ts.map +1 -1
  139. package/lib/cjs/numerics/ConvexPolygon2d.js +16 -107
  140. package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
  141. package/lib/cjs/numerics/Newton.js.map +1 -1
  142. package/lib/cjs/numerics/Polynomials.d.ts.map +1 -1
  143. package/lib/cjs/numerics/Polynomials.js +0 -2
  144. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  145. package/lib/cjs/numerics/Quadrature.js +5 -5
  146. package/lib/cjs/numerics/Quadrature.js.map +1 -1
  147. package/lib/cjs/polyface/IndexedEdgeMatcher.js +1 -1
  148. package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
  149. package/lib/cjs/polyface/PolyfaceBuilder.d.ts.map +1 -1
  150. package/lib/cjs/polyface/PolyfaceBuilder.js +2 -2
  151. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  152. package/lib/cjs/polyface/PolyfaceQuery.d.ts +10 -7
  153. package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
  154. package/lib/cjs/polyface/PolyfaceQuery.js +13 -12
  155. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  156. package/lib/cjs/polyface/TaggedNumericData.js +1 -1
  157. package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
  158. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js +2 -2
  159. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  160. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  161. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  162. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  163. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  164. package/lib/cjs/serialization/IModelJsonSchema.d.ts +2 -7
  165. package/lib/cjs/serialization/IModelJsonSchema.d.ts.map +1 -1
  166. package/lib/cjs/serialization/IModelJsonSchema.js +2 -7
  167. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  168. package/lib/cjs/topology/ChainMerge.js +1 -1
  169. package/lib/cjs/topology/ChainMerge.js.map +1 -1
  170. package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
  171. package/lib/cjs/topology/HalfEdgeGraphSearch.js +1 -1
  172. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  173. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js +1 -1
  174. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  175. package/lib/cjs/topology/HalfEdgePriorityQueue.d.ts.map +1 -1
  176. package/lib/cjs/topology/HalfEdgePriorityQueue.js +1 -1
  177. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
  178. package/lib/cjs/topology/RegularizeFace.js +3 -3
  179. package/lib/cjs/topology/RegularizeFace.js.map +1 -1
  180. package/lib/cjs/topology/Triangulation.js +1 -1
  181. package/lib/cjs/topology/Triangulation.js.map +1 -1
  182. package/lib/esm/Geometry.js.map +1 -1
  183. package/lib/esm/bspline/BSplineCurve.d.ts +1 -1
  184. package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
  185. package/lib/esm/bspline/BSplineCurve.js +1 -1
  186. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  187. package/lib/esm/bspline/BSplineSurface.d.ts.map +1 -1
  188. package/lib/esm/bspline/BSplineSurface.js +1 -1
  189. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  190. package/lib/esm/bspline/BezierCurveBase.d.ts +1 -1
  191. package/lib/esm/bspline/BezierCurveBase.d.ts.map +1 -1
  192. package/lib/esm/bspline/BezierCurveBase.js +1 -1
  193. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  194. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  195. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  196. package/lib/esm/core-geometry.d.ts +3 -2
  197. package/lib/esm/core-geometry.d.ts.map +1 -1
  198. package/lib/esm/core-geometry.js +3 -3
  199. package/lib/esm/core-geometry.js.map +1 -1
  200. package/lib/esm/curve/Arc3d.d.ts +1 -1
  201. package/lib/esm/curve/Arc3d.d.ts.map +1 -1
  202. package/lib/esm/curve/Arc3d.js +1 -1
  203. package/lib/esm/curve/Arc3d.js.map +1 -1
  204. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +1 -1
  205. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  206. package/lib/esm/curve/CurveChainWithDistanceIndex.js +1 -1
  207. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  208. package/lib/esm/curve/CurveCollection.d.ts +2 -2
  209. package/lib/esm/curve/CurveCollection.js +2 -2
  210. package/lib/esm/curve/CurveCollection.js.map +1 -1
  211. package/lib/esm/curve/CurveCurve.js.map +1 -1
  212. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  213. package/lib/esm/curve/CurveOps.d.ts +77 -0
  214. package/lib/esm/curve/CurveOps.d.ts.map +1 -0
  215. package/lib/esm/curve/CurveOps.js +156 -0
  216. package/lib/esm/curve/CurveOps.js.map +1 -0
  217. package/lib/esm/curve/CurvePrimitive.d.ts +13 -13
  218. package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
  219. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  220. package/lib/esm/curve/GeometryQuery.d.ts +2 -2
  221. package/lib/esm/curve/GeometryQuery.d.ts.map +1 -1
  222. package/lib/esm/curve/GeometryQuery.js +2 -2
  223. package/lib/esm/curve/GeometryQuery.js.map +1 -1
  224. package/lib/esm/curve/LineSegment3d.d.ts +1 -1
  225. package/lib/esm/curve/LineSegment3d.d.ts.map +1 -1
  226. package/lib/esm/curve/LineSegment3d.js +1 -1
  227. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  228. package/lib/esm/curve/LineString3d.d.ts +1 -1
  229. package/lib/esm/curve/LineString3d.d.ts.map +1 -1
  230. package/lib/esm/curve/LineString3d.js +1 -1
  231. package/lib/esm/curve/LineString3d.js.map +1 -1
  232. package/lib/esm/curve/Loop.js.map +1 -1
  233. package/lib/esm/curve/OffsetOptions.d.ts +97 -0
  234. package/lib/esm/curve/OffsetOptions.d.ts.map +1 -0
  235. package/lib/esm/curve/OffsetOptions.js +161 -0
  236. package/lib/esm/curve/OffsetOptions.js.map +1 -0
  237. package/lib/esm/curve/ProxyCurve.d.ts +1 -1
  238. package/lib/esm/curve/ProxyCurve.d.ts.map +1 -1
  239. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  240. package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
  241. package/lib/esm/curve/RegionOps.d.ts +11 -13
  242. package/lib/esm/curve/RegionOps.d.ts.map +1 -1
  243. package/lib/esm/curve/RegionOps.js +18 -18
  244. package/lib/esm/curve/RegionOps.js.map +1 -1
  245. package/lib/esm/curve/RegionOpsClassificationSweeps.js +2 -2
  246. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  247. package/lib/esm/curve/StrokeOptions.js.map +1 -1
  248. package/lib/esm/curve/{ChainCollectorContext.d.ts → internalContexts/ChainCollectorContext.d.ts} +4 -4
  249. package/lib/esm/curve/internalContexts/ChainCollectorContext.d.ts.map +1 -0
  250. package/lib/esm/curve/{ChainCollectorContext.js → internalContexts/ChainCollectorContext.js} +4 -4
  251. package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -0
  252. package/lib/esm/curve/internalContexts/MultiChainCollector.d.ts +59 -74
  253. package/lib/esm/curve/internalContexts/MultiChainCollector.d.ts.map +1 -1
  254. package/lib/esm/curve/internalContexts/MultiChainCollector.js +129 -221
  255. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  256. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  257. package/lib/esm/curve/internalContexts/PolygonOffsetContext.d.ts +7 -101
  258. package/lib/esm/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -1
  259. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js +10 -163
  260. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  261. package/lib/esm/curve/spiral/IntegratedSpiral3d.js +1 -1
  262. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  263. package/lib/esm/curve/spiral/TransitionSpiral3d.d.ts +1 -1
  264. package/lib/esm/curve/spiral/TransitionSpiral3d.d.ts.map +1 -1
  265. package/lib/esm/curve/spiral/TransitionSpiral3d.js +1 -1
  266. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
  267. package/lib/esm/curve/spiral/XYCurveEvaluator.js +1 -1
  268. package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
  269. package/lib/esm/geometry3d/Angle.js.map +1 -1
  270. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  271. package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
  272. package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
  273. package/lib/esm/geometry3d/GrowableBlockedArray.d.ts.map +1 -1
  274. package/lib/esm/geometry3d/GrowableBlockedArray.js +1 -1
  275. package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
  276. package/lib/esm/geometry3d/GrowableFloat64Array.d.ts.map +1 -1
  277. package/lib/esm/geometry3d/GrowableFloat64Array.js +1 -1
  278. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
  279. package/lib/esm/geometry3d/Matrix3d.js +5 -5
  280. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  281. package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
  282. package/lib/esm/geometry3d/Plane3d.d.ts +41 -32
  283. package/lib/esm/geometry3d/Plane3d.d.ts.map +1 -1
  284. package/lib/esm/geometry3d/Plane3d.js +11 -8
  285. package/lib/esm/geometry3d/Plane3d.js.map +1 -1
  286. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.d.ts +37 -34
  287. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.d.ts.map +1 -1
  288. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js +65 -43
  289. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  290. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.d.ts.map +1 -1
  291. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js +2 -0
  292. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  293. package/lib/esm/geometry3d/Point2dVector2d.d.ts +8 -9
  294. package/lib/esm/geometry3d/Point2dVector2d.d.ts.map +1 -1
  295. package/lib/esm/geometry3d/Point2dVector2d.js +9 -10
  296. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  297. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  298. package/lib/esm/geometry3d/Point3dVector3d.d.ts +4 -4
  299. package/lib/esm/geometry3d/Point3dVector3d.js +5 -5
  300. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  301. package/lib/esm/geometry3d/PointHelpers.d.ts.map +1 -1
  302. package/lib/esm/geometry3d/PointHelpers.js +5 -5
  303. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  304. package/lib/esm/geometry3d/PolygonOps.d.ts +1 -2
  305. package/lib/esm/geometry3d/PolygonOps.d.ts.map +1 -1
  306. package/lib/esm/geometry3d/PolygonOps.js +2 -3
  307. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  308. package/lib/esm/geometry3d/Range.js.map +1 -1
  309. package/lib/esm/geometry3d/Ray2d.d.ts +69 -0
  310. package/lib/esm/geometry3d/Ray2d.d.ts.map +1 -0
  311. package/lib/esm/geometry3d/Ray2d.js +142 -0
  312. package/lib/esm/geometry3d/Ray2d.js.map +1 -0
  313. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  314. package/lib/esm/geometry3d/Transform.d.ts +3 -3
  315. package/lib/esm/geometry3d/Transform.js +6 -6
  316. package/lib/esm/geometry3d/Transform.js.map +1 -1
  317. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  318. package/lib/esm/numerics/ConvexPolygon2d.d.ts +7 -49
  319. package/lib/esm/numerics/ConvexPolygon2d.d.ts.map +1 -1
  320. package/lib/esm/numerics/ConvexPolygon2d.js +14 -104
  321. package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
  322. package/lib/esm/numerics/Newton.js.map +1 -1
  323. package/lib/esm/numerics/Polynomials.d.ts.map +1 -1
  324. package/lib/esm/numerics/Polynomials.js +0 -2
  325. package/lib/esm/numerics/Polynomials.js.map +1 -1
  326. package/lib/esm/numerics/Quadrature.js +5 -5
  327. package/lib/esm/numerics/Quadrature.js.map +1 -1
  328. package/lib/esm/polyface/IndexedEdgeMatcher.js +1 -1
  329. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
  330. package/lib/esm/polyface/PolyfaceBuilder.d.ts.map +1 -1
  331. package/lib/esm/polyface/PolyfaceBuilder.js +2 -2
  332. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  333. package/lib/esm/polyface/PolyfaceQuery.d.ts +10 -7
  334. package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
  335. package/lib/esm/polyface/PolyfaceQuery.js +14 -13
  336. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  337. package/lib/esm/polyface/TaggedNumericData.js +1 -1
  338. package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
  339. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js +2 -2
  340. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  341. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  342. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  343. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  344. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  345. package/lib/esm/serialization/IModelJsonSchema.d.ts +2 -7
  346. package/lib/esm/serialization/IModelJsonSchema.d.ts.map +1 -1
  347. package/lib/esm/serialization/IModelJsonSchema.js +2 -7
  348. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  349. package/lib/esm/topology/ChainMerge.js +1 -1
  350. package/lib/esm/topology/ChainMerge.js.map +1 -1
  351. package/lib/esm/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
  352. package/lib/esm/topology/HalfEdgeGraphSearch.js +1 -1
  353. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  354. package/lib/esm/topology/HalfEdgeGraphSpineContext.js +1 -1
  355. package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  356. package/lib/esm/topology/HalfEdgePriorityQueue.d.ts.map +1 -1
  357. package/lib/esm/topology/HalfEdgePriorityQueue.js +1 -1
  358. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
  359. package/lib/esm/topology/RegularizeFace.js +3 -3
  360. package/lib/esm/topology/RegularizeFace.js.map +1 -1
  361. package/lib/esm/topology/Triangulation.js +1 -1
  362. package/lib/esm/topology/Triangulation.js.map +1 -1
  363. package/package.json +5 -16
  364. package/lib/cjs/curve/ChainCollectorContext.d.ts.map +0 -1
  365. package/lib/cjs/curve/ChainCollectorContext.js.map +0 -1
  366. package/lib/esm/curve/ChainCollectorContext.d.ts.map +0 -1
  367. 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,105 +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
41
- * with sharp corners at each joint by setting `minArcDegrees` to 180 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
- /**
66
- /** Return true if the options indicate this amount of turn should be handled with an arc. */
67
- needArc(theta: Angle): boolean;
68
- /** Return the number of corners needed to chamfer the given turn angle. */
69
- numChamferPoints(theta: Angle): number;
70
- }
71
- /**
72
- * Options for offsetting a curve.
73
- * @public
74
- */
75
- export declare class OffsetOptions {
76
- /** Options for offsetting and joining CurvePrimitives */
77
- jointOptions: JointOptions;
78
- /** Options for generating a B-spline curve offset */
79
- strokeOptions: StrokeOptions;
80
- /** Options that are provided are captured. */
81
- constructor(offsetDistanceOrOptions: number | JointOptions, strokeOptions?: StrokeOptions);
82
- get minArcDegrees(): number;
83
- set minArcDegrees(value: number);
84
- get maxChamferTurnDegrees(): number;
85
- set maxChamferTurnDegrees(value: number);
86
- get allowSharpestCorners(): boolean;
87
- set allowSharpestCorners(value: boolean);
88
- get leftOffsetDistance(): number;
89
- set leftOffsetDistance(value: number);
90
- get preserveEllipticalArcs(): boolean;
91
- set preserveEllipticalArcs(value: boolean);
92
- /**
93
- * Convert variant input into OffsetOptions.
94
- * * If a JointOptions is provided, it is captured.
95
- * * If an OffsetOptions is provided, a reference to it is returned.
96
- */
97
- static create(offsetDistanceOrOptions: number | JointOptions | OffsetOptions): OffsetOptions;
98
- /** Convert variant input into offset distance */
99
- static getOffsetDistance(offsetDistanceOrOptions: number | JointOptions | OffsetOptions): number;
100
- /** Return a deep clone. */
101
- clone(): OffsetOptions;
102
- }
103
10
  /**
104
11
  * Context for building a wire offset.
105
12
  * @internal
@@ -141,20 +48,19 @@ export declare class CurveChainWireOffsetContext {
141
48
  */
142
49
  static applyBasePoints(cp: CurvePrimitive | undefined, startPoint: Point3d | undefined, endPoint: Point3d | undefined): CurvePrimitive | undefined;
143
50
  /**
144
- * Create the offset of a single primitive as viewed in the xy-plane (ignoring z).
145
- * * 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:
146
53
  * * `(primitive as any).baseCurveStart: Point3d`
147
54
  * * `(primitive as any).baseCurveEnd: Point3d`
148
- * @param g primitive to offset
149
- * @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
150
57
  */
151
- static createSingleOffsetPrimitiveXY(g: CurvePrimitive, offsetDistanceOrOptions: number | OffsetOptions): CurvePrimitive | CurvePrimitive[] | undefined;
58
+ static createSingleOffsetPrimitiveXY(curve: CurvePrimitive, offsetDistanceOrOptions: number | OffsetOptions): CurvePrimitive | CurvePrimitive[] | undefined;
152
59
  /**
153
60
  * Construct curves that are offset from a Path or Loop as viewed in xy-plane (ignoring z).
154
61
  * * The construction will remove "some" local effects of features smaller than the offset distance, but will
155
62
  * not detect self intersection among widely separated edges.
156
- * * If offsetDistance is given as a number, default OffsetOptions are applied.
157
- * * See [[JointOptions]] class doc for offset construction rules.
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.
160
66
  */
@@ -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"}
@@ -16,9 +16,9 @@ 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
22
  // cspell:word CCWXY
23
23
  /**
24
24
  * Classification of how the joint is constructed.
@@ -33,158 +33,6 @@ var JointMode;
33
33
  JointMode[JointMode["JustGeometry"] = 3] = "JustGeometry";
34
34
  JointMode[JointMode["Gap"] = 4] = "Gap";
35
35
  })(JointMode || (JointMode = {}));
36
- /**
37
- * Control parameters for joint construction.
38
- * * Define a "joint" as the common point between adjacent segments of the input curve.
39
- * * Define the "turn angle" at a joint to be the angle in [0,pi] between the first derivatives (tangents) of
40
- * the segments at the joint.
41
- * * When creating offsets, if an offset needs to do an "outside" turn, the first applicable construction is applied:
42
- * * If the turn angle is larger than `options.minArcDegrees`, a circular arc is constructed to offset the joint.
43
- * * If the turn angle is less than or equal to `options.maxChamferTurnDegrees`, extend curves along tangent to
44
- * single intersection point (to create a sharp corner).
45
- * * If the turn angle is larger than `options.maxChamferDegrees`, the joint is offset with a line string whose edges:
46
- * * lie outside the arc that would have been created by the first construction
47
- * * have uniform turn angle less than `options.maxChamferDegrees`
48
- * * touch the arc at their midpoint (except first and last edge).
49
- * @public
50
- */
51
- export class JointOptions {
52
- /**
53
- * Construct JointOptions.
54
- * * leftOffsetDistance is required
55
- * * minArcDegrees and maxChamferDegrees are optional.
56
- */
57
- constructor(leftOffsetDistance, minArcDegrees = 180, maxChamferDegrees = 90, preserveEllipticalArcs = false, allowSharpestCorners = false) {
58
- /**
59
- * Smallest arc to construct.
60
- * * If this control angle is 180 degrees or more, arcs are never created.
61
- */
62
- this.minArcDegrees = 180.0;
63
- /** Largest turn angle at which to construct a sharp corner, or largest turn angle in a multi-segment chamfer. */
64
- this.maxChamferTurnDegrees = 90;
65
- /**
66
- * Whether to remove the internal turn angle upper bound for sharp corner construction.
67
- * * By default, a sharp corner is not created at a joint when the turn angle is too large, so as to avoid offsets whose
68
- * ranges blow up. Internally, this is implemented by applying an upper bound of 120 degrees to `maxChamferTurnDegrees`.
69
- * * When `allowSharpestCorners` is true, this internal upper bound is removed, allowing sharp corners for turn angles
70
- * up to `maxChamferTurnDegrees`.
71
- * * Thus, if you know your input turn angles are no greater than `maxChamferTurnDegrees`, you can create an offset
72
- * with sharp corners at each joint by setting `minArcDegrees` to 180 and `allowSharpestCorners` to true.
73
- */
74
- this.allowSharpestCorners = false;
75
- /** Offset distance, positive to left of base curve. */
76
- this.leftOffsetDistance = 0;
77
- /** Whether to offset elliptical arcs as elliptical arcs (true) or as B-spline curves (false, default). */
78
- this.preserveEllipticalArcs = false;
79
- this.leftOffsetDistance = leftOffsetDistance;
80
- this.minArcDegrees = minArcDegrees;
81
- this.maxChamferTurnDegrees = maxChamferDegrees;
82
- this.preserveEllipticalArcs = preserveEllipticalArcs;
83
- this.allowSharpestCorners = allowSharpestCorners;
84
- }
85
- /** Return a deep clone. */
86
- clone() {
87
- return new JointOptions(this.leftOffsetDistance, this.minArcDegrees, this.maxChamferTurnDegrees, this.preserveEllipticalArcs, this.allowSharpestCorners);
88
- }
89
- /** Copy values of input options */
90
- setFrom(other) {
91
- this.leftOffsetDistance = other.leftOffsetDistance;
92
- this.minArcDegrees = other.minArcDegrees;
93
- this.maxChamferTurnDegrees = other.maxChamferTurnDegrees;
94
- this.preserveEllipticalArcs = other.preserveEllipticalArcs;
95
- this.allowSharpestCorners = other.allowSharpestCorners;
96
- }
97
- /**
98
- * Parse a number or JointOptions up to JointOptions:
99
- * * If leftOffsetDistanceOptions is a number, create a JointOptions with other options set to default values.
100
- * * If leftOffsetDistanceOrOptions is a JointOptions, return it unchanged.
101
- * @param leftOffsetDistanceOrOptions
102
- */
103
- static create(leftOffsetDistanceOrOptions) {
104
- if (leftOffsetDistanceOrOptions instanceof JointOptions)
105
- return leftOffsetDistanceOrOptions;
106
- return new JointOptions(leftOffsetDistanceOrOptions);
107
- }
108
- /**
109
- /** Return true if the options indicate this amount of turn should be handled with an arc. */
110
- needArc(theta) {
111
- return Math.abs(theta.degrees) >= this.minArcDegrees;
112
- }
113
- /** Return the number of corners needed to chamfer the given turn angle. */
114
- numChamferPoints(theta) {
115
- const degrees = Math.abs(theta.degrees);
116
- const minStepDegreesClamp = 10;
117
- let maxStepDegreesClamp = 120;
118
- if (this.allowSharpestCorners) {
119
- maxStepDegreesClamp = this.maxChamferTurnDegrees;
120
- }
121
- const stepDegrees = Geometry.clamp(this.maxChamferTurnDegrees, minStepDegreesClamp, maxStepDegreesClamp);
122
- if (degrees <= stepDegrees)
123
- return 1;
124
- return Math.ceil(degrees / stepDegrees);
125
- }
126
- }
127
- /**
128
- * Options for offsetting a curve.
129
- * @public
130
- */
131
- export class OffsetOptions {
132
- /** Options that are provided are captured. */
133
- constructor(offsetDistanceOrOptions, strokeOptions) {
134
- this.jointOptions = JointOptions.create(offsetDistanceOrOptions);
135
- this.strokeOptions = (strokeOptions !== undefined) ? strokeOptions : StrokeOptions.createForCurves();
136
- }
137
- get minArcDegrees() {
138
- return this.jointOptions.minArcDegrees;
139
- }
140
- set minArcDegrees(value) {
141
- this.jointOptions.minArcDegrees = value;
142
- }
143
- get maxChamferTurnDegrees() {
144
- return this.jointOptions.maxChamferTurnDegrees;
145
- }
146
- set maxChamferTurnDegrees(value) {
147
- this.jointOptions.maxChamferTurnDegrees = value;
148
- }
149
- get allowSharpestCorners() {
150
- return this.jointOptions.allowSharpestCorners;
151
- }
152
- set allowSharpestCorners(value) {
153
- this.jointOptions.allowSharpestCorners = value;
154
- }
155
- get leftOffsetDistance() {
156
- return this.jointOptions.leftOffsetDistance;
157
- }
158
- set leftOffsetDistance(value) {
159
- this.jointOptions.leftOffsetDistance = value;
160
- }
161
- get preserveEllipticalArcs() {
162
- return this.jointOptions.preserveEllipticalArcs;
163
- }
164
- set preserveEllipticalArcs(value) {
165
- this.jointOptions.preserveEllipticalArcs = value;
166
- }
167
- /**
168
- * Convert variant input into OffsetOptions.
169
- * * If a JointOptions is provided, it is captured.
170
- * * If an OffsetOptions is provided, a reference to it is returned.
171
- */
172
- static create(offsetDistanceOrOptions) {
173
- if (offsetDistanceOrOptions instanceof OffsetOptions)
174
- return offsetDistanceOrOptions;
175
- return new OffsetOptions(offsetDistanceOrOptions);
176
- }
177
- /** Convert variant input into offset distance */
178
- static getOffsetDistance(offsetDistanceOrOptions) {
179
- if (typeof offsetDistanceOrOptions === "number")
180
- return offsetDistanceOrOptions;
181
- return offsetDistanceOrOptions.leftOffsetDistance;
182
- }
183
- /** Return a deep clone. */
184
- clone() {
185
- return new OffsetOptions(this.jointOptions.clone(), this.strokeOptions.clone());
186
- }
187
- }
188
36
  /**
189
37
  * Description of geometry around a joint.
190
38
  * @internal
@@ -671,34 +519,33 @@ export class CurveChainWireOffsetContext {
671
519
  return cp;
672
520
  }
673
521
  /**
674
- * Create the offset of a single primitive as viewed in the xy-plane (ignoring z).
675
- * * 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:
676
524
  * * `(primitive as any).baseCurveStart: Point3d`
677
525
  * * `(primitive as any).baseCurveEnd: Point3d`
678
- * @param g primitive to offset
679
- * @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
680
528
  */
681
- static createSingleOffsetPrimitiveXY(g, offsetDistanceOrOptions) {
682
- const offset = g.constructOffsetXY(offsetDistanceOrOptions);
529
+ static createSingleOffsetPrimitiveXY(curve, offsetDistanceOrOptions) {
530
+ const offset = curve.constructOffsetXY(offsetDistanceOrOptions);
683
531
  if (offset === undefined)
684
532
  return undefined;
685
533
  // decorate each offset with its base curve's endpoints
686
534
  if (Array.isArray(offset)) {
687
- const basePrims = g.collectCurvePrimitives(undefined, true, true);
535
+ const basePrims = curve.collectCurvePrimitives(undefined, true, true);
688
536
  if (basePrims.length !== offset.length)
689
537
  return undefined; // unexpected aggregate curve type!
690
538
  for (let i = 0; i < basePrims.length; ++i)
691
539
  this.applyBasePoints(offset[i], basePrims[i].startPoint(), basePrims[i].endPoint());
692
540
  return offset;
693
541
  }
694
- return this.applyBasePoints(offset, g.startPoint(), g.endPoint());
542
+ return this.applyBasePoints(offset, curve.startPoint(), curve.endPoint());
695
543
  }
696
544
  /**
697
545
  * Construct curves that are offset from a Path or Loop as viewed in xy-plane (ignoring z).
698
546
  * * The construction will remove "some" local effects of features smaller than the offset distance, but will
699
547
  * not detect self intersection among widely separated edges.
700
- * * If offsetDistance is given as a number, default OffsetOptions are applied.
701
- * * See [[JointOptions]] class doc for offset construction rules.
548
+ * * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/Offset
702
549
  * @param curves base curves.
703
550
  * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or options object.
704
551
  */