@itwin/core-geometry 4.10.0-dev.9 → 5.0.0-dev.0

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 (338) hide show
  1. package/CHANGELOG.md +21 -1
  2. package/lib/cjs/Geometry.js +2 -2
  3. package/lib/cjs/Geometry.js.map +1 -1
  4. package/lib/cjs/bspline/BSpline1dNd.d.ts.map +1 -1
  5. package/lib/cjs/bspline/BSpline1dNd.js +0 -1
  6. package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
  7. package/lib/cjs/bspline/BSplineCurve.d.ts +5 -3
  8. package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -1
  9. package/lib/cjs/bspline/BSplineCurve.js +5 -4
  10. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  11. package/lib/cjs/clipping/ClipVector.js +1 -1
  12. package/lib/cjs/clipping/ClipVector.js.map +1 -1
  13. package/lib/cjs/core-geometry.d.ts +1 -1
  14. package/lib/cjs/core-geometry.d.ts.map +1 -1
  15. package/lib/cjs/core-geometry.js +1 -1
  16. package/lib/cjs/core-geometry.js.map +1 -1
  17. package/lib/cjs/curve/Arc3d.d.ts +136 -128
  18. package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
  19. package/lib/cjs/curve/Arc3d.js +177 -152
  20. package/lib/cjs/curve/Arc3d.js.map +1 -1
  21. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +7 -5
  22. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  23. package/lib/cjs/curve/CurveChainWithDistanceIndex.js +9 -7
  24. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  25. package/lib/cjs/curve/CurveCollection.d.ts +21 -2
  26. package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
  27. package/lib/cjs/curve/CurveCollection.js +45 -10
  28. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  29. package/lib/cjs/curve/CurveExtendMode.d.ts +18 -15
  30. package/lib/cjs/curve/CurveExtendMode.d.ts.map +1 -1
  31. package/lib/cjs/curve/CurveExtendMode.js +18 -17
  32. package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
  33. package/lib/cjs/curve/CurveFactory.d.ts +11 -13
  34. package/lib/cjs/curve/CurveFactory.d.ts.map +1 -1
  35. package/lib/cjs/curve/CurveFactory.js +19 -46
  36. package/lib/cjs/curve/CurveFactory.js.map +1 -1
  37. package/lib/cjs/curve/CurvePrimitive.d.ts +9 -5
  38. package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -1
  39. package/lib/cjs/curve/CurvePrimitive.js +9 -5
  40. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  41. package/lib/cjs/curve/CurveProcessor.d.ts.map +1 -1
  42. package/lib/cjs/curve/CurveProcessor.js +0 -1
  43. package/lib/cjs/curve/CurveProcessor.js.map +1 -1
  44. package/lib/cjs/curve/LineSegment3d.d.ts.map +1 -1
  45. package/lib/cjs/curve/LineSegment3d.js +2 -3
  46. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  47. package/lib/cjs/curve/LineString3d.d.ts.map +1 -1
  48. package/lib/cjs/curve/OffsetOptions.d.ts.map +1 -1
  49. package/lib/cjs/curve/OffsetOptions.js +4 -4
  50. package/lib/cjs/curve/OffsetOptions.js.map +1 -1
  51. package/lib/cjs/curve/Path.d.ts +14 -0
  52. package/lib/cjs/curve/Path.d.ts.map +1 -1
  53. package/lib/cjs/curve/Path.js +27 -0
  54. package/lib/cjs/curve/Path.js.map +1 -1
  55. package/lib/cjs/curve/PointString3d.d.ts.map +1 -1
  56. package/lib/cjs/curve/PointString3d.js +0 -1
  57. package/lib/cjs/curve/PointString3d.js.map +1 -1
  58. package/lib/cjs/curve/StrokeOptions.d.ts.map +1 -1
  59. package/lib/cjs/curve/StrokeOptions.js +0 -1
  60. package/lib/cjs/curve/StrokeOptions.js.map +1 -1
  61. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.d.ts.map +1 -1
  62. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js +5 -6
  63. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  64. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
  65. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js +10 -10
  66. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  67. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.d.ts.map +1 -1
  68. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js +4 -4
  69. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  70. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.d.ts +18 -18
  71. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.d.ts.map +1 -1
  72. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js +46 -42
  73. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  74. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js +5 -4
  75. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  76. package/lib/cjs/geometry3d/AngleSweep.d.ts +10 -6
  77. package/lib/cjs/geometry3d/AngleSweep.d.ts.map +1 -1
  78. package/lib/cjs/geometry3d/AngleSweep.js +15 -12
  79. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
  80. package/lib/cjs/geometry3d/BilinearPatch.js +4 -4
  81. package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
  82. package/lib/cjs/geometry3d/FrameBuilder.d.ts.map +1 -1
  83. package/lib/cjs/geometry3d/FrameBuilder.js +0 -1
  84. package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
  85. package/lib/cjs/geometry3d/IndexedXYCollection.d.ts.map +1 -1
  86. package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
  87. package/lib/cjs/geometry3d/Matrix3d.d.ts +28 -17
  88. package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -1
  89. package/lib/cjs/geometry3d/Matrix3d.js +36 -17
  90. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  91. package/lib/cjs/geometry3d/Point2dArrayCarrier.d.ts.map +1 -1
  92. package/lib/cjs/geometry3d/Point2dArrayCarrier.js +2 -3
  93. package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
  94. package/lib/cjs/geometry3d/Point3dVector3d.d.ts +6 -5
  95. package/lib/cjs/geometry3d/Point3dVector3d.d.ts.map +1 -1
  96. package/lib/cjs/geometry3d/Point3dVector3d.js +6 -5
  97. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  98. package/lib/cjs/geometry3d/PointHelpers.d.ts.map +1 -1
  99. package/lib/cjs/geometry3d/PointHelpers.js +0 -1
  100. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  101. package/lib/cjs/geometry3d/PolygonOps.d.ts.map +1 -1
  102. package/lib/cjs/geometry3d/PolygonOps.js +2 -4
  103. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  104. package/lib/cjs/geometry3d/Ray3d.js +2 -2
  105. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  106. package/lib/cjs/geometry3d/YawPitchRollAngles.d.ts.map +1 -1
  107. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  108. package/lib/cjs/geometry4d/Map4d.d.ts +5 -5
  109. package/lib/cjs/geometry4d/Map4d.js +5 -5
  110. package/lib/cjs/geometry4d/Map4d.js.map +1 -1
  111. package/lib/cjs/geometry4d/Matrix4d.d.ts +4 -7
  112. package/lib/cjs/geometry4d/Matrix4d.d.ts.map +1 -1
  113. package/lib/cjs/geometry4d/Matrix4d.js +4 -7
  114. package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
  115. package/lib/cjs/geometry4d/Point4d.d.ts.map +1 -1
  116. package/lib/cjs/geometry4d/Point4d.js +2 -1
  117. package/lib/cjs/geometry4d/Point4d.js.map +1 -1
  118. package/lib/cjs/numerics/BezierPolynomials.d.ts.map +1 -1
  119. package/lib/cjs/numerics/BezierPolynomials.js +0 -1
  120. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
  121. package/lib/cjs/numerics/Newton.d.ts +3 -0
  122. package/lib/cjs/numerics/Newton.d.ts.map +1 -1
  123. package/lib/cjs/numerics/Newton.js +2 -5
  124. package/lib/cjs/numerics/Newton.js.map +1 -1
  125. package/lib/cjs/numerics/Polynomials.d.ts +46 -201
  126. package/lib/cjs/numerics/Polynomials.d.ts.map +1 -1
  127. package/lib/cjs/numerics/Polynomials.js +132 -445
  128. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  129. package/lib/cjs/numerics/Range1dArray.js +2 -2
  130. package/lib/cjs/numerics/Range1dArray.js.map +1 -1
  131. package/lib/cjs/numerics/SmallSystem.d.ts +164 -0
  132. package/lib/cjs/numerics/SmallSystem.d.ts.map +1 -0
  133. package/lib/cjs/numerics/SmallSystem.js +321 -0
  134. package/lib/cjs/numerics/SmallSystem.js.map +1 -0
  135. package/lib/cjs/polyface/AuxData.d.ts.map +1 -1
  136. package/lib/cjs/polyface/AuxData.js.map +1 -1
  137. package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
  138. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js +0 -1
  139. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  140. package/lib/cjs/polyface/Polyface.d.ts +2 -2
  141. package/lib/cjs/polyface/Polyface.d.ts.map +1 -1
  142. package/lib/cjs/polyface/Polyface.js +0 -1
  143. package/lib/cjs/polyface/Polyface.js.map +1 -1
  144. package/lib/cjs/polyface/PolyfaceBuilder.js +1 -1
  145. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  146. package/lib/cjs/polyface/PolyfaceClip.d.ts +3 -3
  147. package/lib/cjs/polyface/PolyfaceClip.d.ts.map +1 -1
  148. package/lib/cjs/polyface/PolyfaceClip.js +1 -2
  149. package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
  150. package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
  151. package/lib/cjs/polyface/PolyfaceQuery.js +0 -1
  152. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  153. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  154. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  155. package/lib/cjs/polyface/multiclip/OffsetMeshContext.d.ts +1 -1
  156. package/lib/cjs/polyface/multiclip/OffsetMeshContext.d.ts.map +1 -1
  157. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js +7 -7
  158. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  159. package/lib/cjs/serialization/DeepCompare.d.ts.map +1 -1
  160. package/lib/cjs/serialization/DeepCompare.js +0 -1
  161. package/lib/cjs/serialization/DeepCompare.js.map +1 -1
  162. package/lib/cjs/topology/Graph.d.ts.map +1 -1
  163. package/lib/cjs/topology/Graph.js +2 -2
  164. package/lib/cjs/topology/Graph.js.map +1 -1
  165. package/lib/cjs/topology/InsertAndRetriangulateContext.js +2 -2
  166. package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
  167. package/lib/cjs/topology/Merging.d.ts +1 -1
  168. package/lib/cjs/topology/Merging.d.ts.map +1 -1
  169. package/lib/cjs/topology/Merging.js +2 -2
  170. package/lib/cjs/topology/Merging.js.map +1 -1
  171. package/lib/esm/Geometry.js +2 -2
  172. package/lib/esm/Geometry.js.map +1 -1
  173. package/lib/esm/bspline/BSpline1dNd.d.ts.map +1 -1
  174. package/lib/esm/bspline/BSpline1dNd.js +0 -1
  175. package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
  176. package/lib/esm/bspline/BSplineCurve.d.ts +5 -3
  177. package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
  178. package/lib/esm/bspline/BSplineCurve.js +5 -4
  179. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  180. package/lib/esm/clipping/ClipVector.js +1 -1
  181. package/lib/esm/clipping/ClipVector.js.map +1 -1
  182. package/lib/esm/core-geometry.d.ts +1 -1
  183. package/lib/esm/core-geometry.d.ts.map +1 -1
  184. package/lib/esm/core-geometry.js +1 -1
  185. package/lib/esm/core-geometry.js.map +1 -1
  186. package/lib/esm/curve/Arc3d.d.ts +136 -128
  187. package/lib/esm/curve/Arc3d.d.ts.map +1 -1
  188. package/lib/esm/curve/Arc3d.js +177 -152
  189. package/lib/esm/curve/Arc3d.js.map +1 -1
  190. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +7 -5
  191. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  192. package/lib/esm/curve/CurveChainWithDistanceIndex.js +9 -7
  193. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  194. package/lib/esm/curve/CurveCollection.d.ts +21 -2
  195. package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
  196. package/lib/esm/curve/CurveCollection.js +45 -10
  197. package/lib/esm/curve/CurveCollection.js.map +1 -1
  198. package/lib/esm/curve/CurveExtendMode.d.ts +18 -15
  199. package/lib/esm/curve/CurveExtendMode.d.ts.map +1 -1
  200. package/lib/esm/curve/CurveExtendMode.js +18 -17
  201. package/lib/esm/curve/CurveExtendMode.js.map +1 -1
  202. package/lib/esm/curve/CurveFactory.d.ts +11 -13
  203. package/lib/esm/curve/CurveFactory.d.ts.map +1 -1
  204. package/lib/esm/curve/CurveFactory.js +17 -44
  205. package/lib/esm/curve/CurveFactory.js.map +1 -1
  206. package/lib/esm/curve/CurvePrimitive.d.ts +9 -5
  207. package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
  208. package/lib/esm/curve/CurvePrimitive.js +9 -5
  209. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  210. package/lib/esm/curve/CurveProcessor.d.ts.map +1 -1
  211. package/lib/esm/curve/CurveProcessor.js +0 -1
  212. package/lib/esm/curve/CurveProcessor.js.map +1 -1
  213. package/lib/esm/curve/LineSegment3d.d.ts.map +1 -1
  214. package/lib/esm/curve/LineSegment3d.js +1 -2
  215. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  216. package/lib/esm/curve/LineString3d.d.ts.map +1 -1
  217. package/lib/esm/curve/OffsetOptions.d.ts.map +1 -1
  218. package/lib/esm/curve/OffsetOptions.js +4 -4
  219. package/lib/esm/curve/OffsetOptions.js.map +1 -1
  220. package/lib/esm/curve/Path.d.ts +14 -0
  221. package/lib/esm/curve/Path.d.ts.map +1 -1
  222. package/lib/esm/curve/Path.js +27 -0
  223. package/lib/esm/curve/Path.js.map +1 -1
  224. package/lib/esm/curve/PointString3d.d.ts.map +1 -1
  225. package/lib/esm/curve/PointString3d.js +0 -1
  226. package/lib/esm/curve/PointString3d.js.map +1 -1
  227. package/lib/esm/curve/StrokeOptions.d.ts.map +1 -1
  228. package/lib/esm/curve/StrokeOptions.js +0 -1
  229. package/lib/esm/curve/StrokeOptions.js.map +1 -1
  230. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.d.ts.map +1 -1
  231. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js +4 -5
  232. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  233. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
  234. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js +5 -5
  235. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  236. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.d.ts.map +1 -1
  237. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js +3 -3
  238. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  239. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.d.ts +18 -18
  240. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.d.ts.map +1 -1
  241. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js +46 -42
  242. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  243. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js +5 -4
  244. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  245. package/lib/esm/geometry3d/AngleSweep.d.ts +10 -6
  246. package/lib/esm/geometry3d/AngleSweep.d.ts.map +1 -1
  247. package/lib/esm/geometry3d/AngleSweep.js +15 -12
  248. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  249. package/lib/esm/geometry3d/BilinearPatch.js +1 -1
  250. package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
  251. package/lib/esm/geometry3d/FrameBuilder.d.ts.map +1 -1
  252. package/lib/esm/geometry3d/FrameBuilder.js +0 -1
  253. package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
  254. package/lib/esm/geometry3d/IndexedXYCollection.d.ts.map +1 -1
  255. package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
  256. package/lib/esm/geometry3d/Matrix3d.d.ts +28 -17
  257. package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -1
  258. package/lib/esm/geometry3d/Matrix3d.js +36 -17
  259. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  260. package/lib/esm/geometry3d/Point2dArrayCarrier.d.ts.map +1 -1
  261. package/lib/esm/geometry3d/Point2dArrayCarrier.js +0 -1
  262. package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
  263. package/lib/esm/geometry3d/Point3dVector3d.d.ts +6 -5
  264. package/lib/esm/geometry3d/Point3dVector3d.d.ts.map +1 -1
  265. package/lib/esm/geometry3d/Point3dVector3d.js +6 -5
  266. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  267. package/lib/esm/geometry3d/PointHelpers.d.ts.map +1 -1
  268. package/lib/esm/geometry3d/PointHelpers.js +0 -1
  269. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  270. package/lib/esm/geometry3d/PolygonOps.d.ts.map +1 -1
  271. package/lib/esm/geometry3d/PolygonOps.js +2 -4
  272. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  273. package/lib/esm/geometry3d/Ray3d.js +1 -1
  274. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  275. package/lib/esm/geometry3d/YawPitchRollAngles.d.ts.map +1 -1
  276. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  277. package/lib/esm/geometry4d/Map4d.d.ts +5 -5
  278. package/lib/esm/geometry4d/Map4d.js +5 -5
  279. package/lib/esm/geometry4d/Map4d.js.map +1 -1
  280. package/lib/esm/geometry4d/Matrix4d.d.ts +4 -7
  281. package/lib/esm/geometry4d/Matrix4d.d.ts.map +1 -1
  282. package/lib/esm/geometry4d/Matrix4d.js +4 -7
  283. package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
  284. package/lib/esm/geometry4d/Point4d.d.ts.map +1 -1
  285. package/lib/esm/geometry4d/Point4d.js +2 -1
  286. package/lib/esm/geometry4d/Point4d.js.map +1 -1
  287. package/lib/esm/numerics/BezierPolynomials.d.ts.map +1 -1
  288. package/lib/esm/numerics/BezierPolynomials.js +0 -1
  289. package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
  290. package/lib/esm/numerics/Newton.d.ts +3 -0
  291. package/lib/esm/numerics/Newton.d.ts.map +1 -1
  292. package/lib/esm/numerics/Newton.js +1 -4
  293. package/lib/esm/numerics/Newton.js.map +1 -1
  294. package/lib/esm/numerics/Polynomials.d.ts +46 -201
  295. package/lib/esm/numerics/Polynomials.d.ts.map +1 -1
  296. package/lib/esm/numerics/Polynomials.js +132 -444
  297. package/lib/esm/numerics/Polynomials.js.map +1 -1
  298. package/lib/esm/numerics/SmallSystem.d.ts +164 -0
  299. package/lib/esm/numerics/SmallSystem.d.ts.map +1 -0
  300. package/lib/esm/numerics/SmallSystem.js +317 -0
  301. package/lib/esm/numerics/SmallSystem.js.map +1 -0
  302. package/lib/esm/polyface/AuxData.d.ts.map +1 -1
  303. package/lib/esm/polyface/AuxData.js.map +1 -1
  304. package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
  305. package/lib/esm/polyface/IndexedPolyfaceVisitor.js +0 -1
  306. package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  307. package/lib/esm/polyface/Polyface.d.ts +2 -2
  308. package/lib/esm/polyface/Polyface.d.ts.map +1 -1
  309. package/lib/esm/polyface/Polyface.js +0 -1
  310. package/lib/esm/polyface/Polyface.js.map +1 -1
  311. package/lib/esm/polyface/PolyfaceBuilder.js +1 -1
  312. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  313. package/lib/esm/polyface/PolyfaceClip.d.ts +3 -3
  314. package/lib/esm/polyface/PolyfaceClip.d.ts.map +1 -1
  315. package/lib/esm/polyface/PolyfaceClip.js +1 -2
  316. package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
  317. package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
  318. package/lib/esm/polyface/PolyfaceQuery.js +0 -1
  319. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  320. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  321. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  322. package/lib/esm/polyface/multiclip/OffsetMeshContext.d.ts +1 -1
  323. package/lib/esm/polyface/multiclip/OffsetMeshContext.d.ts.map +1 -1
  324. package/lib/esm/polyface/multiclip/OffsetMeshContext.js +4 -4
  325. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  326. package/lib/esm/serialization/DeepCompare.d.ts.map +1 -1
  327. package/lib/esm/serialization/DeepCompare.js +0 -1
  328. package/lib/esm/serialization/DeepCompare.js.map +1 -1
  329. package/lib/esm/topology/Graph.d.ts.map +1 -1
  330. package/lib/esm/topology/Graph.js +1 -1
  331. package/lib/esm/topology/Graph.js.map +1 -1
  332. package/lib/esm/topology/InsertAndRetriangulateContext.js +1 -1
  333. package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
  334. package/lib/esm/topology/Merging.d.ts +1 -1
  335. package/lib/esm/topology/Merging.d.ts.map +1 -1
  336. package/lib/esm/topology/Merging.js +1 -1
  337. package/lib/esm/topology/Merging.js.map +1 -1
  338. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"GriddedRaggedRange2dSet.js","sourceRoot":"","sources":["../../../../src/polyface/multiclip/GriddedRaggedRange2dSet.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/** @packageDocumentation\r\n * @module RangeSearch\r\n */\r\n\r\nimport { Range2d, Range3d } from \"../../geometry3d/Range\";\r\nimport { LowAndHighXY } from \"../../geometry3d/XYZProps\";\r\nimport { LinearSearchRange2dArray } from \"./LinearSearchRange2dArray\";\r\nimport { Range2dSearchInterface } from \"./Range2dSearchInterface\";\r\n\r\n/**\r\n * Type abbreviation to allow undefined as a Range2dSearchInterface parameter.\r\n * @internal\r\n */\r\nexport type OptionalRange2dSearchInterface<T> = Range2dSearchInterface<T> | undefined;\r\n\r\n/**\r\n * A GriddedRaggedRange2dSet is:\r\n * * A doubly dimensioned array of Range2dSearchInterface.\r\n * * Each entry represents a block in a uniform grid within the master range.\r\n * * Member ranges are noted in the grid block containing the range's lower left corner.\r\n * * Member ranges larger than twice the grid size are rejected by the insert method.\r\n * * Hence a search involving a point in grid block (i,j) must examine ranges in grid blocks left and below, i.e. (i-1,j-1), (i-1,j), (i,j-1)\r\n * @public\r\n */\r\nexport class GriddedRaggedRange2dSet<T> implements Range2dSearchInterface<T> {\r\n private _range: Range2d;\r\n private _numXEdge: number;\r\n private _numYEdge: number;\r\n /** Each grid block is a simple linear search set */\r\n private _rangesInBlock: Array<Array<OptionalRange2dSearchInterface<T>>>;\r\n private static _workRange?: Range2d;\r\n private constructor(range: Range2d, numXEdge: number, numYEdge: number) {\r\n this._range = range;\r\n this._numXEdge = numXEdge;\r\n this._numYEdge = numYEdge;\r\n this._rangesInBlock = [];\r\n for (let j = 0; j < this._numYEdge; j++) {\r\n const thisRow: Array<OptionalRange2dSearchInterface<T>> = [];\r\n for (let i = 0; i < this._numXEdge; i++) {\r\n thisRow.push(undefined);\r\n }\r\n this._rangesInBlock.push(thisRow);\r\n }\r\n }\r\n /**\r\n * Create an (empty) set of ranges.\r\n * @param range master range\r\n * @param numXEdge size of grid in x direction\r\n * @param numYEdge size of grid in y direction\r\n */\r\n public static create<T>(range: Range2d, numXEdge: number, numYEdge: number): GriddedRaggedRange2dSet<T> | undefined {\r\n if (numXEdge < 1 || numYEdge < 1 || range.isNull || range.isSinglePoint)\r\n return undefined;\r\n return new GriddedRaggedRange2dSet(range.clone(), numXEdge, numYEdge);\r\n }\r\n private xIndex(x: number): number {\r\n const fraction = (x - this._range.low.x) / (this._range.high.x - this._range.low.x);\r\n return Math.floor(fraction * this._numXEdge);\r\n }\r\n private yIndex(y: number): number {\r\n const fraction = (y - this._range.low.y) / (this._range.high.y - this._range.low.y);\r\n return Math.floor(fraction * this._numXEdge);\r\n }\r\n private getBlock(i: number, j: number): OptionalRange2dSearchInterface<T> {\r\n if (i >= 0 && i < this._numXEdge && j >= 0 && j < this._numYEdge) {\r\n if (!this._rangesInBlock[j][i])\r\n this._rangesInBlock[j][i] = new LinearSearchRange2dArray();\r\n return this._rangesInBlock[j][i];\r\n }\r\n return undefined;\r\n }\r\n /** If possible, insert a range into the set.\r\n * * Decline to insert (and return false) if:\r\n * * range is null\r\n * * range is not completely contained in the overall range of this set\r\n * * range x or y extent is larger than 2 grid blocks\r\n */\r\n public conditionalInsert(range: Range2d | Range3d | LowAndHighXY, tag: T): boolean {\r\n if (Range2d.isNull(range))\r\n return false;\r\n if (!this._range.containsRange(range))\r\n return false;\r\n const xIndex0 = this.xIndex(range.low.x);\r\n const xIndex1 = this.xIndex(range.high.x);\r\n const yIndex0 = this.yIndex(range.low.y);\r\n const yIndex1 = this.yIndex(range.high.y);\r\n if (!(xIndex0 === xIndex1 || xIndex0 + 1 === xIndex1))\r\n return false;\r\n if (!(yIndex0 === yIndex1 || yIndex0 + 1 === yIndex1))\r\n return false;\r\n const rangesInBlock = this.getBlock(xIndex0, yIndex0);\r\n if (rangesInBlock) {\r\n rangesInBlock.addRange(range, tag);\r\n return true;\r\n }\r\n return false;\r\n }\r\n /** Add a range to the search set. */\r\n public addRange(range: LowAndHighXY, tag: T): void {\r\n this.conditionalInsert(range, tag);\r\n }\r\n /**\r\n * * Search a single block\r\n * * Pass each range and tag to handler\r\n * * and return false if bad cell or if handler returns false.\r\n * @param testRange search range.\r\n * @param handler function to receive range and tag hits.\r\n * @return false if search terminated by handler. Return true if no handler returned false.\r\n */\r\n private searchXYInIndexedBlock(i: number, j: number, x: number, y: number, handler: (range: Range2d, tag: T) => boolean): boolean {\r\n const rangesInBlock = this.getBlock(i, j);\r\n if (!rangesInBlock)\r\n return true;\r\n return rangesInBlock.searchXY(x, y, handler);\r\n }\r\n /**\r\n * * Search a single block\r\n * * Pass each range and tag to handler\r\n * * and return false if bad cell or if handler returns false.\r\n * @param testRange search range.\r\n * @param handler function to receive range and tag hits.\r\n * @return false if search terminated by handler. Return true if no handler returned false.\r\n */\r\n private searchRange2dInIndexedBlock(i: number, j: number, testRange: LowAndHighXY, handler: (range: Range2d, tag: T) => boolean): boolean {\r\n const rangesInBlock = this.getBlock(i, j);\r\n if (!rangesInBlock)\r\n return true;\r\n return rangesInBlock.searchRange2d(testRange, handler);\r\n }\r\n /**\r\n * * Search for ranges containing testRange\r\n * * Pass each range and tag to handler\r\n * * terminate search if handler returns false.\r\n * @param testRange search range.\r\n * @param handler function to receive range and tag hits.\r\n * @return false if search terminated by handler. Return true if no handler returned false.\r\n */\r\n public searchXY(x: number, y: number, handler: (range: Range2d, tag: T) => boolean): boolean {\r\n const i = this.xIndex(x);\r\n const j = this.yIndex(y);\r\n return this.searchXYInIndexedBlock(i, j, x, y, handler)\r\n && this.searchXYInIndexedBlock(i - 1, j, x, y, handler)\r\n && this.searchXYInIndexedBlock(i, j - 1, x, y, handler)\r\n && this.searchXYInIndexedBlock(i - 1, j - 1, x, y, handler);\r\n }\r\n /**\r\n * * Search for ranges overlapping testRange\r\n * * Pass each range and tag to handler\r\n * * terminate search if handler returns false.\r\n * @param testRange search range.\r\n * @param handler function to receive range and tag hits.\r\n * @return false if search terminated by handler. Return true if no handler returned false.\r\n */\r\n public searchRange2d(testRange: LowAndHighXY, handler: (range: Range2d, tag: T) => boolean): boolean {\r\n const xIndex0 = this.xIndex(testRange.low.x) - 1;\r\n const xIndex1 = this.xIndex(testRange.high.x);\r\n const yIndex0 = this.yIndex(testRange.low.y) - 1;\r\n const yIndex1 = this.yIndex(testRange.high.y);\r\n for (let i = xIndex0; i <= xIndex1; i++) {\r\n for (let j = yIndex0; j <= yIndex1; j++) {\r\n if (!this.searchRange2dInIndexedBlock(i, j, testRange, handler))\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n /** Return the overall range of all members. */\r\n public totalRange(result?: Range2d): Range2d {\r\n if (result)\r\n result.setNull();\r\n else\r\n result = Range2d.createNull();\r\n this.visitChildren(0, (_depth, child) => {\r\n const childRange = GriddedRaggedRange2dSet._workRange = child.totalRange(GriddedRaggedRange2dSet._workRange);\r\n result!.extendRange(childRange);\r\n });\r\n return result;\r\n }\r\n /** Call the handler on each defined block in the grid. */\r\n public visitChildren(initialDepth: number, handler: (depth: number, child: Range2dSearchInterface<T>) => void) {\r\n for (const row of this._rangesInBlock) {\r\n for (const block of row) {\r\n if (block)\r\n handler(initialDepth, block);\r\n }\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"GriddedRaggedRange2dSet.js","sourceRoot":"","sources":["../../../../src/polyface/multiclip/GriddedRaggedRange2dSet.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/** @packageDocumentation\r\n * @module RangeSearch\r\n */\r\n\r\nimport { Range2d, Range3d } from \"../../geometry3d/Range\";\r\nimport { LowAndHighXY } from \"../../geometry3d/XYZProps\";\r\nimport { LinearSearchRange2dArray } from \"./LinearSearchRange2dArray\";\r\nimport { Range2dSearchInterface } from \"./Range2dSearchInterface\";\r\n\r\n/**\r\n * Type abbreviation to allow undefined as a Range2dSearchInterface parameter.\r\n * @internal\r\n */\r\nexport type OptionalRange2dSearchInterface<T> = Range2dSearchInterface<T> | undefined;\r\n\r\n/**\r\n * A GriddedRaggedRange2dSet is:\r\n * * A doubly dimensioned array of Range2dSearchInterface.\r\n * * Each entry represents a block in a uniform grid within the master range.\r\n * * Member ranges are noted in the grid block containing the range's lower left corner.\r\n * * Member ranges larger than twice the grid size are rejected by the insert method.\r\n * * Hence a search involving a point in grid block (i,j) must examine ranges in grid blocks left and below, i.e. (i-1,j-1), (i-1,j), (i,j-1)\r\n * @public\r\n */\r\nexport class GriddedRaggedRange2dSet<T> implements Range2dSearchInterface<T> {\r\n private _range: Range2d;\r\n private _numXEdge: number;\r\n private _numYEdge: number;\r\n /** Each grid block is a simple linear search set */\r\n private _rangesInBlock: Array<Array<OptionalRange2dSearchInterface<T>>>;\r\n private static _workRange?: Range2d;\r\n private constructor(range: Range2d, numXEdge: number, numYEdge: number) {\r\n this._range = range;\r\n this._numXEdge = numXEdge;\r\n this._numYEdge = numYEdge;\r\n this._rangesInBlock = [];\r\n for (let j = 0; j < this._numYEdge; j++) {\r\n const thisRow: Array<OptionalRange2dSearchInterface<T>> = [];\r\n for (let i = 0; i < this._numXEdge; i++) {\r\n thisRow.push(undefined);\r\n }\r\n this._rangesInBlock.push(thisRow);\r\n }\r\n }\r\n /**\r\n * Create an (empty) set of ranges.\r\n * @param range master range\r\n * @param numXEdge size of grid in x direction\r\n * @param numYEdge size of grid in y direction\r\n */\r\n public static create<T>(range: Range2d, numXEdge: number, numYEdge: number): GriddedRaggedRange2dSet<T> | undefined {\r\n if (numXEdge < 1 || numYEdge < 1 || range.isNull || range.isSinglePoint)\r\n return undefined;\r\n return new GriddedRaggedRange2dSet(range.clone(), numXEdge, numYEdge);\r\n }\r\n private xIndex(x: number): number {\r\n const fraction = (x - this._range.low.x) / (this._range.high.x - this._range.low.x);\r\n return Math.floor(fraction * this._numXEdge);\r\n }\r\n private yIndex(y: number): number {\r\n const fraction = (y - this._range.low.y) / (this._range.high.y - this._range.low.y);\r\n return Math.floor(fraction * this._numXEdge);\r\n }\r\n private getBlock(i: number, j: number): OptionalRange2dSearchInterface<T> {\r\n if (i >= 0 && i < this._numXEdge && j >= 0 && j < this._numYEdge) {\r\n if (!this._rangesInBlock[j][i])\r\n this._rangesInBlock[j][i] = new LinearSearchRange2dArray();\r\n return this._rangesInBlock[j][i];\r\n }\r\n return undefined;\r\n }\r\n /** If possible, insert a range into the set.\r\n * * Decline to insert (and return false) if:\r\n * * range is null\r\n * * range is not completely contained in the overall range of this set\r\n * * range x or y extent is larger than 2 grid blocks\r\n */\r\n public conditionalInsert(range: Range2d | Range3d | LowAndHighXY, tag: T): boolean {\r\n if (Range2d.isNull(range))\r\n return false;\r\n if (!this._range.containsRange(range))\r\n return false;\r\n const xIndex0 = this.xIndex(range.low.x);\r\n const xIndex1 = this.xIndex(range.high.x);\r\n const yIndex0 = this.yIndex(range.low.y);\r\n const yIndex1 = this.yIndex(range.high.y);\r\n if (!(xIndex0 === xIndex1 || xIndex0 + 1 === xIndex1))\r\n return false;\r\n if (!(yIndex0 === yIndex1 || yIndex0 + 1 === yIndex1))\r\n return false;\r\n const rangesInBlock = this.getBlock(xIndex0, yIndex0);\r\n if (rangesInBlock) {\r\n rangesInBlock.addRange(range, tag);\r\n return true;\r\n }\r\n return false;\r\n }\r\n /** Add a range to the search set. */\r\n public addRange(range: LowAndHighXY, tag: T): void {\r\n this.conditionalInsert(range, tag);\r\n }\r\n /**\r\n * * Search a single block\r\n * * Pass each range and tag to handler\r\n * * and return false if bad cell or if handler returns false.\r\n * @param testRange search range.\r\n * @param handler function to receive range and tag hits.\r\n * @return false if search terminated by handler. Return true if no handler returned false.\r\n */\r\n private searchXYInIndexedBlock(i: number, j: number, x: number, y: number, handler: (range: Range2d, tag: T) => boolean): boolean {\r\n const rangesInBlock = this.getBlock(i, j);\r\n if (!rangesInBlock)\r\n return true;\r\n return rangesInBlock.searchXY(x, y, handler);\r\n }\r\n /**\r\n * * Search a single block\r\n * * Pass each range and tag to handler\r\n * * and return false if bad cell or if handler returns false.\r\n * @param testRange search range.\r\n * @param handler function to receive range and tag hits.\r\n * @return false if search terminated by handler. Return true if no handler returned false.\r\n */\r\n private searchRange2dInIndexedBlock(i: number, j: number, testRange: LowAndHighXY, handler: (range: Range2d, tag: T) => boolean): boolean {\r\n const rangesInBlock = this.getBlock(i, j);\r\n if (!rangesInBlock)\r\n return true;\r\n return rangesInBlock.searchRange2d(testRange, handler);\r\n }\r\n /**\r\n * * Search for ranges containing testRange\r\n * * Pass each range and tag to handler\r\n * * terminate search if handler returns false.\r\n * @param testRange search range.\r\n * @param handler function to receive range and tag hits.\r\n * @return false if search terminated by handler. Return true if no handler returned false.\r\n */\r\n public searchXY(x: number, y: number, handler: (range: Range2d, tag: T) => boolean): boolean {\r\n const i = this.xIndex(x);\r\n const j = this.yIndex(y);\r\n return this.searchXYInIndexedBlock(i, j, x, y, handler)\r\n && this.searchXYInIndexedBlock(i - 1, j, x, y, handler)\r\n && this.searchXYInIndexedBlock(i, j - 1, x, y, handler)\r\n && this.searchXYInIndexedBlock(i - 1, j - 1, x, y, handler);\r\n }\r\n /**\r\n * * Search for ranges overlapping testRange\r\n * * Pass each range and tag to handler\r\n * * terminate search if handler returns false.\r\n * @param testRange search range.\r\n * @param handler function to receive range and tag hits.\r\n * @return false if search terminated by handler. Return true if no handler returned false.\r\n */\r\n public searchRange2d(testRange: LowAndHighXY, handler: (range: Range2d, tag: T) => boolean): boolean {\r\n const xIndex0 = this.xIndex(testRange.low.x) - 1;\r\n const xIndex1 = this.xIndex(testRange.high.x);\r\n const yIndex0 = this.yIndex(testRange.low.y) - 1;\r\n const yIndex1 = this.yIndex(testRange.high.y);\r\n for (let i = xIndex0; i <= xIndex1; i++) {\r\n for (let j = yIndex0; j <= yIndex1; j++) {\r\n if (!this.searchRange2dInIndexedBlock(i, j, testRange, handler))\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n /** Return the overall range of all members. */\r\n public totalRange(result?: Range2d): Range2d {\r\n if (result)\r\n result.setNull();\r\n else\r\n result = Range2d.createNull();\r\n this.visitChildren(0, (_depth, child) => {\r\n const childRange = GriddedRaggedRange2dSet._workRange = child.totalRange(GriddedRaggedRange2dSet._workRange);\r\n result.extendRange(childRange);\r\n });\r\n return result;\r\n }\r\n /** Call the handler on each defined block in the grid. */\r\n public visitChildren(initialDepth: number, handler: (depth: number, child: Range2dSearchInterface<T>) => void) {\r\n for (const row of this._rangesInBlock) {\r\n for (const block of row) {\r\n if (block)\r\n handler(initialDepth, block);\r\n }\r\n }\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"GriddedRaggedRange2dSetWithOverflow.js","sourceRoot":"","sources":["../../../../src/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,kDAAiD;AAEjD,uEAAoE;AACpE,yEAAsE;AAGtE;;;;;;;GAOG;AACH,MAAa,mCAAmC;IAI9C,YAAoB,OAAmC,EAAE,WAAsC;QAC7F,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IAClC,CAAC;IACD;;;;;OAKG;IACI,MAAM,CAAC,MAAM,CAAI,KAAc,EAAE,QAAgB,EAAE,QAAgB;QACxE,MAAM,KAAK,GAAG,iDAAuB,CAAC,MAAM,CAAI,KAAK,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACnF,IAAI,KAAK;YACP,OAAO,IAAI,mCAAmC,CAAI,KAAK,EAAE,IAAI,mDAAwB,EAAK,CAAC,CAAC;QAC9F,OAAO,SAAS,CAAC;IACnB,CAAC;IACD;;;;;;;OAOG;IACI,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,OAA4C;QAChF,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5F,CAAC;IACD;;;;;;;OAOG;IACI,aAAa,CAAC,SAAuB,EAAE,OAA4C;QACxF,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAChH,CAAC;IACD;;;;;OAKG;IACI,QAAQ,CAAC,KAAmB,EAAE,GAAM;QACzC,IAAI,CAAC,eAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC;gBAC9C,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,+CAA+C;IACxC,UAAU,CAAC,MAAgB;QAChC,IAAI,MAAM;YACR,MAAM,CAAC,OAAO,EAAE,CAAC;;YAEjB,MAAM,GAAG,eAAO,CAAC,UAAU,EAAE,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACtC,MAAM,UAAU,GAAG,mCAAmC,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,mCAAmC,CAAC,UAAU,CAAC,CAAC;YACrI,MAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,mFAAmF;IAC5E,aAAa,CAAC,YAAoB,EAAE,OAAkE;QAC3G,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;CACF;AAvED,kFAuEC","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/** @packageDocumentation\r\n * @module RangeSearch\r\n */\r\n\r\nimport { Range2d } from \"../../geometry3d/Range\";\r\nimport { LowAndHighXY } from \"../../geometry3d/XYZProps\";\r\nimport { GriddedRaggedRange2dSet } from \"./GriddedRaggedRange2dSet\";\r\nimport { LinearSearchRange2dArray } from \"./LinearSearchRange2dArray\";\r\nimport { Range2dSearchInterface } from \"./Range2dSearchInterface\";\r\n\r\n/**\r\n * Use GriddedRaggedRange2dSetWithOverflow for searching among many ranges for which:\r\n * * Most ranges are of somewhat consistent size.\r\n * * A modest number of oversizes.\r\n * * Maintain the smallish ones in a GriddedRaggedRange2dSet.\r\n * * Maintain the overflows in a Range2dSearchInterface.\r\n * @public\r\n */\r\nexport class GriddedRaggedRange2dSetWithOverflow<T> implements Range2dSearchInterface<T> {\r\n private _gridSet: GriddedRaggedRange2dSet<T>;\r\n private _overflowSet: Range2dSearchInterface<T>;\r\n private static _workRange?: Range2d;\r\n private constructor(gridSet: GriddedRaggedRange2dSet<T>, overflowSet: Range2dSearchInterface<T>) {\r\n this._gridSet = gridSet;\r\n this._overflowSet = overflowSet;\r\n }\r\n /**\r\n * Create an (empty) set of ranges.\r\n * @param range\r\n * @param numXEdge\r\n * @param numYEdge\r\n */\r\n public static create<T>(range: Range2d, numXEdge: number, numYEdge: number): GriddedRaggedRange2dSetWithOverflow<T> | undefined {\r\n const grids = GriddedRaggedRange2dSet.create<T>(range.clone(), numXEdge, numYEdge);\r\n if (grids)\r\n return new GriddedRaggedRange2dSetWithOverflow<T>(grids, new LinearSearchRange2dArray<T>());\r\n return undefined;\r\n }\r\n /**\r\n * * Search for ranges containing testRange\r\n * * Pass each range and tag to handler\r\n * * terminate search if handler returns false.\r\n * @param testRange search range.\r\n * @param handler function to receive range and tag hits.\r\n * @return false if search terminated by handler. Return true if no handler returned false.\r\n */\r\n public searchXY(x: number, y: number, handler: (range: Range2d, tag: T) => boolean): boolean {\r\n return this._gridSet.searchXY(x, y, handler) && this._overflowSet.searchXY(x, y, handler);\r\n }\r\n /**\r\n * * Search for ranges overlapping testRange\r\n * * Pass each range and tag to handler\r\n * * terminate search if handler returns false.\r\n * @param testRange search range.\r\n * @param handler function to receive range and tag hits.\r\n * @return false if search terminated by handler. Return true if no handler returned false.\r\n */\r\n public searchRange2d(testRange: LowAndHighXY, handler: (range: Range2d, tag: T) => boolean): boolean {\r\n return this._gridSet.searchRange2d(testRange, handler) && this._overflowSet.searchRange2d(testRange, handler);\r\n }\r\n /** If possible, insert a range into the set.\r\n * * Decline to insert (and return false) if\r\n * * range is null\r\n * * range is not completely contained in the overall range of this set.\r\n * * range x or y extent is larger than 2 grid blocks.\r\n */\r\n public addRange(range: LowAndHighXY, tag: T): void {\r\n if (!Range2d.isNull(range)) {\r\n if (!this._gridSet.conditionalInsert(range, tag))\r\n this._overflowSet.addRange(range, tag);\r\n }\r\n }\r\n /** Return the overall range of all members. */\r\n public totalRange(result?: Range2d): Range2d {\r\n if (result)\r\n result.setNull();\r\n else\r\n result = Range2d.createNull();\r\n this.visitChildren(0, (_depth, child) => {\r\n const childRange = GriddedRaggedRange2dSetWithOverflow._workRange = child.totalRange(GriddedRaggedRange2dSetWithOverflow._workRange);\r\n result!.extendRange(childRange);\r\n });\r\n return result;\r\n }\r\n /** Call the handler on the overflow set, and on each defined block in the grid. */\r\n public visitChildren(initialDepth: number, handler: (depth: number, child: Range2dSearchInterface<T>) => void) {\r\n handler(initialDepth, this._overflowSet);\r\n this._gridSet.visitChildren(initialDepth + 1, handler);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"GriddedRaggedRange2dSetWithOverflow.js","sourceRoot":"","sources":["../../../../src/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,kDAAiD;AAEjD,uEAAoE;AACpE,yEAAsE;AAGtE;;;;;;;GAOG;AACH,MAAa,mCAAmC;IAI9C,YAAoB,OAAmC,EAAE,WAAsC;QAC7F,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IAClC,CAAC;IACD;;;;;OAKG;IACI,MAAM,CAAC,MAAM,CAAI,KAAc,EAAE,QAAgB,EAAE,QAAgB;QACxE,MAAM,KAAK,GAAG,iDAAuB,CAAC,MAAM,CAAI,KAAK,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACnF,IAAI,KAAK;YACP,OAAO,IAAI,mCAAmC,CAAI,KAAK,EAAE,IAAI,mDAAwB,EAAK,CAAC,CAAC;QAC9F,OAAO,SAAS,CAAC;IACnB,CAAC;IACD;;;;;;;OAOG;IACI,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,OAA4C;QAChF,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5F,CAAC;IACD;;;;;;;OAOG;IACI,aAAa,CAAC,SAAuB,EAAE,OAA4C;QACxF,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAChH,CAAC;IACD;;;;;OAKG;IACI,QAAQ,CAAC,KAAmB,EAAE,GAAM;QACzC,IAAI,CAAC,eAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC;gBAC9C,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,+CAA+C;IACxC,UAAU,CAAC,MAAgB;QAChC,IAAI,MAAM;YACR,MAAM,CAAC,OAAO,EAAE,CAAC;;YAEjB,MAAM,GAAG,eAAO,CAAC,UAAU,EAAE,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACtC,MAAM,UAAU,GAAG,mCAAmC,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,mCAAmC,CAAC,UAAU,CAAC,CAAC;YACrI,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,mFAAmF;IAC5E,aAAa,CAAC,YAAoB,EAAE,OAAkE;QAC3G,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;CACF;AAvED,kFAuEC","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/** @packageDocumentation\r\n * @module RangeSearch\r\n */\r\n\r\nimport { Range2d } from \"../../geometry3d/Range\";\r\nimport { LowAndHighXY } from \"../../geometry3d/XYZProps\";\r\nimport { GriddedRaggedRange2dSet } from \"./GriddedRaggedRange2dSet\";\r\nimport { LinearSearchRange2dArray } from \"./LinearSearchRange2dArray\";\r\nimport { Range2dSearchInterface } from \"./Range2dSearchInterface\";\r\n\r\n/**\r\n * Use GriddedRaggedRange2dSetWithOverflow for searching among many ranges for which:\r\n * * Most ranges are of somewhat consistent size.\r\n * * A modest number of oversizes.\r\n * * Maintain the smallish ones in a GriddedRaggedRange2dSet.\r\n * * Maintain the overflows in a Range2dSearchInterface.\r\n * @public\r\n */\r\nexport class GriddedRaggedRange2dSetWithOverflow<T> implements Range2dSearchInterface<T> {\r\n private _gridSet: GriddedRaggedRange2dSet<T>;\r\n private _overflowSet: Range2dSearchInterface<T>;\r\n private static _workRange?: Range2d;\r\n private constructor(gridSet: GriddedRaggedRange2dSet<T>, overflowSet: Range2dSearchInterface<T>) {\r\n this._gridSet = gridSet;\r\n this._overflowSet = overflowSet;\r\n }\r\n /**\r\n * Create an (empty) set of ranges.\r\n * @param range\r\n * @param numXEdge\r\n * @param numYEdge\r\n */\r\n public static create<T>(range: Range2d, numXEdge: number, numYEdge: number): GriddedRaggedRange2dSetWithOverflow<T> | undefined {\r\n const grids = GriddedRaggedRange2dSet.create<T>(range.clone(), numXEdge, numYEdge);\r\n if (grids)\r\n return new GriddedRaggedRange2dSetWithOverflow<T>(grids, new LinearSearchRange2dArray<T>());\r\n return undefined;\r\n }\r\n /**\r\n * * Search for ranges containing testRange\r\n * * Pass each range and tag to handler\r\n * * terminate search if handler returns false.\r\n * @param testRange search range.\r\n * @param handler function to receive range and tag hits.\r\n * @return false if search terminated by handler. Return true if no handler returned false.\r\n */\r\n public searchXY(x: number, y: number, handler: (range: Range2d, tag: T) => boolean): boolean {\r\n return this._gridSet.searchXY(x, y, handler) && this._overflowSet.searchXY(x, y, handler);\r\n }\r\n /**\r\n * * Search for ranges overlapping testRange\r\n * * Pass each range and tag to handler\r\n * * terminate search if handler returns false.\r\n * @param testRange search range.\r\n * @param handler function to receive range and tag hits.\r\n * @return false if search terminated by handler. Return true if no handler returned false.\r\n */\r\n public searchRange2d(testRange: LowAndHighXY, handler: (range: Range2d, tag: T) => boolean): boolean {\r\n return this._gridSet.searchRange2d(testRange, handler) && this._overflowSet.searchRange2d(testRange, handler);\r\n }\r\n /** If possible, insert a range into the set.\r\n * * Decline to insert (and return false) if\r\n * * range is null\r\n * * range is not completely contained in the overall range of this set.\r\n * * range x or y extent is larger than 2 grid blocks.\r\n */\r\n public addRange(range: LowAndHighXY, tag: T): void {\r\n if (!Range2d.isNull(range)) {\r\n if (!this._gridSet.conditionalInsert(range, tag))\r\n this._overflowSet.addRange(range, tag);\r\n }\r\n }\r\n /** Return the overall range of all members. */\r\n public totalRange(result?: Range2d): Range2d {\r\n if (result)\r\n result.setNull();\r\n else\r\n result = Range2d.createNull();\r\n this.visitChildren(0, (_depth, child) => {\r\n const childRange = GriddedRaggedRange2dSetWithOverflow._workRange = child.totalRange(GriddedRaggedRange2dSetWithOverflow._workRange);\r\n result.extendRange(childRange);\r\n });\r\n return result;\r\n }\r\n /** Call the handler on the overflow set, and on each defined block in the grid. */\r\n public visitChildren(initialDepth: number, handler: (depth: number, child: Range2dSearchInterface<T>) => void) {\r\n handler(initialDepth, this._overflowSet);\r\n this._gridSet.visitChildren(initialDepth + 1, handler);\r\n }\r\n}\r\n"]}
