@itwin/core-geometry 4.4.0-dev.9 → 4.5.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.
- package/CHANGELOG.md +6 -1
- package/lib/cjs/Constant.js.map +1 -1
- package/lib/cjs/Geometry.d.ts +17 -0
- package/lib/cjs/Geometry.d.ts.map +1 -1
- package/lib/cjs/Geometry.js +14 -0
- package/lib/cjs/Geometry.js.map +1 -1
- package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
- package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
- package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
- package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
- package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
- package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
- package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
- package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
- package/lib/cjs/bspline/KnotVector.js.map +1 -1
- package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -1
- package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
- package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -1
- package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
- package/lib/cjs/clipping/ClipPlane.js.map +1 -1
- package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
- package/lib/cjs/clipping/ClipUtils.js.map +1 -1
- package/lib/cjs/clipping/ClipVector.js.map +1 -1
- package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
- package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
- package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
- package/lib/cjs/core-geometry.d.ts +3 -2
- package/lib/cjs/core-geometry.d.ts.map +1 -1
- package/lib/cjs/core-geometry.js +3 -2
- package/lib/cjs/core-geometry.js.map +1 -1
- package/lib/cjs/curve/Arc3d.js.map +1 -1
- package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
- package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
- package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +2 -2
- package/lib/cjs/curve/CurveChainWithDistanceIndex.js +3 -3
- package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/cjs/curve/CurveCollection.js.map +1 -1
- package/lib/cjs/curve/CurveCurve.js.map +1 -1
- package/lib/cjs/curve/CurveExtendMode.d.ts +7 -6
- package/lib/cjs/curve/CurveExtendMode.d.ts.map +1 -1
- package/lib/cjs/curve/CurveExtendMode.js +7 -6
- package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
- package/lib/cjs/curve/CurveFactory.js.map +1 -1
- package/lib/cjs/curve/CurveLocationDetail.d.ts.map +1 -1
- package/lib/cjs/curve/CurveLocationDetail.js +23 -18
- package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
- package/lib/cjs/curve/CurveOps.js.map +1 -1
- package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
- package/lib/cjs/curve/CurveProcessor.js.map +1 -1
- package/lib/cjs/curve/CurveTypes.js.map +1 -1
- package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
- package/lib/cjs/curve/GeometryQuery.js.map +1 -1
- package/lib/cjs/curve/LineSegment3d.d.ts +14 -4
- package/lib/cjs/curve/LineSegment3d.d.ts.map +1 -1
- package/lib/cjs/curve/LineSegment3d.js +107 -2
- package/lib/cjs/curve/LineSegment3d.js.map +1 -1
- package/lib/cjs/curve/LineString3d.d.ts +41 -8
- package/lib/cjs/curve/LineString3d.d.ts.map +1 -1
- package/lib/cjs/curve/LineString3d.js +53 -15
- package/lib/cjs/curve/LineString3d.js.map +1 -1
- package/lib/cjs/curve/Loop.js +1 -1
- package/lib/cjs/curve/Loop.js.map +1 -1
- package/lib/cjs/curve/OffsetOptions.js.map +1 -1
- package/lib/cjs/curve/ParityRegion.js.map +1 -1
- package/lib/cjs/curve/Path.js.map +1 -1
- package/lib/cjs/curve/PointString3d.js.map +1 -1
- package/lib/cjs/curve/ProxyCurve.js.map +1 -1
- package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
- package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
- package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
- package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
- package/lib/cjs/curve/Query/PlanarSubdivision.d.ts +2 -2
- package/lib/cjs/curve/Query/PlanarSubdivision.js +2 -2
- package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
- package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
- package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
- package/lib/cjs/curve/RegionOps.d.ts +1 -2
- package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
- package/lib/cjs/curve/RegionOps.js.map +1 -1
- package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts +5 -8
- package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
- package/lib/cjs/curve/RegionOpsClassificationSweeps.js +12 -12
- package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/cjs/curve/StrokeOptions.js.map +1 -1
- package/lib/cjs/curve/UnionRegion.js.map +1 -1
- package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
- package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
- package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
- package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
- package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
- package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
- package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
- package/lib/cjs/geometry3d/Angle.js.map +1 -1
- package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
- package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
- package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
- package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
- package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
- package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
- package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
- package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYArray.d.ts +2 -2
- package/lib/cjs/geometry3d/GrowableXYArray.d.ts.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYArray.js +1 -1
- package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYZArray.d.ts +2 -3
- package/lib/cjs/geometry3d/GrowableXYZArray.d.ts.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYZArray.js +1 -1
- package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts +18 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.js +13 -0
- package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
- package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
- package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
- package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
- package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
- package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/cjs/geometry3d/PointHelpers.d.ts +1 -2
- package/lib/cjs/geometry3d/PointHelpers.d.ts.map +1 -1
- package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
- package/lib/cjs/geometry3d/PointStreaming.d.ts +1 -1
- package/lib/cjs/geometry3d/PointStreaming.d.ts.map +1 -1
- package/lib/cjs/geometry3d/PointStreaming.js +3 -1
- package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
- package/lib/cjs/geometry3d/PolygonOps.d.ts +68 -1
- package/lib/cjs/geometry3d/PolygonOps.d.ts.map +1 -1
- package/lib/cjs/geometry3d/PolygonOps.js +152 -4
- package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
- package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
- package/lib/cjs/geometry3d/PolylineOps.d.ts +23 -1
- package/lib/cjs/geometry3d/PolylineOps.d.ts.map +1 -1
- package/lib/cjs/geometry3d/PolylineOps.js +73 -1
- package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
- package/lib/cjs/geometry3d/Range.d.ts +1 -1
- package/lib/cjs/geometry3d/Range.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Range.js.map +1 -1
- package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
- package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
- package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
- package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
- package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
- package/lib/cjs/geometry3d/Transform.js +1 -1
- package/lib/cjs/geometry3d/Transform.js.map +1 -1
- package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
- package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
- package/lib/cjs/geometry3d/YawPitchRollAngles.d.ts +7 -5
- package/lib/cjs/geometry3d/YawPitchRollAngles.d.ts.map +1 -1
- package/lib/cjs/geometry3d/YawPitchRollAngles.js +8 -6
- package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
- package/lib/cjs/geometry4d/Map4d.js.map +1 -1
- package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
- package/lib/cjs/geometry4d/MomentData.js.map +1 -1
- package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
- package/lib/cjs/geometry4d/Point4d.js.map +1 -1
- package/lib/cjs/numerics/BandedSystem.js.map +1 -1
- package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
- package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
- package/lib/cjs/numerics/Complex.js.map +1 -1
- package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
- package/lib/cjs/numerics/Newton.js.map +1 -1
- package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
- package/lib/cjs/numerics/PolarData.js.map +1 -1
- package/lib/cjs/numerics/Polynomials.d.ts +13 -1
- package/lib/cjs/numerics/Polynomials.d.ts.map +1 -1
- package/lib/cjs/numerics/Polynomials.js +13 -1
- package/lib/cjs/numerics/Polynomials.js.map +1 -1
- package/lib/cjs/numerics/Quadrature.js.map +1 -1
- package/lib/cjs/numerics/Range1dArray.js.map +1 -1
- package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
- package/lib/cjs/numerics/UnionFind.js.map +1 -1
- package/lib/cjs/numerics/UsageSums.js.map +1 -1
- package/lib/cjs/polyface/AuxData.js.map +1 -1
- package/lib/cjs/polyface/BoxTopology.js.map +1 -1
- package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
- package/lib/cjs/polyface/FacetLocationDetail.d.ts +28 -5
- package/lib/cjs/polyface/FacetLocationDetail.d.ts.map +1 -1
- package/lib/cjs/polyface/FacetLocationDetail.js +50 -15
- package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
- package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
- package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
- package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
- package/lib/cjs/polyface/Polyface.d.ts +1 -1
- package/lib/cjs/polyface/Polyface.d.ts.map +1 -1
- package/lib/cjs/polyface/Polyface.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceQuery.d.ts +7 -3
- package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceQuery.js +23 -0
- package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.d.ts +52 -0
- package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.d.ts.map +1 -0
- package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js +78 -0
- package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -0
- package/lib/cjs/polyface/RangeTree/MinimumValueTester.d.ts +60 -0
- package/lib/cjs/polyface/RangeTree/MinimumValueTester.d.ts.map +1 -0
- package/lib/cjs/polyface/RangeTree/MinimumValueTester.js +96 -0
- package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -0
- package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.d.ts +57 -0
- package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.d.ts.map +1 -0
- package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js +73 -0
- package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -0
- package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.d.ts +57 -0
- package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.d.ts.map +1 -0
- package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js +84 -0
- package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -0
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.d.ts +274 -0
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.d.ts.map +1 -0
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.js +505 -0
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -0
- package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.d.ts +204 -0
- package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.d.ts.map +1 -0
- package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js +383 -0
- package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -0
- package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
- package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
- package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
- package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
- package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
- package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
- package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
- package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
- package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
- package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
- package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
- package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
- package/lib/cjs/serialization/BGFBReader.js.map +1 -1
- package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
- package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
- package/lib/cjs/serialization/DeepCompare.js.map +1 -1
- package/lib/cjs/serialization/GeometrySamples.d.ts +36 -3
- package/lib/cjs/serialization/GeometrySamples.d.ts.map +1 -1
- package/lib/cjs/serialization/GeometrySamples.js +93 -4
- package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
- package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/cjs/serialization/SerializationHelpers.js.map +1 -1
- package/lib/cjs/solid/Box.js.map +1 -1
- package/lib/cjs/solid/Cone.js.map +1 -1
- package/lib/cjs/solid/LinearSweep.d.ts +1 -1
- package/lib/cjs/solid/LinearSweep.js +1 -1
- package/lib/cjs/solid/LinearSweep.js.map +1 -1
- package/lib/cjs/solid/RotationalSweep.js.map +1 -1
- package/lib/cjs/solid/RuledSweep.js.map +1 -1
- package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
- package/lib/cjs/solid/Sphere.js.map +1 -1
- package/lib/cjs/solid/SweepContour.d.ts +2 -2
- package/lib/cjs/solid/SweepContour.d.ts.map +1 -1
- package/lib/cjs/solid/SweepContour.js.map +1 -1
- package/lib/cjs/solid/TorusPipe.js.map +1 -1
- package/lib/cjs/topology/ChainMerge.js.map +1 -1
- package/lib/cjs/topology/Graph.d.ts +5 -6
- package/lib/cjs/topology/Graph.d.ts.map +1 -1
- package/lib/cjs/topology/Graph.js +7 -6
- package/lib/cjs/topology/Graph.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +4 -4
- package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js +5 -5
- package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts +108 -71
- package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSearch.js +223 -109
- package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
- package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
- package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
- package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
- package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
- package/lib/cjs/topology/MaskManager.js.map +1 -1
- package/lib/cjs/topology/Merging.d.ts +1 -1
- package/lib/cjs/topology/Merging.d.ts.map +1 -1
- package/lib/cjs/topology/Merging.js.map +1 -1
- package/lib/cjs/topology/RegularizeFace.js.map +1 -1
- package/lib/cjs/topology/SignedDataSummary.d.ts +13 -13
- package/lib/cjs/topology/SignedDataSummary.d.ts.map +1 -1
- package/lib/cjs/topology/SignedDataSummary.js +3 -3
- package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
- package/lib/cjs/topology/SpaceTriangulation.js.map +1 -1
- package/lib/cjs/topology/Triangulation.d.ts +1 -12
- package/lib/cjs/topology/Triangulation.d.ts.map +1 -1
- package/lib/cjs/topology/Triangulation.js.map +1 -1
- package/lib/cjs/topology/XYParitySearchContext.d.ts +27 -21
- package/lib/cjs/topology/XYParitySearchContext.d.ts.map +1 -1
- package/lib/cjs/topology/XYParitySearchContext.js +73 -71
- package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
- package/lib/esm/Constant.js.map +1 -1
- package/lib/esm/Geometry.d.ts +17 -0
- package/lib/esm/Geometry.d.ts.map +1 -1
- package/lib/esm/Geometry.js +14 -0
- package/lib/esm/Geometry.js.map +1 -1
- package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
- package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
- package/lib/esm/bspline/BSplineCurve.js.map +1 -1
- package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
- package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
- package/lib/esm/bspline/BSplineSurface.js.map +1 -1
- package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
- package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
- package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
- package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
- package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
- package/lib/esm/bspline/KnotVector.js.map +1 -1
- package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
- package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
- package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
- package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
- package/lib/esm/clipping/ClipPlane.js.map +1 -1
- package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
- package/lib/esm/clipping/ClipUtils.js.map +1 -1
- package/lib/esm/clipping/ClipVector.js.map +1 -1
- package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
- package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
- package/lib/esm/core-geometry.d.ts +3 -2
- package/lib/esm/core-geometry.d.ts.map +1 -1
- package/lib/esm/core-geometry.js +3 -2
- package/lib/esm/core-geometry.js.map +1 -1
- package/lib/esm/curve/Arc3d.js.map +1 -1
- package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
- package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
- package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +2 -2
- package/lib/esm/curve/CurveChainWithDistanceIndex.js +3 -3
- package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/esm/curve/CurveCollection.js.map +1 -1
- package/lib/esm/curve/CurveCurve.js.map +1 -1
- package/lib/esm/curve/CurveExtendMode.d.ts +7 -6
- package/lib/esm/curve/CurveExtendMode.d.ts.map +1 -1
- package/lib/esm/curve/CurveExtendMode.js +7 -6
- package/lib/esm/curve/CurveExtendMode.js.map +1 -1
- package/lib/esm/curve/CurveFactory.js.map +1 -1
- package/lib/esm/curve/CurveLocationDetail.d.ts.map +1 -1
- package/lib/esm/curve/CurveLocationDetail.js +23 -18
- package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
- package/lib/esm/curve/CurveOps.js.map +1 -1
- package/lib/esm/curve/CurvePrimitive.js.map +1 -1
- package/lib/esm/curve/CurveProcessor.js.map +1 -1
- package/lib/esm/curve/CurveTypes.js.map +1 -1
- package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
- package/lib/esm/curve/GeometryQuery.js.map +1 -1
- package/lib/esm/curve/LineSegment3d.d.ts +14 -4
- package/lib/esm/curve/LineSegment3d.d.ts.map +1 -1
- package/lib/esm/curve/LineSegment3d.js +108 -3
- package/lib/esm/curve/LineSegment3d.js.map +1 -1
- package/lib/esm/curve/LineString3d.d.ts +41 -8
- package/lib/esm/curve/LineString3d.d.ts.map +1 -1
- package/lib/esm/curve/LineString3d.js +53 -15
- package/lib/esm/curve/LineString3d.js.map +1 -1
- package/lib/esm/curve/Loop.js +1 -1
- package/lib/esm/curve/Loop.js.map +1 -1
- package/lib/esm/curve/OffsetOptions.js.map +1 -1
- package/lib/esm/curve/ParityRegion.js.map +1 -1
- package/lib/esm/curve/Path.js.map +1 -1
- package/lib/esm/curve/PointString3d.js.map +1 -1
- package/lib/esm/curve/ProxyCurve.js.map +1 -1
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
- package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
- package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
- package/lib/esm/curve/Query/InOutTests.js.map +1 -1
- package/lib/esm/curve/Query/PlanarSubdivision.d.ts +2 -2
- package/lib/esm/curve/Query/PlanarSubdivision.js +2 -2
- package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
- package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
- package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
- package/lib/esm/curve/RegionOps.d.ts +1 -2
- package/lib/esm/curve/RegionOps.d.ts.map +1 -1
- package/lib/esm/curve/RegionOps.js +1 -1
- package/lib/esm/curve/RegionOps.js.map +1 -1
- package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts +5 -8
- package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
- package/lib/esm/curve/RegionOpsClassificationSweeps.js +12 -12
- package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/esm/curve/StrokeOptions.js.map +1 -1
- package/lib/esm/curve/UnionRegion.js.map +1 -1
- package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
- package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
- package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
- package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
- package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
- package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
- package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
- package/lib/esm/geometry3d/Angle.js.map +1 -1
- package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
- package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
- package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
- package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
- package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
- package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
- package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
- package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
- package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
- package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
- package/lib/esm/geometry3d/GrowableXYArray.d.ts +2 -2
- package/lib/esm/geometry3d/GrowableXYArray.d.ts.map +1 -1
- package/lib/esm/geometry3d/GrowableXYArray.js +1 -1
- package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
- package/lib/esm/geometry3d/GrowableXYZArray.d.ts +2 -3
- package/lib/esm/geometry3d/GrowableXYZArray.d.ts.map +1 -1
- package/lib/esm/geometry3d/GrowableXYZArray.js +1 -1
- package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
- package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.d.ts +18 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.js +13 -0
- package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
- package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
- package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
- package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
- package/lib/esm/geometry3d/Plane3d.js.map +1 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
- package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
- package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
- package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/esm/geometry3d/PointHelpers.d.ts +1 -2
- package/lib/esm/geometry3d/PointHelpers.d.ts.map +1 -1
- package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
- package/lib/esm/geometry3d/PointStreaming.d.ts +1 -1
- package/lib/esm/geometry3d/PointStreaming.d.ts.map +1 -1
- package/lib/esm/geometry3d/PointStreaming.js +3 -1
- package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
- package/lib/esm/geometry3d/PolygonOps.d.ts +68 -1
- package/lib/esm/geometry3d/PolygonOps.d.ts.map +1 -1
- package/lib/esm/geometry3d/PolygonOps.js +150 -3
- package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
- package/lib/esm/geometry3d/PolylineOps.d.ts +23 -1
- package/lib/esm/geometry3d/PolylineOps.d.ts.map +1 -1
- package/lib/esm/geometry3d/PolylineOps.js +73 -1
- package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
- package/lib/esm/geometry3d/Range.d.ts +1 -1
- package/lib/esm/geometry3d/Range.d.ts.map +1 -1
- package/lib/esm/geometry3d/Range.js.map +1 -1
- package/lib/esm/geometry3d/Ray2d.js.map +1 -1
- package/lib/esm/geometry3d/Ray3d.js.map +1 -1
- package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
- package/lib/esm/geometry3d/Segment1d.js.map +1 -1
- package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
- package/lib/esm/geometry3d/Transform.js +1 -1
- package/lib/esm/geometry3d/Transform.js.map +1 -1
- package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
- package/lib/esm/geometry3d/XYZProps.js.map +1 -1
- package/lib/esm/geometry3d/YawPitchRollAngles.d.ts +7 -5
- package/lib/esm/geometry3d/YawPitchRollAngles.d.ts.map +1 -1
- package/lib/esm/geometry3d/YawPitchRollAngles.js +8 -6
- package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
- package/lib/esm/geometry4d/Map4d.js.map +1 -1
- package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
- package/lib/esm/geometry4d/MomentData.js.map +1 -1
- package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
- package/lib/esm/geometry4d/Point4d.js.map +1 -1
- package/lib/esm/numerics/BandedSystem.js.map +1 -1
- package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
- package/lib/esm/numerics/ClusterableArray.js.map +1 -1
- package/lib/esm/numerics/Complex.js.map +1 -1
- package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
- package/lib/esm/numerics/Newton.js.map +1 -1
- package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
- package/lib/esm/numerics/PolarData.js.map +1 -1
- package/lib/esm/numerics/Polynomials.d.ts +13 -1
- package/lib/esm/numerics/Polynomials.d.ts.map +1 -1
- package/lib/esm/numerics/Polynomials.js +13 -1
- package/lib/esm/numerics/Polynomials.js.map +1 -1
- package/lib/esm/numerics/Quadrature.js.map +1 -1
- package/lib/esm/numerics/Range1dArray.js.map +1 -1
- package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
- package/lib/esm/numerics/UnionFind.js.map +1 -1
- package/lib/esm/numerics/UsageSums.js.map +1 -1
- package/lib/esm/polyface/AuxData.js.map +1 -1
- package/lib/esm/polyface/BoxTopology.js.map +1 -1
- package/lib/esm/polyface/FacetFaceData.js.map +1 -1
- package/lib/esm/polyface/FacetLocationDetail.d.ts +28 -5
- package/lib/esm/polyface/FacetLocationDetail.d.ts.map +1 -1
- package/lib/esm/polyface/FacetLocationDetail.js +48 -14
- package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
- package/lib/esm/polyface/FacetOrientation.js.map +1 -1
- package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
- package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
- package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
- package/lib/esm/polyface/Polyface.d.ts +1 -1
- package/lib/esm/polyface/Polyface.d.ts.map +1 -1
- package/lib/esm/polyface/Polyface.js.map +1 -1
- package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
- package/lib/esm/polyface/PolyfaceData.js.map +1 -1
- package/lib/esm/polyface/PolyfaceQuery.d.ts +7 -3
- package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceQuery.js +23 -0
- package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/esm/polyface/RangeLengthData.js.map +1 -1
- package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.d.ts +52 -0
- package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.d.ts.map +1 -0
- package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js +74 -0
- package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -0
- package/lib/esm/polyface/RangeTree/MinimumValueTester.d.ts +60 -0
- package/lib/esm/polyface/RangeTree/MinimumValueTester.d.ts.map +1 -0
- package/lib/esm/polyface/RangeTree/MinimumValueTester.js +92 -0
- package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -0
- package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.d.ts +57 -0
- package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.d.ts.map +1 -0
- package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js +69 -0
- package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -0
- package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.d.ts +57 -0
- package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.d.ts.map +1 -0
- package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js +80 -0
- package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -0
- package/lib/esm/polyface/RangeTree/RangeTreeNode.d.ts +274 -0
- package/lib/esm/polyface/RangeTree/RangeTreeNode.d.ts.map +1 -0
- package/lib/esm/polyface/RangeTree/RangeTreeNode.js +497 -0
- package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -0
- package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.d.ts +204 -0
- package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.d.ts.map +1 -0
- package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js +374 -0
- package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -0
- package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
- package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
- package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
- package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
- package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
- package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
- package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
- package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
- package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
- package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
- package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
- package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
- package/lib/esm/serialization/BGFBReader.js.map +1 -1
- package/lib/esm/serialization/BGFBWriter.js.map +1 -1
- package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
- package/lib/esm/serialization/DeepCompare.js.map +1 -1
- package/lib/esm/serialization/GeometrySamples.d.ts +36 -3
- package/lib/esm/serialization/GeometrySamples.d.ts.map +1 -1
- package/lib/esm/serialization/GeometrySamples.js +93 -4
- package/lib/esm/serialization/GeometrySamples.js.map +1 -1
- package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
- package/lib/esm/solid/Box.js.map +1 -1
- package/lib/esm/solid/Cone.js.map +1 -1
- package/lib/esm/solid/LinearSweep.d.ts +1 -1
- package/lib/esm/solid/LinearSweep.js +1 -1
- package/lib/esm/solid/LinearSweep.js.map +1 -1
- package/lib/esm/solid/RotationalSweep.js.map +1 -1
- package/lib/esm/solid/RuledSweep.js.map +1 -1
- package/lib/esm/solid/SolidPrimitive.js.map +1 -1
- package/lib/esm/solid/Sphere.js.map +1 -1
- package/lib/esm/solid/SweepContour.d.ts +2 -2
- package/lib/esm/solid/SweepContour.d.ts.map +1 -1
- package/lib/esm/solid/SweepContour.js.map +1 -1
- package/lib/esm/solid/TorusPipe.js.map +1 -1
- package/lib/esm/topology/ChainMerge.js.map +1 -1
- package/lib/esm/topology/Graph.d.ts +5 -6
- package/lib/esm/topology/Graph.d.ts.map +1 -1
- package/lib/esm/topology/Graph.js +7 -6
- package/lib/esm/topology/Graph.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +4 -4
- package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js +5 -5
- package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSearch.d.ts +108 -71
- package/lib/esm/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSearch.js +223 -109
- package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
- package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
- package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
- package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
- package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
- package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
- package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
- package/lib/esm/topology/MaskManager.js.map +1 -1
- package/lib/esm/topology/Merging.d.ts +1 -1
- package/lib/esm/topology/Merging.d.ts.map +1 -1
- package/lib/esm/topology/Merging.js.map +1 -1
- package/lib/esm/topology/RegularizeFace.js.map +1 -1
- package/lib/esm/topology/SignedDataSummary.d.ts +13 -13
- package/lib/esm/topology/SignedDataSummary.d.ts.map +1 -1
- package/lib/esm/topology/SignedDataSummary.js +3 -3
- package/lib/esm/topology/SignedDataSummary.js.map +1 -1
- package/lib/esm/topology/SpaceTriangulation.js.map +1 -1
- package/lib/esm/topology/Triangulation.d.ts +1 -12
- package/lib/esm/topology/Triangulation.d.ts.map +1 -1
- package/lib/esm/topology/Triangulation.js.map +1 -1
- package/lib/esm/topology/XYParitySearchContext.d.ts +27 -21
- package/lib/esm/topology/XYParitySearchContext.d.ts.map +1 -1
- package/lib/esm/topology/XYParitySearchContext.js +73 -71
- package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module RangeSearch
|
|
3
|
+
*/
|
|
4
|
+
import { CurveLocationDetail, CurveLocationDetailPair } from "../../curve/CurveLocationDetail";
|
|
5
|
+
import { Point3d } from "../../geometry3d/Point3dVector3d";
|
|
6
|
+
import { Range3d } from "../../geometry3d/Range";
|
|
7
|
+
import { FacetLocationDetail, FacetLocationDetailPair } from "../FacetLocationDetail";
|
|
8
|
+
import { LineString3dRangeTreeContext } from "./LineString3dRangeTreeContext";
|
|
9
|
+
import { MinimumValueTester } from "./MinimumValueTester";
|
|
10
|
+
import { Point3dArrayRangeTreeContext } from "./Point3dArrayRangeTreeContext";
|
|
11
|
+
import { PolyfaceRangeTreeContext } from "./PolyfaceRangeTreeContext";
|
|
12
|
+
import { SingleTreeSearchHandler, TwoTreeDistanceMinimizationSearchHandler } from "./RangeTreeNode";
|
|
13
|
+
/**
|
|
14
|
+
* Helper class for searching for the closest point in a set of points.
|
|
15
|
+
* * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
export declare class SingleTreeSearchHandlerForClosestPointInArray extends SingleTreeSearchHandler<number> {
|
|
19
|
+
/** The calling context */
|
|
20
|
+
context: Point3dArrayRangeTreeContext;
|
|
21
|
+
/** Evolving search state */
|
|
22
|
+
searchState: MinimumValueTester<number>;
|
|
23
|
+
/** Space point for the search */
|
|
24
|
+
spacePoint: Point3d;
|
|
25
|
+
/**
|
|
26
|
+
* Constructor
|
|
27
|
+
* @param spacePoint cloned
|
|
28
|
+
* @param context captured
|
|
29
|
+
* @param maxDist collect points at no more than this distance from spacePoint
|
|
30
|
+
*/
|
|
31
|
+
constructor(spacePoint: Point3d, context: Point3dArrayRangeTreeContext, maxDist?: number);
|
|
32
|
+
/** Return the current closest point */
|
|
33
|
+
getResult(): CurveLocationDetail | undefined;
|
|
34
|
+
/** Return the collected closest points (if collecting) */
|
|
35
|
+
getSavedItems(): CurveLocationDetail[] | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* Return true if appData within the range should be offered to `processAppData`.
|
|
38
|
+
* @param range range containing items to be tested.
|
|
39
|
+
* @returns true if the spacePoint is within the range or close enough that a point in the range could be the closest.
|
|
40
|
+
*/
|
|
41
|
+
isRangeActive(range: Range3d): boolean;
|
|
42
|
+
/** Test a point indexed in the range tree as candidate for "closest" */
|
|
43
|
+
processAppData(candidateIndex: number): void;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Helper class for searching for the closest approach between sets of points.
|
|
47
|
+
* * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).
|
|
48
|
+
* @internal
|
|
49
|
+
*/
|
|
50
|
+
export declare class TwoTreeSearchHandlerForPoint3dArrayPoint3dArrayCloseApproach extends TwoTreeDistanceMinimizationSearchHandler<number> {
|
|
51
|
+
/** Context for first set of points */
|
|
52
|
+
contextA: Point3dArrayRangeTreeContext;
|
|
53
|
+
/** Context for second set of points */
|
|
54
|
+
contextB: Point3dArrayRangeTreeContext;
|
|
55
|
+
/** Search state with current min distance point pair */
|
|
56
|
+
searchState: MinimumValueTester<CurveLocationDetailPair>;
|
|
57
|
+
/**
|
|
58
|
+
* Constructor
|
|
59
|
+
* @param contextA captured
|
|
60
|
+
* @param contextB captured
|
|
61
|
+
* @param maxDist collect points at no more than this separation distance
|
|
62
|
+
*/
|
|
63
|
+
constructor(contextA: Point3dArrayRangeTreeContext, contextB: Point3dArrayRangeTreeContext, maxDist?: number);
|
|
64
|
+
/** Return the current closest approach */
|
|
65
|
+
getResult(): CurveLocationDetailPair | undefined;
|
|
66
|
+
/** Return the collected close approaches (if collecting) */
|
|
67
|
+
getSavedItems(): CurveLocationDetailPair[] | undefined;
|
|
68
|
+
/** Get current min distance */
|
|
69
|
+
getCurrentDistance(): number;
|
|
70
|
+
/** Compute and test the distance between two points, given their indices. */
|
|
71
|
+
processAppDataPair(indexA: number, indexB: number): void;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Helper class for searching for the closest point in a linestring.
|
|
75
|
+
* * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).
|
|
76
|
+
* @internal
|
|
77
|
+
*/
|
|
78
|
+
export declare class SingleTreeSearchHandlerForClosestPointOnLineString3d extends SingleTreeSearchHandler<number> {
|
|
79
|
+
/** The calling context */
|
|
80
|
+
context: LineString3dRangeTreeContext;
|
|
81
|
+
/** Evolving search state */
|
|
82
|
+
searchState: MinimumValueTester<CurveLocationDetail>;
|
|
83
|
+
/** Space point for the search */
|
|
84
|
+
spacePoint: Point3d;
|
|
85
|
+
/**
|
|
86
|
+
* Constructor
|
|
87
|
+
* @param spacePoint cloned
|
|
88
|
+
* @param context captured
|
|
89
|
+
* @param maxDist collect points at no more than this distance from spacePoint
|
|
90
|
+
*/
|
|
91
|
+
constructor(spacePoint: Point3d, context: LineString3dRangeTreeContext, maxDist?: number);
|
|
92
|
+
/** Return the current closest point */
|
|
93
|
+
getResult(): CurveLocationDetail | undefined;
|
|
94
|
+
/** Return the collected closest points (if collecting) */
|
|
95
|
+
getSavedItems(): CurveLocationDetail[] | undefined;
|
|
96
|
+
/**
|
|
97
|
+
* Return true if appData within the range should be offered to `processAppData`.
|
|
98
|
+
* @param range range containing items to be tested.
|
|
99
|
+
* @returns true if the spacePoint is within the range or close enough that a point in the range could be the closest.
|
|
100
|
+
*/
|
|
101
|
+
isRangeActive(range: Range3d): boolean;
|
|
102
|
+
private _workSegment?;
|
|
103
|
+
/** Test a segment indexed in the range tree as candidate for "closest" */
|
|
104
|
+
processAppData(candidateIndex: number): void;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Helper class for searching for the closest approach between linestrings.
|
|
108
|
+
* * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).
|
|
109
|
+
* @internal
|
|
110
|
+
*/
|
|
111
|
+
export declare class TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach extends TwoTreeDistanceMinimizationSearchHandler<number> {
|
|
112
|
+
/** Context for first polyline */
|
|
113
|
+
contextA: LineString3dRangeTreeContext;
|
|
114
|
+
/** Context for second polyline */
|
|
115
|
+
contextB: LineString3dRangeTreeContext;
|
|
116
|
+
/** Search state with current min distance point pair */
|
|
117
|
+
searchState: MinimumValueTester<CurveLocationDetailPair>;
|
|
118
|
+
/**
|
|
119
|
+
* Constructor
|
|
120
|
+
* @param contextA captured
|
|
121
|
+
* @param contextB captured
|
|
122
|
+
* @param maxDist collect points at no more than this separation distance
|
|
123
|
+
*/
|
|
124
|
+
constructor(contextA: LineString3dRangeTreeContext, contextB: LineString3dRangeTreeContext, maxDist?: number);
|
|
125
|
+
/**
|
|
126
|
+
* Return the current closest approach.
|
|
127
|
+
* * Details contain linestring *and* segment data, cf. [[LineString3d.convertLocalToGlobalDetail]]
|
|
128
|
+
*/
|
|
129
|
+
getResult(): CurveLocationDetailPair | undefined;
|
|
130
|
+
/** Return the collected close approaches (if collecting) */
|
|
131
|
+
getSavedItems(): CurveLocationDetailPair[] | undefined;
|
|
132
|
+
/** Get current min distance */
|
|
133
|
+
getCurrentDistance(): number;
|
|
134
|
+
private static _workSegmentA?;
|
|
135
|
+
private static _workSegmentB?;
|
|
136
|
+
/** Compute and test the closest approach between two segments, given their indices. */
|
|
137
|
+
processAppDataPair(indexA: number, indexB: number): void;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Helper class for searching for the closest point in a polyface.
|
|
141
|
+
* * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring FacetLocationDetail).
|
|
142
|
+
* @internal
|
|
143
|
+
*/
|
|
144
|
+
export declare class SingleTreeSearchHandlerForClosestPointOnPolyface extends SingleTreeSearchHandler<number> {
|
|
145
|
+
/** The calling context */
|
|
146
|
+
context: PolyfaceRangeTreeContext;
|
|
147
|
+
/** Evolving search state */
|
|
148
|
+
searchState: MinimumValueTester<FacetLocationDetail>;
|
|
149
|
+
/** Space point for the search */
|
|
150
|
+
spacePoint: Point3d;
|
|
151
|
+
/** Whether to include facet interior in search */
|
|
152
|
+
searchFacetInterior: boolean;
|
|
153
|
+
/**
|
|
154
|
+
* Constructor
|
|
155
|
+
* @param spacePoint cloned
|
|
156
|
+
* @param context captured
|
|
157
|
+
* @param maxDist collect points at no more than this distance from spacePoint
|
|
158
|
+
* @param searchFacetInterior true: search facet interior + boundary; false: just boundary
|
|
159
|
+
*/
|
|
160
|
+
constructor(spacePoint: Point3d, context: PolyfaceRangeTreeContext, maxDist?: number, searchFacetInterior?: boolean);
|
|
161
|
+
/** Return the current closest point */
|
|
162
|
+
getResult(): FacetLocationDetail | undefined;
|
|
163
|
+
/** Return the collected closest points (if collecting) */
|
|
164
|
+
getSavedItems(): FacetLocationDetail[] | undefined;
|
|
165
|
+
/**
|
|
166
|
+
* Return true if appData within the range should be offered to `processAppData`.
|
|
167
|
+
* @param range range containing items to be tested.
|
|
168
|
+
* @returns true if the spacePoint is within the range or close enough that a point in the range could be the closest.
|
|
169
|
+
*/
|
|
170
|
+
isRangeActive(range: Range3d): boolean;
|
|
171
|
+
/** Test a facet indexed in the range tree as candidate for "closest" */
|
|
172
|
+
processAppData(candidateIndex: number): void;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Helper class for searching for the closest approach between polyfaces.
|
|
176
|
+
* * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring FacetLocationDetail).
|
|
177
|
+
* @internal
|
|
178
|
+
*/
|
|
179
|
+
export declare class TwoTreeSearchHandlerForFacetFacetCloseApproach extends TwoTreeDistanceMinimizationSearchHandler<number> {
|
|
180
|
+
/** Context for first polyface */
|
|
181
|
+
contextA: PolyfaceRangeTreeContext;
|
|
182
|
+
/** Context for second polyface */
|
|
183
|
+
contextB: PolyfaceRangeTreeContext;
|
|
184
|
+
/** Search state with current min distance and facet pair */
|
|
185
|
+
searchState: MinimumValueTester<FacetLocationDetailPair>;
|
|
186
|
+
/** Whether to include facet interior in search */
|
|
187
|
+
searchFacetInterior: boolean;
|
|
188
|
+
/** Constructor
|
|
189
|
+
* @param contextA captured
|
|
190
|
+
* @param contextB captured
|
|
191
|
+
* @param maxDist collect points at no more than this separation distance
|
|
192
|
+
* @param searchFacetInterior true: search facet interior + boundary; false: just boundary
|
|
193
|
+
*/
|
|
194
|
+
constructor(contextA: PolyfaceRangeTreeContext, contextB: PolyfaceRangeTreeContext, maxDist?: number, searchFacetInterior?: boolean);
|
|
195
|
+
/** Return the facets with closest approach */
|
|
196
|
+
getResult(): FacetLocationDetailPair | undefined;
|
|
197
|
+
/** Return the collected close approaches (if collecting) */
|
|
198
|
+
getSavedItems(): FacetLocationDetailPair[] | undefined;
|
|
199
|
+
/** Get current min distance */
|
|
200
|
+
getCurrentDistance(): number;
|
|
201
|
+
/** Compute and test the closest approach between two facets, given their indices. */
|
|
202
|
+
processAppDataPair(indexA: number, indexB: number): void;
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=RangeTreeSearchHandlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RangeTreeSearchHandlers.d.ts","sourceRoot":"","sources":["../../../../src/polyface/RangeTree/RangeTreeSearchHandlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
/** @packageDocumentation
|
|
6
|
+
* @module RangeSearch
|
|
7
|
+
*/
|
|
8
|
+
import { CurveLocationDetail, CurveLocationDetailPair } from "../../curve/CurveLocationDetail";
|
|
9
|
+
import { LineSegment3d } from "../../curve/LineSegment3d";
|
|
10
|
+
import { LineString3d } from "../../curve/LineString3d";
|
|
11
|
+
import { PolygonOps } from "../../geometry3d/PolygonOps";
|
|
12
|
+
import { ConvexFacetLocationDetail, FacetLocationDetailPair, NonConvexFacetLocationDetail } from "../FacetLocationDetail";
|
|
13
|
+
import { MinimumValueTester } from "./MinimumValueTester";
|
|
14
|
+
import { SingleTreeSearchHandler, TwoTreeDistanceMinimizationSearchHandler } from "./RangeTreeNode";
|
|
15
|
+
/**
|
|
16
|
+
* Helper class for searching for the closest point in a set of points.
|
|
17
|
+
* * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
20
|
+
export class SingleTreeSearchHandlerForClosestPointInArray extends SingleTreeSearchHandler {
|
|
21
|
+
/**
|
|
22
|
+
* Constructor
|
|
23
|
+
* @param spacePoint cloned
|
|
24
|
+
* @param context captured
|
|
25
|
+
* @param maxDist collect points at no more than this distance from spacePoint
|
|
26
|
+
*/
|
|
27
|
+
constructor(spacePoint, context, maxDist) {
|
|
28
|
+
super();
|
|
29
|
+
this.context = context;
|
|
30
|
+
if (maxDist !== undefined && maxDist < 0)
|
|
31
|
+
maxDist = undefined;
|
|
32
|
+
this.searchState = MinimumValueTester.create(maxDist);
|
|
33
|
+
this.spacePoint = spacePoint.clone();
|
|
34
|
+
}
|
|
35
|
+
/** Return the current closest point */
|
|
36
|
+
getResult() {
|
|
37
|
+
if (this.searchState.minValue !== undefined && this.searchState.itemAtMinValue !== undefined) {
|
|
38
|
+
const iPoint = this.searchState.itemAtMinValue;
|
|
39
|
+
const cld = CurveLocationDetail.createCurveFractionPoint(undefined, iPoint, this.context.points[iPoint]);
|
|
40
|
+
cld.a = this.searchState.minValue;
|
|
41
|
+
return cld;
|
|
42
|
+
}
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
/** Return the collected closest points (if collecting) */
|
|
46
|
+
getSavedItems() {
|
|
47
|
+
if (this.searchState.savedItems.length === 0)
|
|
48
|
+
return undefined;
|
|
49
|
+
const cldArray = [];
|
|
50
|
+
for (let i = 0; i < this.searchState.savedItems.length; ++i) {
|
|
51
|
+
const iPoint = this.searchState.savedItems[i];
|
|
52
|
+
const cld = CurveLocationDetail.createCurveFractionPoint(undefined, iPoint, this.context.points[iPoint]);
|
|
53
|
+
cld.a = this.searchState.savedValues[i];
|
|
54
|
+
cldArray.push(cld);
|
|
55
|
+
}
|
|
56
|
+
return cldArray;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Return true if appData within the range should be offered to `processAppData`.
|
|
60
|
+
* @param range range containing items to be tested.
|
|
61
|
+
* @returns true if the spacePoint is within the range or close enough that a point in the range could be the closest.
|
|
62
|
+
*/
|
|
63
|
+
isRangeActive(range) {
|
|
64
|
+
const dMin = range.distanceToPoint(this.spacePoint);
|
|
65
|
+
if (this.searchState.isNewMinValue(dMin)) {
|
|
66
|
+
this.context.numRangeTestTrue++;
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
this.context.numRangeTestFalse++;
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
/** Test a point indexed in the range tree as candidate for "closest" */
|
|
73
|
+
processAppData(candidateIndex) {
|
|
74
|
+
const d = this.spacePoint.distance(this.context.points[candidateIndex]);
|
|
75
|
+
this.context.numPointTest++;
|
|
76
|
+
this.searchState.testAndSave(candidateIndex, d);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Helper class for searching for the closest approach between sets of points.
|
|
81
|
+
* * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).
|
|
82
|
+
* @internal
|
|
83
|
+
*/
|
|
84
|
+
export class TwoTreeSearchHandlerForPoint3dArrayPoint3dArrayCloseApproach extends TwoTreeDistanceMinimizationSearchHandler {
|
|
85
|
+
/**
|
|
86
|
+
* Constructor
|
|
87
|
+
* @param contextA captured
|
|
88
|
+
* @param contextB captured
|
|
89
|
+
* @param maxDist collect points at no more than this separation distance
|
|
90
|
+
*/
|
|
91
|
+
constructor(contextA, contextB, maxDist) {
|
|
92
|
+
super();
|
|
93
|
+
this.contextA = contextA;
|
|
94
|
+
this.contextB = contextB;
|
|
95
|
+
if (maxDist !== undefined && maxDist < 0)
|
|
96
|
+
maxDist = undefined;
|
|
97
|
+
this.searchState = MinimumValueTester.create(maxDist);
|
|
98
|
+
}
|
|
99
|
+
/** Return the current closest approach */
|
|
100
|
+
getResult() {
|
|
101
|
+
if (this.searchState.minValue !== undefined) {
|
|
102
|
+
return this.searchState.itemAtMinValue;
|
|
103
|
+
}
|
|
104
|
+
return undefined;
|
|
105
|
+
}
|
|
106
|
+
/** Return the collected close approaches (if collecting) */
|
|
107
|
+
getSavedItems() {
|
|
108
|
+
if (this.searchState.savedItems.length > 0) {
|
|
109
|
+
return this.searchState.savedItems;
|
|
110
|
+
}
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
/** Get current min distance */
|
|
114
|
+
getCurrentDistance() {
|
|
115
|
+
const d = this.searchState.minValue;
|
|
116
|
+
return d === undefined ? Number.MAX_VALUE : d;
|
|
117
|
+
}
|
|
118
|
+
/** Compute and test the distance between two points, given their indices. */
|
|
119
|
+
processAppDataPair(indexA, indexB) {
|
|
120
|
+
this.contextA.numPointTest++;
|
|
121
|
+
const pointA = this.contextA.points[indexA];
|
|
122
|
+
const pointB = this.contextB.points[indexB];
|
|
123
|
+
const d = pointA.distance(pointB);
|
|
124
|
+
if (this.searchState.isNewMinOrTrigger(d)) {
|
|
125
|
+
const cldPair = CurveLocationDetailPair.createCapture(CurveLocationDetail.createCurveFractionPoint(undefined, indexA, pointA), CurveLocationDetail.createCurveFractionPoint(undefined, indexB, pointB));
|
|
126
|
+
cldPair.detailA.a = cldPair.detailB.a = d;
|
|
127
|
+
this.searchState.testAndSave(cldPair, d);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Helper class for searching for the closest point in a linestring.
|
|
133
|
+
* * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).
|
|
134
|
+
* @internal
|
|
135
|
+
*/
|
|
136
|
+
export class SingleTreeSearchHandlerForClosestPointOnLineString3d extends SingleTreeSearchHandler {
|
|
137
|
+
/**
|
|
138
|
+
* Constructor
|
|
139
|
+
* @param spacePoint cloned
|
|
140
|
+
* @param context captured
|
|
141
|
+
* @param maxDist collect points at no more than this distance from spacePoint
|
|
142
|
+
*/
|
|
143
|
+
constructor(spacePoint, context, maxDist) {
|
|
144
|
+
super();
|
|
145
|
+
this.context = context;
|
|
146
|
+
if (maxDist !== undefined && maxDist < 0)
|
|
147
|
+
maxDist = undefined;
|
|
148
|
+
this.searchState = MinimumValueTester.create(maxDist);
|
|
149
|
+
this.spacePoint = spacePoint.clone();
|
|
150
|
+
}
|
|
151
|
+
/** Return the current closest point */
|
|
152
|
+
getResult() {
|
|
153
|
+
if (this.searchState.minValue !== undefined && this.searchState.itemAtMinValue !== undefined) {
|
|
154
|
+
return this.searchState.itemAtMinValue;
|
|
155
|
+
}
|
|
156
|
+
return undefined;
|
|
157
|
+
}
|
|
158
|
+
/** Return the collected closest points (if collecting) */
|
|
159
|
+
getSavedItems() {
|
|
160
|
+
if (this.searchState.savedItems.length > 0) {
|
|
161
|
+
return this.searchState.savedItems;
|
|
162
|
+
}
|
|
163
|
+
return undefined;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Return true if appData within the range should be offered to `processAppData`.
|
|
167
|
+
* @param range range containing items to be tested.
|
|
168
|
+
* @returns true if the spacePoint is within the range or close enough that a point in the range could be the closest.
|
|
169
|
+
*/
|
|
170
|
+
isRangeActive(range) {
|
|
171
|
+
const dMin = range.distanceToPoint(this.spacePoint);
|
|
172
|
+
if (this.searchState.isNewMinValue(dMin)) {
|
|
173
|
+
this.context.numRangeTestTrue++;
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
176
|
+
this.context.numRangeTestFalse++;
|
|
177
|
+
return false;
|
|
178
|
+
}
|
|
179
|
+
/** Test a segment indexed in the range tree as candidate for "closest" */
|
|
180
|
+
processAppData(candidateIndex) {
|
|
181
|
+
const segment = this._workSegment = this.context.lineString.getIndexedSegment(candidateIndex, this._workSegment);
|
|
182
|
+
if (segment) {
|
|
183
|
+
const cld = segment.closestPoint(this.spacePoint, false);
|
|
184
|
+
LineString3d.convertLocalToGlobalDetail(cld, candidateIndex, this.context.lineString.numEdges(), this.context.lineString);
|
|
185
|
+
this.context.numPointTest++;
|
|
186
|
+
this.searchState.testAndSave(cld, cld.a);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Helper class for searching for the closest approach between linestrings.
|
|
192
|
+
* * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).
|
|
193
|
+
* @internal
|
|
194
|
+
*/
|
|
195
|
+
export class TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach extends TwoTreeDistanceMinimizationSearchHandler {
|
|
196
|
+
/**
|
|
197
|
+
* Constructor
|
|
198
|
+
* @param contextA captured
|
|
199
|
+
* @param contextB captured
|
|
200
|
+
* @param maxDist collect points at no more than this separation distance
|
|
201
|
+
*/
|
|
202
|
+
constructor(contextA, contextB, maxDist) {
|
|
203
|
+
super();
|
|
204
|
+
this.contextA = contextA;
|
|
205
|
+
this.contextB = contextB;
|
|
206
|
+
if (maxDist !== undefined && maxDist < 0)
|
|
207
|
+
maxDist = undefined;
|
|
208
|
+
this.searchState = MinimumValueTester.create(maxDist);
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Return the current closest approach.
|
|
212
|
+
* * Details contain linestring *and* segment data, cf. [[LineString3d.convertLocalToGlobalDetail]]
|
|
213
|
+
*/
|
|
214
|
+
getResult() {
|
|
215
|
+
if (this.searchState.minValue !== undefined) {
|
|
216
|
+
return this.searchState.itemAtMinValue;
|
|
217
|
+
}
|
|
218
|
+
return undefined;
|
|
219
|
+
}
|
|
220
|
+
/** Return the collected close approaches (if collecting) */
|
|
221
|
+
getSavedItems() {
|
|
222
|
+
if (this.searchState.savedItems.length > 0) {
|
|
223
|
+
return this.searchState.savedItems;
|
|
224
|
+
}
|
|
225
|
+
return undefined;
|
|
226
|
+
}
|
|
227
|
+
/** Get current min distance */
|
|
228
|
+
getCurrentDistance() {
|
|
229
|
+
const d = this.searchState.minValue;
|
|
230
|
+
return d === undefined ? Number.MAX_VALUE : d;
|
|
231
|
+
}
|
|
232
|
+
/** Compute and test the closest approach between two segments, given their indices. */
|
|
233
|
+
processAppDataPair(indexA, indexB) {
|
|
234
|
+
this.contextA.numPointTest++;
|
|
235
|
+
const segA = TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach._workSegmentA =
|
|
236
|
+
this.contextA.lineString.getIndexedSegment(indexA, TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach._workSegmentA);
|
|
237
|
+
const segB = TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach._workSegmentB =
|
|
238
|
+
this.contextB.lineString.getIndexedSegment(indexB, TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach._workSegmentB);
|
|
239
|
+
const cldPair = LineSegment3d.closestApproach(segA, false, segB, false);
|
|
240
|
+
if (cldPair && this.searchState.isNewMinOrTrigger(cldPair.detailA.a)) {
|
|
241
|
+
LineString3d.convertLocalToGlobalDetail(cldPair.detailA, indexA, this.contextA.lineString.numEdges(), this.contextA.lineString);
|
|
242
|
+
LineString3d.convertLocalToGlobalDetail(cldPair.detailB, indexB, this.contextB.lineString.numEdges(), this.contextB.lineString);
|
|
243
|
+
this.searchState.testAndSave(cldPair, cldPair.detailA.a);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Helper class for searching for the closest point in a polyface.
|
|
249
|
+
* * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring FacetLocationDetail).
|
|
250
|
+
* @internal
|
|
251
|
+
*/
|
|
252
|
+
export class SingleTreeSearchHandlerForClosestPointOnPolyface extends SingleTreeSearchHandler {
|
|
253
|
+
/**
|
|
254
|
+
* Constructor
|
|
255
|
+
* @param spacePoint cloned
|
|
256
|
+
* @param context captured
|
|
257
|
+
* @param maxDist collect points at no more than this distance from spacePoint
|
|
258
|
+
* @param searchFacetInterior true: search facet interior + boundary; false: just boundary
|
|
259
|
+
*/
|
|
260
|
+
constructor(spacePoint, context, maxDist, searchFacetInterior = false) {
|
|
261
|
+
super();
|
|
262
|
+
this.context = context;
|
|
263
|
+
if (maxDist !== undefined && maxDist < 0)
|
|
264
|
+
maxDist = undefined;
|
|
265
|
+
this.searchState = MinimumValueTester.create(maxDist);
|
|
266
|
+
this.spacePoint = spacePoint.clone();
|
|
267
|
+
this.searchFacetInterior = searchFacetInterior;
|
|
268
|
+
}
|
|
269
|
+
/** Return the current closest point */
|
|
270
|
+
getResult() {
|
|
271
|
+
if (this.searchState.minValue !== undefined && this.searchState.itemAtMinValue !== undefined) {
|
|
272
|
+
return this.searchState.itemAtMinValue;
|
|
273
|
+
}
|
|
274
|
+
return undefined;
|
|
275
|
+
}
|
|
276
|
+
/** Return the collected closest points (if collecting) */
|
|
277
|
+
getSavedItems() {
|
|
278
|
+
if (this.searchState.savedItems.length > 0) {
|
|
279
|
+
return this.searchState.savedItems;
|
|
280
|
+
}
|
|
281
|
+
return undefined;
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Return true if appData within the range should be offered to `processAppData`.
|
|
285
|
+
* @param range range containing items to be tested.
|
|
286
|
+
* @returns true if the spacePoint is within the range or close enough that a point in the range could be the closest.
|
|
287
|
+
*/
|
|
288
|
+
isRangeActive(range) {
|
|
289
|
+
const dMin = range.distanceToPoint(this.spacePoint);
|
|
290
|
+
if (this.searchState.isNewMinValue(dMin)) {
|
|
291
|
+
this.context.numRangeTestTrue++;
|
|
292
|
+
return true;
|
|
293
|
+
}
|
|
294
|
+
this.context.numRangeTestFalse++;
|
|
295
|
+
return false;
|
|
296
|
+
}
|
|
297
|
+
/** Test a facet indexed in the range tree as candidate for "closest" */
|
|
298
|
+
processAppData(candidateIndex) {
|
|
299
|
+
this.context.visitor.setNumWrap(0); // so edgeCount === pointCount; closure point unnecessary for closestPoint[OnBoundary]
|
|
300
|
+
if (this.context.visitor.moveToReadIndex(candidateIndex)) {
|
|
301
|
+
let pld;
|
|
302
|
+
if (this.searchFacetInterior)
|
|
303
|
+
pld = PolygonOps.closestPoint(this.context.visitor.point, this.spacePoint);
|
|
304
|
+
else
|
|
305
|
+
pld = PolygonOps.closestPointOnBoundary(this.context.visitor.point, this.spacePoint);
|
|
306
|
+
this.context.numFacetTest++;
|
|
307
|
+
if (pld && this.searchState.isNewMinOrTrigger(pld.a)) {
|
|
308
|
+
const edgeCount = this.context.visitor.pointCount;
|
|
309
|
+
const fld = this.context.convexFacets
|
|
310
|
+
? ConvexFacetLocationDetail.createCapture(this.context.visitor.currentReadIndex(), edgeCount, pld)
|
|
311
|
+
: NonConvexFacetLocationDetail.createCapture(this.context.visitor.currentReadIndex(), edgeCount, pld);
|
|
312
|
+
this.searchState.testAndSave(fld, pld.a);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Helper class for searching for the closest approach between polyfaces.
|
|
319
|
+
* * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring FacetLocationDetail).
|
|
320
|
+
* @internal
|
|
321
|
+
*/
|
|
322
|
+
export class TwoTreeSearchHandlerForFacetFacetCloseApproach extends TwoTreeDistanceMinimizationSearchHandler {
|
|
323
|
+
/** Constructor
|
|
324
|
+
* @param contextA captured
|
|
325
|
+
* @param contextB captured
|
|
326
|
+
* @param maxDist collect points at no more than this separation distance
|
|
327
|
+
* @param searchFacetInterior true: search facet interior + boundary; false: just boundary
|
|
328
|
+
*/
|
|
329
|
+
constructor(contextA, contextB, maxDist, searchFacetInterior = false) {
|
|
330
|
+
super();
|
|
331
|
+
this.contextA = contextA;
|
|
332
|
+
this.contextB = contextB;
|
|
333
|
+
if (maxDist !== undefined && maxDist < 0)
|
|
334
|
+
maxDist = undefined;
|
|
335
|
+
this.searchState = MinimumValueTester.create(maxDist);
|
|
336
|
+
this.searchFacetInterior = searchFacetInterior && contextA.convexFacets && contextB.convexFacets;
|
|
337
|
+
}
|
|
338
|
+
/** Return the facets with closest approach */
|
|
339
|
+
getResult() {
|
|
340
|
+
if (this.searchState.minValue !== undefined) {
|
|
341
|
+
return this.searchState.itemAtMinValue;
|
|
342
|
+
}
|
|
343
|
+
return undefined;
|
|
344
|
+
}
|
|
345
|
+
/** Return the collected close approaches (if collecting) */
|
|
346
|
+
getSavedItems() {
|
|
347
|
+
if (this.searchState.savedItems.length > 0) {
|
|
348
|
+
return this.searchState.savedItems;
|
|
349
|
+
}
|
|
350
|
+
return undefined;
|
|
351
|
+
}
|
|
352
|
+
/** Get current min distance */
|
|
353
|
+
getCurrentDistance() {
|
|
354
|
+
const d = this.searchState.minValue;
|
|
355
|
+
return d === undefined ? Number.MAX_VALUE : d;
|
|
356
|
+
}
|
|
357
|
+
/** Compute and test the closest approach between two facets, given their indices. */
|
|
358
|
+
processAppDataPair(indexA, indexB) {
|
|
359
|
+
this.contextA.visitor.setNumWrap(1); // closed polygons are more efficient for PolygonOps.closestApproach
|
|
360
|
+
this.contextB.visitor.setNumWrap(1);
|
|
361
|
+
if (this.contextA.visitor.moveToReadIndex(indexA) && this.contextB.visitor.moveToReadIndex(indexB)) {
|
|
362
|
+
// ASSUME: not worth sending in maxDist here...
|
|
363
|
+
const pldPair = PolygonOps.closestApproach(this.contextA.visitor.point, this.contextB.visitor.point, undefined, this.searchFacetInterior);
|
|
364
|
+
this.contextA.numFacetTest++;
|
|
365
|
+
if (pldPair && this.searchState.isNewMinOrTrigger(pldPair.detailA.a)) {
|
|
366
|
+
const edgeCountA = this.contextA.visitor.pointCount - 1;
|
|
367
|
+
const edgeCountB = this.contextB.visitor.pointCount - 1;
|
|
368
|
+
const fldPair = FacetLocationDetailPair.create(this.contextA.convexFacets ? ConvexFacetLocationDetail.createCapture(indexA, edgeCountA, pldPair.detailA) : NonConvexFacetLocationDetail.createCapture(indexA, edgeCountA, pldPair.detailA), this.contextB.convexFacets ? ConvexFacetLocationDetail.createCapture(indexB, edgeCountB, pldPair.detailB) : NonConvexFacetLocationDetail.createCapture(indexB, edgeCountB, pldPair.detailB));
|
|
369
|
+
this.searchState.testAndSave(fldPair, fldPair.detailA.a);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
//# sourceMappingURL=RangeTreeSearchHandlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RangeTreeSearchHandlers.js","sourceRoot":"","sources":["../../../../src/polyface/RangeTree/RangeTreeSearchHandlers.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/** @packageDocumentation\n * @module RangeSearch\n */\n\nimport { CurveLocationDetail, CurveLocationDetailPair } from \"../../curve/CurveLocationDetail\";\nimport { LineSegment3d } from \"../../curve/LineSegment3d\";\nimport { LineString3d } from \"../../curve/LineString3d\";\nimport { Point3d } from \"../../geometry3d/Point3dVector3d\";\nimport { PolygonLocationDetail, PolygonOps } from \"../../geometry3d/PolygonOps\";\nimport { Range3d } from \"../../geometry3d/Range\";\nimport { ConvexFacetLocationDetail, FacetLocationDetail, FacetLocationDetailPair, NonConvexFacetLocationDetail } from \"../FacetLocationDetail\";\nimport { LineString3dRangeTreeContext } from \"./LineString3dRangeTreeContext\";\nimport { MinimumValueTester } from \"./MinimumValueTester\";\nimport { Point3dArrayRangeTreeContext } from \"./Point3dArrayRangeTreeContext\";\nimport { PolyfaceRangeTreeContext } from \"./PolyfaceRangeTreeContext\";\nimport { SingleTreeSearchHandler, TwoTreeDistanceMinimizationSearchHandler } from \"./RangeTreeNode\";\n\n/**\n * Helper class for searching for the closest point in a set of points.\n * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).\n * @internal\n */\nexport class SingleTreeSearchHandlerForClosestPointInArray extends SingleTreeSearchHandler<number> {\n /** The calling context */\n public context: Point3dArrayRangeTreeContext;\n /** Evolving search state */\n public searchState: MinimumValueTester<number>;\n /** Space point for the search */\n public spacePoint: Point3d;\n\n /**\n * Constructor\n * @param spacePoint cloned\n * @param context captured\n * @param maxDist collect points at no more than this distance from spacePoint\n */\n public constructor(spacePoint: Point3d, context: Point3dArrayRangeTreeContext, maxDist?: number) {\n super();\n this.context = context;\n if (maxDist !== undefined && maxDist < 0)\n maxDist = undefined;\n this.searchState = MinimumValueTester.create<number>(maxDist);\n this.spacePoint = spacePoint.clone();\n }\n /** Return the current closest point */\n public getResult(): CurveLocationDetail | undefined {\n if (this.searchState.minValue !== undefined && this.searchState.itemAtMinValue !== undefined) {\n const iPoint = this.searchState.itemAtMinValue;\n const cld = CurveLocationDetail.createCurveFractionPoint(undefined, iPoint, this.context.points[iPoint]);\n cld.a = this.searchState.minValue;\n return cld;\n }\n return undefined;\n }\n /** Return the collected closest points (if collecting) */\n public getSavedItems(): CurveLocationDetail[] | undefined {\n if (this.searchState.savedItems.length === 0)\n return undefined;\n const cldArray: CurveLocationDetail[] = [];\n for (let i = 0; i < this.searchState.savedItems.length; ++i) {\n const iPoint = this.searchState.savedItems[i];\n const cld = CurveLocationDetail.createCurveFractionPoint(undefined, iPoint, this.context.points[iPoint]);\n cld.a = this.searchState.savedValues[i];\n cldArray.push(cld);\n }\n return cldArray;\n }\n /**\n * Return true if appData within the range should be offered to `processAppData`.\n * @param range range containing items to be tested.\n * @returns true if the spacePoint is within the range or close enough that a point in the range could be the closest.\n */\n public override isRangeActive(range: Range3d): boolean {\n const dMin = range.distanceToPoint(this.spacePoint);\n if (this.searchState.isNewMinValue(dMin)) {\n this.context.numRangeTestTrue++;\n return true;\n }\n this.context.numRangeTestFalse++;\n return false;\n }\n /** Test a point indexed in the range tree as candidate for \"closest\" */\n public override processAppData(candidateIndex: number): void {\n const d = this.spacePoint.distance(this.context.points[candidateIndex]);\n this.context.numPointTest++;\n this.searchState.testAndSave(candidateIndex, d);\n }\n}\n\n/**\n * Helper class for searching for the closest approach between sets of points.\n * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).\n * @internal\n */\nexport class TwoTreeSearchHandlerForPoint3dArrayPoint3dArrayCloseApproach extends TwoTreeDistanceMinimizationSearchHandler<number> {\n /** Context for first set of points */\n public contextA: Point3dArrayRangeTreeContext;\n /** Context for second set of points */\n public contextB: Point3dArrayRangeTreeContext;\n /** Search state with current min distance point pair */\n public searchState: MinimumValueTester<CurveLocationDetailPair>;\n\n /**\n * Constructor\n * @param contextA captured\n * @param contextB captured\n * @param maxDist collect points at no more than this separation distance\n */\n public constructor(contextA: Point3dArrayRangeTreeContext, contextB: Point3dArrayRangeTreeContext, maxDist?: number) {\n super();\n this.contextA = contextA;\n this.contextB = contextB;\n if (maxDist !== undefined && maxDist < 0)\n maxDist = undefined;\n this.searchState = MinimumValueTester.create<CurveLocationDetailPair>(maxDist);\n }\n /** Return the current closest approach */\n public getResult(): CurveLocationDetailPair | undefined {\n if (this.searchState.minValue !== undefined) {\n return this.searchState.itemAtMinValue;\n }\n return undefined;\n }\n /** Return the collected close approaches (if collecting) */\n public getSavedItems(): CurveLocationDetailPair[] | undefined {\n if (this.searchState.savedItems.length > 0) {\n return this.searchState.savedItems;\n }\n return undefined;\n }\n /** Get current min distance */\n public override getCurrentDistance(): number {\n const d = this.searchState.minValue;\n return d === undefined ? Number.MAX_VALUE : d;\n }\n /** Compute and test the distance between two points, given their indices. */\n public override processAppDataPair(indexA: number, indexB: number): void {\n this.contextA.numPointTest++;\n const pointA = this.contextA.points[indexA];\n const pointB = this.contextB.points[indexB];\n const d = pointA.distance(pointB);\n if (this.searchState.isNewMinOrTrigger(d)) {\n const cldPair = CurveLocationDetailPair.createCapture(\n CurveLocationDetail.createCurveFractionPoint(undefined, indexA, pointA),\n CurveLocationDetail.createCurveFractionPoint(undefined, indexB, pointB),\n );\n cldPair.detailA.a = cldPair.detailB.a = d;\n this.searchState.testAndSave(cldPair, d);\n }\n }\n}\n\n/**\n * Helper class for searching for the closest point in a linestring.\n * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).\n * @internal\n */\nexport class SingleTreeSearchHandlerForClosestPointOnLineString3d extends SingleTreeSearchHandler<number> {\n /** The calling context */\n public context: LineString3dRangeTreeContext;\n /** Evolving search state */\n public searchState: MinimumValueTester<CurveLocationDetail>;\n /** Space point for the search */\n public spacePoint: Point3d;\n\n /**\n * Constructor\n * @param spacePoint cloned\n * @param context captured\n * @param maxDist collect points at no more than this distance from spacePoint\n */\n public constructor(spacePoint: Point3d, context: LineString3dRangeTreeContext, maxDist?: number) {\n super();\n this.context = context;\n if (maxDist !== undefined && maxDist < 0)\n maxDist = undefined;\n this.searchState = MinimumValueTester.create<CurveLocationDetail>(maxDist);\n this.spacePoint = spacePoint.clone();\n }\n /** Return the current closest point */\n public getResult(): CurveLocationDetail | undefined {\n if (this.searchState.minValue !== undefined && this.searchState.itemAtMinValue !== undefined) {\n return this.searchState.itemAtMinValue;\n }\n return undefined;\n }\n /** Return the collected closest points (if collecting) */\n public getSavedItems(): CurveLocationDetail[] | undefined {\n if (this.searchState.savedItems.length > 0) {\n return this.searchState.savedItems;\n }\n return undefined;\n }\n /**\n * Return true if appData within the range should be offered to `processAppData`.\n * @param range range containing items to be tested.\n * @returns true if the spacePoint is within the range or close enough that a point in the range could be the closest.\n */\n public override isRangeActive(range: Range3d): boolean {\n const dMin = range.distanceToPoint(this.spacePoint);\n if (this.searchState.isNewMinValue(dMin)) {\n this.context.numRangeTestTrue++;\n return true;\n }\n this.context.numRangeTestFalse++;\n return false;\n }\n private _workSegment?: LineSegment3d;\n /** Test a segment indexed in the range tree as candidate for \"closest\" */\n public override processAppData(candidateIndex: number): void {\n const segment = this._workSegment = this.context.lineString.getIndexedSegment(candidateIndex, this._workSegment)!;\n if (segment) {\n const cld = segment.closestPoint(this.spacePoint, false);\n LineString3d.convertLocalToGlobalDetail(cld, candidateIndex, this.context.lineString.numEdges(), this.context.lineString);\n this.context.numPointTest++;\n this.searchState.testAndSave(cld, cld.a);\n }\n }\n}\n\n/**\n * Helper class for searching for the closest approach between linestrings.\n * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring CurveLocationDetail).\n * @internal\n */\nexport class TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach extends TwoTreeDistanceMinimizationSearchHandler<number> {\n /** Context for first polyline */\n public contextA: LineString3dRangeTreeContext;\n /** Context for second polyline */\n public contextB: LineString3dRangeTreeContext;\n /** Search state with current min distance point pair */\n public searchState: MinimumValueTester<CurveLocationDetailPair>;\n\n /**\n * Constructor\n * @param contextA captured\n * @param contextB captured\n * @param maxDist collect points at no more than this separation distance\n */\n public constructor(contextA: LineString3dRangeTreeContext, contextB: LineString3dRangeTreeContext, maxDist?: number) {\n super();\n this.contextA = contextA;\n this.contextB = contextB;\n if (maxDist !== undefined && maxDist < 0)\n maxDist = undefined;\n this.searchState = MinimumValueTester.create<CurveLocationDetailPair>(maxDist);\n }\n /**\n * Return the current closest approach.\n * * Details contain linestring *and* segment data, cf. [[LineString3d.convertLocalToGlobalDetail]]\n */\n public getResult(): CurveLocationDetailPair | undefined {\n if (this.searchState.minValue !== undefined) {\n return this.searchState.itemAtMinValue;\n }\n return undefined;\n }\n /** Return the collected close approaches (if collecting) */\n public getSavedItems(): CurveLocationDetailPair[] | undefined {\n if (this.searchState.savedItems.length > 0) {\n return this.searchState.savedItems;\n }\n return undefined;\n }\n /** Get current min distance */\n public override getCurrentDistance(): number {\n const d = this.searchState.minValue;\n return d === undefined ? Number.MAX_VALUE : d;\n }\n private static _workSegmentA?: LineSegment3d;\n private static _workSegmentB?: LineSegment3d;\n /** Compute and test the closest approach between two segments, given their indices. */\n public override processAppDataPair(indexA: number, indexB: number): void {\n this.contextA.numPointTest++;\n const segA = TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach._workSegmentA =\n this.contextA.lineString.getIndexedSegment(indexA, TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach._workSegmentA)!;\n const segB = TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach._workSegmentB =\n this.contextB.lineString.getIndexedSegment(indexB, TwoTreeSearchHandlerForLineString3dLineString3dCloseApproach._workSegmentB)!;\n const cldPair = LineSegment3d.closestApproach(segA, false, segB, false);\n if (cldPair && this.searchState.isNewMinOrTrigger(cldPair.detailA.a)) {\n LineString3d.convertLocalToGlobalDetail(cldPair.detailA, indexA, this.contextA.lineString.numEdges(), this.contextA.lineString);\n LineString3d.convertLocalToGlobalDetail(cldPair.detailB, indexB, this.contextB.lineString.numEdges(), this.contextB.lineString);\n this.searchState.testAndSave(cldPair, cldPair.detailA.a);\n }\n }\n}\n\n/**\n * Helper class for searching for the closest point in a polyface.\n * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring FacetLocationDetail).\n * @internal\n */\nexport class SingleTreeSearchHandlerForClosestPointOnPolyface extends SingleTreeSearchHandler<number> {\n /** The calling context */\n public context: PolyfaceRangeTreeContext;\n /** Evolving search state */\n public searchState: MinimumValueTester<FacetLocationDetail>;\n /** Space point for the search */\n public spacePoint: Point3d;\n /** Whether to include facet interior in search */\n public searchFacetInterior: boolean;\n\n /**\n * Constructor\n * @param spacePoint cloned\n * @param context captured\n * @param maxDist collect points at no more than this distance from spacePoint\n * @param searchFacetInterior true: search facet interior + boundary; false: just boundary\n */\n public constructor(spacePoint: Point3d, context: PolyfaceRangeTreeContext, maxDist?: number, searchFacetInterior: boolean = false) {\n super();\n this.context = context;\n if (maxDist !== undefined && maxDist < 0)\n maxDist = undefined;\n this.searchState = MinimumValueTester.create<FacetLocationDetail>(maxDist);\n this.spacePoint = spacePoint.clone();\n this.searchFacetInterior = searchFacetInterior;\n }\n /** Return the current closest point */\n public getResult(): FacetLocationDetail | undefined {\n if (this.searchState.minValue !== undefined && this.searchState.itemAtMinValue !== undefined) {\n return this.searchState.itemAtMinValue;\n }\n return undefined;\n }\n /** Return the collected closest points (if collecting) */\n public getSavedItems(): FacetLocationDetail[] | undefined {\n if (this.searchState.savedItems.length > 0) {\n return this.searchState.savedItems;\n }\n return undefined;\n }\n /**\n * Return true if appData within the range should be offered to `processAppData`.\n * @param range range containing items to be tested.\n * @returns true if the spacePoint is within the range or close enough that a point in the range could be the closest.\n */\n public override isRangeActive(range: Range3d): boolean {\n const dMin = range.distanceToPoint(this.spacePoint);\n if (this.searchState.isNewMinValue(dMin)) {\n this.context.numRangeTestTrue++;\n return true;\n }\n this.context.numRangeTestFalse++;\n return false;\n }\n /** Test a facet indexed in the range tree as candidate for \"closest\" */\n public override processAppData(candidateIndex: number): void {\n this.context.visitor.setNumWrap(0); // so edgeCount === pointCount; closure point unnecessary for closestPoint[OnBoundary]\n if (this.context.visitor.moveToReadIndex(candidateIndex)) {\n let pld: PolygonLocationDetail | undefined;\n if (this.searchFacetInterior)\n pld = PolygonOps.closestPoint(this.context.visitor.point, this.spacePoint);\n else\n pld = PolygonOps.closestPointOnBoundary(this.context.visitor.point, this.spacePoint);\n this.context.numFacetTest++;\n if (pld && this.searchState.isNewMinOrTrigger(pld.a)) {\n const edgeCount = this.context.visitor.pointCount;\n const fld = this.context.convexFacets\n ? ConvexFacetLocationDetail.createCapture(this.context.visitor.currentReadIndex(), edgeCount, pld)\n : NonConvexFacetLocationDetail.createCapture(this.context.visitor.currentReadIndex(), edgeCount, pld);\n this.searchState.testAndSave(fld, pld.a);\n }\n }\n }\n}\n/**\n * Helper class for searching for the closest approach between polyfaces.\n * * Future optimization: avoid sqrt by using squared distance throughout (would require refactoring FacetLocationDetail).\n * @internal\n */\nexport class TwoTreeSearchHandlerForFacetFacetCloseApproach extends TwoTreeDistanceMinimizationSearchHandler<number> {\n /** Context for first polyface */\n public contextA: PolyfaceRangeTreeContext;\n /** Context for second polyface */\n public contextB: PolyfaceRangeTreeContext;\n /** Search state with current min distance and facet pair */\n public searchState: MinimumValueTester<FacetLocationDetailPair>;\n /** Whether to include facet interior in search */\n public searchFacetInterior: boolean;\n\n /** Constructor\n * @param contextA captured\n * @param contextB captured\n * @param maxDist collect points at no more than this separation distance\n * @param searchFacetInterior true: search facet interior + boundary; false: just boundary\n */\n public constructor(contextA: PolyfaceRangeTreeContext, contextB: PolyfaceRangeTreeContext, maxDist?: number, searchFacetInterior: boolean = false) {\n super();\n this.contextA = contextA;\n this.contextB = contextB;\n if (maxDist !== undefined && maxDist < 0)\n maxDist = undefined;\n this.searchState = MinimumValueTester.create<FacetLocationDetailPair>(maxDist);\n this.searchFacetInterior = searchFacetInterior && contextA.convexFacets && contextB.convexFacets;\n }\n /** Return the facets with closest approach */\n public getResult(): FacetLocationDetailPair | undefined {\n if (this.searchState.minValue !== undefined) {\n return this.searchState.itemAtMinValue;\n }\n return undefined;\n }\n /** Return the collected close approaches (if collecting) */\n public getSavedItems(): FacetLocationDetailPair[] | undefined {\n if (this.searchState.savedItems.length > 0) {\n return this.searchState.savedItems;\n }\n return undefined;\n }\n /** Get current min distance */\n public override getCurrentDistance(): number {\n const d = this.searchState.minValue;\n return d === undefined ? Number.MAX_VALUE : d;\n }\n /** Compute and test the closest approach between two facets, given their indices. */\n public override processAppDataPair(indexA: number, indexB: number): void {\n this.contextA.visitor.setNumWrap(1); // closed polygons are more efficient for PolygonOps.closestApproach\n this.contextB.visitor.setNumWrap(1);\n if (this.contextA.visitor.moveToReadIndex(indexA) && this.contextB.visitor.moveToReadIndex(indexB)) {\n // ASSUME: not worth sending in maxDist here...\n const pldPair = PolygonOps.closestApproach(this.contextA.visitor.point, this.contextB.visitor.point, undefined, this.searchFacetInterior);\n this.contextA.numFacetTest++;\n if (pldPair && this.searchState.isNewMinOrTrigger(pldPair.detailA.a)) {\n const edgeCountA = this.contextA.visitor.pointCount - 1;\n const edgeCountB = this.contextB.visitor.pointCount - 1;\n const fldPair = FacetLocationDetailPair.create(\n this.contextA.convexFacets ? ConvexFacetLocationDetail.createCapture(indexA, edgeCountA, pldPair.detailA) : NonConvexFacetLocationDetail.createCapture(indexA, edgeCountA, pldPair.detailA),\n this.contextB.convexFacets ? ConvexFacetLocationDetail.createCapture(indexB, edgeCountB, pldPair.detailB) : NonConvexFacetLocationDetail.createCapture(indexB, edgeCountB, pldPair.detailB),\n );\n this.searchState.testAndSave(fldPair, fldPair.detailA.a);\n }\n }\n }\n}\n\n"]}
|