@itwin/core-geometry 5.1.0-dev.4 → 5.1.0-dev.41
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 +48 -1
- package/lib/cjs/Geometry.d.ts +12 -4
- package/lib/cjs/Geometry.d.ts.map +1 -1
- package/lib/cjs/Geometry.js +13 -3
- package/lib/cjs/Geometry.js.map +1 -1
- package/lib/cjs/bspline/BSpline1dNd.d.ts +1 -1
- package/lib/cjs/bspline/BSpline1dNd.js +1 -1
- package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -1
- package/lib/cjs/bspline/BSplineCurve.js +7 -1
- package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
- package/lib/cjs/bspline/BSplineSurface.d.ts +4 -3
- package/lib/cjs/bspline/BSplineSurface.d.ts.map +1 -1
- package/lib/cjs/bspline/BSplineSurface.js +6 -5
- package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
- package/lib/cjs/clipping/ClipPlane.d.ts +7 -5
- package/lib/cjs/clipping/ClipPlane.d.ts.map +1 -1
- package/lib/cjs/clipping/ClipPlane.js +9 -5
- package/lib/cjs/clipping/ClipPlane.js.map +1 -1
- package/lib/cjs/clipping/ClipUtils.d.ts.map +1 -1
- package/lib/cjs/clipping/ClipUtils.js +5 -3
- package/lib/cjs/clipping/ClipUtils.js.map +1 -1
- package/lib/cjs/clipping/ConvexClipPlaneSet.d.ts +1 -2
- package/lib/cjs/clipping/ConvexClipPlaneSet.d.ts.map +1 -1
- package/lib/cjs/clipping/ConvexClipPlaneSet.js +13 -25
- package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
- package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.d.ts +1 -2
- package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.d.ts.map +1 -1
- package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js +1 -2
- package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
- package/lib/cjs/core-geometry.d.ts +1 -0
- package/lib/cjs/core-geometry.d.ts.map +1 -1
- package/lib/cjs/core-geometry.js +1 -0
- package/lib/cjs/core-geometry.js.map +1 -1
- package/lib/cjs/curve/Arc3d.d.ts +54 -32
- package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
- package/lib/cjs/curve/Arc3d.js +56 -37
- package/lib/cjs/curve/Arc3d.js.map +1 -1
- package/lib/cjs/curve/CurveCollection.d.ts +33 -1
- package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
- package/lib/cjs/curve/CurveCollection.js +79 -0
- package/lib/cjs/curve/CurveCollection.js.map +1 -1
- package/lib/cjs/curve/CurveFactory.d.ts.map +1 -1
- package/lib/cjs/curve/CurveFactory.js.map +1 -1
- package/lib/cjs/curve/CurveLocationDetail.d.ts +25 -25
- package/lib/cjs/curve/CurveLocationDetail.d.ts.map +1 -1
- package/lib/cjs/curve/CurveLocationDetail.js +25 -25
- package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
- package/lib/cjs/curve/CurvePrimitive.d.ts +2 -2
- package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
- package/lib/cjs/curve/CurveTypes.d.ts +1 -1
- package/lib/cjs/curve/CurveTypes.js.map +1 -1
- package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.d.ts.map +1 -1
- package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js +10 -5
- package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
- package/lib/cjs/curve/Query/PlanarSubdivision.d.ts +9 -5
- package/lib/cjs/curve/Query/PlanarSubdivision.d.ts.map +1 -1
- package/lib/cjs/curve/Query/PlanarSubdivision.js +27 -11
- package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/cjs/curve/RegionMomentsXY.d.ts +1 -0
- package/lib/cjs/curve/RegionMomentsXY.d.ts.map +1 -1
- package/lib/cjs/curve/RegionMomentsXY.js +21 -39
- package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
- package/lib/cjs/curve/RegionOps.d.ts +55 -29
- package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
- package/lib/cjs/curve/RegionOps.js +96 -35
- package/lib/cjs/curve/RegionOps.js.map +1 -1
- package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts +27 -26
- package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
- package/lib/cjs/curve/RegionOpsClassificationSweeps.js +70 -54
- package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/cjs/curve/StrokeOptions.d.ts +1 -1
- package/lib/cjs/curve/StrokeOptions.js +1 -1
- package/lib/cjs/curve/StrokeOptions.js.map +1 -1
- package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts +0 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js +58 -32
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js +0 -1
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/TransferWithSplitArcs.d.ts +14 -0
- package/lib/cjs/curve/internalContexts/TransferWithSplitArcs.d.ts.map +1 -0
- package/lib/cjs/curve/internalContexts/TransferWithSplitArcs.js +34 -0
- package/lib/cjs/curve/internalContexts/TransferWithSplitArcs.js.map +1 -0
- package/lib/cjs/geometry3d/AngleSweep.d.ts +24 -17
- package/lib/cjs/geometry3d/AngleSweep.d.ts.map +1 -1
- package/lib/cjs/geometry3d/AngleSweep.js +31 -17
- package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
- package/lib/cjs/geometry3d/CoincidentGeometryOps.d.ts +8 -7
- package/lib/cjs/geometry3d/CoincidentGeometryOps.d.ts.map +1 -1
- package/lib/cjs/geometry3d/CoincidentGeometryOps.js +19 -25
- package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYArray.d.ts +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 +7 -2
- package/lib/cjs/geometry3d/GrowableXYZArray.d.ts.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYZArray.js +20 -2
- package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts +2 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.js +7 -3
- package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3d.d.ts +2 -0
- package/lib/cjs/geometry3d/Plane3d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Plane3d.js +6 -1
- package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.d.ts +2 -0
- package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js +6 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.d.ts +8 -2
- package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js +18 -10
- package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
- package/lib/cjs/geometry3d/Point2dVector2d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Point2dVector2d.js +0 -2
- package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.d.ts +4 -4
- package/lib/cjs/geometry3d/Point3dVector3d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.js +4 -5
- package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/cjs/geometry3d/PointHelpers.d.ts +7 -7
- package/lib/cjs/geometry3d/PointHelpers.d.ts.map +1 -1
- package/lib/cjs/geometry3d/PointHelpers.js +66 -26
- package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
- package/lib/cjs/geometry3d/PolygonOps.d.ts +49 -2
- package/lib/cjs/geometry3d/PolygonOps.d.ts.map +1 -1
- package/lib/cjs/geometry3d/PolygonOps.js +38 -2
- package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
- package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.d.ts +13 -6
- package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.d.ts.map +1 -1
- package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js +16 -9
- package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
- package/lib/cjs/geometry3d/PolylineOps.d.ts +5 -4
- package/lib/cjs/geometry3d/PolylineOps.d.ts.map +1 -1
- package/lib/cjs/geometry3d/PolylineOps.js +5 -4
- package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
- package/lib/cjs/geometry3d/Range.d.ts +18 -10
- package/lib/cjs/geometry3d/Range.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Range.js +32 -10
- package/lib/cjs/geometry3d/Range.js.map +1 -1
- package/lib/cjs/geometry3d/Ray2d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Ray2d.js +0 -1
- package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
- package/lib/cjs/geometry3d/Ray3d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Ray3d.js +11 -23
- package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
- package/lib/cjs/geometry3d/Transform.d.ts +21 -2
- package/lib/cjs/geometry3d/Transform.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Transform.js +32 -13
- package/lib/cjs/geometry3d/Transform.js.map +1 -1
- package/lib/cjs/geometry4d/Point4d.d.ts +8 -5
- package/lib/cjs/geometry4d/Point4d.d.ts.map +1 -1
- package/lib/cjs/geometry4d/Point4d.js +27 -16
- package/lib/cjs/geometry4d/Point4d.js.map +1 -1
- package/lib/cjs/numerics/BezierPolynomials.d.ts +2 -0
- package/lib/cjs/numerics/BezierPolynomials.d.ts.map +1 -1
- package/lib/cjs/numerics/BezierPolynomials.js +11 -0
- package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
- package/lib/cjs/numerics/SmallSystem.d.ts +77 -36
- package/lib/cjs/numerics/SmallSystem.d.ts.map +1 -1
- package/lib/cjs/numerics/SmallSystem.js +129 -73
- package/lib/cjs/numerics/SmallSystem.js.map +1 -1
- package/lib/cjs/polyface/FacetOrientation.d.ts +1 -1
- package/lib/cjs/polyface/FacetOrientation.js +1 -1
- package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
- package/lib/cjs/polyface/IndexedEdgeMatcher.d.ts +55 -40
- package/lib/cjs/polyface/IndexedEdgeMatcher.d.ts.map +1 -1
- package/lib/cjs/polyface/IndexedEdgeMatcher.js +83 -75
- package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts +15 -14
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.js +47 -38
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
- package/lib/cjs/polyface/IndexedPolyfaceWalker.d.ts +26 -19
- package/lib/cjs/polyface/IndexedPolyfaceWalker.d.ts.map +1 -1
- package/lib/cjs/polyface/IndexedPolyfaceWalker.js +47 -32
- package/lib/cjs/polyface/IndexedPolyfaceWalker.js.map +1 -1
- package/lib/cjs/polyface/Polyface.d.ts +19 -5
- package/lib/cjs/polyface/Polyface.d.ts.map +1 -1
- package/lib/cjs/polyface/Polyface.js +18 -2
- package/lib/cjs/polyface/Polyface.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceBuilder.d.ts +1 -1
- package/lib/cjs/polyface/PolyfaceBuilder.js +3 -3
- package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceClip.d.ts +19 -18
- package/lib/cjs/polyface/PolyfaceClip.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceClip.js +39 -42
- package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceData.d.ts +1 -1
- package/lib/cjs/polyface/PolyfaceData.js +1 -1
- package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceQuery.d.ts +119 -78
- package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceQuery.js +315 -231
- package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.d.ts +3 -3
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.d.ts.map +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.js +3 -3
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
- package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.d.ts +7 -6
- package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.d.ts.map +1 -1
- package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js +8 -9
- package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
- package/lib/cjs/serialization/GeometrySamples.d.ts +1 -1
- package/lib/cjs/serialization/GeometrySamples.d.ts.map +1 -1
- package/lib/cjs/serialization/GeometrySamples.js +3 -3
- package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
- package/lib/cjs/serialization/IModelJsonSchema.d.ts +3 -3
- package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/cjs/solid/LinearSweep.d.ts +2 -3
- package/lib/cjs/solid/LinearSweep.d.ts.map +1 -1
- package/lib/cjs/solid/LinearSweep.js +2 -3
- package/lib/cjs/solid/LinearSweep.js.map +1 -1
- package/lib/cjs/solid/RotationalSweep.d.ts +2 -2
- package/lib/cjs/solid/RotationalSweep.js +2 -2
- package/lib/cjs/solid/RotationalSweep.js.map +1 -1
- package/lib/cjs/topology/ChainMerge.d.ts +1 -1
- package/lib/cjs/topology/ChainMerge.js +1 -1
- package/lib/cjs/topology/ChainMerge.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts +1 -0
- package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSearch.js +1 -0
- package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
- package/lib/cjs/topology/Merging.d.ts +0 -1
- package/lib/cjs/topology/Merging.d.ts.map +1 -1
- package/lib/cjs/topology/Merging.js +49 -46
- package/lib/cjs/topology/Merging.js.map +1 -1
- package/lib/cjs/topology/Triangulation.d.ts +9 -14
- package/lib/cjs/topology/Triangulation.d.ts.map +1 -1
- package/lib/cjs/topology/Triangulation.js +29 -22
- package/lib/cjs/topology/Triangulation.js.map +1 -1
- package/lib/esm/Geometry.d.ts +12 -4
- package/lib/esm/Geometry.d.ts.map +1 -1
- package/lib/esm/Geometry.js +13 -3
- package/lib/esm/Geometry.js.map +1 -1
- package/lib/esm/bspline/BSpline1dNd.d.ts +1 -1
- package/lib/esm/bspline/BSpline1dNd.js +1 -1
- package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
- package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
- package/lib/esm/bspline/BSplineCurve.js +7 -1
- package/lib/esm/bspline/BSplineCurve.js.map +1 -1
- package/lib/esm/bspline/BSplineSurface.d.ts +4 -3
- package/lib/esm/bspline/BSplineSurface.d.ts.map +1 -1
- package/lib/esm/bspline/BSplineSurface.js +6 -5
- package/lib/esm/bspline/BSplineSurface.js.map +1 -1
- package/lib/esm/clipping/ClipPlane.d.ts +7 -5
- package/lib/esm/clipping/ClipPlane.d.ts.map +1 -1
- package/lib/esm/clipping/ClipPlane.js +9 -5
- package/lib/esm/clipping/ClipPlane.js.map +1 -1
- package/lib/esm/clipping/ClipUtils.d.ts.map +1 -1
- package/lib/esm/clipping/ClipUtils.js +5 -3
- package/lib/esm/clipping/ClipUtils.js.map +1 -1
- package/lib/esm/clipping/ConvexClipPlaneSet.d.ts +1 -2
- package/lib/esm/clipping/ConvexClipPlaneSet.d.ts.map +1 -1
- package/lib/esm/clipping/ConvexClipPlaneSet.js +13 -25
- package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.d.ts +1 -2
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.d.ts.map +1 -1
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js +1 -2
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
- package/lib/esm/core-geometry.d.ts +1 -0
- package/lib/esm/core-geometry.d.ts.map +1 -1
- package/lib/esm/core-geometry.js +1 -0
- package/lib/esm/core-geometry.js.map +1 -1
- package/lib/esm/curve/Arc3d.d.ts +54 -32
- package/lib/esm/curve/Arc3d.d.ts.map +1 -1
- package/lib/esm/curve/Arc3d.js +56 -37
- package/lib/esm/curve/Arc3d.js.map +1 -1
- package/lib/esm/curve/CurveCollection.d.ts +33 -1
- package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
- package/lib/esm/curve/CurveCollection.js +79 -0
- package/lib/esm/curve/CurveCollection.js.map +1 -1
- package/lib/esm/curve/CurveFactory.d.ts.map +1 -1
- package/lib/esm/curve/CurveFactory.js.map +1 -1
- package/lib/esm/curve/CurveLocationDetail.d.ts +25 -25
- package/lib/esm/curve/CurveLocationDetail.d.ts.map +1 -1
- package/lib/esm/curve/CurveLocationDetail.js +25 -25
- package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
- package/lib/esm/curve/CurvePrimitive.d.ts +2 -2
- package/lib/esm/curve/CurvePrimitive.js.map +1 -1
- package/lib/esm/curve/CurveTypes.d.ts +1 -1
- package/lib/esm/curve/CurveTypes.js.map +1 -1
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.d.ts.map +1 -1
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js +10 -5
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
- package/lib/esm/curve/Query/PlanarSubdivision.d.ts +9 -5
- package/lib/esm/curve/Query/PlanarSubdivision.d.ts.map +1 -1
- package/lib/esm/curve/Query/PlanarSubdivision.js +27 -11
- package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/esm/curve/RegionMomentsXY.d.ts +1 -0
- package/lib/esm/curve/RegionMomentsXY.d.ts.map +1 -1
- package/lib/esm/curve/RegionMomentsXY.js +21 -39
- package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
- package/lib/esm/curve/RegionOps.d.ts +55 -29
- package/lib/esm/curve/RegionOps.d.ts.map +1 -1
- package/lib/esm/curve/RegionOps.js +96 -35
- package/lib/esm/curve/RegionOps.js.map +1 -1
- package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts +27 -26
- package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
- package/lib/esm/curve/RegionOpsClassificationSweeps.js +70 -54
- package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/esm/curve/StrokeOptions.d.ts +1 -1
- package/lib/esm/curve/StrokeOptions.js +1 -1
- package/lib/esm/curve/StrokeOptions.js.map +1 -1
- package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts +0 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js +58 -32
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.js +0 -1
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/TransferWithSplitArcs.d.ts +14 -0
- package/lib/esm/curve/internalContexts/TransferWithSplitArcs.d.ts.map +1 -0
- package/lib/esm/curve/internalContexts/TransferWithSplitArcs.js +30 -0
- package/lib/esm/curve/internalContexts/TransferWithSplitArcs.js.map +1 -0
- package/lib/esm/geometry3d/AngleSweep.d.ts +24 -17
- package/lib/esm/geometry3d/AngleSweep.d.ts.map +1 -1
- package/lib/esm/geometry3d/AngleSweep.js +31 -17
- package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
- package/lib/esm/geometry3d/CoincidentGeometryOps.d.ts +8 -7
- package/lib/esm/geometry3d/CoincidentGeometryOps.d.ts.map +1 -1
- package/lib/esm/geometry3d/CoincidentGeometryOps.js +19 -25
- package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
- package/lib/esm/geometry3d/GrowableXYArray.d.ts +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 +7 -2
- package/lib/esm/geometry3d/GrowableXYZArray.d.ts.map +1 -1
- package/lib/esm/geometry3d/GrowableXYZArray.js +20 -2
- package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.d.ts +2 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.js +7 -3
- package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
- package/lib/esm/geometry3d/Plane3d.d.ts +2 -0
- package/lib/esm/geometry3d/Plane3d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Plane3d.js +6 -1
- package/lib/esm/geometry3d/Plane3d.js.map +1 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.d.ts +2 -0
- package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.d.ts.map +1 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js +6 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndVectors.d.ts +8 -2
- package/lib/esm/geometry3d/Plane3dByOriginAndVectors.d.ts.map +1 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js +18 -10
- package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
- package/lib/esm/geometry3d/Point2dVector2d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Point2dVector2d.js +0 -2
- package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.d.ts +4 -4
- package/lib/esm/geometry3d/Point3dVector3d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.js +4 -5
- package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/esm/geometry3d/PointHelpers.d.ts +7 -7
- package/lib/esm/geometry3d/PointHelpers.d.ts.map +1 -1
- package/lib/esm/geometry3d/PointHelpers.js +66 -26
- package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
- package/lib/esm/geometry3d/PolygonOps.d.ts +49 -2
- package/lib/esm/geometry3d/PolygonOps.d.ts.map +1 -1
- package/lib/esm/geometry3d/PolygonOps.js +38 -2
- package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.d.ts +13 -6
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.d.ts.map +1 -1
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js +16 -9
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
- package/lib/esm/geometry3d/PolylineOps.d.ts +5 -4
- package/lib/esm/geometry3d/PolylineOps.d.ts.map +1 -1
- package/lib/esm/geometry3d/PolylineOps.js +5 -4
- package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
- package/lib/esm/geometry3d/Range.d.ts +18 -10
- package/lib/esm/geometry3d/Range.d.ts.map +1 -1
- package/lib/esm/geometry3d/Range.js +32 -10
- package/lib/esm/geometry3d/Range.js.map +1 -1
- package/lib/esm/geometry3d/Ray2d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Ray2d.js +0 -1
- package/lib/esm/geometry3d/Ray2d.js.map +1 -1
- package/lib/esm/geometry3d/Ray3d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Ray3d.js +11 -23
- package/lib/esm/geometry3d/Ray3d.js.map +1 -1
- package/lib/esm/geometry3d/Transform.d.ts +21 -2
- package/lib/esm/geometry3d/Transform.d.ts.map +1 -1
- package/lib/esm/geometry3d/Transform.js +32 -13
- package/lib/esm/geometry3d/Transform.js.map +1 -1
- package/lib/esm/geometry4d/Point4d.d.ts +8 -5
- package/lib/esm/geometry4d/Point4d.d.ts.map +1 -1
- package/lib/esm/geometry4d/Point4d.js +27 -16
- package/lib/esm/geometry4d/Point4d.js.map +1 -1
- package/lib/esm/numerics/BezierPolynomials.d.ts +2 -0
- package/lib/esm/numerics/BezierPolynomials.d.ts.map +1 -1
- package/lib/esm/numerics/BezierPolynomials.js +11 -0
- package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
- package/lib/esm/numerics/SmallSystem.d.ts +77 -36
- package/lib/esm/numerics/SmallSystem.d.ts.map +1 -1
- package/lib/esm/numerics/SmallSystem.js +129 -73
- package/lib/esm/numerics/SmallSystem.js.map +1 -1
- package/lib/esm/polyface/FacetOrientation.d.ts +1 -1
- package/lib/esm/polyface/FacetOrientation.js +1 -1
- package/lib/esm/polyface/FacetOrientation.js.map +1 -1
- package/lib/esm/polyface/IndexedEdgeMatcher.d.ts +55 -40
- package/lib/esm/polyface/IndexedEdgeMatcher.d.ts.map +1 -1
- package/lib/esm/polyface/IndexedEdgeMatcher.js +83 -75
- package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
- package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts +15 -14
- package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
- package/lib/esm/polyface/IndexedPolyfaceVisitor.js +47 -38
- package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
- package/lib/esm/polyface/IndexedPolyfaceWalker.d.ts +26 -19
- package/lib/esm/polyface/IndexedPolyfaceWalker.d.ts.map +1 -1
- package/lib/esm/polyface/IndexedPolyfaceWalker.js +47 -32
- package/lib/esm/polyface/IndexedPolyfaceWalker.js.map +1 -1
- package/lib/esm/polyface/Polyface.d.ts +19 -5
- package/lib/esm/polyface/Polyface.d.ts.map +1 -1
- package/lib/esm/polyface/Polyface.js +18 -2
- package/lib/esm/polyface/Polyface.js.map +1 -1
- package/lib/esm/polyface/PolyfaceBuilder.d.ts +1 -1
- package/lib/esm/polyface/PolyfaceBuilder.js +3 -3
- package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/esm/polyface/PolyfaceClip.d.ts +19 -18
- package/lib/esm/polyface/PolyfaceClip.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceClip.js +39 -42
- package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
- package/lib/esm/polyface/PolyfaceData.d.ts +1 -1
- package/lib/esm/polyface/PolyfaceData.js +1 -1
- package/lib/esm/polyface/PolyfaceData.js.map +1 -1
- package/lib/esm/polyface/PolyfaceQuery.d.ts +119 -78
- package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceQuery.js +316 -232
- package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeNode.d.ts +3 -3
- package/lib/esm/polyface/RangeTree/RangeTreeNode.d.ts.map +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeNode.js +3 -3
- package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
- package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.d.ts +7 -6
- package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.d.ts.map +1 -1
- package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js +8 -9
- package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
- package/lib/esm/serialization/GeometrySamples.d.ts +1 -1
- package/lib/esm/serialization/GeometrySamples.d.ts.map +1 -1
- package/lib/esm/serialization/GeometrySamples.js +3 -3
- package/lib/esm/serialization/GeometrySamples.js.map +1 -1
- package/lib/esm/serialization/IModelJsonSchema.d.ts +3 -3
- package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/esm/solid/LinearSweep.d.ts +2 -3
- package/lib/esm/solid/LinearSweep.d.ts.map +1 -1
- package/lib/esm/solid/LinearSweep.js +2 -3
- package/lib/esm/solid/LinearSweep.js.map +1 -1
- package/lib/esm/solid/RotationalSweep.d.ts +2 -2
- package/lib/esm/solid/RotationalSweep.js +2 -2
- package/lib/esm/solid/RotationalSweep.js.map +1 -1
- package/lib/esm/topology/ChainMerge.d.ts +1 -1
- package/lib/esm/topology/ChainMerge.js +1 -1
- package/lib/esm/topology/ChainMerge.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSearch.d.ts +1 -0
- package/lib/esm/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSearch.js +1 -0
- package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
- package/lib/esm/topology/Merging.d.ts +0 -1
- package/lib/esm/topology/Merging.d.ts.map +1 -1
- package/lib/esm/topology/Merging.js +49 -46
- package/lib/esm/topology/Merging.js.map +1 -1
- package/lib/esm/topology/Triangulation.d.ts +9 -14
- package/lib/esm/topology/Triangulation.d.ts.map +1 -1
- package/lib/esm/topology/Triangulation.js +29 -22
- package/lib/esm/topology/Triangulation.js.map +1 -1
- package/package.json +3 -3
|
@@ -23,13 +23,13 @@ import { GraphCheckPointFunction, RegionBinaryOpType } from "./RegionOps";
|
|
|
23
23
|
* @internal
|
|
24
24
|
*/
|
|
25
25
|
declare abstract class RegionOpsFaceToFaceSearchCallbacks {
|
|
26
|
-
/** Announce a representative node on the outer face of a component */
|
|
26
|
+
/** Announce a representative node on the outer face of a component. */
|
|
27
27
|
startComponent(_node: HalfEdge): boolean;
|
|
28
|
-
/** Announce return to outer face */
|
|
28
|
+
/** Announce return to outer face. */
|
|
29
29
|
finishComponent(_node: HalfEdge): boolean;
|
|
30
|
-
/** Announce face entry */
|
|
30
|
+
/** Announce face entry. */
|
|
31
31
|
enterFace(_facePathStack: HalfEdge[], _newFaceNode: HalfEdge): boolean;
|
|
32
|
-
/** Announce face exit */
|
|
32
|
+
/** Announce face exit. */
|
|
33
33
|
leaveFace(_facePathStack: HalfEdge[], _newFaceNode: HalfEdge): boolean;
|
|
34
34
|
}
|
|
35
35
|
/** Function signature ot announce classification of a face.
|
|
@@ -45,14 +45,14 @@ type AnnounceClassifiedFace = (graph: HalfEdgeGraph, faceSeed: HalfEdge, faceTyp
|
|
|
45
45
|
*/
|
|
46
46
|
export declare class RegionOpsFaceToFaceSearch {
|
|
47
47
|
/**
|
|
48
|
-
*
|
|
48
|
+
* Run a DFS with face-to-face step announcements.
|
|
49
49
|
* * false return from any function terminates search immediately.
|
|
50
50
|
* * all reachable nodes assumed to have both visit masks clear.
|
|
51
51
|
* @param graph containing graph.
|
|
52
52
|
* @param seed first node to visit.
|
|
53
53
|
* @param faceHasBeenVisited mask marking faces that have been seen.
|
|
54
54
|
* @param nodeHasBeenVisited mask marking node-to-node step around face.
|
|
55
|
-
*
|
|
55
|
+
* @param callbacks callbacks.
|
|
56
56
|
*/
|
|
57
57
|
static faceToFaceSearchFromOuterLoop(_graph: HalfEdgeGraph, seed: HalfEdge, faceHasBeenVisited: HalfEdgeMask, nodeHasBeenVisited: HalfEdgeMask, callbacks: RegionOpsFaceToFaceSearchCallbacks): void;
|
|
58
58
|
/** Complete multi-step process for polygon binary booleans starting with arrays of coordinates.
|
|
@@ -126,8 +126,7 @@ export declare class RegionGroup {
|
|
|
126
126
|
/** deep clear of state data -- group header plus all members */
|
|
127
127
|
clearState(): void;
|
|
128
128
|
range(): Range3d;
|
|
129
|
-
/** Ask if the current _numIn count qualifies as an "in" for this operation type.
|
|
130
|
-
*/
|
|
129
|
+
/** Ask if the current _numIn count qualifies as an "in" for this operation type. */
|
|
131
130
|
getInOut(): boolean;
|
|
132
131
|
addMember(data: AnyRegion | AnyRegion[] | LineSegment3d | undefined, allowLineSegment?: boolean): void;
|
|
133
132
|
recordMemberStateChange(oldState: number, newState: number): void;
|
|
@@ -135,28 +134,29 @@ export declare class RegionGroup {
|
|
|
135
134
|
/**
|
|
136
135
|
* A `RegionBooleanContext` carries structure and operations for binary operations between two sets of regions.
|
|
137
136
|
* * In the binary operation OP (union, intersection, parity, difference), the left and right operands
|
|
138
|
-
*
|
|
137
|
+
* are each a composite union, difference, or parity among multiple inputs, i.e.,
|
|
139
138
|
* * (operationA among Ai) OP (operationB among Bi)
|
|
140
139
|
* * where the Ai are one set of regions, being combined by operationA
|
|
141
|
-
* * and the Bi are the another set of regions, being combined by operationB
|
|
142
|
-
* * Each group of Ai and Bi is a `RegionGroup
|
|
140
|
+
* * and the Bi are the another set of regions, being combined by operationB.
|
|
141
|
+
* * Each group of Ai and Bi is a `RegionGroup`.
|
|
143
142
|
* * This is an extremely delicate structure.
|
|
144
143
|
* * Members are public because of the unique variety of queries, but should only be used for queries.
|
|
145
144
|
* * The graph and curves in the booleans are connected by an extended pointer chain:
|
|
146
|
-
* * (HalfEdge in Graph).edgeTag points to a CurveLocationDetail
|
|
147
|
-
* * (CurveLocationDetail).curve points to a curve
|
|
148
|
-
* * (Curve).parent points to RegionGroupMember
|
|
149
|
-
* * (RegionGroupMember) points to RegionGroup
|
|
150
|
-
* * (RegionGroup) points to RegionBooleanBinaryContext
|
|
151
|
-
* * So
|
|
152
|
-
* * the chain leads to a parity count in the RegionGroupMember
|
|
153
|
-
* * that can change the number of members active in the RegionGroup
|
|
145
|
+
* * (HalfEdge in Graph).edgeTag points to a CurveLocationDetail.
|
|
146
|
+
* * (CurveLocationDetail).curve points to a curve.
|
|
147
|
+
* * (Curve).parent points to RegionGroupMember.
|
|
148
|
+
* * (RegionGroupMember) points to RegionGroup.
|
|
149
|
+
* * (RegionGroup) points to RegionBooleanBinaryContext.
|
|
150
|
+
* * So when a graph sweep crosses an edge
|
|
151
|
+
* * the chain leads to a parity count in the RegionGroupMember.
|
|
152
|
+
* * that can change the number of members active in the RegionGroup.
|
|
154
153
|
* * which can change the state of the context.
|
|
155
154
|
* @internal
|
|
156
155
|
*/
|
|
157
156
|
export declare class RegionBooleanContext implements RegionOpsFaceToFaceSearchCallbacks {
|
|
158
157
|
groupA: RegionGroup;
|
|
159
158
|
groupB: RegionGroup;
|
|
159
|
+
/** bridge edges */
|
|
160
160
|
extraGeometry: RegionGroup;
|
|
161
161
|
graph: HalfEdgeGraph;
|
|
162
162
|
faceAreaFunction: NodeToNumberFunction;
|
|
@@ -214,11 +214,12 @@ export declare class RegionBooleanContext implements RegionOpsFaceToFaceSearchCa
|
|
|
214
214
|
* @param delta
|
|
215
215
|
*/
|
|
216
216
|
private recordTransitionAcrossEdge;
|
|
217
|
-
/** Announce a representative node on the outer face of a component */
|
|
217
|
+
/** Announce a representative node on the outer face of a component. */
|
|
218
218
|
startComponent(outerFaceNode: HalfEdge): boolean;
|
|
219
|
-
/** Announce return to outer face */
|
|
219
|
+
/** Announce return to outer face. */
|
|
220
220
|
finishComponent(_node: HalfEdge): boolean;
|
|
221
|
-
/**
|
|
221
|
+
/**
|
|
222
|
+
* Announce entry to a graph face.
|
|
222
223
|
* * Both both sides of a graph edge are from the same RegionGroupMember.
|
|
223
224
|
* * Hence "crossing that edge" changes the parity count for the RegionGroupMember that owns that edge by 1.
|
|
224
225
|
* * The parity count for other RegionGroupMembers are never affected by this crossing.
|
|
@@ -229,7 +230,7 @@ export declare class RegionBooleanContext implements RegionOpsFaceToFaceSearchCa
|
|
|
229
230
|
leaveFace(_facePathStack: HalfEdge[], oldFaceNode: HalfEdge): boolean;
|
|
230
231
|
}
|
|
231
232
|
/**
|
|
232
|
-
* Function to accumulate area under edges
|
|
233
|
+
* Function to accumulate area under edges.
|
|
233
234
|
* Array of nodes representing faces in a subset of a graph.
|
|
234
235
|
* @internal
|
|
235
236
|
*/
|
|
@@ -244,14 +245,14 @@ export declare class GraphComponent {
|
|
|
244
245
|
range: Range2d;
|
|
245
246
|
constructor(faces: HalfEdge[]);
|
|
246
247
|
/**
|
|
247
|
-
*
|
|
248
|
-
*
|
|
248
|
+
* Visit all vertices and edges in the component to build face area array and composite range.
|
|
249
249
|
* @param extendRangeForEdge optional function to compute edge range. If undefined, linear edge is assumed.
|
|
250
250
|
* @param faceAreaFunction optional function to compute face area. If undefined, linear edges are assumed.
|
|
251
251
|
*/
|
|
252
252
|
buildFaceData(extendRangeForEdge: NodeAndRangeFunction | undefined, faceAreaFunction: NodeToNumberFunction | undefined): void;
|
|
253
253
|
}
|
|
254
|
-
/**
|
|
254
|
+
/**
|
|
255
|
+
* Build and hold an array of component data for a HalfEdgeGraph.
|
|
255
256
|
* @internal
|
|
256
257
|
*/
|
|
257
258
|
export declare class GraphComponentArray {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegionOpsClassificationSweeps.d.ts","sourceRoot":"","sources":["../../../src/curve/RegionOpsClassificationSweeps.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAEhF,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAOhG,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"RegionOpsClassificationSweeps.d.ts","sourceRoot":"","sources":["../../../src/curve/RegionOpsClassificationSweeps.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,7 @@ const CurveCurve_1 = require("./CurveCurve");
|
|
|
21
21
|
const CurveLocationDetail_1 = require("./CurveLocationDetail");
|
|
22
22
|
const GeometryQuery_1 = require("./GeometryQuery");
|
|
23
23
|
const PlaneAltitudeRangeContext_1 = require("./internalContexts/PlaneAltitudeRangeContext");
|
|
24
|
+
const TransferWithSplitArcs_1 = require("./internalContexts/TransferWithSplitArcs");
|
|
24
25
|
const LineSegment3d_1 = require("./LineSegment3d");
|
|
25
26
|
const Loop_1 = require("./Loop");
|
|
26
27
|
const ParityRegion_1 = require("./ParityRegion");
|
|
@@ -43,14 +44,22 @@ const UnionRegion_1 = require("./UnionRegion");
|
|
|
43
44
|
* @internal
|
|
44
45
|
*/
|
|
45
46
|
class RegionOpsFaceToFaceSearchCallbacks {
|
|
46
|
-
/** Announce a representative node on the outer face of a component */
|
|
47
|
-
startComponent(_node) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
/** Announce face
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
47
|
+
/** Announce a representative node on the outer face of a component. */
|
|
48
|
+
startComponent(_node) {
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
/** Announce return to outer face. */
|
|
52
|
+
finishComponent(_node) {
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
/** Announce face entry. */
|
|
56
|
+
enterFace(_facePathStack, _newFaceNode) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
/** Announce face exit. */
|
|
60
|
+
leaveFace(_facePathStack, _newFaceNode) {
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
54
63
|
}
|
|
55
64
|
/**
|
|
56
65
|
* Implementation of `RegionOpsFaceToFaceSearchCallbacks` for binary boolean sweep with polygonal regions.
|
|
@@ -113,14 +122,14 @@ class RegionOpsBinaryBooleanSweepCallbacks extends RegionOpsFaceToFaceSearchCall
|
|
|
113
122
|
*/
|
|
114
123
|
class RegionOpsFaceToFaceSearch {
|
|
115
124
|
/**
|
|
116
|
-
*
|
|
125
|
+
* Run a DFS with face-to-face step announcements.
|
|
117
126
|
* * false return from any function terminates search immediately.
|
|
118
127
|
* * all reachable nodes assumed to have both visit masks clear.
|
|
119
128
|
* @param graph containing graph.
|
|
120
129
|
* @param seed first node to visit.
|
|
121
130
|
* @param faceHasBeenVisited mask marking faces that have been seen.
|
|
122
131
|
* @param nodeHasBeenVisited mask marking node-to-node step around face.
|
|
123
|
-
*
|
|
132
|
+
* @param callbacks callbacks.
|
|
124
133
|
*/
|
|
125
134
|
static faceToFaceSearchFromOuterLoop(_graph, seed, faceHasBeenVisited, nodeHasBeenVisited, callbacks) {
|
|
126
135
|
if (seed.isMaskSet(faceHasBeenVisited))
|
|
@@ -134,10 +143,10 @@ class RegionOpsFaceToFaceSearch {
|
|
|
134
143
|
let entryNode = faceWalker;
|
|
135
144
|
let mate = faceWalker.edgeMate;
|
|
136
145
|
if (!mate.isMaskSet(faceHasBeenVisited)) {
|
|
137
|
-
//
|
|
138
|
-
//
|
|
139
|
-
//
|
|
140
|
-
//
|
|
146
|
+
// The faceWalker seed is always on the base of the stack.
|
|
147
|
+
// The stack then contains even-odd pairs of (entryNode, faceNode).
|
|
148
|
+
// entryNode is the node where a face was entered.
|
|
149
|
+
// faceNode is another node around that face.
|
|
141
150
|
facePathStack.push(faceWalker);
|
|
142
151
|
facePathStack.push(mate);
|
|
143
152
|
let faceNode = mate.faceSuccessor;
|
|
@@ -168,13 +177,13 @@ class RegionOpsFaceToFaceSearch {
|
|
|
168
177
|
entryNode = facePathStack[facePathStack.length - 1];
|
|
169
178
|
}
|
|
170
179
|
if (faceNode.isMaskSet(nodeHasBeenVisited)) {
|
|
171
|
-
// this is disaster
|
|
180
|
+
// this is disaster
|
|
172
181
|
return;
|
|
173
182
|
}
|
|
174
183
|
}
|
|
175
184
|
}
|
|
176
185
|
}
|
|
177
|
-
// continue at outermost level
|
|
186
|
+
// continue at outermost level
|
|
178
187
|
faceWalker = faceWalker.faceSuccessor;
|
|
179
188
|
} while (faceWalker !== seed);
|
|
180
189
|
callbacks.finishComponent(seed);
|
|
@@ -305,7 +314,9 @@ class RegionGroupMember {
|
|
|
305
314
|
this.parentGroup = parentGroup;
|
|
306
315
|
this.sweepState = 0;
|
|
307
316
|
}
|
|
308
|
-
clearState() {
|
|
317
|
+
clearState() {
|
|
318
|
+
this.sweepState = 0;
|
|
319
|
+
}
|
|
309
320
|
}
|
|
310
321
|
/**
|
|
311
322
|
* A `RegionGroup` is
|
|
@@ -344,8 +355,7 @@ class RegionGroup {
|
|
|
344
355
|
}
|
|
345
356
|
return range;
|
|
346
357
|
}
|
|
347
|
-
/** Ask if the current _numIn count qualifies as an "in" for this operation type.
|
|
348
|
-
*/
|
|
358
|
+
/** Ask if the current _numIn count qualifies as an "in" for this operation type. */
|
|
349
359
|
getInOut() {
|
|
350
360
|
// UNION is true if one or more members are IN
|
|
351
361
|
if (this.groupOpType === RegionGroupOpType.Union)
|
|
@@ -361,8 +371,9 @@ class RegionGroup {
|
|
|
361
371
|
// push new members into the group.
|
|
362
372
|
addMember(data, allowLineSegment = false) {
|
|
363
373
|
if (data instanceof Loop_1.Loop || data instanceof ParityRegion_1.ParityRegion) {
|
|
364
|
-
|
|
374
|
+
let cleanerData = data.clone();
|
|
365
375
|
RegionOps_1.RegionOps.consolidateAdjacentPrimitives(cleanerData);
|
|
376
|
+
cleanerData = TransferWithSplitArcs_1.TransferWithSplitArcs.clone(cleanerData);
|
|
366
377
|
this.members.push(new RegionGroupMember(cleanerData, this));
|
|
367
378
|
}
|
|
368
379
|
else if (data instanceof UnionRegion_1.UnionRegion) {
|
|
@@ -393,28 +404,29 @@ exports.RegionGroup = RegionGroup;
|
|
|
393
404
|
/**
|
|
394
405
|
* A `RegionBooleanContext` carries structure and operations for binary operations between two sets of regions.
|
|
395
406
|
* * In the binary operation OP (union, intersection, parity, difference), the left and right operands
|
|
396
|
-
*
|
|
407
|
+
* are each a composite union, difference, or parity among multiple inputs, i.e.,
|
|
397
408
|
* * (operationA among Ai) OP (operationB among Bi)
|
|
398
409
|
* * where the Ai are one set of regions, being combined by operationA
|
|
399
|
-
* * and the Bi are the another set of regions, being combined by operationB
|
|
400
|
-
* * Each group of Ai and Bi is a `RegionGroup
|
|
410
|
+
* * and the Bi are the another set of regions, being combined by operationB.
|
|
411
|
+
* * Each group of Ai and Bi is a `RegionGroup`.
|
|
401
412
|
* * This is an extremely delicate structure.
|
|
402
413
|
* * Members are public because of the unique variety of queries, but should only be used for queries.
|
|
403
414
|
* * The graph and curves in the booleans are connected by an extended pointer chain:
|
|
404
|
-
* * (HalfEdge in Graph).edgeTag points to a CurveLocationDetail
|
|
405
|
-
* * (CurveLocationDetail).curve points to a curve
|
|
406
|
-
* * (Curve).parent points to RegionGroupMember
|
|
407
|
-
* * (RegionGroupMember) points to RegionGroup
|
|
408
|
-
* * (RegionGroup) points to RegionBooleanBinaryContext
|
|
409
|
-
* * So
|
|
410
|
-
* * the chain leads to a parity count in the RegionGroupMember
|
|
411
|
-
* * that can change the number of members active in the RegionGroup
|
|
415
|
+
* * (HalfEdge in Graph).edgeTag points to a CurveLocationDetail.
|
|
416
|
+
* * (CurveLocationDetail).curve points to a curve.
|
|
417
|
+
* * (Curve).parent points to RegionGroupMember.
|
|
418
|
+
* * (RegionGroupMember) points to RegionGroup.
|
|
419
|
+
* * (RegionGroup) points to RegionBooleanBinaryContext.
|
|
420
|
+
* * So when a graph sweep crosses an edge
|
|
421
|
+
* * the chain leads to a parity count in the RegionGroupMember.
|
|
422
|
+
* * that can change the number of members active in the RegionGroup.
|
|
412
423
|
* * which can change the state of the context.
|
|
413
424
|
* @internal
|
|
414
425
|
*/
|
|
415
426
|
class RegionBooleanContext {
|
|
416
427
|
groupA;
|
|
417
428
|
groupB;
|
|
429
|
+
/** bridge edges */
|
|
418
430
|
extraGeometry;
|
|
419
431
|
graph;
|
|
420
432
|
faceAreaFunction;
|
|
@@ -423,7 +435,7 @@ class RegionBooleanContext {
|
|
|
423
435
|
this.groupA = new RegionGroup(this, groupTypeA);
|
|
424
436
|
this.groupB = new RegionGroup(this, groupTypeB);
|
|
425
437
|
this.extraGeometry = new RegionGroup(this, RegionGroupOpType.NonBounding);
|
|
426
|
-
this.binaryOp = RegionOps_1.RegionBinaryOpType.Union; //
|
|
438
|
+
this.binaryOp = RegionOps_1.RegionBinaryOpType.Union; // revised in runClassificationSweep
|
|
427
439
|
}
|
|
428
440
|
/**
|
|
429
441
|
* Create a context with both A and B groups empty.
|
|
@@ -437,8 +449,6 @@ class RegionBooleanContext {
|
|
|
437
449
|
addMembers(dataA, dataB) {
|
|
438
450
|
this.groupA.addMember(dataA);
|
|
439
451
|
this.groupB.addMember(dataB);
|
|
440
|
-
// const doConnectives = 1;
|
|
441
|
-
// if (doConnectives !== 0)
|
|
442
452
|
this.addConnectives();
|
|
443
453
|
}
|
|
444
454
|
_workSegment;
|
|
@@ -482,12 +492,12 @@ class RegionBooleanContext {
|
|
|
482
492
|
}
|
|
483
493
|
const ray = Ray3d_1.Ray3d.createZero();
|
|
484
494
|
for (const p of maxPoints) {
|
|
485
|
-
// Make a line from
|
|
486
|
-
//
|
|
487
|
-
//
|
|
488
|
-
// If p came from some inner loop this will
|
|
489
|
-
//
|
|
490
|
-
//
|
|
495
|
+
// Make a line from
|
|
496
|
+
// 1) exactly the max point of the loops to
|
|
497
|
+
// 2) a point clearly outside the big range
|
|
498
|
+
// If p came from some inner loop this will
|
|
499
|
+
// 1) create a bridge from the inner loop through any containing loops (always)
|
|
500
|
+
// 2) avoid crossing any containing loop at a vertex. (with high probability, but not absolutely always)
|
|
491
501
|
const bridgeLength = margin + Ray3d_1.Ray3d.create(p, RegionBooleanContext._bridgeDirection, ray).intersectionWithRange3d(rangeAB).high;
|
|
492
502
|
const outside = Point3dVector3d_1.Point3d.createAdd2Scaled(p, 1.0, RegionBooleanContext._bridgeDirection, bridgeLength);
|
|
493
503
|
const bridgeLine = LineSegment3d_1.LineSegment3d.createXYXY(p.x, p.y, outside.x, outside.y);
|
|
@@ -504,7 +514,7 @@ class RegionBooleanContext {
|
|
|
504
514
|
*/
|
|
505
515
|
annotateAndMergeCurvesInGraph(mergeTolerance = Geometry_1.Geometry.smallMetricDistance) {
|
|
506
516
|
const allPrimitives = [];
|
|
507
|
-
// ASSUME loops have fine-grained types
|
|
517
|
+
// ASSUME loops have fine-grained types (no linestrings)
|
|
508
518
|
for (const group of [this.groupA, this.groupB, this.extraGeometry]) {
|
|
509
519
|
for (const member of group.members) {
|
|
510
520
|
let k = allPrimitives.length;
|
|
@@ -515,7 +525,6 @@ class RegionBooleanContext {
|
|
|
515
525
|
}
|
|
516
526
|
}
|
|
517
527
|
}
|
|
518
|
-
// const range = RegionOps.curveArrayRange(allPrimitives);
|
|
519
528
|
const intersections = CurveCurve_1.CurveCurve.allIntersectionsAmongPrimitivesXY(allPrimitives, mergeTolerance);
|
|
520
529
|
const graph = PlanarSubdivision_1.PlanarSubdivision.assembleHalfEdgeGraph(allPrimitives, intersections, mergeTolerance);
|
|
521
530
|
this.graph = graph;
|
|
@@ -534,9 +543,8 @@ class RegionBooleanContext {
|
|
|
534
543
|
this._announceFaceFunction = announceFaceFunction;
|
|
535
544
|
this.binaryOp = binaryOp;
|
|
536
545
|
this.graph.clearMask(Graph_1.HalfEdgeMask.EXTERIOR);
|
|
537
|
-
for (const group of [this.groupA, this.groupB])
|
|
546
|
+
for (const group of [this.groupA, this.groupB])
|
|
538
547
|
group.clearState();
|
|
539
|
-
}
|
|
540
548
|
const faceHasBeenVisitedMask = this.graph.grabMask();
|
|
541
549
|
const nodeHasBeenVisitedMask = this.graph.grabMask();
|
|
542
550
|
const componentArray = GraphComponentArray.create(this.graph);
|
|
@@ -617,18 +625,19 @@ class RegionBooleanContext {
|
|
|
617
625
|
return undefined;
|
|
618
626
|
}
|
|
619
627
|
// obligations to act as sweep callback ...
|
|
620
|
-
/** Announce a representative node on the outer face of a component */
|
|
628
|
+
/** Announce a representative node on the outer face of a component. */
|
|
621
629
|
startComponent(outerFaceNode) {
|
|
622
630
|
outerFaceNode.setMaskAroundFace(Graph_1.HalfEdgeMask.EXTERIOR);
|
|
623
631
|
if (this._announceFaceFunction)
|
|
624
632
|
this._announceFaceFunction(this.graph, outerFaceNode, -1, faceAreaFromCurvedEdgeData(outerFaceNode));
|
|
625
633
|
return true;
|
|
626
634
|
}
|
|
627
|
-
/** Announce return to outer face */
|
|
635
|
+
/** Announce return to outer face. */
|
|
628
636
|
finishComponent(_node) {
|
|
629
637
|
return true;
|
|
630
638
|
}
|
|
631
|
-
/**
|
|
639
|
+
/**
|
|
640
|
+
* Announce entry to a graph face.
|
|
632
641
|
* * Both both sides of a graph edge are from the same RegionGroupMember.
|
|
633
642
|
* * Hence "crossing that edge" changes the parity count for the RegionGroupMember that owns that edge by 1.
|
|
634
643
|
* * The parity count for other RegionGroupMembers are never affected by this crossing.
|
|
@@ -650,8 +659,9 @@ class RegionBooleanContext {
|
|
|
650
659
|
}
|
|
651
660
|
}
|
|
652
661
|
exports.RegionBooleanContext = RegionBooleanContext;
|
|
653
|
-
/**
|
|
654
|
-
*
|
|
662
|
+
/**
|
|
663
|
+
* Return xy area between (part of) a curve and the x axis through a reference point.
|
|
664
|
+
* If detail is undefined or does not have both start and end fractions, just do trapezoid area.
|
|
655
665
|
*/
|
|
656
666
|
function areaUnderPartialCurveXY(detail, xyStart, xyEnd, referencePoint) {
|
|
657
667
|
// area between trapezoid and axis
|
|
@@ -665,15 +675,21 @@ function areaUnderPartialCurveXY(detail, xyStart, xyEnd, referencePoint) {
|
|
|
665
675
|
let areaToChord = 0.0;
|
|
666
676
|
if (detail && detail.curve && detail.hasFraction1) {
|
|
667
677
|
if (detail.curve instanceof LineSegment3d_1.LineSegment3d) {
|
|
668
|
-
//
|
|
678
|
+
// nothing to do for a line segment
|
|
669
679
|
}
|
|
670
680
|
else if (detail.curve instanceof Arc3d_1.Arc3d) {
|
|
671
681
|
areaToChord = detail.curve.areaToChordXY(detail.fraction, detail.fraction1);
|
|
672
682
|
}
|
|
683
|
+
else {
|
|
684
|
+
const partial = detail.curve.clonePartialCurve(detail.fraction, detail.fraction1);
|
|
685
|
+
areaToChord = partial ?
|
|
686
|
+
RegionOps_1.RegionOps.computeXYArea(Loop_1.Loop.create(partial, LineSegment3d_1.LineSegment3d.create(detail.point1, detail.point))) ?? 0
|
|
687
|
+
: 0;
|
|
688
|
+
}
|
|
673
689
|
}
|
|
674
690
|
return trapezoidArea + areaToChord;
|
|
675
691
|
}
|
|
676
|
-
/** Compute face area for a face whose edges are decorated with CurveLocationDetail for their (partial) curves */
|
|
692
|
+
/** Compute face area for a face whose edges are decorated with CurveLocationDetail for their (partial) curves. */
|
|
677
693
|
function faceAreaFromCurvedEdgeData(faceSeed) {
|
|
678
694
|
let area = 0.0;
|
|
679
695
|
let edge = faceSeed;
|
|
@@ -696,8 +712,7 @@ class GraphComponent {
|
|
|
696
712
|
this.faceAreas = [];
|
|
697
713
|
}
|
|
698
714
|
/**
|
|
699
|
-
*
|
|
700
|
-
*
|
|
715
|
+
* Visit all vertices and edges in the component to build face area array and composite range.
|
|
701
716
|
* @param extendRangeForEdge optional function to compute edge range. If undefined, linear edge is assumed.
|
|
702
717
|
* @param faceAreaFunction optional function to compute face area. If undefined, linear edges are assumed.
|
|
703
718
|
*/
|
|
@@ -722,7 +737,8 @@ class GraphComponent {
|
|
|
722
737
|
}
|
|
723
738
|
}
|
|
724
739
|
exports.GraphComponent = GraphComponent;
|
|
725
|
-
/**
|
|
740
|
+
/**
|
|
741
|
+
* Build and hold an array of component data for a HalfEdgeGraph.
|
|
726
742
|
* @internal
|
|
727
743
|
*/
|
|
728
744
|
class GraphComponentArray {
|