@@ -4,10 +4,10 @@
4
4
  import { GrowableXYZArray } from "../../geometry3d/GrowableXYZArray";
5
5
  import { Point3d, Vector3d } from "../../geometry3d/Point3dVector3d";
6
6
  import { Ray3d } from "../../geometry3d/Ray3d";
7
+ import { XYAndZ } from "../../geometry3d/XYZProps";
7
8
  import { HalfEdge, HalfEdgeGraph, HalfEdgeMask } from "../../topology/Graph";
8
9
  import { IndexedPolyface } from "../Polyface";
9
10
  import { PolyfaceBuilder } from "../PolyfaceBuilder";
10
- import { XYAndZ } from "../../geometry3d/XYZProps";
11
11
  import { OffsetMeshOptions } from "../PolyfaceQuery";
12
12
  /**
13
13
  * Function to be called for debugging observations at key times during offset computation.
@@ -1 +1 @@
1
- {"version":3,"file":"OffsetMeshContext.d.ts","sourceRoot":"","sources":["../../../../src/polyface/multiclip/OffsetMeshContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OffsetMeshContext.d.ts","sourceRoot":"","sources":["../../../../src/polyface/multiclip/OffsetMeshContext.ts"],"names":[],"mappings":"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"}
@@ -8,16 +8,16 @@
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.OffsetMeshContext = exports.SectorOffsetProperties = exports.FacetOffsetProperties = void 0;
11
- const Polynomials_1 = require("../../numerics/Polynomials");
11
+ const Geometry_1 = require("../../Geometry");
12
+ const Angle_1 = require("../../geometry3d/Angle");
12
13
  const GrowableXYZArray_1 = require("../../geometry3d/GrowableXYZArray");
13
14
  const Point3dVector3d_1 = require("../../geometry3d/Point3dVector3d");
14
15
  const PolygonOps_1 = require("../../geometry3d/PolygonOps");
16
+ const PolylineCompressionByEdgeOffset_1 = require("../../geometry3d/PolylineCompressionByEdgeOffset");
15
17
  const Ray3d_1 = require("../../geometry3d/Ray3d");
18
+ const SmallSystem_1 = require("../../numerics/SmallSystem");
16
19
  const Graph_1 = require("../../topology/Graph");
17
20
  const HalfEdgeGraphFromIndexedLoopsContext_1 = require("../../topology/HalfEdgeGraphFromIndexedLoopsContext");
18
- const Geometry_1 = require("../../Geometry");
19
- const PolylineCompressionByEdgeOffset_1 = require("../../geometry3d/PolylineCompressionByEdgeOffset");
20
- const Angle_1 = require("../../geometry3d/Angle");
21
21
  function isDefinedAndTrue(value) {
22
22
  if (value === undefined)
23
23
  return false;
@@ -743,7 +743,7 @@ class OffsetMeshContext {
743
743
  const sectorA = nodeA.edgeTag;
744
744
  const sectorB = nodeB.edgeTag;
745
745
  const sectorC = nodeC.edgeTag;
746
- const vector = Polynomials_1.SmallSystem.intersect3Planes(sectorA.xyz, sectorA.normal, sectorB.xyz, sectorB.normal, sectorC.xyz, sectorC.normal, result);
746
+ const vector = SmallSystem_1.SmallSystem.intersect3Planes(sectorA.xyz, sectorA.normal, sectorB.xyz, sectorB.normal, sectorC.xyz, sectorC.normal, result);
747
747
  return vector;
748
748
  }
749
749
  /** Compute the point of intersection of the planes in the sectors of 3 half edges */
