@itwin/core-geometry 4.4.0-dev.9 → 4.5.0-dev.2

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 (655) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/lib/cjs/Constant.js.map +1 -1
  3. package/lib/cjs/Geometry.d.ts +17 -0
  4. package/lib/cjs/Geometry.d.ts.map +1 -1
  5. package/lib/cjs/Geometry.js +14 -0
  6. package/lib/cjs/Geometry.js.map +1 -1
  7. package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
  8. package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
  9. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  10. package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
  11. package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
  12. package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
  13. package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
  14. package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
  15. package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
  16. package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
  17. package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
  18. package/lib/cjs/bspline/KnotVector.js.map +1 -1
  19. package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -1
  20. package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
  21. package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -1
  22. package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
  23. package/lib/cjs/clipping/ClipPlane.js.map +1 -1
  24. package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
  25. package/lib/cjs/clipping/ClipUtils.js.map +1 -1
  26. package/lib/cjs/clipping/ClipVector.js.map +1 -1
  27. package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
  28. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  29. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  30. package/lib/cjs/core-geometry.d.ts +3 -2
  31. package/lib/cjs/core-geometry.d.ts.map +1 -1
  32. package/lib/cjs/core-geometry.js +3 -2
  33. package/lib/cjs/core-geometry.js.map +1 -1
  34. package/lib/cjs/curve/Arc3d.js.map +1 -1
  35. package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
  36. package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
  37. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +2 -2
  38. package/lib/cjs/curve/CurveChainWithDistanceIndex.js +3 -3
  39. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  40. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  41. package/lib/cjs/curve/CurveCurve.js.map +1 -1
  42. package/lib/cjs/curve/CurveExtendMode.d.ts +7 -6
  43. package/lib/cjs/curve/CurveExtendMode.d.ts.map +1 -1
  44. package/lib/cjs/curve/CurveExtendMode.js +7 -6
  45. package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
  46. package/lib/cjs/curve/CurveFactory.js.map +1 -1
  47. package/lib/cjs/curve/CurveLocationDetail.d.ts.map +1 -1
  48. package/lib/cjs/curve/CurveLocationDetail.js +23 -18
  49. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  50. package/lib/cjs/curve/CurveOps.js.map +1 -1
  51. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  52. package/lib/cjs/curve/CurveProcessor.js.map +1 -1
  53. package/lib/cjs/curve/CurveTypes.js.map +1 -1
  54. package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
  55. package/lib/cjs/curve/GeometryQuery.js.map +1 -1
  56. package/lib/cjs/curve/LineSegment3d.d.ts +14 -4
  57. package/lib/cjs/curve/LineSegment3d.d.ts.map +1 -1
  58. package/lib/cjs/curve/LineSegment3d.js +107 -2
  59. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  60. package/lib/cjs/curve/LineString3d.d.ts +41 -8
  61. package/lib/cjs/curve/LineString3d.d.ts.map +1 -1
  62. package/lib/cjs/curve/LineString3d.js +53 -15
  63. package/lib/cjs/curve/LineString3d.js.map +1 -1
  64. package/lib/cjs/curve/Loop.js +1 -1
  65. package/lib/cjs/curve/Loop.js.map +1 -1
  66. package/lib/cjs/curve/OffsetOptions.js.map +1 -1
  67. package/lib/cjs/curve/ParityRegion.js.map +1 -1
  68. package/lib/cjs/curve/Path.js.map +1 -1
  69. package/lib/cjs/curve/PointString3d.js.map +1 -1
  70. package/lib/cjs/curve/ProxyCurve.js.map +1 -1
  71. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  72. package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
  73. package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
  74. package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
  75. package/lib/cjs/curve/Query/PlanarSubdivision.d.ts +2 -2
  76. package/lib/cjs/curve/Query/PlanarSubdivision.js +2 -2
  77. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  78. package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
  79. package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
  80. package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
  81. package/lib/cjs/curve/RegionOps.d.ts +1 -2
  82. package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
  83. package/lib/cjs/curve/RegionOps.js.map +1 -1
  84. package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts +5 -8
  85. package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
  86. package/lib/cjs/curve/RegionOpsClassificationSweeps.js +12 -12
  87. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  88. package/lib/cjs/curve/StrokeOptions.js.map +1 -1
  89. package/lib/cjs/curve/UnionRegion.js.map +1 -1
  90. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  91. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  92. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  93. package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  94. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  95. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  96. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  97. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  98. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  99. package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
  100. package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  101. package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
  102. package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
  103. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  104. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  105. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  106. package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
  107. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  108. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  109. package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
  110. package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
  111. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  112. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  113. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
  114. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  115. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  116. package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
  117. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  118. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  119. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
  120. package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
  121. package/lib/cjs/geometry3d/Angle.js.map +1 -1
  122. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
  123. package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
  124. package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
  125. package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
  126. package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
  127. package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
  128. package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
  129. package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
  130. package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
  131. package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
  132. package/lib/cjs/geometry3d/GrowableXYArray.d.ts +2 -2
  133. package/lib/cjs/geometry3d/GrowableXYArray.d.ts.map +1 -1
  134. package/lib/cjs/geometry3d/GrowableXYArray.js +1 -1
  135. package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
  136. package/lib/cjs/geometry3d/GrowableXYZArray.d.ts +2 -3
  137. package/lib/cjs/geometry3d/GrowableXYZArray.d.ts.map +1 -1
  138. package/lib/cjs/geometry3d/GrowableXYZArray.js +1 -1
  139. package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
  140. package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
  141. package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
  142. package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts +18 -1
  143. package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
  144. package/lib/cjs/geometry3d/IndexedXYZCollection.js +13 -0
  145. package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
  146. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  147. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  148. package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
  149. package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
  150. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  151. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  152. package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
  153. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  154. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  155. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  156. package/lib/cjs/geometry3d/PointHelpers.d.ts +1 -2
  157. package/lib/cjs/geometry3d/PointHelpers.d.ts.map +1 -1
  158. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  159. package/lib/cjs/geometry3d/PointStreaming.d.ts +1 -1
  160. package/lib/cjs/geometry3d/PointStreaming.d.ts.map +1 -1
  161. package/lib/cjs/geometry3d/PointStreaming.js +3 -1
  162. package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
  163. package/lib/cjs/geometry3d/PolygonOps.d.ts +68 -1
  164. package/lib/cjs/geometry3d/PolygonOps.d.ts.map +1 -1
  165. package/lib/cjs/geometry3d/PolygonOps.js +152 -4
  166. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  167. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  168. package/lib/cjs/geometry3d/PolylineOps.d.ts +23 -1
  169. package/lib/cjs/geometry3d/PolylineOps.d.ts.map +1 -1
  170. package/lib/cjs/geometry3d/PolylineOps.js +73 -1
  171. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
  172. package/lib/cjs/geometry3d/Range.d.ts +1 -1
  173. package/lib/cjs/geometry3d/Range.d.ts.map +1 -1
  174. package/lib/cjs/geometry3d/Range.js.map +1 -1
  175. package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
  176. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  177. package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
  178. package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
  179. package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
  180. package/lib/cjs/geometry3d/Transform.js +1 -1
  181. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  182. package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
  183. package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
  184. package/lib/cjs/geometry3d/YawPitchRollAngles.d.ts +7 -5
  185. package/lib/cjs/geometry3d/YawPitchRollAngles.d.ts.map +1 -1
  186. package/lib/cjs/geometry3d/YawPitchRollAngles.js +8 -6
  187. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  188. package/lib/cjs/geometry4d/Map4d.js.map +1 -1
  189. package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
  190. package/lib/cjs/geometry4d/MomentData.js.map +1 -1
  191. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  192. package/lib/cjs/geometry4d/Point4d.js.map +1 -1
  193. package/lib/cjs/numerics/BandedSystem.js.map +1 -1
  194. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
  195. package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
  196. package/lib/cjs/numerics/Complex.js.map +1 -1
  197. package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
  198. package/lib/cjs/numerics/Newton.js.map +1 -1
  199. package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
  200. package/lib/cjs/numerics/PolarData.js.map +1 -1
  201. package/lib/cjs/numerics/Polynomials.d.ts +13 -1
  202. package/lib/cjs/numerics/Polynomials.d.ts.map +1 -1
  203. package/lib/cjs/numerics/Polynomials.js +13 -1
  204. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  205. package/lib/cjs/numerics/Quadrature.js.map +1 -1
  206. package/lib/cjs/numerics/Range1dArray.js.map +1 -1
  207. package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
  208. package/lib/cjs/numerics/UnionFind.js.map +1 -1
  209. package/lib/cjs/numerics/UsageSums.js.map +1 -1
  210. package/lib/cjs/polyface/AuxData.js.map +1 -1
  211. package/lib/cjs/polyface/BoxTopology.js.map +1 -1
  212. package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
  213. package/lib/cjs/polyface/FacetLocationDetail.d.ts +28 -5
  214. package/lib/cjs/polyface/FacetLocationDetail.d.ts.map +1 -1
  215. package/lib/cjs/polyface/FacetLocationDetail.js +50 -15
  216. package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
  217. package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
  218. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  219. package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
  220. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  221. package/lib/cjs/polyface/Polyface.d.ts +1 -1
  222. package/lib/cjs/polyface/Polyface.d.ts.map +1 -1
  223. package/lib/cjs/polyface/Polyface.js.map +1 -1
  224. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  225. package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
  226. package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
  227. package/lib/cjs/polyface/PolyfaceQuery.d.ts +7 -3
  228. package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
  229. package/lib/cjs/polyface/PolyfaceQuery.js +23 -0
  230. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  231. package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
  232. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.d.ts +52 -0
  233. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.d.ts.map +1 -0
  234. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js +78 -0
  235. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -0
  236. package/lib/cjs/polyface/RangeTree/MinimumValueTester.d.ts +60 -0
  237. package/lib/cjs/polyface/RangeTree/MinimumValueTester.d.ts.map +1 -0
  238. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js +96 -0
  239. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -0
  240. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.d.ts +57 -0
  241. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.d.ts.map +1 -0
  242. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js +73 -0
  243. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -0
  244. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.d.ts +57 -0
  245. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.d.ts.map +1 -0
  246. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js +84 -0
  247. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -0
  248. package/lib/cjs/polyface/RangeTree/RangeTreeNode.d.ts +274 -0
  249. package/lib/cjs/polyface/RangeTree/RangeTreeNode.d.ts.map +1 -0
  250. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js +505 -0
  251. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -0
  252. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.d.ts +204 -0
  253. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.d.ts.map +1 -0
  254. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js +383 -0
  255. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -0
  256. package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
  257. package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
  258. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  259. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  260. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  261. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  262. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  263. package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  264. package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
  265. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  266. package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
  267. package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
  268. package/lib/cjs/serialization/BGFBReader.js.map +1 -1
  269. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  270. package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  271. package/lib/cjs/serialization/DeepCompare.js.map +1 -1
  272. package/lib/cjs/serialization/GeometrySamples.d.ts +36 -3
  273. package/lib/cjs/serialization/GeometrySamples.d.ts.map +1 -1
  274. package/lib/cjs/serialization/GeometrySamples.js +93 -4
  275. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  276. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  277. package/lib/cjs/serialization/SerializationHelpers.js.map +1 -1
  278. package/lib/cjs/solid/Box.js.map +1 -1
  279. package/lib/cjs/solid/Cone.js.map +1 -1
  280. package/lib/cjs/solid/LinearSweep.d.ts +1 -1
  281. package/lib/cjs/solid/LinearSweep.js +1 -1
  282. package/lib/cjs/solid/LinearSweep.js.map +1 -1
  283. package/lib/cjs/solid/RotationalSweep.js.map +1 -1
  284. package/lib/cjs/solid/RuledSweep.js.map +1 -1
  285. package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
  286. package/lib/cjs/solid/Sphere.js.map +1 -1
  287. package/lib/cjs/solid/SweepContour.d.ts +2 -2
  288. package/lib/cjs/solid/SweepContour.d.ts.map +1 -1
  289. package/lib/cjs/solid/SweepContour.js.map +1 -1
  290. package/lib/cjs/solid/TorusPipe.js.map +1 -1
  291. package/lib/cjs/topology/ChainMerge.js.map +1 -1
  292. package/lib/cjs/topology/Graph.d.ts +5 -6
  293. package/lib/cjs/topology/Graph.d.ts.map +1 -1
  294. package/lib/cjs/topology/Graph.js +7 -6
  295. package/lib/cjs/topology/Graph.js.map +1 -1
  296. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +4 -4
  297. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js +5 -5
  298. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  299. package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts +108 -71
  300. package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
  301. package/lib/cjs/topology/HalfEdgeGraphSearch.js +223 -109
  302. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  303. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  304. package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
  305. package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
  306. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  307. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  308. package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
  309. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
  310. package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
  311. package/lib/cjs/topology/MaskManager.js.map +1 -1
  312. package/lib/cjs/topology/Merging.d.ts +1 -1
  313. package/lib/cjs/topology/Merging.d.ts.map +1 -1
  314. package/lib/cjs/topology/Merging.js.map +1 -1
  315. package/lib/cjs/topology/RegularizeFace.js.map +1 -1
  316. package/lib/cjs/topology/SignedDataSummary.d.ts +13 -13
  317. package/lib/cjs/topology/SignedDataSummary.d.ts.map +1 -1
  318. package/lib/cjs/topology/SignedDataSummary.js +3 -3
  319. package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
  320. package/lib/cjs/topology/SpaceTriangulation.js.map +1 -1
  321. package/lib/cjs/topology/Triangulation.d.ts +1 -12
  322. package/lib/cjs/topology/Triangulation.d.ts.map +1 -1
  323. package/lib/cjs/topology/Triangulation.js.map +1 -1
  324. package/lib/cjs/topology/XYParitySearchContext.d.ts +27 -21
  325. package/lib/cjs/topology/XYParitySearchContext.d.ts.map +1 -1
  326. package/lib/cjs/topology/XYParitySearchContext.js +73 -71
  327. package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
  328. package/lib/esm/Constant.js.map +1 -1
  329. package/lib/esm/Geometry.d.ts +17 -0
  330. package/lib/esm/Geometry.d.ts.map +1 -1
  331. package/lib/esm/Geometry.js +14 -0
  332. package/lib/esm/Geometry.js.map +1 -1
  333. package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
  334. package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
  335. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  336. package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
  337. package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
  338. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  339. package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
  340. package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
  341. package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
  342. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  343. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  344. package/lib/esm/bspline/KnotVector.js.map +1 -1
  345. package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
  346. package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
  347. package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
  348. package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
  349. package/lib/esm/clipping/ClipPlane.js.map +1 -1
  350. package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
  351. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  352. package/lib/esm/clipping/ClipVector.js.map +1 -1
  353. package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
  354. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  355. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  356. package/lib/esm/core-geometry.d.ts +3 -2
  357. package/lib/esm/core-geometry.d.ts.map +1 -1
  358. package/lib/esm/core-geometry.js +3 -2
  359. package/lib/esm/core-geometry.js.map +1 -1
  360. package/lib/esm/curve/Arc3d.js.map +1 -1
  361. package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
  362. package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
  363. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +2 -2
  364. package/lib/esm/curve/CurveChainWithDistanceIndex.js +3 -3
  365. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  366. package/lib/esm/curve/CurveCollection.js.map +1 -1
  367. package/lib/esm/curve/CurveCurve.js.map +1 -1
  368. package/lib/esm/curve/CurveExtendMode.d.ts +7 -6
  369. package/lib/esm/curve/CurveExtendMode.d.ts.map +1 -1
  370. package/lib/esm/curve/CurveExtendMode.js +7 -6
  371. package/lib/esm/curve/CurveExtendMode.js.map +1 -1
  372. package/lib/esm/curve/CurveFactory.js.map +1 -1
  373. package/lib/esm/curve/CurveLocationDetail.d.ts.map +1 -1
  374. package/lib/esm/curve/CurveLocationDetail.js +23 -18
  375. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  376. package/lib/esm/curve/CurveOps.js.map +1 -1
  377. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  378. package/lib/esm/curve/CurveProcessor.js.map +1 -1
  379. package/lib/esm/curve/CurveTypes.js.map +1 -1
  380. package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
  381. package/lib/esm/curve/GeometryQuery.js.map +1 -1
  382. package/lib/esm/curve/LineSegment3d.d.ts +14 -4
  383. package/lib/esm/curve/LineSegment3d.d.ts.map +1 -1
  384. package/lib/esm/curve/LineSegment3d.js +108 -3
  385. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  386. package/lib/esm/curve/LineString3d.d.ts +41 -8
  387. package/lib/esm/curve/LineString3d.d.ts.map +1 -1
  388. package/lib/esm/curve/LineString3d.js +53 -15
  389. package/lib/esm/curve/LineString3d.js.map +1 -1
  390. package/lib/esm/curve/Loop.js +1 -1
  391. package/lib/esm/curve/Loop.js.map +1 -1
  392. package/lib/esm/curve/OffsetOptions.js.map +1 -1
  393. package/lib/esm/curve/ParityRegion.js.map +1 -1
  394. package/lib/esm/curve/Path.js.map +1 -1
  395. package/lib/esm/curve/PointString3d.js.map +1 -1
  396. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  397. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  398. package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
  399. package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
  400. package/lib/esm/curve/Query/InOutTests.js.map +1 -1
  401. package/lib/esm/curve/Query/PlanarSubdivision.d.ts +2 -2
  402. package/lib/esm/curve/Query/PlanarSubdivision.js +2 -2
  403. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  404. package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
  405. package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
  406. package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
  407. package/lib/esm/curve/RegionOps.d.ts +1 -2
  408. package/lib/esm/curve/RegionOps.d.ts.map +1 -1
  409. package/lib/esm/curve/RegionOps.js +1 -1
  410. package/lib/esm/curve/RegionOps.js.map +1 -1
  411. package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts +5 -8
  412. package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
  413. package/lib/esm/curve/RegionOpsClassificationSweeps.js +12 -12
  414. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  415. package/lib/esm/curve/StrokeOptions.js.map +1 -1
  416. package/lib/esm/curve/UnionRegion.js.map +1 -1
  417. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  418. package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  419. package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  420. package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  421. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  422. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  423. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  424. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  425. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  426. package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
  427. package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  428. package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
  429. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  430. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  431. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  432. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  433. package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
  434. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  435. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  436. package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
  437. package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
  438. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  439. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  440. package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
  441. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  442. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  443. package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
  444. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  445. package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  446. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
  447. package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
  448. package/lib/esm/geometry3d/Angle.js.map +1 -1
  449. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  450. package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
  451. package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
  452. package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
  453. package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
  454. package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
  455. package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
  456. package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
  457. package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
  458. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
  459. package/lib/esm/geometry3d/GrowableXYArray.d.ts +2 -2
  460. package/lib/esm/geometry3d/GrowableXYArray.d.ts.map +1 -1
  461. package/lib/esm/geometry3d/GrowableXYArray.js +1 -1
  462. package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
  463. package/lib/esm/geometry3d/GrowableXYZArray.d.ts +2 -3
  464. package/lib/esm/geometry3d/GrowableXYZArray.d.ts.map +1 -1
  465. package/lib/esm/geometry3d/GrowableXYZArray.js +1 -1
  466. package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
  467. package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
  468. package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
  469. package/lib/esm/geometry3d/IndexedXYZCollection.d.ts +18 -1
  470. package/lib/esm/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
  471. package/lib/esm/geometry3d/IndexedXYZCollection.js +13 -0
  472. package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
  473. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  474. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  475. package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
  476. package/lib/esm/geometry3d/Plane3d.js.map +1 -1
  477. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  478. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  479. package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
  480. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  481. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  482. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  483. package/lib/esm/geometry3d/PointHelpers.d.ts +1 -2
  484. package/lib/esm/geometry3d/PointHelpers.d.ts.map +1 -1
  485. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  486. package/lib/esm/geometry3d/PointStreaming.d.ts +1 -1
  487. package/lib/esm/geometry3d/PointStreaming.d.ts.map +1 -1
  488. package/lib/esm/geometry3d/PointStreaming.js +3 -1
  489. package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
  490. package/lib/esm/geometry3d/PolygonOps.d.ts +68 -1
  491. package/lib/esm/geometry3d/PolygonOps.d.ts.map +1 -1
  492. package/lib/esm/geometry3d/PolygonOps.js +150 -3
  493. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  494. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  495. package/lib/esm/geometry3d/PolylineOps.d.ts +23 -1
  496. package/lib/esm/geometry3d/PolylineOps.d.ts.map +1 -1
  497. package/lib/esm/geometry3d/PolylineOps.js +73 -1
  498. package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
  499. package/lib/esm/geometry3d/Range.d.ts +1 -1
  500. package/lib/esm/geometry3d/Range.d.ts.map +1 -1
  501. package/lib/esm/geometry3d/Range.js.map +1 -1
  502. package/lib/esm/geometry3d/Ray2d.js.map +1 -1
  503. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  504. package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
  505. package/lib/esm/geometry3d/Segment1d.js.map +1 -1
  506. package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
  507. package/lib/esm/geometry3d/Transform.js +1 -1
  508. package/lib/esm/geometry3d/Transform.js.map +1 -1
  509. package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
  510. package/lib/esm/geometry3d/XYZProps.js.map +1 -1
  511. package/lib/esm/geometry3d/YawPitchRollAngles.d.ts +7 -5
  512. package/lib/esm/geometry3d/YawPitchRollAngles.d.ts.map +1 -1
  513. package/lib/esm/geometry3d/YawPitchRollAngles.js +8 -6
  514. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  515. package/lib/esm/geometry4d/Map4d.js.map +1 -1
  516. package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
  517. package/lib/esm/geometry4d/MomentData.js.map +1 -1
  518. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  519. package/lib/esm/geometry4d/Point4d.js.map +1 -1
  520. package/lib/esm/numerics/BandedSystem.js.map +1 -1
  521. package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
  522. package/lib/esm/numerics/ClusterableArray.js.map +1 -1
  523. package/lib/esm/numerics/Complex.js.map +1 -1
  524. package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
  525. package/lib/esm/numerics/Newton.js.map +1 -1
  526. package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
  527. package/lib/esm/numerics/PolarData.js.map +1 -1
  528. package/lib/esm/numerics/Polynomials.d.ts +13 -1
  529. package/lib/esm/numerics/Polynomials.d.ts.map +1 -1
  530. package/lib/esm/numerics/Polynomials.js +13 -1
  531. package/lib/esm/numerics/Polynomials.js.map +1 -1
  532. package/lib/esm/numerics/Quadrature.js.map +1 -1
  533. package/lib/esm/numerics/Range1dArray.js.map +1 -1
  534. package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
  535. package/lib/esm/numerics/UnionFind.js.map +1 -1
  536. package/lib/esm/numerics/UsageSums.js.map +1 -1
  537. package/lib/esm/polyface/AuxData.js.map +1 -1
  538. package/lib/esm/polyface/BoxTopology.js.map +1 -1
  539. package/lib/esm/polyface/FacetFaceData.js.map +1 -1
  540. package/lib/esm/polyface/FacetLocationDetail.d.ts +28 -5
  541. package/lib/esm/polyface/FacetLocationDetail.d.ts.map +1 -1
  542. package/lib/esm/polyface/FacetLocationDetail.js +48 -14
  543. package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
  544. package/lib/esm/polyface/FacetOrientation.js.map +1 -1
  545. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  546. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
  547. package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  548. package/lib/esm/polyface/Polyface.d.ts +1 -1
  549. package/lib/esm/polyface/Polyface.d.ts.map +1 -1
  550. package/lib/esm/polyface/Polyface.js.map +1 -1
  551. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  552. package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
  553. package/lib/esm/polyface/PolyfaceData.js.map +1 -1
  554. package/lib/esm/polyface/PolyfaceQuery.d.ts +7 -3
  555. package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
  556. package/lib/esm/polyface/PolyfaceQuery.js +23 -0
  557. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  558. package/lib/esm/polyface/RangeLengthData.js.map +1 -1
  559. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.d.ts +52 -0
  560. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.d.ts.map +1 -0
  561. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js +74 -0
  562. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -0
  563. package/lib/esm/polyface/RangeTree/MinimumValueTester.d.ts +60 -0
  564. package/lib/esm/polyface/RangeTree/MinimumValueTester.d.ts.map +1 -0
  565. package/lib/esm/polyface/RangeTree/MinimumValueTester.js +92 -0
  566. package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -0
  567. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.d.ts +57 -0
  568. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.d.ts.map +1 -0
  569. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js +69 -0
  570. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -0
  571. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.d.ts +57 -0
  572. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.d.ts.map +1 -0
  573. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js +80 -0
  574. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -0
  575. package/lib/esm/polyface/RangeTree/RangeTreeNode.d.ts +274 -0
  576. package/lib/esm/polyface/RangeTree/RangeTreeNode.d.ts.map +1 -0
  577. package/lib/esm/polyface/RangeTree/RangeTreeNode.js +497 -0
  578. package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -0
  579. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.d.ts +204 -0
  580. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.d.ts.map +1 -0
  581. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js +374 -0
  582. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -0
  583. package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
  584. package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
  585. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  586. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  587. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  588. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  589. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  590. package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  591. package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
  592. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  593. package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
  594. package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
  595. package/lib/esm/serialization/BGFBReader.js.map +1 -1
  596. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  597. package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  598. package/lib/esm/serialization/DeepCompare.js.map +1 -1
  599. package/lib/esm/serialization/GeometrySamples.d.ts +36 -3
  600. package/lib/esm/serialization/GeometrySamples.d.ts.map +1 -1
  601. package/lib/esm/serialization/GeometrySamples.js +93 -4
  602. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  603. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  604. package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
  605. package/lib/esm/solid/Box.js.map +1 -1
  606. package/lib/esm/solid/Cone.js.map +1 -1
  607. package/lib/esm/solid/LinearSweep.d.ts +1 -1
  608. package/lib/esm/solid/LinearSweep.js +1 -1
  609. package/lib/esm/solid/LinearSweep.js.map +1 -1
  610. package/lib/esm/solid/RotationalSweep.js.map +1 -1
  611. package/lib/esm/solid/RuledSweep.js.map +1 -1
  612. package/lib/esm/solid/SolidPrimitive.js.map +1 -1
  613. package/lib/esm/solid/Sphere.js.map +1 -1
  614. package/lib/esm/solid/SweepContour.d.ts +2 -2
  615. package/lib/esm/solid/SweepContour.d.ts.map +1 -1
  616. package/lib/esm/solid/SweepContour.js.map +1 -1
  617. package/lib/esm/solid/TorusPipe.js.map +1 -1
  618. package/lib/esm/topology/ChainMerge.js.map +1 -1
  619. package/lib/esm/topology/Graph.d.ts +5 -6
  620. package/lib/esm/topology/Graph.d.ts.map +1 -1
  621. package/lib/esm/topology/Graph.js +7 -6
  622. package/lib/esm/topology/Graph.js.map +1 -1
  623. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +4 -4
  624. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js +5 -5
  625. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  626. package/lib/esm/topology/HalfEdgeGraphSearch.d.ts +108 -71
  627. package/lib/esm/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
  628. package/lib/esm/topology/HalfEdgeGraphSearch.js +223 -109
  629. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  630. package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  631. package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
  632. package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
  633. package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  634. package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  635. package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
  636. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
  637. package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
  638. package/lib/esm/topology/MaskManager.js.map +1 -1
  639. package/lib/esm/topology/Merging.d.ts +1 -1
  640. package/lib/esm/topology/Merging.d.ts.map +1 -1
  641. package/lib/esm/topology/Merging.js.map +1 -1
  642. package/lib/esm/topology/RegularizeFace.js.map +1 -1
  643. package/lib/esm/topology/SignedDataSummary.d.ts +13 -13
  644. package/lib/esm/topology/SignedDataSummary.d.ts.map +1 -1
  645. package/lib/esm/topology/SignedDataSummary.js +3 -3
  646. package/lib/esm/topology/SignedDataSummary.js.map +1 -1
  647. package/lib/esm/topology/SpaceTriangulation.js.map +1 -1
  648. package/lib/esm/topology/Triangulation.d.ts +1 -12
  649. package/lib/esm/topology/Triangulation.d.ts.map +1 -1
  650. package/lib/esm/topology/Triangulation.js.map +1 -1
  651. package/lib/esm/topology/XYParitySearchContext.d.ts +27 -21
  652. package/lib/esm/topology/XYParitySearchContext.d.ts.map +1 -1
  653. package/lib/esm/topology/XYParitySearchContext.js +73 -71
  654. package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
  655. package/package.json +3 -3
