@itwin/core-geometry 5.1.0-dev.9 → 5.2.0-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +63 -1
- package/lib/cjs/Geometry.d.ts +18 -10
- 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 +4 -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 +2 -0
- package/lib/cjs/core-geometry.d.ts.map +1 -1
- package/lib/cjs/core-geometry.js +2 -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 +40 -1
- package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
- package/lib/cjs/curve/CurveCollection.js +90 -0
- package/lib/cjs/curve/CurveCollection.js.map +1 -1
- package/lib/cjs/curve/CurveFactory.d.ts +3 -2
- package/lib/cjs/curve/CurveFactory.d.ts.map +1 -1
- package/lib/cjs/curve/CurveFactory.js +6 -5
- package/lib/cjs/curve/CurveFactory.js.map +1 -1
- package/lib/cjs/curve/CurveLocationDetail.d.ts +27 -25
- package/lib/cjs/curve/CurveLocationDetail.d.ts.map +1 -1
- package/lib/cjs/curve/CurveLocationDetail.js +30 -25
- package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
- package/lib/cjs/curve/CurvePrimitive.d.ts +9 -2
- package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -1
- package/lib/cjs/curve/CurvePrimitive.js +11 -0
- 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/LineSegment3d.d.ts +2 -0
- package/lib/cjs/curve/LineSegment3d.d.ts.map +1 -1
- package/lib/cjs/curve/LineSegment3d.js +4 -0
- package/lib/cjs/curve/LineSegment3d.js.map +1 -1
- package/lib/cjs/curve/LineString3d.d.ts +7 -0
- package/lib/cjs/curve/LineString3d.d.ts.map +1 -1
- package/lib/cjs/curve/LineString3d.js +15 -3
- package/lib/cjs/curve/LineString3d.js.map +1 -1
- package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.d.ts.map +1 -1
- package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js +37 -8
- package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
- package/lib/cjs/curve/Query/PlanarSubdivision.d.ts +34 -8
- package/lib/cjs/curve/Query/PlanarSubdivision.d.ts.map +1 -1
- package/lib/cjs/curve/Query/PlanarSubdivision.js +129 -33
- package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/cjs/curve/Query/StrokeCountChain.d.ts +4 -3
- package/lib/cjs/curve/Query/StrokeCountChain.d.ts.map +1 -1
- package/lib/cjs/curve/Query/StrokeCountChain.js +20 -9
- package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
- package/lib/cjs/curve/RegionMomentsXY.d.ts +2 -1
- package/lib/cjs/curve/RegionMomentsXY.d.ts.map +1 -1
- package/lib/cjs/curve/RegionMomentsXY.js +26 -41
- package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
- package/lib/cjs/curve/RegionOps.d.ts +74 -39
- package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
- package/lib/cjs/curve/RegionOps.js +146 -46
- package/lib/cjs/curve/RegionOps.js.map +1 -1
- package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts +36 -27
- package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
- package/lib/cjs/curve/RegionOpsClassificationSweeps.js +161 -55
- 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/CurveCurveCloseApproachXY.d.ts +2 -2
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js +6 -6
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.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 +25 -18
- package/lib/cjs/geometry3d/AngleSweep.d.ts.map +1 -1
- package/lib/cjs/geometry3d/AngleSweep.js +32 -18
- 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/Ellipsoid.js +1 -1
- package/lib/cjs/geometry3d/Ellipsoid.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 +8 -3
- package/lib/cjs/geometry3d/GrowableXYZArray.d.ts.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYZArray.js +21 -3
- package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts +11 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.js +21 -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 +7 -9
- package/lib/cjs/geometry3d/Ray3d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Ray3d.js +23 -45
- package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
- package/lib/cjs/geometry3d/ReusableObjectCache.d.ts +39 -29
- package/lib/cjs/geometry3d/ReusableObjectCache.d.ts.map +1 -1
- package/lib/cjs/geometry3d/ReusableObjectCache.js +49 -35
- package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
- package/lib/cjs/geometry3d/SortablePolygon.d.ts +1 -4
- package/lib/cjs/geometry3d/SortablePolygon.d.ts.map +1 -1
- package/lib/cjs/geometry3d/SortablePolygon.js +48 -43
- package/lib/cjs/geometry3d/SortablePolygon.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 +51 -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 +6 -6
- 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/BGFBReader.d.ts.map +1 -1
- package/lib/cjs/serialization/BGFBReader.js +2 -3
- package/lib/cjs/serialization/BGFBReader.js.map +1 -1
- package/lib/cjs/serialization/BGFBWriter.d.ts.map +1 -1
- package/lib/cjs/serialization/BGFBWriter.js +2 -4
- package/lib/cjs/serialization/BGFBWriter.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.d.ts.map +1 -1
- package/lib/cjs/serialization/IModelJsonSchema.js +5 -5
- package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/cjs/solid/Box.d.ts.map +1 -1
- package/lib/cjs/solid/Box.js +7 -0
- package/lib/cjs/solid/Box.js.map +1 -1
- package/lib/cjs/solid/Cone.d.ts.map +1 -1
- package/lib/cjs/solid/Cone.js +6 -0
- package/lib/cjs/solid/Cone.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 +11 -7
- 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/solid/RuledSweep.d.ts +1 -1
- package/lib/cjs/solid/RuledSweep.d.ts.map +1 -1
- package/lib/cjs/solid/RuledSweep.js +5 -1
- package/lib/cjs/solid/RuledSweep.js.map +1 -1
- package/lib/cjs/solid/Sphere.d.ts.map +1 -1
- package/lib/cjs/solid/Sphere.js +6 -3
- package/lib/cjs/solid/Sphere.js.map +1 -1
- package/lib/cjs/solid/SweepContour.d.ts +1 -1
- package/lib/cjs/solid/SweepContour.js +1 -1
- package/lib/cjs/solid/SweepContour.js.map +1 -1
- package/lib/cjs/solid/TorusPipe.d.ts.map +1 -1
- package/lib/cjs/solid/TorusPipe.js +4 -0
- package/lib/cjs/solid/TorusPipe.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/Graph.d.ts +64 -14
- package/lib/cjs/topology/Graph.d.ts.map +1 -1
- package/lib/cjs/topology/Graph.js +149 -32
- package/lib/cjs/topology/Graph.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts +3 -2
- package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSearch.js +3 -2
- 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/RegularizeFace.d.ts.map +1 -1
- package/lib/cjs/topology/RegularizeFace.js +2 -1
- package/lib/cjs/topology/RegularizeFace.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 +18 -10
- 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 +4 -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 +2 -0
- package/lib/esm/core-geometry.d.ts.map +1 -1
- package/lib/esm/core-geometry.js +2 -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 +40 -1
- package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
- package/lib/esm/curve/CurveCollection.js +90 -0
- package/lib/esm/curve/CurveCollection.js.map +1 -1
- package/lib/esm/curve/CurveFactory.d.ts +3 -2
- package/lib/esm/curve/CurveFactory.d.ts.map +1 -1
- package/lib/esm/curve/CurveFactory.js +6 -5
- package/lib/esm/curve/CurveFactory.js.map +1 -1
- package/lib/esm/curve/CurveLocationDetail.d.ts +27 -25
- package/lib/esm/curve/CurveLocationDetail.d.ts.map +1 -1
- package/lib/esm/curve/CurveLocationDetail.js +30 -25
- package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
- package/lib/esm/curve/CurvePrimitive.d.ts +9 -2
- package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
- package/lib/esm/curve/CurvePrimitive.js +11 -0
- 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/LineSegment3d.d.ts +2 -0
- package/lib/esm/curve/LineSegment3d.d.ts.map +1 -1
- package/lib/esm/curve/LineSegment3d.js +4 -0
- package/lib/esm/curve/LineSegment3d.js.map +1 -1
- package/lib/esm/curve/LineString3d.d.ts +7 -0
- package/lib/esm/curve/LineString3d.d.ts.map +1 -1
- package/lib/esm/curve/LineString3d.js +15 -3
- package/lib/esm/curve/LineString3d.js.map +1 -1
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.d.ts.map +1 -1
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js +37 -8
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
- package/lib/esm/curve/Query/PlanarSubdivision.d.ts +34 -8
- package/lib/esm/curve/Query/PlanarSubdivision.d.ts.map +1 -1
- package/lib/esm/curve/Query/PlanarSubdivision.js +131 -35
- package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/esm/curve/Query/StrokeCountChain.d.ts +4 -3
- package/lib/esm/curve/Query/StrokeCountChain.d.ts.map +1 -1
- package/lib/esm/curve/Query/StrokeCountChain.js +20 -9
- package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
- package/lib/esm/curve/RegionMomentsXY.d.ts +2 -1
- package/lib/esm/curve/RegionMomentsXY.d.ts.map +1 -1
- package/lib/esm/curve/RegionMomentsXY.js +26 -41
- package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
- package/lib/esm/curve/RegionOps.d.ts +74 -39
- package/lib/esm/curve/RegionOps.d.ts.map +1 -1
- package/lib/esm/curve/RegionOps.js +146 -46
- package/lib/esm/curve/RegionOps.js.map +1 -1
- package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts +36 -27
- package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
- package/lib/esm/curve/RegionOpsClassificationSweeps.js +161 -56
- 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/CurveCurveCloseApproachXY.d.ts +2 -2
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js +6 -6
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.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 +25 -18
- package/lib/esm/geometry3d/AngleSweep.d.ts.map +1 -1
- package/lib/esm/geometry3d/AngleSweep.js +32 -18
- 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/Ellipsoid.js +1 -1
- package/lib/esm/geometry3d/Ellipsoid.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 +8 -3
- package/lib/esm/geometry3d/GrowableXYZArray.d.ts.map +1 -1
- package/lib/esm/geometry3d/GrowableXYZArray.js +21 -3
- package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.d.ts +11 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.js +21 -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 +7 -9
- package/lib/esm/geometry3d/Ray3d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Ray3d.js +23 -45
- package/lib/esm/geometry3d/Ray3d.js.map +1 -1
- package/lib/esm/geometry3d/ReusableObjectCache.d.ts +39 -29
- package/lib/esm/geometry3d/ReusableObjectCache.d.ts.map +1 -1
- package/lib/esm/geometry3d/ReusableObjectCache.js +47 -33
- package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
- package/lib/esm/geometry3d/SortablePolygon.d.ts +1 -4
- package/lib/esm/geometry3d/SortablePolygon.d.ts.map +1 -1
- package/lib/esm/geometry3d/SortablePolygon.js +48 -43
- package/lib/esm/geometry3d/SortablePolygon.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 +51 -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 +6 -6
- 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/BGFBReader.d.ts.map +1 -1
- package/lib/esm/serialization/BGFBReader.js +2 -3
- package/lib/esm/serialization/BGFBReader.js.map +1 -1
- package/lib/esm/serialization/BGFBWriter.d.ts.map +1 -1
- package/lib/esm/serialization/BGFBWriter.js +2 -4
- package/lib/esm/serialization/BGFBWriter.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.d.ts.map +1 -1
- package/lib/esm/serialization/IModelJsonSchema.js +5 -5
- package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/esm/solid/Box.d.ts.map +1 -1
- package/lib/esm/solid/Box.js +7 -0
- package/lib/esm/solid/Box.js.map +1 -1
- package/lib/esm/solid/Cone.d.ts.map +1 -1
- package/lib/esm/solid/Cone.js +6 -0
- package/lib/esm/solid/Cone.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 +11 -7
- 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/solid/RuledSweep.d.ts +1 -1
- package/lib/esm/solid/RuledSweep.d.ts.map +1 -1
- package/lib/esm/solid/RuledSweep.js +5 -1
- package/lib/esm/solid/RuledSweep.js.map +1 -1
- package/lib/esm/solid/Sphere.d.ts.map +1 -1
- package/lib/esm/solid/Sphere.js +6 -3
- package/lib/esm/solid/Sphere.js.map +1 -1
- package/lib/esm/solid/SweepContour.d.ts +1 -1
- package/lib/esm/solid/SweepContour.js +1 -1
- package/lib/esm/solid/SweepContour.js.map +1 -1
- package/lib/esm/solid/TorusPipe.d.ts.map +1 -1
- package/lib/esm/solid/TorusPipe.js +4 -0
- package/lib/esm/solid/TorusPipe.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/Graph.d.ts +64 -14
- package/lib/esm/topology/Graph.d.ts.map +1 -1
- package/lib/esm/topology/Graph.js +149 -32
- package/lib/esm/topology/Graph.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSearch.d.ts +3 -2
- package/lib/esm/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSearch.js +3 -2
- 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/RegularizeFace.d.ts.map +1 -1
- package/lib/esm/topology/RegularizeFace.js +2 -1
- package/lib/esm/topology/RegularizeFace.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 +7 -6
|
@@ -9,7 +9,7 @@ import { Geometry } from "../Geometry";
|
|
|
9
9
|
import { Point3d, Vector3d } from "../geometry3d/Point3dVector3d";
|
|
10
10
|
import { Range2d, Range3d } from "../geometry3d/Range";
|
|
11
11
|
import { Ray3d } from "../geometry3d/Ray3d";
|
|
12
|
-
import { HalfEdgeGraph, HalfEdgeMask } from "../topology/Graph";
|
|
12
|
+
import { HalfEdge, HalfEdgeGraph, HalfEdgeMask } from "../topology/Graph";
|
|
13
13
|
import { HalfEdgeGraphSearch } from "../topology/HalfEdgeGraphSearch";
|
|
14
14
|
import { HalfEdgeGraphMerge } from "../topology/Merging";
|
|
15
15
|
import { RegularizationContext } from "../topology/RegularizeFace";
|
|
@@ -18,6 +18,7 @@ import { CurveCurve } from "./CurveCurve";
|
|
|
18
18
|
import { CurveLocationDetail } from "./CurveLocationDetail";
|
|
19
19
|
import { GeometryQuery } from "./GeometryQuery";
|
|
20
20
|
import { PlaneAltitudeRangeContext } from "./internalContexts/PlaneAltitudeRangeContext";
|
|
21
|
+
import { TransferWithSplitArcs } from "./internalContexts/TransferWithSplitArcs";
|
|
21
22
|
import { LineSegment3d } from "./LineSegment3d";
|
|
22
23
|
import { Loop } from "./Loop";
|
|
23
24
|
import { ParityRegion } from "./ParityRegion";
|
|
@@ -40,14 +41,22 @@ import { UnionRegion } from "./UnionRegion";
|
|
|
40
41
|
* @internal
|
|
41
42
|
*/
|
|
42
43
|
class RegionOpsFaceToFaceSearchCallbacks {
|
|
43
|
-
/** Announce a representative node on the outer face of a component */
|
|
44
|
-
startComponent(_node) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
/** Announce face
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
44
|
+
/** Announce a representative node on the outer face of a component. */
|
|
45
|
+
startComponent(_node) {
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
/** Announce return to outer face. */
|
|
49
|
+
finishComponent(_node) {
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
/** Announce face entry. */
|
|
53
|
+
enterFace(_facePathStack, _newFaceNode) {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
/** Announce face exit. */
|
|
57
|
+
leaveFace(_facePathStack, _newFaceNode) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
51
60
|
}
|
|
52
61
|
/**
|
|
53
62
|
* Implementation of `RegionOpsFaceToFaceSearchCallbacks` for binary boolean sweep with polygonal regions.
|
|
@@ -110,14 +119,14 @@ class RegionOpsBinaryBooleanSweepCallbacks extends RegionOpsFaceToFaceSearchCall
|
|
|
110
119
|
*/
|
|
111
120
|
export class RegionOpsFaceToFaceSearch {
|
|
112
121
|
/**
|
|
113
|
-
*
|
|
122
|
+
* Run a DFS with face-to-face step announcements.
|
|
114
123
|
* * false return from any function terminates search immediately.
|
|
115
124
|
* * all reachable nodes assumed to have both visit masks clear.
|
|
116
125
|
* @param graph containing graph.
|
|
117
126
|
* @param seed first node to visit.
|
|
118
127
|
* @param faceHasBeenVisited mask marking faces that have been seen.
|
|
119
128
|
* @param nodeHasBeenVisited mask marking node-to-node step around face.
|
|
120
|
-
*
|
|
129
|
+
* @param callbacks callbacks.
|
|
121
130
|
*/
|
|
122
131
|
static faceToFaceSearchFromOuterLoop(_graph, seed, faceHasBeenVisited, nodeHasBeenVisited, callbacks) {
|
|
123
132
|
if (seed.isMaskSet(faceHasBeenVisited))
|
|
@@ -131,10 +140,10 @@ export class RegionOpsFaceToFaceSearch {
|
|
|
131
140
|
let entryNode = faceWalker;
|
|
132
141
|
let mate = faceWalker.edgeMate;
|
|
133
142
|
if (!mate.isMaskSet(faceHasBeenVisited)) {
|
|
134
|
-
//
|
|
135
|
-
//
|
|
136
|
-
//
|
|
137
|
-
//
|
|
143
|
+
// The faceWalker seed is always on the base of the stack.
|
|
144
|
+
// The stack then contains even-odd pairs of (entryNode, faceNode).
|
|
145
|
+
// entryNode is the node where a face was entered.
|
|
146
|
+
// faceNode is another node around that face.
|
|
138
147
|
facePathStack.push(faceWalker);
|
|
139
148
|
facePathStack.push(mate);
|
|
140
149
|
let faceNode = mate.faceSuccessor;
|
|
@@ -165,13 +174,13 @@ export class RegionOpsFaceToFaceSearch {
|
|
|
165
174
|
entryNode = facePathStack[facePathStack.length - 1];
|
|
166
175
|
}
|
|
167
176
|
if (faceNode.isMaskSet(nodeHasBeenVisited)) {
|
|
168
|
-
// this is disaster
|
|
177
|
+
// this is disaster
|
|
169
178
|
return;
|
|
170
179
|
}
|
|
171
180
|
}
|
|
172
181
|
}
|
|
173
182
|
}
|
|
174
|
-
// continue at outermost level
|
|
183
|
+
// continue at outermost level
|
|
175
184
|
faceWalker = faceWalker.faceSuccessor;
|
|
176
185
|
} while (faceWalker !== seed);
|
|
177
186
|
callbacks.finishComponent(seed);
|
|
@@ -292,7 +301,7 @@ export var RegionGroupOpType;
|
|
|
292
301
|
* * a reference to the parent group (which in turn leads back to the `RegionBooleanContext`)
|
|
293
302
|
* @internal
|
|
294
303
|
*/
|
|
295
|
-
class RegionGroupMember {
|
|
304
|
+
export class RegionGroupMember {
|
|
296
305
|
region;
|
|
297
306
|
sweepState;
|
|
298
307
|
parentGroup;
|
|
@@ -301,7 +310,9 @@ class RegionGroupMember {
|
|
|
301
310
|
this.parentGroup = parentGroup;
|
|
302
311
|
this.sweepState = 0;
|
|
303
312
|
}
|
|
304
|
-
clearState() {
|
|
313
|
+
clearState() {
|
|
314
|
+
this.sweepState = 0;
|
|
315
|
+
}
|
|
305
316
|
}
|
|
306
317
|
/**
|
|
307
318
|
* A `RegionGroup` is
|
|
@@ -340,8 +351,7 @@ export class RegionGroup {
|
|
|
340
351
|
}
|
|
341
352
|
return range;
|
|
342
353
|
}
|
|
343
|
-
/** Ask if the current _numIn count qualifies as an "in" for this operation type.
|
|
344
|
-
*/
|
|
354
|
+
/** Ask if the current _numIn count qualifies as an "in" for this operation type. */
|
|
345
355
|
getInOut() {
|
|
346
356
|
// UNION is true if one or more members are IN
|
|
347
357
|
if (this.groupOpType === RegionGroupOpType.Union)
|
|
@@ -357,8 +367,9 @@ export class RegionGroup {
|
|
|
357
367
|
// push new members into the group.
|
|
358
368
|
addMember(data, allowLineSegment = false) {
|
|
359
369
|
if (data instanceof Loop || data instanceof ParityRegion) {
|
|
360
|
-
|
|
370
|
+
let cleanerData = data.clone();
|
|
361
371
|
RegionOps.consolidateAdjacentPrimitives(cleanerData);
|
|
372
|
+
cleanerData = TransferWithSplitArcs.clone(cleanerData);
|
|
362
373
|
this.members.push(new RegionGroupMember(cleanerData, this));
|
|
363
374
|
}
|
|
364
375
|
else if (data instanceof UnionRegion) {
|
|
@@ -388,28 +399,29 @@ export class RegionGroup {
|
|
|
388
399
|
/**
|
|
389
400
|
* A `RegionBooleanContext` carries structure and operations for binary operations between two sets of regions.
|
|
390
401
|
* * In the binary operation OP (union, intersection, parity, difference), the left and right operands
|
|
391
|
-
*
|
|
402
|
+
* are each a composite union, difference, or parity among multiple inputs, i.e.,
|
|
392
403
|
* * (operationA among Ai) OP (operationB among Bi)
|
|
393
404
|
* * where the Ai are one set of regions, being combined by operationA
|
|
394
|
-
* * and the Bi are the another set of regions, being combined by operationB
|
|
395
|
-
* * Each group of Ai and Bi is a `RegionGroup
|
|
405
|
+
* * and the Bi are the another set of regions, being combined by operationB.
|
|
406
|
+
* * Each group of Ai and Bi is a `RegionGroup`.
|
|
396
407
|
* * This is an extremely delicate structure.
|
|
397
408
|
* * Members are public because of the unique variety of queries, but should only be used for queries.
|
|
398
409
|
* * The graph and curves in the booleans are connected by an extended pointer chain:
|
|
399
|
-
* * (HalfEdge in Graph).edgeTag points to a CurveLocationDetail
|
|
400
|
-
* * (CurveLocationDetail).curve points to a curve
|
|
401
|
-
* * (Curve).parent points to RegionGroupMember
|
|
402
|
-
* * (RegionGroupMember) points to RegionGroup
|
|
403
|
-
* * (RegionGroup) points to RegionBooleanBinaryContext
|
|
404
|
-
* * So
|
|
405
|
-
* * the chain leads to a parity count in the RegionGroupMember
|
|
406
|
-
* * that can change the number of members active in the RegionGroup
|
|
410
|
+
* * (HalfEdge in Graph).edgeTag points to a CurveLocationDetail.
|
|
411
|
+
* * (CurveLocationDetail).curve points to a curve.
|
|
412
|
+
* * (Curve).parent points to RegionGroupMember.
|
|
413
|
+
* * (RegionGroupMember) points to RegionGroup.
|
|
414
|
+
* * (RegionGroup) points to RegionBooleanBinaryContext.
|
|
415
|
+
* * So when a graph sweep crosses an edge
|
|
416
|
+
* * the chain leads to a parity count in the RegionGroupMember.
|
|
417
|
+
* * that can change the number of members active in the RegionGroup.
|
|
407
418
|
* * which can change the state of the context.
|
|
408
419
|
* @internal
|
|
409
420
|
*/
|
|
410
421
|
export class RegionBooleanContext {
|
|
411
422
|
groupA;
|
|
412
423
|
groupB;
|
|
424
|
+
/** bridge edges */
|
|
413
425
|
extraGeometry;
|
|
414
426
|
graph;
|
|
415
427
|
faceAreaFunction;
|
|
@@ -418,7 +430,7 @@ export class RegionBooleanContext {
|
|
|
418
430
|
this.groupA = new RegionGroup(this, groupTypeA);
|
|
419
431
|
this.groupB = new RegionGroup(this, groupTypeB);
|
|
420
432
|
this.extraGeometry = new RegionGroup(this, RegionGroupOpType.NonBounding);
|
|
421
|
-
this.binaryOp = RegionBinaryOpType.Union; //
|
|
433
|
+
this.binaryOp = RegionBinaryOpType.Union; // revised in runClassificationSweep
|
|
422
434
|
}
|
|
423
435
|
/**
|
|
424
436
|
* Create a context with both A and B groups empty.
|
|
@@ -432,8 +444,6 @@ export class RegionBooleanContext {
|
|
|
432
444
|
addMembers(dataA, dataB) {
|
|
433
445
|
this.groupA.addMember(dataA);
|
|
434
446
|
this.groupB.addMember(dataB);
|
|
435
|
-
// const doConnectives = 1;
|
|
436
|
-
// if (doConnectives !== 0)
|
|
437
447
|
this.addConnectives();
|
|
438
448
|
}
|
|
439
449
|
_workSegment;
|
|
@@ -477,18 +487,106 @@ export class RegionBooleanContext {
|
|
|
477
487
|
}
|
|
478
488
|
const ray = Ray3d.createZero();
|
|
479
489
|
for (const p of maxPoints) {
|
|
480
|
-
// Make a line from
|
|
481
|
-
//
|
|
482
|
-
//
|
|
483
|
-
// If p came from some inner loop this will
|
|
484
|
-
//
|
|
485
|
-
//
|
|
490
|
+
// Make a line from
|
|
491
|
+
// 1) exactly the max point of the loops to
|
|
492
|
+
// 2) a point clearly outside the big range
|
|
493
|
+
// If p came from some inner loop this will
|
|
494
|
+
// 1) create a bridge from the inner loop through any containing loops (always)
|
|
495
|
+
// 2) avoid crossing any containing loop at a vertex. (with high probability, but not absolutely always)
|
|
486
496
|
const bridgeLength = margin + Ray3d.create(p, RegionBooleanContext._bridgeDirection, ray).intersectionWithRange3d(rangeAB).high;
|
|
487
497
|
const outside = Point3d.createAdd2Scaled(p, 1.0, RegionBooleanContext._bridgeDirection, bridgeLength);
|
|
488
498
|
const bridgeLine = LineSegment3d.createXYXY(p.x, p.y, outside.x, outside.y);
|
|
489
499
|
this.extraGeometry.addMember(bridgeLine, true);
|
|
490
500
|
}
|
|
491
501
|
}
|
|
502
|
+
/**
|
|
503
|
+
* Simplify the graph by removing bridge edges that do not serve to connect inner and outer loops, i.e.:
|
|
504
|
+
* * the bridge edge is dangling
|
|
505
|
+
* * the bridge edge is adjacent to multiple faces
|
|
506
|
+
* * the bridge edge is adjacent to a negative area face
|
|
507
|
+
* @returns the number of extraneous bridge edges removed from the graph.
|
|
508
|
+
*/
|
|
509
|
+
removeExtraneousBridgeEdges() {
|
|
510
|
+
const toHeal = [];
|
|
511
|
+
const interiorBridges = [];
|
|
512
|
+
// lambda test for boundary edge. Relies only on face loop orientation. Doesn't use HalfEdgeMasks!
|
|
513
|
+
const isExteriorEdge = (node) => {
|
|
514
|
+
if (this.faceAreaFunction(node) < 0.0)
|
|
515
|
+
return true;
|
|
516
|
+
if (!node.findAroundFace(node.edgeMate))
|
|
517
|
+
return this.faceAreaFunction(node.edgeMate) < 0.0;
|
|
518
|
+
return false;
|
|
519
|
+
};
|
|
520
|
+
// isolate dangling bridges, bridges separating different faces, and "exterior" bridges in the negative area face
|
|
521
|
+
this.graph.announceEdges((_graph, node) => {
|
|
522
|
+
if (node.edgeTag !== undefined) {
|
|
523
|
+
if (node.edgeTag instanceof CurveLocationDetail) {
|
|
524
|
+
if (node.edgeTag.curve) {
|
|
525
|
+
if (node.edgeTag.curve.parent instanceof RegionGroupMember) {
|
|
526
|
+
if (node.edgeTag.curve.parent.parentGroup === this.extraGeometry) {
|
|
527
|
+
if (node.isDangling || node.edgeMate.isDangling || !node.findAroundFace(node.edgeMate) || this.faceAreaFunction(node) < 0.0) {
|
|
528
|
+
toHeal.push(node.vertexSuccessor);
|
|
529
|
+
toHeal.push(node.edgeMate.vertexSuccessor);
|
|
530
|
+
node.isolateEdge();
|
|
531
|
+
}
|
|
532
|
+
else {
|
|
533
|
+
interiorBridges.push(node);
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
return true;
|
|
541
|
+
});
|
|
542
|
+
// At this point, all bridges that were exterior are isolated, but this may have caused formerly
|
|
543
|
+
// interior bridges to become exterior. Now we successively isolate exterior bridges until none remain.
|
|
544
|
+
let numIsolatedThisPass;
|
|
545
|
+
do {
|
|
546
|
+
numIsolatedThisPass = 0;
|
|
547
|
+
for (const node of interiorBridges) {
|
|
548
|
+
if (!node.isIsolatedEdge && isExteriorEdge(node)) {
|
|
549
|
+
toHeal.push(node.vertexSuccessor);
|
|
550
|
+
toHeal.push(node.edgeMate.vertexSuccessor);
|
|
551
|
+
node.isolateEdge();
|
|
552
|
+
numIsolatedThisPass++;
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
} while (numIsolatedThisPass > 0);
|
|
556
|
+
// lambda to extend the detail interval on a side of a healed edge
|
|
557
|
+
const mergeDetails = (he, newFraction, newPoint) => {
|
|
558
|
+
if (he && he.edgeTag instanceof CurveLocationDetail && he.sortData !== undefined && newFraction !== undefined && newPoint) {
|
|
559
|
+
if (he.sortData > 0)
|
|
560
|
+
he.edgeTag.captureFraction1Point1(newFraction, newPoint);
|
|
561
|
+
else
|
|
562
|
+
he.edgeTag.captureFractionPoint(newFraction, newPoint);
|
|
563
|
+
}
|
|
564
|
+
};
|
|
565
|
+
// At this point all removable bridges are isolated. Clean up their original vertex loops, if possible.
|
|
566
|
+
for (const doomedA of toHeal) {
|
|
567
|
+
const doomedB = doomedA.vertexSuccessor;
|
|
568
|
+
if ( // are the geometries mergeable?
|
|
569
|
+
doomedA !== doomedB &&
|
|
570
|
+
doomedA.edgeTag instanceof CurveLocationDetail && doomedA.sortData !== undefined &&
|
|
571
|
+
doomedB.edgeTag instanceof CurveLocationDetail && doomedB.sortData !== undefined &&
|
|
572
|
+
doomedA.edgeTag.curve === doomedB.edgeTag.curve &&
|
|
573
|
+
doomedA.edgeTag.hasFraction1 && doomedB.edgeTag.hasFraction1 &&
|
|
574
|
+
doomedA.sortData * doomedB.sortData < 0 &&
|
|
575
|
+
((doomedA.sortData > 0 && Geometry.isSmallRelative(doomedA.edgeTag.fraction - doomedB.edgeTag.fraction1)) ||
|
|
576
|
+
(doomedA.sortData < 0 && Geometry.isSmallRelative(doomedA.edgeTag.fraction1 - doomedB.edgeTag.fraction)))) {
|
|
577
|
+
const survivorA = HalfEdge.healEdge(doomedA, false);
|
|
578
|
+
if (survivorA) {
|
|
579
|
+
const endFractionA = (doomedA.sortData > 0) ? doomedA.edgeTag.fraction1 : doomedA.edgeTag.fraction;
|
|
580
|
+
const endPointA = (doomedA.sortData > 0) ? doomedA.edgeTag.point1 : doomedA.edgeTag.point;
|
|
581
|
+
mergeDetails(survivorA, endFractionA, endPointA);
|
|
582
|
+
const endFractionB = (doomedB.sortData > 0) ? doomedB.edgeTag.fraction1 : doomedB.edgeTag.fraction;
|
|
583
|
+
const endPointB = (doomedB.sortData > 0) ? doomedB.edgeTag.point1 : doomedB.edgeTag.point;
|
|
584
|
+
mergeDetails(survivorA.edgeMate, endFractionB, endPointB);
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
return this.graph.deleteIsolatedEdges();
|
|
589
|
+
}
|
|
492
590
|
/**
|
|
493
591
|
* Markup and assembly steps for geometry in the RegionGroups.
|
|
494
592
|
* * Annotate connection from group to curves.
|
|
@@ -499,7 +597,7 @@ export class RegionBooleanContext {
|
|
|
499
597
|
*/
|
|
500
598
|
annotateAndMergeCurvesInGraph(mergeTolerance = Geometry.smallMetricDistance) {
|
|
501
599
|
const allPrimitives = [];
|
|
502
|
-
// ASSUME loops have fine-grained types
|
|
600
|
+
// ASSUME loops have fine-grained types (no linestrings)
|
|
503
601
|
for (const group of [this.groupA, this.groupB, this.extraGeometry]) {
|
|
504
602
|
for (const member of group.members) {
|
|
505
603
|
let k = allPrimitives.length;
|
|
@@ -510,11 +608,11 @@ export class RegionBooleanContext {
|
|
|
510
608
|
}
|
|
511
609
|
}
|
|
512
610
|
}
|
|
513
|
-
// const range = RegionOps.curveArrayRange(allPrimitives);
|
|
514
611
|
const intersections = CurveCurve.allIntersectionsAmongPrimitivesXY(allPrimitives, mergeTolerance);
|
|
515
612
|
const graph = PlanarSubdivision.assembleHalfEdgeGraph(allPrimitives, intersections, mergeTolerance);
|
|
516
613
|
this.graph = graph;
|
|
517
614
|
this.faceAreaFunction = faceAreaFromCurvedEdgeData;
|
|
615
|
+
this.removeExtraneousBridgeEdges();
|
|
518
616
|
}
|
|
519
617
|
_announceFaceFunction;
|
|
520
618
|
/**
|
|
@@ -529,9 +627,8 @@ export class RegionBooleanContext {
|
|
|
529
627
|
this._announceFaceFunction = announceFaceFunction;
|
|
530
628
|
this.binaryOp = binaryOp;
|
|
531
629
|
this.graph.clearMask(HalfEdgeMask.EXTERIOR);
|
|
532
|
-
for (const group of [this.groupA, this.groupB])
|
|
630
|
+
for (const group of [this.groupA, this.groupB])
|
|
533
631
|
group.clearState();
|
|
534
|
-
}
|
|
535
632
|
const faceHasBeenVisitedMask = this.graph.grabMask();
|
|
536
633
|
const nodeHasBeenVisitedMask = this.graph.grabMask();
|
|
537
634
|
const componentArray = GraphComponentArray.create(this.graph);
|
|
@@ -612,18 +709,19 @@ export class RegionBooleanContext {
|
|
|
612
709
|
return undefined;
|
|
613
710
|
}
|
|
614
711
|
// obligations to act as sweep callback ...
|
|
615
|
-
/** Announce a representative node on the outer face of a component */
|
|
712
|
+
/** Announce a representative node on the outer face of a component. */
|
|
616
713
|
startComponent(outerFaceNode) {
|
|
617
714
|
outerFaceNode.setMaskAroundFace(HalfEdgeMask.EXTERIOR);
|
|
618
715
|
if (this._announceFaceFunction)
|
|
619
716
|
this._announceFaceFunction(this.graph, outerFaceNode, -1, faceAreaFromCurvedEdgeData(outerFaceNode));
|
|
620
717
|
return true;
|
|
621
718
|
}
|
|
622
|
-
/** Announce return to outer face */
|
|
719
|
+
/** Announce return to outer face. */
|
|
623
720
|
finishComponent(_node) {
|
|
624
721
|
return true;
|
|
625
722
|
}
|
|
626
|
-
/**
|
|
723
|
+
/**
|
|
724
|
+
* Announce entry to a graph face.
|
|
627
725
|
* * Both both sides of a graph edge are from the same RegionGroupMember.
|
|
628
726
|
* * Hence "crossing that edge" changes the parity count for the RegionGroupMember that owns that edge by 1.
|
|
629
727
|
* * The parity count for other RegionGroupMembers are never affected by this crossing.
|
|
@@ -644,8 +742,9 @@ export class RegionBooleanContext {
|
|
|
644
742
|
return true;
|
|
645
743
|
}
|
|
646
744
|
}
|
|
647
|
-
/**
|
|
648
|
-
*
|
|
745
|
+
/**
|
|
746
|
+
* Return xy area between (part of) a curve and the x axis through a reference point.
|
|
747
|
+
* If detail is undefined or does not have both start and end fractions, just do trapezoid area.
|
|
649
748
|
*/
|
|
650
749
|
function areaUnderPartialCurveXY(detail, xyStart, xyEnd, referencePoint) {
|
|
651
750
|
// area between trapezoid and axis
|
|
@@ -659,15 +758,21 @@ function areaUnderPartialCurveXY(detail, xyStart, xyEnd, referencePoint) {
|
|
|
659
758
|
let areaToChord = 0.0;
|
|
660
759
|
if (detail && detail.curve && detail.hasFraction1) {
|
|
661
760
|
if (detail.curve instanceof LineSegment3d) {
|
|
662
|
-
//
|
|
761
|
+
// nothing to do for a line segment
|
|
663
762
|
}
|
|
664
763
|
else if (detail.curve instanceof Arc3d) {
|
|
665
764
|
areaToChord = detail.curve.areaToChordXY(detail.fraction, detail.fraction1);
|
|
666
765
|
}
|
|
766
|
+
else {
|
|
767
|
+
const partial = detail.curve.clonePartialCurve(detail.fraction, detail.fraction1);
|
|
768
|
+
areaToChord = partial ?
|
|
769
|
+
RegionOps.computeXYArea(Loop.create(partial, LineSegment3d.create(detail.point1, detail.point))) ?? 0
|
|
770
|
+
: 0;
|
|
771
|
+
}
|
|
667
772
|
}
|
|
668
773
|
return trapezoidArea + areaToChord;
|
|
669
774
|
}
|
|
670
|
-
/** Compute face area for a face whose edges are decorated with CurveLocationDetail for their (partial) curves */
|
|
775
|
+
/** Compute face area for a face whose edges are decorated with CurveLocationDetail for their (partial) curves. */
|
|
671
776
|
function faceAreaFromCurvedEdgeData(faceSeed) {
|
|
672
777
|
let area = 0.0;
|
|
673
778
|
let edge = faceSeed;
|
|
@@ -690,8 +795,7 @@ export class GraphComponent {
|
|
|
690
795
|
this.faceAreas = [];
|
|
691
796
|
}
|
|
692
797
|
/**
|
|
693
|
-
*
|
|
694
|
-
*
|
|
798
|
+
* Visit all vertices and edges in the component to build face area array and composite range.
|
|
695
799
|
* @param extendRangeForEdge optional function to compute edge range. If undefined, linear edge is assumed.
|
|
696
800
|
* @param faceAreaFunction optional function to compute face area. If undefined, linear edges are assumed.
|
|
697
801
|
*/
|
|
@@ -715,7 +819,8 @@ export class GraphComponent {
|
|
|
715
819
|
}
|
|
716
820
|
}
|
|
717
821
|
}
|
|
718
|
-
/**
|
|
822
|
+
/**
|
|
823
|
+
* Build and hold an array of component data for a HalfEdgeGraph.
|
|
719
824
|
* @internal
|
|
720
825
|
*/
|
|
721
826
|
export class GraphComponentArray {
|