@@ -756,7 +756,7 @@ class OffsetMeshContext {
756
756
  for (const sector of [sectorA, sectorB, sectorC])
757
757
  emitSector(sector);
758
758
  }
759
- const vector = Polynomials_1.SmallSystem.intersect3Planes(sectorA.xyz, sectorA.normal, sectorB.xyz, sectorB.normal, sectorC.xyz, sectorC.normal, result);
759
+ const vector = SmallSystem_1.SmallSystem.intersect3Planes(sectorA.xyz, sectorA.normal, sectorB.xyz, sectorB.normal, sectorC.xyz, sectorC.normal, result);
760
760
  if (OffsetMeshContext.stringDebugFunction !== undefined) {
761
761
  if (vector === undefined)
762
762
  OffsetMeshContext.stringDebugFunction(" NO INTERSECTION");
@@ -770,7 +770,7 @@ class OffsetMeshContext {
770
770
  const sectorA = nodeA.edgeTag;
771
771
  const sectorB = nodeB.edgeTag;
772
772
  const normalC = sectorA.normal.crossProduct(sectorB.normal);
773
- return Polynomials_1.SmallSystem.intersect3Planes(sectorA.xyz, sectorA.normal, sectorB.xyz, sectorB.normal, sectorB.xyz, normalC, result);
773
+ return SmallSystem_1.SmallSystem.intersect3Planes(sectorA.xyz, sectorA.normal, sectorB.xyz, sectorB.normal, sectorB.xyz, normalC, result);
774
774
  }
775
775
  /**
776
776
  * * at input, graph has all original faces and edges