@@ -6,127 +6,129 @@
6
6
  * @module Topology
7
7
  */
8
8
  /**
9
- * * XYParitySearchContext is an internal class for callers that can feed points (without extracting to array structures)
9
+ * `XYParitySearchContext` is an internal class for callers that can feed points (without extracting to array structures)
10
10
  * * Most will be via static methods which handle a specific data source.
11
- * * PolygonOps.classifyPointInPolygon (x,y,points: XAndY[])
12
- * * HalfEdgeGraphSearch.pointInOrOnFaceXY (halfEdgeOnFace, x, y)
11
+ * * PolygonOps.classifyPointInPolygon(x,y,points: XAndY[])
12
+ * * HalfEdgeGraphSearch.pointInOrOnFaceXY(halfEdgeOnFace, x, y)
13
13
  * Use pattern:
14
- * * Caller must be able walk around polygon producing x,y coordinates (possibly transformed from actual polygon)
14
+ * * Caller must be able to walk around polygon producing x,y coordinates (possibly transformed from actual polygon).
15
15
  * * Caller announce edges to tryStartEdge until finding one acceptable to the search.
16
16
  * * Caller then passes additional points up to and including both x0,y0 and x1, y1 of the accepted start edge.
17
17
  * Call sequence is:
18
- * `context = new XYParitySearchContext`
19
- * `repeat { acquire edge (x0,y0) (x1,y1)} until context.tryStartEdge (x0,y0,x1,y1);`
20
- * `for each (x,y) beginning AFTER x1,y1 and ending with (x1,y1) context.advance (x,y)`
21
- * `return context.classifyCounts ();`
18
+ * * `context = new XYParitySearchContext`
19
+ * * `repeat { acquire edge (x0,y0) (x1,y1) } until context.tryStartEdge(x0,y0,x1,y1);`
20
+ * * `for each (x,y) beginning AFTER x1,y1 and ending with (x1,y1) context.advance (x,y)`
21
+ * * `return context.classifyCounts();`
22
22
  */
23
23
  export class XYParitySearchContext {
24
24
  /**
25
25
  * Create a new searcher for specified test point.
26
- * @param xTest x coordinate of test point
27
- * @param yTest y coordinate of test point
26
+ * @param xTest x coordinate of test point.
27
+ * @param yTest y coordinate of test point.
28
28
  */
29
29
  constructor(xTest, yTest) {
30
30
  this.xTest = xTest;
31
31
  this.yTest = yTest;
32
- this.u0 = this.v0 = this.u1 = this.v1 = 0; // Not valid for search -- caller must satisfy tryStartEdge !!!
32
+ this.u0 = this.v0 = this.u1 = this.v1 = 0; // not valid for search; caller must satisfy tryStartEdge
33
33
  this.numLeftCrossing = this.numRightCrossing = 0;
34
34
  this.numHit = 0;
35
35
  }
36
- /**
37
- * test if x,y is a safe first coordinate to start the search.
38
- * * safe start must have non-zero y so that final point test (return to x0,y0) does not need look back for exact crossing logic.
39
- * @param x
40
- * @param y
41
- */
36
+ /** Test if parity processing can begin with this edge. */
42
37
  tryStartEdge(x0, y0, x1, y1) {
43
38
  if (y0 !== this.yTest) {
44
39
  this.u0 = x0 - this.xTest;
45
40
  this.v0 = y0 - this.yTest;
46
41
  this.u1 = x1 - this.xTest;
47
42
  this.v1 = y1 - this.yTest;
48
- return true;
43
+ return true; // we won't need wraparound logic to process the final edge ending at (x0,y0)
49
44
  }
50
45
  return false;
51
46
  }
52
- /** Return true if parity accumulation proceeded normally.
53
- * Return false if interrupted for exact hit.
47
+ /** Update local coordinates: the current edge becomes the previous edge. */
48
+ updateUV01(u2, v2) {
49
+ this.u0 = this.u1;
50
+ this.v0 = this.v1;
51
+ this.u1 = u2;
52
+ this.v1 = v2;
53
+ return true;
54
+ }
55
+ /**
56
+ * Process the current edge ending at (x2,y2).
57
+ * * Accumulate left/right parity of the test point wrt to the polygon. These counts track the number of polygon crossings
58
+ * of the left and right horizontal rays emanating from the test point. After all edges are processed, if either count is
59
+ * odd/even, the test point is inside/outside the polygon (see [[classifyCounts]]).
60
+ * * Check whether the test point lies on the edge.
61
+ * @returns whether caller should continue processing with the next edge. In particular, `false` if we have an exact hit.
54
62
  */
55
- advance(x, y) {
56
- const u = x - this.xTest;
57
- const v = y - this.yTest;
58
- const p = v * this.v1;
63
+ advance(x2, y2) {
64
+ // In this method we use local u,v coordinates obtained by translating the test point to the origin.
65
+ // This simplifies our computations:
66
+ // * left (right) parity is incremented if the current edge crosses the u-axis at u<0 (u>0)
67
+ // * we have an exact hit if the current edge crosses the u-axis at u=0
68
+ const u2 = x2 - this.xTest;
69
+ const v2 = y2 - this.yTest;
70
+ const p = v2 * this.v1;
59
71
  if (p > 0) {
60
- // The common case -- skittering along above or below the x axis . . .
61
- this.u0 = this.u1;
62
- this.v0 = this.v1;
63
- this.u1 = u;
64
- this.v1 = v;
65
- return true;
72
+ // Current edge does not cross u-axis.
73
+ return this.updateUV01(u2, v2);
66
74
  }
67
75
  if (p < 0) {
68
- // crossing within (u1,v1) to (u,v)
69
- // both v values are nonzero and of opposite sign, so this division is safe . . .
70
- const fraction = -this.v1 / (v - this.v1);
71
- const uCross = this.u1 + fraction * (u - this.u1);
76
+ // Current edge crosses the u-axis at edge parameter 0 < lambda < 1 by the Intermediate Value Theorem.
77
+ // Solve for lambda in 0 = v1 + lambda (v2 - v1), then use it to compute the u-value of the crossing.
78
+ const lambda = -this.v1 / (v2 - this.v1);
79
+ const uCross = this.u1 + lambda * (u2 - this.u1);
72
80
  if (uCross === 0.0) {
73
- this.numHit++;
81
+ this.numHit++; // Current edge crosses at the origin.
74
82
  return false;
75
83
  }
76
84
  if (uCross > 0)
77
85
  this.numRightCrossing++;
78
86
  else
79
87
  this.numLeftCrossing++;
80
- this.u0 = this.u1;
81
- this.v0 = this.v1;
82
- this.u1 = u;
83
- this.v1 = v;
84
- return true;
88
+ return this.updateUV01(u2, v2);
85
89
  }
86
- // hard stuff -- one or more exact hits . . .
87
- if (v === 0.0) {
90
+ // At this point, at least one endpoint of the current edge lies on the u-axis.
91
+ if (v2 === 0.0) {
88
92
  if (this.v1 === 0.0) {
89
- // uh oh -- moving along x axis. Does it pass through xTest:
90
- if (u * this.u1 <= 0.0) {
91
- this.numHit++;
93
+ if (u2 * this.u1 <= 0.0) {
94
+ this.numHit++; // Current edge lies on u-axis and contains the origin.
92
95
  return false;
93
96
  }
94
- // quietly moving along the scan line, both xy and x1y1 to same side of test point ...
95
- // u0 and u1 remain unchanged !!!
96
- this.u1 = u;
97
- this.v1 = v;
97
+ // Current edge lies on the u-axis to one side of the origin.
98
+ // This edge doesn't contribute to parity computations, so advance past it.
99
+ this.u1 = u2;
100
+ this.v1 = v2;
98
101
  return true;
99
102
  }
100
- // just moved onto the scan line ...
101
- this.u0 = this.u1;
102
- this.v0 = this.v1;
103
- this.u1 = u;
104
- this.v1 = v;
105
- return true;
103
+ if (u2 === 0.0) {
104
+ this.numHit++; // Current edge ends at the origin.
105
+ return false;
106
+ }
107
+ // Current edge ends on the u-axis away from the origin.
108
+ return this.updateUV01(u2, v2);
106
109
  }
107
- // fall out with v1 = 0
108
- // both v0 and v are nonzero.
109
- // any along-0 v values that have passed through are on the same side of xTest, so u1 determines crossing
110
- const q = this.v0 * v;
111
- if (this.u1 > 0) {
112
- if (q < 0)
113
- this.numRightCrossing++;
110
+ // At this point, the current edge starts at the u-axis.
111
+ if (this.u1 === 0.0) {
112
+ this.numHit++; // Current edge starts at the origin.
113
+ return false;
114
114
  }
115
- else {
116
- if (q < 0)
115
+ // At this point, the current edge starts on the u-axis away from the origin.
116
+ const q = this.v0 * v2;
117
+ if (q < 0) {
118
+ // The current edge and the previous edge lie on opposite sides of the u-axis, so we have a parity change.
119
+ if (this.u1 > 0)
120
+ this.numRightCrossing++;
121
+ else
117
122
  this.numLeftCrossing++;
118
123
  }
119
- this.u0 = this.u1;
120
- this.v0 = this.v1;
121
- this.u1 = u;
122
- this.v1 = v;
123
- return true;
124
+ // The current edge and the previous edge lie on the same sides of the u-axis, so no parity change.
125
+ return this.updateUV01(u2, v2);
124
126
  }
125
127
  /**
126
128
  * Return classification as ON, IN, or OUT according to hit and crossing counts.
127
- * * Any nonzero hit count is ON
129
+ * * Any nonzero hit count is ON.
128
130
  * * Otherwise IN if left crossing count is odd.
129
- * @return 0 if ON, 1 if IN, -1 if OUT
131
+ * @return 0 if ON, 1 if IN, -1 if OUT.
130
132
  */
131
133
  classifyCounts() {
132
134
  if (this.numHit > 0)
@@ -1 +1 @@
1
- {"version":3,"file":"XYParitySearchContext.js","sourceRoot":"","sources":["../../../src/topology/XYParitySearchContext.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 Topology\r\n */\r\n\r\n/**\r\n * * XYParitySearchContext is an internal class for callers that can feed points (without extracting to array structures)\r\n * * Most will be via static methods which handle a specific data source.\r\n * * PolygonOps.classifyPointInPolygon (x,y,points: XAndY[])\r\n * * HalfEdgeGraphSearch.pointInOrOnFaceXY (halfEdgeOnFace, x, y)\r\n * Use pattern:\r\n * * Caller must be able walk around polygon producing x,y coordinates (possibly transformed from actual polygon)\r\n * * Caller announce edges to tryStartEdge until finding one acceptable to the search.\r\n * * Caller then passes additional points up to and including both x0,y0 and x1, y1 of the accepted start edge.\r\n * Call sequence is:\r\n * `context = new XYParitySearchContext`\r\n * `repeat { acquire edge (x0,y0) (x1,y1)} until context.tryStartEdge (x0,y0,x1,y1);`\r\n * `for each (x,y) beginning AFTER x1,y1 and ending with (x1,y1) context.advance (x,y)`\r\n * `return context.classifyCounts ();`\r\n */\r\nexport class XYParitySearchContext {\r\n public xTest: number;\r\n public yTest: number;\r\n public u0: number; // local coordinates of recent point with nonzero v. Usually \"second last point\" but points can be skipped if y1 is zero\r\n public v0: number;\r\n public u1: number; // local coordinates of most recent point\r\n public v1: number;\r\n public numLeftCrossing: number;\r\n public numRightCrossing: number;\r\n public numHit: number;\r\n /**\r\n * Create a new searcher for specified test point.\r\n * @param xTest x coordinate of test point\r\n * @param yTest y coordinate of test point\r\n */\r\n public constructor(xTest: number, yTest: number) {\r\n this.xTest = xTest;\r\n this.yTest = yTest;\r\n this.u0 = this.v0 = this.u1 = this.v1 = 0; // Not valid for search -- caller must satisfy tryStartEdge !!!\r\n this.numLeftCrossing = this.numRightCrossing = 0;\r\n this.numHit = 0;\r\n }\r\n /**\r\n * test if x,y is a safe first coordinate to start the search.\r\n * * safe start must have non-zero y so that final point test (return to x0,y0) does not need look back for exact crossing logic.\r\n * @param x\r\n * @param y\r\n */\r\n public tryStartEdge(x0: number, y0: number, x1: number, y1: number): boolean {\r\n if (y0 !== this.yTest) {\r\n this.u0 = x0 - this.xTest;\r\n this.v0 = y0 - this.yTest;\r\n this.u1 = x1 - this.xTest;\r\n this.v1 = y1 - this.yTest;\r\n return true;\r\n }\r\n return false;\r\n }\r\n /** Return true if parity accumulation proceeded normally.\r\n * Return false if interrupted for exact hit.\r\n */\r\n public advance(x: number, y: number): boolean {\r\n const u = x - this.xTest;\r\n const v = y - this.yTest;\r\n const p = v * this.v1;\r\n if (p > 0) {\r\n // The common case -- skittering along above or below the x axis . . .\r\n this.u0 = this.u1;\r\n this.v0 = this.v1;\r\n this.u1 = u;\r\n this.v1 = v;\r\n return true;\r\n }\r\n if (p < 0) {\r\n // crossing within (u1,v1) to (u,v)\r\n // both v values are nonzero and of opposite sign, so this division is safe . . .\r\n const fraction = -this.v1 / (v - this.v1);\r\n const uCross = this.u1 + fraction * (u - this.u1);\r\n if (uCross === 0.0) {\r\n this.numHit++;\r\n return false;\r\n }\r\n if (uCross > 0)\r\n this.numRightCrossing++;\r\n else\r\n this.numLeftCrossing++;\r\n this.u0 = this.u1;\r\n this.v0 = this.v1;\r\n this.u1 = u;\r\n this.v1 = v;\r\n return true;\r\n }\r\n // hard stuff -- one or more exact hits . . .\r\n if (v === 0.0) {\r\n if (this.v1 === 0.0) {\r\n // uh oh -- moving along x axis. Does it pass through xTest:\r\n if (u * this.u1 <= 0.0) {\r\n this.numHit++;\r\n return false;\r\n }\r\n // quietly moving along the scan line, both xy and x1y1 to same side of test point ...\r\n // u0 and u1 remain unchanged !!!\r\n this.u1 = u;\r\n this.v1 = v;\r\n return true;\r\n }\r\n // just moved onto the scan line ...\r\n this.u0 = this.u1;\r\n this.v0 = this.v1;\r\n this.u1 = u;\r\n this.v1 = v;\r\n return true;\r\n }\r\n // fall out with v1 = 0\r\n // both v0 and v are nonzero.\r\n // any along-0 v values that have passed through are on the same side of xTest, so u1 determines crossing\r\n const q = this.v0 * v;\r\n if (this.u1 > 0) {\r\n if (q < 0)\r\n this.numRightCrossing++;\r\n } else {\r\n if (q < 0)\r\n this.numLeftCrossing++;\r\n }\r\n this.u0 = this.u1;\r\n this.v0 = this.v1;\r\n this.u1 = u;\r\n this.v1 = v;\r\n return true;\r\n }\r\n /**\r\n * Return classification as ON, IN, or OUT according to hit and crossing counts.\r\n * * Any nonzero hit count is ON\r\n * * Otherwise IN if left crossing count is odd.\r\n * @return 0 if ON, 1 if IN, -1 if OUT\r\n */\r\n public classifyCounts(): number | undefined {\r\n if (this.numHit > 0)\r\n return 0;\r\n const parity = this.numLeftCrossing & 0x01;\r\n return (parity === 1) ? 1 : -1;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"XYParitySearchContext.js","sourceRoot":"","sources":["../../../src/topology/XYParitySearchContext.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Topology\n */\n\n/**\n * `XYParitySearchContext` is an internal class for callers that can feed points (without extracting to array structures)\n * * Most will be via static methods which handle a specific data source.\n * * PolygonOps.classifyPointInPolygon(x,y,points: XAndY[])\n * * HalfEdgeGraphSearch.pointInOrOnFaceXY(halfEdgeOnFace, x, y)\n * Use pattern:\n * * Caller must be able to walk around polygon producing x,y coordinates (possibly transformed from actual polygon).\n * * Caller announce edges to tryStartEdge until finding one acceptable to the search.\n * * Caller then passes additional points up to and including both x0,y0 and x1, y1 of the accepted start edge.\n * Call sequence is:\n * * `context = new XYParitySearchContext`\n * * `repeat { acquire edge (x0,y0) (x1,y1) } until context.tryStartEdge(x0,y0,x1,y1);`\n * * `for each (x,y) beginning AFTER x1,y1 and ending with (x1,y1) context.advance (x,y)`\n * * `return context.classifyCounts();`\n */\nexport class XYParitySearchContext {\n public xTest: number;\n public yTest: number;\n /** local x-coordinate of the start of the previous (or earlier) edge */\n public u0: number;\n /** local y-coordinate of the start of the previous (or earlier) edge */\n public v0: number;\n /** local x-coordinate of the end of the previous edge (and start of current edge) */\n public u1: number;\n /** local y-coordinate of the end of the previous edge (and start of current edge) */\n public v1: number;\n public numLeftCrossing: number;\n public numRightCrossing: number;\n public numHit: number;\n /**\n * Create a new searcher for specified test point.\n * @param xTest x coordinate of test point.\n * @param yTest y coordinate of test point.\n */\n public constructor(xTest: number, yTest: number) {\n this.xTest = xTest;\n this.yTest = yTest;\n this.u0 = this.v0 = this.u1 = this.v1 = 0; // not valid for search; caller must satisfy tryStartEdge\n this.numLeftCrossing = this.numRightCrossing = 0;\n this.numHit = 0;\n }\n /** Test if parity processing can begin with this edge. */\n public tryStartEdge(x0: number, y0: number, x1: number, y1: number): boolean {\n if (y0 !== this.yTest) {\n this.u0 = x0 - this.xTest;\n this.v0 = y0 - this.yTest;\n this.u1 = x1 - this.xTest;\n this.v1 = y1 - this.yTest;\n return true; // we won't need wraparound logic to process the final edge ending at (x0,y0)\n }\n return false;\n }\n /** Update local coordinates: the current edge becomes the previous edge. */\n private updateUV01(u2: number, v2: number) {\n this.u0 = this.u1;\n this.v0 = this.v1;\n this.u1 = u2;\n this.v1 = v2;\n return true;\n }\n /**\n * Process the current edge ending at (x2,y2).\n * * Accumulate left/right parity of the test point wrt to the polygon. These counts track the number of polygon crossings\n * of the left and right horizontal rays emanating from the test point. After all edges are processed, if either count is\n * odd/even, the test point is inside/outside the polygon (see [[classifyCounts]]).\n * * Check whether the test point lies on the edge.\n * @returns whether caller should continue processing with the next edge. In particular, `false` if we have an exact hit.\n */\n public advance(x2: number, y2: number): boolean {\n // In this method we use local u,v coordinates obtained by translating the test point to the origin.\n // This simplifies our computations:\n // * left (right) parity is incremented if the current edge crosses the u-axis at u<0 (u>0)\n // * we have an exact hit if the current edge crosses the u-axis at u=0\n const u2 = x2 - this.xTest;\n const v2 = y2 - this.yTest;\n const p = v2 * this.v1;\n if (p > 0) {\n // Current edge does not cross u-axis.\n return this.updateUV01(u2, v2);\n }\n if (p < 0) {\n // Current edge crosses the u-axis at edge parameter 0 < lambda < 1 by the Intermediate Value Theorem.\n // Solve for lambda in 0 = v1 + lambda (v2 - v1), then use it to compute the u-value of the crossing.\n const lambda = -this.v1 / (v2 - this.v1);\n const uCross = this.u1 + lambda * (u2 - this.u1);\n if (uCross === 0.0) {\n this.numHit++; // Current edge crosses at the origin.\n return false;\n }\n if (uCross > 0)\n this.numRightCrossing++;\n else\n this.numLeftCrossing++;\n return this.updateUV01(u2, v2);\n }\n // At this point, at least one endpoint of the current edge lies on the u-axis.\n if (v2 === 0.0) {\n if (this.v1 === 0.0) {\n if (u2 * this.u1 <= 0.0) {\n this.numHit++; // Current edge lies on u-axis and contains the origin.\n return false;\n }\n // Current edge lies on the u-axis to one side of the origin.\n // This edge doesn't contribute to parity computations, so advance past it.\n this.u1 = u2;\n this.v1 = v2;\n return true;\n }\n if (u2 === 0.0) {\n this.numHit++; // Current edge ends at the origin.\n return false;\n }\n // Current edge ends on the u-axis away from the origin.\n return this.updateUV01(u2, v2);\n }\n // At this point, the current edge starts at the u-axis.\n if (this.u1 === 0.0) {\n this.numHit++; // Current edge starts at the origin.\n return false;\n }\n // At this point, the current edge starts on the u-axis away from the origin.\n const q = this.v0 * v2;\n if (q < 0) {\n // The current edge and the previous edge lie on opposite sides of the u-axis, so we have a parity change.\n if (this.u1 > 0)\n this.numRightCrossing++;\n else\n this.numLeftCrossing++;\n }\n // The current edge and the previous edge lie on the same sides of the u-axis, so no parity change.\n return this.updateUV01(u2, v2);\n }\n /**\n * Return classification as ON, IN, or OUT according to hit and crossing counts.\n * * Any nonzero hit count is ON.\n * * Otherwise IN if left crossing count is odd.\n * @return 0 if ON, 1 if IN, -1 if OUT.\n */\n public classifyCounts(): number | undefined {\n if (this.numHit > 0)\n return 0;\n const parity = this.numLeftCrossing & 0x01;\n return (parity === 1) ? 1 : -1;\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/core-geometry",
3
- "version": "4.4.0-dev.9",
3
+ "version": "4.5.0-dev.2",
4
4
  "description": "iTwin.js Core Geometry library",
5
5
  "main": "lib/cjs/core-geometry.js",
6
6
  "module": "lib/esm/core-geometry.js",
@@ -34,11 +34,11 @@
34
34
  "nyc": "^15.1.0",
35
35
  "rimraf": "^3.0.2",
36
36
  "typescript": "~5.0.2",
37
- "@itwin/build-tools": "4.4.0-dev.9"
37
+ "@itwin/build-tools": "4.5.0-dev.2"
38
38
  },
39
39
  "dependencies": {
40
40
  "flatbuffers": "~1.12.0",
41
- "@itwin/core-bentley": "4.4.0-dev.9"
41
+ "@itwin/core-bentley": "4.5.0-dev.2"
42
42
  },
43
43
  "nyc": {
44
44
  "extends": "./node_modules/@itwin/build-tools/.nycrc",