@itwin/core-geometry 5.1.1 → 5.1.3-experimental.1
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 +11 -1
- package/lib/cjs/Constant.js.map +1 -1
- package/lib/cjs/Geometry.js.map +1 -1
- package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
- package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
- package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
- package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
- package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
- package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
- package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
- package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
- package/lib/cjs/bspline/KnotVector.js.map +1 -1
- package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -1
- package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
- package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -1
- package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
- package/lib/cjs/clipping/ClipPlane.js.map +1 -1
- package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
- package/lib/cjs/clipping/ClipUtils.js.map +1 -1
- package/lib/cjs/clipping/ClipVector.js.map +1 -1
- package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
- package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
- package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
- package/lib/cjs/core-geometry.js.map +1 -1
- package/lib/cjs/curve/Arc3d.js.map +1 -1
- package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
- package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
- package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/cjs/curve/CurveCollection.js.map +1 -1
- package/lib/cjs/curve/CurveCurve.js.map +1 -1
- package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
- package/lib/cjs/curve/CurveFactory.js.map +1 -1
- package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
- package/lib/cjs/curve/CurveOps.js.map +1 -1
- package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
- package/lib/cjs/curve/CurveProcessor.js.map +1 -1
- package/lib/cjs/curve/CurveTypes.js.map +1 -1
- package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
- package/lib/cjs/curve/GeometryQuery.js.map +1 -1
- package/lib/cjs/curve/LineSegment3d.js.map +1 -1
- package/lib/cjs/curve/LineString3d.js.map +1 -1
- package/lib/cjs/curve/Loop.js.map +1 -1
- package/lib/cjs/curve/OffsetOptions.js.map +1 -1
- package/lib/cjs/curve/ParityRegion.js.map +1 -1
- package/lib/cjs/curve/Path.js.map +1 -1
- package/lib/cjs/curve/PointString3d.js.map +1 -1
- package/lib/cjs/curve/ProxyCurve.js.map +1 -1
- package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
- package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
- package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
- package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
- package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
- package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
- package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
- package/lib/cjs/curve/RegionOps.js.map +1 -1
- package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/cjs/curve/StrokeOptions.js.map +1 -1
- package/lib/cjs/curve/UnionRegion.js.map +1 -1
- package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
- package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
- package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/TransferWithSplitArcs.js.map +1 -1
- package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
- package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
- package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
- package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
- package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
- package/lib/cjs/geometry3d/Angle.js.map +1 -1
- package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
- package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
- package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
- package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
- package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
- package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
- package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
- package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
- package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
- package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
- package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
- package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
- package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
- package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
- package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
- package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
- package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
- package/lib/cjs/geometry3d/Range.js.map +1 -1
- package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
- package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
- package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
- package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
- package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
- package/lib/cjs/geometry3d/Transform.js.map +1 -1
- package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
- package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
- package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
- package/lib/cjs/geometry4d/Map4d.js.map +1 -1
- package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
- package/lib/cjs/geometry4d/MomentData.js.map +1 -1
- package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
- package/lib/cjs/geometry4d/Point4d.js.map +1 -1
- package/lib/cjs/numerics/BandedSystem.js.map +1 -1
- package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
- package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
- package/lib/cjs/numerics/Complex.js.map +1 -1
- package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
- package/lib/cjs/numerics/Newton.js.map +1 -1
- package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
- package/lib/cjs/numerics/PolarData.js.map +1 -1
- package/lib/cjs/numerics/Polynomials.js.map +1 -1
- package/lib/cjs/numerics/Quadrature.js.map +1 -1
- package/lib/cjs/numerics/Range1dArray.js.map +1 -1
- package/lib/cjs/numerics/SmallSystem.js.map +1 -1
- package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
- package/lib/cjs/numerics/UnionFind.js.map +1 -1
- package/lib/cjs/numerics/UsageSums.js.map +1 -1
- package/lib/cjs/polyface/AuxData.js.map +1 -1
- package/lib/cjs/polyface/BoxTopology.js.map +1 -1
- package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
- package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
- package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
- package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
- package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
- package/lib/cjs/polyface/IndexedPolyfaceWalker.js.map +1 -1
- package/lib/cjs/polyface/Polyface.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
- package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
- package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
- package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
- package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
- package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
- package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
- package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
- package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
- package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
- package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
- package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
- package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
- package/lib/cjs/serialization/BGFBReader.js.map +1 -1
- package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
- package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
- package/lib/cjs/serialization/DeepCompare.js.map +1 -1
- package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
- package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/cjs/serialization/SerializationHelpers.js.map +1 -1
- package/lib/cjs/solid/Box.js.map +1 -1
- package/lib/cjs/solid/Cone.js.map +1 -1
- package/lib/cjs/solid/LinearSweep.js.map +1 -1
- package/lib/cjs/solid/RotationalSweep.js.map +1 -1
- package/lib/cjs/solid/RuledSweep.js.map +1 -1
- package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
- package/lib/cjs/solid/Sphere.js.map +1 -1
- package/lib/cjs/solid/SweepContour.js.map +1 -1
- package/lib/cjs/solid/TorusPipe.js.map +1 -1
- package/lib/cjs/topology/ChainMerge.js.map +1 -1
- package/lib/cjs/topology/Graph.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
- package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
- package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
- package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
- package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
- package/lib/cjs/topology/MaskManager.js.map +1 -1
- package/lib/cjs/topology/Merging.js.map +1 -1
- package/lib/cjs/topology/RegularizeFace.js.map +1 -1
- package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
- package/lib/cjs/topology/SpaceTriangulation.js.map +1 -1
- package/lib/cjs/topology/Triangulation.js.map +1 -1
- package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
- package/lib/esm/Constant.js.map +1 -1
- package/lib/esm/Geometry.js.map +1 -1
- package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
- package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
- package/lib/esm/bspline/BSplineCurve.js.map +1 -1
- package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
- package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
- package/lib/esm/bspline/BSplineSurface.js.map +1 -1
- package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
- package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
- package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
- package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
- package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
- package/lib/esm/bspline/KnotVector.js.map +1 -1
- package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
- package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
- package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
- package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
- package/lib/esm/clipping/ClipPlane.js.map +1 -1
- package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
- package/lib/esm/clipping/ClipUtils.js.map +1 -1
- package/lib/esm/clipping/ClipVector.js.map +1 -1
- package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
- package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
- package/lib/esm/core-geometry.js.map +1 -1
- package/lib/esm/curve/Arc3d.js.map +1 -1
- package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
- package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
- package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/esm/curve/CurveCollection.js.map +1 -1
- package/lib/esm/curve/CurveCurve.js.map +1 -1
- package/lib/esm/curve/CurveExtendMode.js.map +1 -1
- package/lib/esm/curve/CurveFactory.js.map +1 -1
- package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
- package/lib/esm/curve/CurveOps.js.map +1 -1
- package/lib/esm/curve/CurvePrimitive.js.map +1 -1
- package/lib/esm/curve/CurveProcessor.js.map +1 -1
- package/lib/esm/curve/CurveTypes.js.map +1 -1
- package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
- package/lib/esm/curve/GeometryQuery.js.map +1 -1
- package/lib/esm/curve/LineSegment3d.js.map +1 -1
- package/lib/esm/curve/LineString3d.js.map +1 -1
- package/lib/esm/curve/Loop.js.map +1 -1
- package/lib/esm/curve/OffsetOptions.js.map +1 -1
- package/lib/esm/curve/ParityRegion.js.map +1 -1
- package/lib/esm/curve/Path.js.map +1 -1
- package/lib/esm/curve/PointString3d.js.map +1 -1
- package/lib/esm/curve/ProxyCurve.js.map +1 -1
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
- package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
- package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
- package/lib/esm/curve/Query/InOutTests.js.map +1 -1
- package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
- package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
- package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
- package/lib/esm/curve/RegionOps.js.map +1 -1
- package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/esm/curve/StrokeOptions.js.map +1 -1
- package/lib/esm/curve/UnionRegion.js.map +1 -1
- package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
- package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
- package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/TransferWithSplitArcs.js.map +1 -1
- package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
- package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
- package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
- package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
- package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
- package/lib/esm/geometry3d/Angle.js.map +1 -1
- package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
- package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
- package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
- package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
- package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
- package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
- package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
- package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
- package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
- package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
- package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
- package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
- package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
- package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
- package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
- package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
- package/lib/esm/geometry3d/Plane3d.js.map +1 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
- package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
- package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
- package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
- package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
- package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
- package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
- package/lib/esm/geometry3d/Range.js.map +1 -1
- package/lib/esm/geometry3d/Ray2d.js.map +1 -1
- package/lib/esm/geometry3d/Ray3d.js.map +1 -1
- package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
- package/lib/esm/geometry3d/Segment1d.js.map +1 -1
- package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
- package/lib/esm/geometry3d/Transform.js.map +1 -1
- package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
- package/lib/esm/geometry3d/XYZProps.js.map +1 -1
- package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
- package/lib/esm/geometry4d/Map4d.js.map +1 -1
- package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
- package/lib/esm/geometry4d/MomentData.js.map +1 -1
- package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
- package/lib/esm/geometry4d/Point4d.js.map +1 -1
- package/lib/esm/numerics/BandedSystem.js.map +1 -1
- package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
- package/lib/esm/numerics/ClusterableArray.js.map +1 -1
- package/lib/esm/numerics/Complex.js.map +1 -1
- package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
- package/lib/esm/numerics/Newton.js.map +1 -1
- package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
- package/lib/esm/numerics/PolarData.js.map +1 -1
- package/lib/esm/numerics/Polynomials.js.map +1 -1
- package/lib/esm/numerics/Quadrature.js.map +1 -1
- package/lib/esm/numerics/Range1dArray.js.map +1 -1
- package/lib/esm/numerics/SmallSystem.js.map +1 -1
- package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
- package/lib/esm/numerics/UnionFind.js.map +1 -1
- package/lib/esm/numerics/UsageSums.js.map +1 -1
- package/lib/esm/polyface/AuxData.js.map +1 -1
- package/lib/esm/polyface/BoxTopology.js.map +1 -1
- package/lib/esm/polyface/FacetFaceData.js.map +1 -1
- package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
- package/lib/esm/polyface/FacetOrientation.js.map +1 -1
- package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
- package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
- package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
- package/lib/esm/polyface/IndexedPolyfaceWalker.js.map +1 -1
- package/lib/esm/polyface/Polyface.js.map +1 -1
- package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
- package/lib/esm/polyface/PolyfaceData.js.map +1 -1
- package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/esm/polyface/RangeLengthData.js.map +1 -1
- package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
- package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -1
- package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
- package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
- package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
- package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
- package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
- package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
- package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
- package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
- package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
- package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
- package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
- package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
- package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
- package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
- package/lib/esm/serialization/BGFBReader.js.map +1 -1
- package/lib/esm/serialization/BGFBWriter.js.map +1 -1
- package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
- package/lib/esm/serialization/DeepCompare.js.map +1 -1
- package/lib/esm/serialization/GeometrySamples.js.map +1 -1
- package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
- package/lib/esm/solid/Box.js.map +1 -1
- package/lib/esm/solid/Cone.js.map +1 -1
- package/lib/esm/solid/LinearSweep.js.map +1 -1
- package/lib/esm/solid/RotationalSweep.js.map +1 -1
- package/lib/esm/solid/RuledSweep.js.map +1 -1
- package/lib/esm/solid/SolidPrimitive.js.map +1 -1
- package/lib/esm/solid/Sphere.js.map +1 -1
- package/lib/esm/solid/SweepContour.js.map +1 -1
- package/lib/esm/solid/TorusPipe.js.map +1 -1
- package/lib/esm/topology/ChainMerge.js.map +1 -1
- package/lib/esm/topology/Graph.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
- package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
- package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
- package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
- package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
- package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
- package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
- package/lib/esm/topology/MaskManager.js.map +1 -1
- package/lib/esm/topology/Merging.js.map +1 -1
- package/lib/esm/topology/RegularizeFace.js.map +1 -1
- package/lib/esm/topology/SignedDataSummary.js.map +1 -1
- package/lib/esm/topology/SpaceTriangulation.js.map +1 -1
- package/lib/esm/topology/Triangulation.js.map +1 -1
- package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegionOps.js","sourceRoot":"","sources":["../../../src/curve/RegionOps.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Curve\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { Geometry } from \"../Geometry\";\nimport { FrameBuilder } from \"../geometry3d/FrameBuilder\";\nimport { GrowableXYZArray } from \"../geometry3d/GrowableXYZArray\";\nimport {\n IndexedReadWriteXYZCollection, IndexedXYZCollection, LineStringDataVariant, MultiLineStringDataVariant,\n} from \"../geometry3d/IndexedXYZCollection\";\nimport { Point3dArrayCarrier } from \"../geometry3d/Point3dArrayCarrier\";\nimport { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\nimport { PolygonOps } from \"../geometry3d/PolygonOps\";\nimport { PolylineCompressionContext } from \"../geometry3d/PolylineCompressionByEdgeOffset\";\nimport { Range3d } from \"../geometry3d/Range\";\nimport { Ray3d } from \"../geometry3d/Ray3d\";\nimport { SortablePolygon } from \"../geometry3d/SortablePolygon\";\nimport { Transform } from \"../geometry3d/Transform\";\nimport { XAndY, XYAndZ } from \"../geometry3d/XYZProps\";\nimport { MomentData } from \"../geometry4d/MomentData\";\nimport { IndexedPolyface, Polyface } from \"../polyface/Polyface\";\nimport { PolyfaceBuilder } from \"../polyface/PolyfaceBuilder\";\nimport { HalfEdge, HalfEdgeGraph, HalfEdgeMask } from \"../topology/Graph\";\nimport { HalfEdgeGraphSearch } from \"../topology/HalfEdgeGraphSearch\";\nimport { HalfEdgeGraphOps } from \"../topology/Merging\";\nimport { Triangulator } from \"../topology/Triangulation\";\nimport { BagOfCurves, CurveChain, CurveCollection } from \"./CurveCollection\";\nimport { CurveCurve } from \"./CurveCurve\";\nimport { CurveOps } from \"./CurveOps\";\nimport { CurvePrimitive } from \"./CurvePrimitive\";\nimport { AnyChain, AnyCurve, AnyRegion } from \"./CurveTypes\";\nimport { CurveWireMomentsXYZ } from \"./CurveWireMomentsXYZ\";\nimport { GeometryQuery } from \"./GeometryQuery\";\nimport { ChainCollectorContext } from \"./internalContexts/ChainCollectorContext\";\nimport { PolygonWireOffsetContext } from \"./internalContexts/PolygonOffsetContext\";\nimport { TransferWithSplitArcs } from \"./internalContexts/TransferWithSplitArcs\";\nimport { LineSegment3d } from \"./LineSegment3d\";\nimport { LineString3d } from \"./LineString3d\";\nimport { Loop, SignedLoops } from \"./Loop\";\nimport { JointOptions, OffsetOptions } from \"./OffsetOptions\";\nimport { ParityRegion } from \"./ParityRegion\";\nimport { Path } from \"./Path\";\nimport { ConsolidateAdjacentCurvePrimitivesContext } from \"./Query/ConsolidateAdjacentPrimitivesContext\";\nimport { CurveSplitContext } from \"./Query/CurveSplitContext\";\nimport { PointInOnOutContext } from \"./Query/InOutTests\";\nimport { PlanarSubdivision } from \"./Query/PlanarSubdivision\";\nimport { RegionMomentsXY } from \"./RegionMomentsXY\";\nimport { RegionBooleanContext, RegionGroupOpType, RegionOpsFaceToFaceSearch } from \"./RegionOpsClassificationSweeps\";\nimport { StrokeOptions } from \"./StrokeOptions\";\nimport { UnionRegion } from \"./UnionRegion\";\n\n/**\n * * `properties` is a string with special characters indicating\n * * \"U\" -- contains unmerged stick data\n * * \"M\" -- merged\n * * \"R\" -- regularized\n * * \"X\" -- has exterior markup\n * @internal\n */\nexport type GraphCheckPointFunction = (name: string, graph: HalfEdgeGraph, properties: string, extraData?: any) => any;\n\n/**\n * Enumeration of the binary operation types for a booleans among regions\n * @public\n */\nexport enum RegionBinaryOpType {\n Union = 0,\n Parity = 1,\n Intersection = 2,\n AMinusB = 3,\n BMinusA = 4,\n}\n\n/**\n * Class `RegionOps` has static members for calculations on regions (areas).\n * * Regions are represented by these [[CurveCollection]] subclasses:\n * * [[Loop]] -- a single loop\n * * [[ParityRegion]] -- a collection of loops, interpreted by parity rules.\n * The common \"One outer loop and many inner loops\" is a parity region.\n * * [[UnionRegion]] -- a collection of `Loop` and `ParityRegion` objects understood as a (probably disjoint) union.\n * * Most of the methods in this class:\n * * Ignore z-coordinates, so callers should ensure that input geometry has been rotated parallel to the xy-plane.\n * * Assume consistent Loop orientation: \"solid\" Loops are counterclockwise; \"hole\" Loops are clockwise.\n * @public\n */\nexport class RegionOps {\n /**\n * Return moment sums for a loop, parity region, or union region.\n * * The input region should lie in a plane parallel to the xy-plane, as z-coords will be ignored.\n * * If `rawMomentData` is the MomentData returned by computeXYAreaMoments, convert to principal axes and moments with\n * call `principalMomentData = MomentData.inertiaProductsToPrincipalAxes(rawMomentData.origin, rawMomentData.sums);`\n * * `rawMomentData.origin` is the centroid of `region`.\n * * `rawMomentData.sums.weight()` is the signed area of `region`.\n * @param region any [[Loop]], [[ParityRegion]], or [[UnionRegion]].\n */\n public static computeXYAreaMoments(region: AnyRegion): MomentData | undefined {\n const handler = new RegionMomentsXY();\n const result = region.dispatchToGeometryHandler(handler);\n if (result instanceof MomentData) {\n result.shiftOriginAndSumsToCentroidOfSums();\n return result;\n }\n return undefined;\n }\n /**\n * Return an area tolerance for a given xy-range and optional distance tolerance.\n * @param range range of planar region to tolerance.\n * @param distanceTolerance optional absolute distance tolerance.\n */\n public static computeXYAreaTolerance(range: Range3d, distanceTolerance: number = Geometry.smallMetricDistance): number {\n // if A = bh and e is distance tolerance, then A' := (b+e/2)(h+e/2) = A + e/2(b+h+e/2), so A'-A = e/2(b+h+e/2).\n const halfDistTol = 0.5 * distanceTolerance;\n return halfDistTol * (range.xLength() + range.yLength() + halfDistTol);\n }\n /**\n * Return a (signed) xy area for a region.\n * * The input region should lie in a plane parallel to the xy-plane, as z-coords will be ignored.\n * * For a non-self-intersecting Loop, the returned area is negative if and only if the Loop is oriented clockwise\n * with respect to the positive z-axis.\n * @param region any [[Loop]], [[ParityRegion]], or [[UnionRegion]].\n */\n public static computeXYArea(region: AnyRegion): number | undefined {\n const handler = new RegionMomentsXY();\n const result = region.dispatchToGeometryHandler(handler);\n if (result instanceof MomentData) {\n return result.quantitySum;\n }\n return undefined;\n }\n /**\n * Return MomentData with the sums of wire moments.\n * * The input curve should lie in a plane parallel to the xy-plane, as z-coords will be ignored.\n * * If `rawMomentData` is the MomentData returned by computeXYAreaMoments, convert to principal axes and moments with\n * call `principalMomentData = MomentData.inertiaProductsToPrincipalAxes (rawMomentData.origin, rawMomentData.sums);`\n * * `rawMomentData.origin` is the wire centroid of `curve`.\n * * `rawMomentData.sums.weight()` is the signed length of `curve`.\n * @param curve any [[CurveCollection]] or [[CurvePrimitive]].\n */\n public static computeXYZWireMomentSums(curve: AnyCurve): MomentData | undefined {\n const handler = new CurveWireMomentsXYZ();\n handler.visitLeaves(curve);\n const result = handler.momentData;\n result.shiftOriginAndSumsToCentroidOfSums();\n return result;\n }\n /**\n * Return a [[Ray3d]] with:\n * * `origin` is the centroid of the region,\n * * `direction` is a unit vector perpendicular to the region plane,\n * * `a` is the region area.\n * @param region the region to process. Can lie in any plane.\n * @param result optional pre-allocated result to populate and return.\n */\n public static centroidAreaNormal(region: AnyRegion, result?: Ray3d): Ray3d | undefined {\n const localToWorld = FrameBuilder.createRightHandedFrame(undefined, region);\n if (!localToWorld)\n return undefined;\n const normal = localToWorld.matrix.columnZ(result?.direction);\n const regionIsXY = normal.isParallelTo(Vector3d.unitZ(), true);\n let regionXY: AnyRegion | undefined = region;\n if (!regionIsXY) { // rotate the region to be parallel to the xy-plane\n regionXY = region.cloneTransformed(localToWorld.inverse()!) as AnyRegion | undefined;\n if (!regionXY)\n return undefined;\n }\n const momentData = RegionOps.computeXYAreaMoments(regionXY);\n if (!momentData)\n return undefined;\n const centroid = momentData.origin.clone(result?.origin);\n if (!regionIsXY) // rotate centroid back (area is unchanged)\n localToWorld.multiplyPoint3d(centroid, centroid);\n\n let area = momentData.sums.weight();\n if (area < 0.0) {\n area = -area;\n normal.scale(-1.0, normal);\n }\n if (!result)\n result = Ray3d.createCapture(centroid, normal);\n result.a = area;\n return result;\n }\n /**\n * Create loops in the graph.\n * @internal\n */\n public static addLoopsToGraph(\n graph: HalfEdgeGraph,\n data: MultiLineStringDataVariant,\n announceIsolatedLoop: (graph: HalfEdgeGraph, seed: HalfEdge) => void,\n ): void {\n if (data instanceof Loop) {\n const points = data.getPackedStrokes();\n if (points)\n this.addLoopsToGraph(graph, points, announceIsolatedLoop);\n } else if (data instanceof ParityRegion) {\n for (const child of data.children) {\n const points = child.getPackedStrokes();\n if (points)\n this.addLoopsToGraph(graph, points, announceIsolatedLoop);\n }\n } else if (data instanceof IndexedXYZCollection) {\n const loopSeed = Triangulator.directCreateFaceLoopFromCoordinates(graph, data);\n if (loopSeed !== undefined)\n announceIsolatedLoop(graph, loopSeed);\n } else if (Array.isArray(data)) {\n if (data.length > 0) {\n if (Point3d.isAnyImmediatePointType(data[0])) {\n const loopSeed = Triangulator.directCreateFaceLoopFromCoordinates(graph, data as LineStringDataVariant);\n if (loopSeed !== undefined)\n announceIsolatedLoop(graph, loopSeed);\n\n } else if (data[0] instanceof IndexedXYZCollection) {\n for (const loop of data) {\n const loopSeed = Triangulator.directCreateFaceLoopFromCoordinates(graph, loop as IndexedXYZCollection);\n if (loopSeed !== undefined)\n announceIsolatedLoop(graph, loopSeed);\n }\n } else {\n for (const child of data) {\n if (Array.isArray(child))\n this.addLoopsToGraph(graph, child as MultiLineStringDataVariant, announceIsolatedLoop);\n }\n }\n }\n }\n }\n /**\n * Add multiple loops to a graph.\n * * Apply edgeTag and mask to each edge.\n * @internal\n */\n public static addLoopsWithEdgeTagToGraph(\n graph: HalfEdgeGraph, data: MultiLineStringDataVariant, mask: HalfEdgeMask, edgeTag: any,\n ): HalfEdge[] | undefined {\n const loopSeeds: HalfEdge[] = [];\n this.addLoopsToGraph(graph, data, (_graph: HalfEdgeGraph, seed: HalfEdge) => {\n if (seed) {\n loopSeeds.push(seed);\n seed.setMaskAndEdgeTagAroundFace(mask, edgeTag, true);\n }\n });\n if (loopSeeds.length > 0)\n return loopSeeds;\n return undefined;\n }\n /**\n * Given a graph just produced by booleans, convert to a polyface\n * * \"just produced\" implies exterior face markup.\n * @param graph\n * @param triangulate\n */\n private static finishGraphToPolyface(graph: HalfEdgeGraph | undefined, triangulate: boolean): Polyface | undefined {\n if (graph) {\n if (triangulate) {\n Triangulator.triangulateAllPositiveAreaFaces(graph);\n Triangulator.flipTriangles(graph);\n }\n return PolyfaceBuilder.graphToPolyface(graph);\n }\n return undefined;\n }\n /**\n * Return a polyface containing the area intersection of two XY regions.\n * * Within each region, in and out is determined by parity rules.\n * * Any face that is an odd number of crossings from the far outside is IN\n * * Any face that is an even number of crossings from the far outside is OUT\n * @param loopsA first set of loops\n * @param loopsB second set of loops\n * @param triangulate whether to triangulate the result\n */\n public static polygonXYAreaIntersectLoopsToPolyface(\n loopsA: MultiLineStringDataVariant, loopsB: MultiLineStringDataVariant, triangulate: boolean = false,\n ): Polyface | undefined {\n const graph = RegionOpsFaceToFaceSearch.doPolygonBoolean(\n loopsA,\n loopsB,\n (inA: boolean, inB: boolean) => (inA && inB),\n this._graphCheckPointFunction,\n );\n return this.finishGraphToPolyface(graph, triangulate);\n }\n /**\n * Return a polyface containing the area union of two XY regions.\n * * Within each region, in and out is determined by parity rules.\n * * Any face that is an odd number of crossings from the far outside is IN\n * * Any face that is an even number of crossings from the far outside is OUT\n * @param loopsA first set of loops\n * @param loopsB second set of loops\n * @param triangulate whether to triangulate the result\n */\n public static polygonXYAreaUnionLoopsToPolyface(\n loopsA: MultiLineStringDataVariant, loopsB: MultiLineStringDataVariant, triangulate: boolean = false,\n ): Polyface | undefined {\n const graph = RegionOpsFaceToFaceSearch.doPolygonBoolean(\n loopsA,\n loopsB,\n (inA: boolean, inB: boolean) => (inA || inB),\n this._graphCheckPointFunction,\n );\n return this.finishGraphToPolyface(graph, triangulate);\n }\n /**\n * Return a polyface containing the area difference of two XY regions.\n * * Within each region, in and out is determined by parity rules.\n * * Any face that is an odd number of crossings from the far outside is IN\n * * Any face that is an even number of crossings from the far outside is OUT\n * @param loopsA first set of loops\n * @param loopsB second set of loops\n * @param triangulate whether to triangulate the result\n */\n public static polygonXYAreaDifferenceLoopsToPolyface(\n loopsA: MultiLineStringDataVariant, loopsB: MultiLineStringDataVariant, triangulate: boolean = false,\n ): Polyface | undefined {\n const graph = RegionOpsFaceToFaceSearch.doPolygonBoolean(\n loopsA,\n loopsB,\n (inA: boolean, inB: boolean) => (inA && !inB),\n this._graphCheckPointFunction,\n );\n return this.finishGraphToPolyface(graph, triangulate);\n }\n /**\n * Return the region's simplest representation by stripping redundant parent(s).\n * * No Boolean operations are performed.\n * @param region input region (unchanged). Assumed to have at least one child.\n * @returns\n * * For a [[UnionRegion]] with exactly one child, return the child if it is a [[Loop]],\n * or if it is a [[ParityRegion]] with multiple children; otherwise return the `ParityRegion`'s `Loop`.\n * * For a `ParityRegion` with exactly one child, return the `Loop`.\n * * All other inputs returned unchanged.\n * @see [[simplifyRegion]]\n */\n public static simplifyRegionType(region: AnyRegion): AnyRegion {\n if (region instanceof UnionRegion) {\n if (region.children.length === 1)\n return this.simplifyRegionType(region.children[0]);\n } else if (region instanceof ParityRegion) {\n if (region.children.length === 1)\n return region.children[0];\n }\n return region;\n }\n /**\n * Simplify the region's parent/child hierarchy in place:\n * * Regions with exactly one child are simplified as per [[simplifyRegionType]].\n * * Regions without children are removed.\n * * No Boolean operations are performed.\n * @param region region to simplify in place\n * @returns reference to the updated input region\n * @see [[simplifyRegionType]]\n */\n public static simplifyRegion(region: AnyRegion): AnyRegion | undefined {\n if (region instanceof Loop)\n return region.children.length > 0 ? region : undefined;\n // remove childless Parity/UnionRegion\n for (let i = 0; i < region.children.length; ++i) {\n const child = region.children[i];\n const newChild = this.simplifyRegion(child);\n if (!newChild) {\n region.children.splice(i--, 1);\n } else if (newChild !== child) {\n assert(!(newChild instanceof UnionRegion));\n region.children.splice(i--, 1, newChild);\n }\n }\n if (region.children.length === 0)\n return undefined;\n // remove redundant Parity/UnionRegion parent\n if (region.children.length === 1)\n return region.children.splice(0, 1)[0];\n return region;\n }\n /**\n * Return areas defined by a boolean operation.\n * @note For best results, input regions should have correctly oriented loops. See [[sortOuterAndHoleLoopsXY]].\n * @note A common use case of this method is to convert a region with overlapping children into one with\n * non-overlapping children: `regionOut = RegionOps.regionBooleanXY(regionIn, undefined, RegionBinaryOpType.Union)`.\n * @param loopsA first set of loops (treated as a union)\n * @param loopsB second set of loops (treated as a union)\n * @param operation indicates Union, Intersection, Parity, AMinusB, or BMinusA\n * @param mergeTolerance absolute distance tolerance for merging loops\n * @returns a region resulting from merging input loops and the boolean operation.\n */\n public static regionBooleanXY(\n loopsA: AnyRegion | AnyRegion[] | undefined,\n loopsB: AnyRegion | AnyRegion[] | undefined,\n operation: RegionBinaryOpType,\n mergeTolerance: number = Geometry.smallMetricDistance,\n ): AnyRegion | undefined {\n const result = UnionRegion.create();\n const context = RegionBooleanContext.create(RegionGroupOpType.Union, RegionGroupOpType.Union);\n context.addMembers(loopsA, loopsB);\n context.annotateAndMergeCurvesInGraph(mergeTolerance);\n const visitMask = context.graph.grabMask(false);\n const range = context.groupA.range().union(context.groupB.range());\n const areaTol = this.computeXYAreaTolerance(range, mergeTolerance);\n const bridgeMask = HalfEdgeMask.BRIDGE_EDGE;\n context.runClassificationSweep(\n operation,\n (_graph: HalfEdgeGraph, face: HalfEdge, faceType: -1 | 0 | 1, area: number) => {\n // ignore danglers and null faces, but not 2-edge \"banana\" faces with nonzero area\n if (face.countEdgesAroundFace() < 2)\n return;\n if (Math.abs(area) < areaTol)\n return;\n if (faceType === 1) {\n const loopOrParityRegion = PlanarSubdivision.createLoopOrParityRegionInFace(face, bridgeMask, visitMask);\n if (loopOrParityRegion)\n result.tryAddChild(loopOrParityRegion);\n }\n },\n );\n context.graph.dropMask(visitMask);\n return this.simplifyRegion(result);\n }\n /**\n * Return a polyface whose facets are a boolean operation between the input regions.\n * * Each of the two inputs is an array of multiple loops or parity regions.\n * * Within each of these input arrays, the various entries (loop or set of loops) are interpreted as a union.\n * * In each \"array of loops and parity regions\", each entry inputA[i] or inputB[i] is one of:\n * * A simple loop, e.g. array of Point3d.\n * * Several simple loops, each of which is an array of Point3d.\n * @param inputA first set of loops\n * @param operation indicates Union, Intersection, Parity, AMinusB, or BMinusA\n * @param inputB second set of loops\n * @param triangulate whether to triangulate the result\n */\n public static polygonBooleanXYToPolyface(\n inputA: MultiLineStringDataVariant[],\n operation: RegionBinaryOpType,\n inputB: MultiLineStringDataVariant[],\n triangulate: boolean = false,\n ): Polyface | undefined {\n const graph = RegionOpsFaceToFaceSearch.doBinaryBooleanBetweenMultiLoopInputs(\n inputA, RegionGroupOpType.Union,\n operation,\n inputB, RegionGroupOpType.Union,\n true,\n );\n return this.finishGraphToPolyface(graph, triangulate);\n }\n /**\n * Return loops of linestrings around areas of a boolean operation between the input regions.\n * * Each of the two inputs is an array of multiple loops or parity regions.\n * * Within each of these input arrays, the various entries (loop or set of loops) are interpreted as a union.\n * * In each \"array of loops and parity regions\", each entry inputA[i] or inputB[i] is one of:\n * * A simple loop, e.g. array of Point3d.\n * * Several simple loops, each of which is an array of Point3d.\n * @param inputA first set of loops\n * @param operation indicates Union, Intersection, Parity, AMinusB, or BMinusA\n * @param inputB second set of loops\n */\n public static polygonBooleanXYToLoops(\n inputA: MultiLineStringDataVariant[],\n operation: RegionBinaryOpType,\n inputB: MultiLineStringDataVariant[],\n ): AnyRegion | undefined {\n const graph = RegionOpsFaceToFaceSearch.doBinaryBooleanBetweenMultiLoopInputs(\n inputA,\n RegionGroupOpType.Union,\n operation,\n inputB,\n RegionGroupOpType.Union,\n true,\n );\n if (!graph)\n return undefined;\n const loopEdges = HalfEdgeGraphSearch.collectExtendedBoundaryLoopsInGraph(graph, HalfEdgeMask.EXTERIOR);\n const allLoops: Loop[] = [];\n for (const graphLoop of loopEdges) {\n const points = new GrowableXYZArray();\n for (const edge of graphLoop)\n points.pushXYZ(edge.x, edge.y, edge.z);\n points.pushWrap(1);\n const loop = Loop.create();\n loop.tryAddChild(LineString3d.createCapture(points));\n allLoops.push(loop);\n }\n return RegionOps.sortOuterAndHoleLoopsXY(allLoops);\n }\n /**\n * Construct a wire that is offset from the given polyline or polygon.\n * * This is a simple wire offset, not an area offset.\n * * Since z-coordinates are ignored, for best results the input points should lie in (a plane parallel to)\n * the xy-plane.\n * * The construction algorithm attempts to eliminate some self-intersections within the offsets, but does not\n * guarantee a simple area offset.\n * @param points a single loop or path\n * @param wrap true to include wraparound\n * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or JointOptions\n * object.\n */\n public static constructPolygonWireXYOffset(\n points: Point3d[], wrap: boolean, offsetDistanceOrOptions: number | JointOptions,\n ): CurveChain | undefined {\n const context = new PolygonWireOffsetContext();\n return context.constructPolygonWireXYOffset(points, wrap, offsetDistanceOrOptions);\n }\n /**\n * Construct curves that are offset from a Path or Loop as viewed in xy-plane (ignoring z).\n * * The construction will remove \"some\" local effects of features smaller than the offset distance, but will\n * not detect self intersection among widely separated edges.\n * * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/Offset\n * @param curves base curves.\n * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or options object.\n */\n public static constructCurveXYOffset(\n curves: Path | Loop, offsetDistanceOrOptions: number | JointOptions | OffsetOptions,\n ): CurveCollection | undefined {\n const offsetOptions = OffsetOptions.create(offsetDistanceOrOptions);\n return CurveOps.constructCurveXYOffset(curves, offsetOptions);\n }\n /**\n * Test if point (x,y) is IN, OUT or ON a region.\n * @return (1) for in, (-1) for OUT, (0) for ON\n * @param curves input region\n * @param x x coordinate of point to test\n * @param y y coordinate of point to test\n */\n public static testPointInOnOutRegionXY(curves: AnyRegion, x: number, y: number): number {\n return PointInOnOutContext.testPointInOnOutRegionXY(curves, x, y);\n }\n /**\n * Create curve collection of subtype determined by gaps between the input curves.\n * * If (a) wrap is requested and (b) all curves connect head-to-tail (including wraparound), assemble as a `loop`.\n * * If all curves connect head-to-tail except for closure, return a `Path`.\n * * If there are internal gaps, return a `BagOfCurves`\n * * If input array has zero length, return undefined.\n * @param curves input curves\n * @param wrap whether to create a Loop (true) or Path (false) if maximum gap is minimal\n * @param consolidateAdjacentPrimitives whether to simplify the result by calling [[consolidateAdjacentPrimitives]]\n */\n public static createLoopPathOrBagOfCurves(\n curves: CurvePrimitive[], wrap: boolean = true, consolidateAdjacentPrimitives: boolean = false,\n ): CurveCollection | undefined {\n const n = curves.length;\n if (n === 0)\n return undefined;\n let maxGap = 0.0;\n let isPath = false;\n if (wrap)\n maxGap = Geometry.maxXY(maxGap, curves[0].startPoint().distance(curves[n - 1].endPoint()));\n for (let i = 0; i + 1 < n; i++)\n maxGap = Geometry.maxXY(maxGap, curves[i].endPoint().distance(curves[i + 1].startPoint()));\n let collection: Loop | Path | BagOfCurves;\n if (Geometry.isSmallMetricDistance(maxGap)) {\n collection = wrap ? Loop.create() : Path.create();\n isPath = true;\n } else {\n collection = BagOfCurves.create();\n }\n for (const c of curves)\n collection.tryAddChild(c);\n if (isPath && consolidateAdjacentPrimitives)\n RegionOps.consolidateAdjacentPrimitives(collection);\n return collection;\n }\n private static _graphCheckPointFunction?: GraphCheckPointFunction;\n /**\n * Announce Checkpoint function for use during booleans\n * @internal\n */\n public static setCheckPointFunction(f?: GraphCheckPointFunction) {\n this._graphCheckPointFunction = f;\n }\n /**\n * Find all intersections among curves in `curvesToCut` and `cutterCurves` and return fragments of `curvesToCut`.\n * * For a `Loop`, `ParityRegion`, or `UnionRegion` in `curvesToCut`:\n * * if it is never cut by any `cutter` curve, it will be left unchanged.\n * * if cut, the input is downgraded to a set of `Path` curves joining at the cut points.\n * * All cutting is \"as viewed in the xy plane\"\n * @param curvesToCut input curves to be fragmented at intersections with `cutterCurves`\n * @param cutterCurves input curves to intersect with `curvesToCut`\n */\n public static cloneCurvesWithXYSplits(\n curvesToCut: AnyCurve | undefined, cutterCurves: CurveCollection,\n ): AnyCurve | undefined {\n return CurveSplitContext.cloneCurvesWithXYSplits(curvesToCut, cutterCurves);\n }\n /**\n * Create paths assembled from many curves.\n * * Assemble paths from consecutive curves NOT separated by either gaps or the split markup set by\n * [[cloneCurvesWithXYSplits]].\n * * Return simplest form -- single primitive, single path, or bag of curves.\n */\n public static splitToPathsBetweenBreaks(source: AnyCurve | undefined, makeClones: boolean): AnyChain | undefined {\n if (source === undefined)\n return undefined;\n if (source instanceof CurvePrimitive)\n return source;\n // source is a collection . ..\n const primitives = source.collectCurvePrimitives();\n const chainCollector = new ChainCollectorContext(makeClones);\n for (const primitive of primitives) {\n chainCollector.announceCurvePrimitive(primitive);\n }\n return chainCollector.grabResult();\n }\n /**\n * Restructure curve fragments as Paths and Loops, and construct xy-offsets of the chains.\n * * If the inputs do not form Loop(s), the classification of offsets is suspect.\n * * For best offset results, the inputs should be parallel to the xy-plane.\n * @param fragments fragments to be chained and offset\n * @param offsetDistance offset distance, applied to both sides of each fragment to produce inside and outside xy-offset curves.\n * @param gapTolerance distance to be treated as \"effectively zero\" when assembling fragments head-to-tail\n * @returns object with named chains, insideOffsets, outsideOffsets\n */\n public static collectInsideAndOutsideOffsets(\n fragments: AnyCurve[], offsetDistance: number, gapTolerance: number,\n ): { insideOffsets: AnyCurve[], outsideOffsets: AnyCurve[], chains?: AnyChain } {\n return CurveOps.collectInsideAndOutsideXYOffsets(fragments, offsetDistance, gapTolerance);\n }\n /**\n * Restructure curve fragments as Paths and Loops.\n * @param fragments fragments to be chained\n * @param gapTolerance distance to be treated as \"effectively zero\" when assembling fragments head-to-tail\n * @returns chains, possibly wrapped in a [[BagOfCurves]].\n */\n public static collectChains(fragments: AnyCurve[], gapTolerance: number = Geometry.smallMetricDistance): AnyChain | undefined {\n return CurveOps.collectChains(fragments, gapTolerance);\n }\n /**\n * Find all intersections among curves in `curvesToCut` against the boundaries of `region` and return fragments\n * of `curvesToCut`.\n * * Break `curvesToCut` into parts inside, outside, and coincident.\n * @returns output object with all fragments split among `insideParts`, `outsideParts`, and `coincidentParts`\n */\n public static splitPathsByRegionInOnOutXY(\n curvesToCut: AnyCurve | undefined, region: AnyRegion,\n ): { insideParts: AnyCurve[], outsideParts: AnyCurve[], coincidentParts: AnyCurve[] } {\n const result = { insideParts: [], outsideParts: [], coincidentParts: [] };\n const pathWithIntersectionMarkup = RegionOps.cloneCurvesWithXYSplits(curvesToCut, region);\n const splitPaths = RegionOps.splitToPathsBetweenBreaks(pathWithIntersectionMarkup, true);\n if (splitPaths instanceof CurveCollection) {\n for (const child of splitPaths.children) {\n const pointOnChild = CurveCollection.createCurveLocationDetailOnAnyCurvePrimitive(child);\n if (pointOnChild) {\n const inOnOut = RegionOps.testPointInOnOutRegionXY(region, pointOnChild.point.x, pointOnChild.point.y);\n pushToInOnOutArrays(child, inOnOut, result.outsideParts, result.coincidentParts, result.insideParts);\n }\n }\n } else if (splitPaths instanceof CurvePrimitive) {\n const pointOnChild = CurveCollection.createCurveLocationDetailOnAnyCurvePrimitive(splitPaths);\n if (pointOnChild) {\n const inOnOut = RegionOps.testPointInOnOutRegionXY(region, pointOnChild.point.x, pointOnChild.point.y);\n pushToInOnOutArrays(splitPaths, inOnOut, result.outsideParts, result.coincidentParts, result.insideParts);\n }\n }\n return result;\n }\n /**\n * If `data` is one of several forms of a rectangle, return its edge Transform.\n * * Points are considered a rectangle if, within the first 4 points:\n * * vectors from 0 to 1 and 0 to 3 are perpendicular and have a non-zero cross product\n * * vectors from 0 to 3 and 1 to 2 are the same\n * @param data points in one of several formats:\n * * LineString\n * * Loop containing rectangle content\n * * Path containing rectangle content\n * * Array of Point3d[]\n * * IndexedXYZCollection\n * @param requireClosurePoint whether to require a 5th point equal to the 1st point.\n * @returns Transform with origin at one corner, x and y columns extending along two adjacent sides, and unit\n * normal in z column. If not a rectangle, return undefined.\n */\n public static rectangleEdgeTransform(\n data: AnyCurve | Point3d[] | IndexedXYZCollection, requireClosurePoint: boolean = true,\n ): Transform | undefined {\n if (data instanceof LineString3d) {\n return this.rectangleEdgeTransform(data.packedPoints);\n } else if (data instanceof IndexedXYZCollection) {\n let dataToUse;\n if (requireClosurePoint && data.length === 5) {\n if (!Geometry.isSmallMetricDistance(data.distanceIndexIndex(0, 4)!))\n return undefined;\n dataToUse = data;\n } else if (!requireClosurePoint && data.length === 4) {\n dataToUse = data;\n } else if (data.length < (requireClosurePoint ? 5 : 4)) {\n return undefined;\n } else {\n dataToUse = GrowableXYZArray.create(data);\n PolylineCompressionContext.compressInPlaceByShortEdgeLength(dataToUse, Geometry.smallMetricDistance);\n if (dataToUse.length < (requireClosurePoint ? 5 : 4))\n return undefined;\n }\n const vector01 = dataToUse.vectorIndexIndex(0, 1)!;\n const vector03 = dataToUse.vectorIndexIndex(0, 3)!;\n const vector12 = dataToUse.vectorIndexIndex(1, 2)!;\n const normalVector = vector01.crossProduct(vector03);\n if (normalVector.normalizeInPlace()\n && vector12.isAlmostEqual(vector03)\n && vector01.isPerpendicularTo(vector03)) {\n return Transform.createOriginAndMatrixColumns(\n dataToUse.getPoint3dAtUncheckedPointIndex(0), vector01, vector03, normalVector,\n );\n }\n } else if (Array.isArray(data)) {\n return this.rectangleEdgeTransform(new Point3dArrayCarrier(data), requireClosurePoint);\n } else if (data instanceof Loop && data.children.length === 1 && data.children[0] instanceof LineString3d) {\n return this.rectangleEdgeTransform(data.children[0].packedPoints, true);\n } else if (data instanceof Path && data.children.length === 1 && data.children[0] instanceof LineString3d) {\n return this.rectangleEdgeTransform(data.children[0].packedPoints, requireClosurePoint);\n } else if (data instanceof CurveChain) {\n if (!data.checkForNonLinearPrimitives()) {\n // const linestring = LineString3d.create();\n const strokes = data.getPackedStrokes();\n if (strokes) {\n return this.rectangleEdgeTransform(strokes);\n }\n }\n }\n return undefined;\n }\n /**\n * Look for and simplify:\n * * Contiguous `LineSegment3d` and `LineString3d` objects.\n * * collect all points\n * * eliminate duplicated points\n * * eliminate points colinear with surrounding points\n * * contiguous concentric circular or elliptic arcs\n * * combine angular ranges\n * * This function can be used to compress adjacent LineSegment3ds into a LineString3d\n * @param curves Path or loop (or larger collection containing paths and loops) to be simplified\n * @param options options for tolerance and selective simplification.\n */\n public static consolidateAdjacentPrimitives(curves: CurveCollection, options?: ConsolidateAdjacentCurvePrimitivesOptions): void {\n const context = new ConsolidateAdjacentCurvePrimitivesContext(options);\n curves.dispatchToGeometryHandler(context);\n }\n /**\n * Reverse and reorder loops in the xy-plane for consistent orientation and containment.\n * @param loops multiple loops in any order and orientation, z-coordinates ignored.\n * * For best results, all overlaps should be containments, i.e., loop boundaries can touch, but should not cross.\n * @returns a region that captures the input pointers. This region is a:\n * * [[Loop]] if there is exactly one input loop. It is oriented counterclockwise.\n * * [[ParityRegion]] if input consists of exactly one outer loop with at least one hole loop.\n * Its first child is an outer loop oriented counterclockwise; all subsequent children are holes oriented\n * clockwise.\n * * [[UnionRegion]] if any other input configuration. Its children are individually ordered/oriented as in\n * the above cases.\n * @see [[PolygonOps.sortOuterAndHoleLoopsXY]]\n */\n public static sortOuterAndHoleLoopsXY(loops: Array<Loop | IndexedXYZCollection>): AnyRegion {\n const loopAndArea: SortablePolygon[] = [];\n for (const candidate of loops) {\n if (candidate instanceof Loop)\n SortablePolygon.pushLoop(loopAndArea, candidate);\n else if (candidate instanceof IndexedXYZCollection) {\n const loop = Loop.createPolygon(candidate);\n SortablePolygon.pushLoop(loopAndArea, loop);\n }\n }\n return SortablePolygon.sortAsAnyRegion(loopAndArea);\n }\n /**\n * Collect inputs that are nominally closed: regions, and physically closed curves.\n * * Physically closed input curves are each returned wrapped in a Loop to facilitate xy-algorithms,\n * but outside this limited context, these Loops only makes sense if they are planar.\n */\n private static collectRegionsAndClosedPrimitives(curves: AnyCurve | AnyCurve[], tolerance: number = Geometry.smallMetricDistance): AnyRegion[] {\n const regions: AnyRegion[] = [];\n if (!Array.isArray(curves))\n curves = [curves];\n for (const curve of curves) {\n if (curve instanceof Loop || curve instanceof ParityRegion || curve instanceof UnionRegion) {\n regions.push(curve);\n } else if (curve instanceof Path) {\n if (curve.isPhysicallyClosedCurve(tolerance))\n regions.push(Loop.create(...curve.children));\n } else if (curve instanceof CurvePrimitive) {\n if (curve.isPhysicallyClosedCurve(tolerance))\n regions.push(Loop.create(curve));\n }\n }\n return regions;\n }\n /**\n * Find all xy-areas bounded by the unstructured, possibly intersecting curves.\n * * For best results, input curves should be parallel to the xy-plane, as z-coordinates are ignored.\n * * \"Holes\" implied/bounded by inputs are _not_ preserved/discovered in output; in particular [[ParityRegion]]\n * hole loops are treated like any other positive area loops.\n * * A common use case of this method is to assemble the bounding negative-area \"exterior\" loop for each connected\n * component of input curves. Passing `addBridges = true` decreases the number of connected components for nested\n * input [[Loop]]s, and thus increases the likelihood of returning exactly one exterior loop. (This is why the\n * default value for `addBridges` is `true`.)\n * @param curvesAndRegions Any collection of curves. Each [[AnyRegion]] contributes its children _stripped of\n * parity context_.\n * @param tolerance optional distance tolerance for coincidence.\n * @param addBridges whether to add line segments to connect nested input [[Loop]]s (default is `true`). When `false`,\n * no line segments are added to the input curves, but the number of output components may be greater than expected.\n * @returns array of [[SignedLoops]], each entry of which describes the areas bounded by a single connected component:\n * * `positiveAreaLoops` contains \"interior\" loops, _including holes in ParityRegion input_. These loops have\n * positive area and counterclockwise orientation.\n * * `negativeAreaLoops` contains (probably just one) \"exterior\" loop which is ordered clockwise.\n * * `slivers` contains sliver loops that have zero area, such as appear between coincident curves.\n * * `edges` contains a [[LoopCurveLoopCurve]] object for each component edge, collecting both loops adjacent\n * to the edge and a constituent curve in each.\n */\n public static constructAllXYRegionLoops(\n curvesAndRegions: AnyCurve | AnyCurve[],\n tolerance: number = Geometry.smallMetricDistance,\n addBridges: boolean = true,\n ): SignedLoops[] {\n let primitives = RegionOps.collectCurvePrimitives(curvesAndRegions, undefined, true, true);\n primitives = TransferWithSplitArcs.clone(BagOfCurves.create(...primitives)).children as CurvePrimitive[];\n const range = this.curveArrayRange(primitives);\n const areaTol = this.computeXYAreaTolerance(range, tolerance);\n if (addBridges) { // generate a temp graph to extract its bridge edges\n const context = RegionBooleanContext.create(RegionGroupOpType.Union, RegionGroupOpType.Union);\n const regions = this.collectRegionsAndClosedPrimitives(curvesAndRegions, tolerance);\n context.addMembers(regions, undefined);\n context.annotateAndMergeCurvesInGraph(tolerance);\n context.graph.announceEdges((_graph, edge: HalfEdge) => {\n if (edge.isMaskSet(HalfEdgeMask.BRIDGE_EDGE))\n primitives.push(LineSegment3d.create(edge.getPoint3d(), edge.faceSuccessor.getPoint3d()));\n return true;\n });\n }\n const intersections = CurveCurve.allIntersectionsAmongPrimitivesXY(primitives, tolerance);\n const graph = PlanarSubdivision.assembleHalfEdgeGraph(primitives, intersections, tolerance);\n return PlanarSubdivision.collectSignedLoopSetsInHalfEdgeGraph(graph, areaTol);\n }\n /**\n * Collect all `CurvePrimitives` in loosely typed input.\n * * Always recurses into primitives within explicit collections (Path, Loop, ParityRegion, UnionRegion).\n * * Optionally recurses into hidden primitives if `smallestPossiblePrimitives` is true.\n * @param candidates input curves\n * @param collectorArray optional pre-defined output array. If defined, it is NOT cleared: primitives are appended.\n * @param smallestPossiblePrimitives if true, recurse into the children of a [[CurveChainWithDistanceIndex]]. If\n * false, push the [[CurveChainWithDistanceIndex]] instead.\n * @param explodeLinestrings if true, push a [[LineSegment3d]] for each segment of a [[LineString3d]]. If false,\n * push the [[LineString3d]] instead.\n */\n public static collectCurvePrimitives(\n candidates: AnyCurve | AnyCurve[],\n collectorArray?: CurvePrimitive[],\n smallestPossiblePrimitives: boolean = false,\n explodeLinestrings: boolean = false,\n ): CurvePrimitive[] {\n const results: CurvePrimitive[] = collectorArray === undefined ? [] : collectorArray;\n if (candidates instanceof CurvePrimitive) {\n candidates.collectCurvePrimitives(results, smallestPossiblePrimitives, explodeLinestrings);\n } else if (candidates instanceof CurveCollection) {\n candidates.collectCurvePrimitives(results, smallestPossiblePrimitives, explodeLinestrings);\n } else if (Array.isArray(candidates)) {\n for (const c of candidates) {\n this.collectCurvePrimitives(c, results, smallestPossiblePrimitives, explodeLinestrings);\n }\n }\n return results;\n }\n /**\n * Copy primitive pointers from candidates to result array, replacing each [[LineString3d]] by newly constructed\n * instances of [[LineSegment3d]].\n * @param candidates input curves\n * @return copied (captured) inputs except for the linestrings, which are exploded\n */\n public static expandLineStrings(candidates: CurvePrimitive[]): CurvePrimitive[] {\n const result: CurvePrimitive[] = [];\n for (const c of candidates) {\n if (c instanceof LineString3d) {\n for (let i = 0; i + 1 < c.packedPoints.length; i++) {\n const q = c.getIndexedSegment(i);\n if (q !== undefined)\n result.push(q);\n }\n } else {\n result.push(c);\n }\n }\n return result;\n }\n /**\n * Return the overall range of given curves.\n * @param data candidate curves\n * @param worldToLocal transform to apply to data before computing its range\n */\n public static curveArrayRange(data: any, worldToLocal?: Transform): Range3d {\n const range = Range3d.create();\n if (data instanceof GeometryQuery)\n data.extendRange(range, worldToLocal);\n else if (Array.isArray(data)) {\n for (const c of data) {\n if (c instanceof GeometryQuery)\n c.extendRange(range, worldToLocal);\n else if (c instanceof Point3d)\n range.extendPoint(c, worldToLocal);\n else if (c instanceof GrowableXYZArray)\n range.extendRange(c.getRange(worldToLocal));\n else if (Array.isArray(c))\n range.extendRange(this.curveArrayRange(c, worldToLocal));\n }\n }\n return range;\n }\n /**\n * Triangulate a stroked Loop or ParityRegion and return the graph.\n * @param polygons polygons obtained by stroking a Loop or ParityRegion, z-coordinates ignored.\n * @returns triangulated graph\n */\n private static triangulateStrokedRegionComponent(polygons: MultiLineStringDataVariant): HalfEdgeGraph | undefined {\n let graph: HalfEdgeGraph | undefined;\n if (Array.isArray(polygons)) {\n if (polygons.length === 0)\n return undefined;\n const firstEntry = polygons[0];\n if (Point3d.isAnyImmediatePointType(firstEntry)) {\n graph = Triangulator.createTriangulatedGraphFromSingleLoop(polygons as XYAndZ[] | XAndY[] | number[][]);\n } else if (polygons.length > 1) {\n let writablePolygons: IndexedReadWriteXYZCollection[];\n if (firstEntry instanceof IndexedReadWriteXYZCollection) {\n writablePolygons = polygons as IndexedReadWriteXYZCollection[];\n } else {\n writablePolygons = [];\n for (const polygon of polygons as LineStringDataVariant[])\n writablePolygons.push(GrowableXYZArray.create(polygon));\n }\n const sortedPolygons = PolygonOps.sortOuterAndHoleLoopsXY(writablePolygons);\n if (sortedPolygons.length === 1) { // below requires exactly one outer loop!\n if (graph = Triangulator.createTriangulatedGraphFromLoops(sortedPolygons[0]))\n Triangulator.flipTriangles(graph);\n }\n } else {\n graph = Triangulator.createTriangulatedGraphFromSingleLoop(firstEntry);\n }\n } else {\n graph = Triangulator.createTriangulatedGraphFromSingleLoop(polygons);\n }\n if (!graph) {\n // Last resort: try full merge. Conveniently, multiple polygons are processed with parity logic.\n if (graph = RegionOpsFaceToFaceSearch.doPolygonBoolean(polygons, [], (inA, _inB) => inA)) {\n if (Triangulator.triangulateAllPositiveAreaFaces(graph))\n Triangulator.flipTriangles(graph);\n }\n }\n return graph;\n }\n /** Stroke a Loop or ParityRegion */\n private static strokeRegionComponent(component: Loop | ParityRegion, options?: StrokeOptions): GrowableXYZArray[] {\n const strokedComponent = component.cloneStroked(options);\n // package the stroked region as polygons\n const polygons: GrowableXYZArray[] = [];\n if (strokedComponent instanceof Loop) {\n if (strokedComponent.children.length > 0 && strokedComponent.children[0] instanceof LineString3d)\n polygons.push(strokedComponent.children[0].packedPoints); // expect only 1\n } else if (strokedComponent instanceof ParityRegion) {\n for (const strokedLoop of strokedComponent.children) {\n if (strokedLoop.children.length > 0 && strokedLoop.children[0] instanceof LineString3d)\n polygons.push(strokedLoop.children[0].packedPoints); // expect only 1\n }\n }\n return polygons;\n }\n /**\n * Triangulate a Loop or ParityRegion and return the graph.\n * @param component region, z-coordinates ignored\n * @param options how to stroke loops\n * @returns triangulated graph\n */\n private static triangulateRegionComponent(component: Loop | ParityRegion, options?: StrokeOptions): HalfEdgeGraph | undefined {\n const polygons = this.strokeRegionComponent(component, options);\n return this.triangulateStrokedRegionComponent(polygons);\n }\n /**\n * Facet the region according to stroke options.\n * @note For best results, [[UnionRegion]] input should consist of non-overlapping children. See [[regionBooleanXY]].\n * @note For best results, [[ParityRegion]] input should be correctly oriented. See [[sortOuterAndHoleLoopsXY]].\n * @param region a closed xy-planar region, possibly with holes.\n * * The z-coordinates of the region are ignored. Caller is responsible for rotating the region into plane local coordinates beforehand, and reversing the rotation afterwards.\n * @param options primarily how to stroke the region boundary, but also how to facet the region interior.\n * * By default, a triangulation is returned, but if `options.maximizeConvexFacets === true`, edges between coplanar triangles are removed to return maximally convex facets.\n * @returns facets for the region, or undefined if facetting failed\n */\n public static facetRegionXY(region: AnyRegion, options?: StrokeOptions): IndexedPolyface | undefined {\n let graph: HalfEdgeGraph | undefined;\n if (region instanceof UnionRegion) {\n for (const child of region.children) {\n const childGraph = RegionOps.triangulateRegionComponent(child, options);\n if (childGraph) {\n if (!graph) {\n graph = childGraph;\n } else {\n // Graph concatenation without edge splits, clustering, and merge. We assume disjoint children so that at worst,\n // components will have unshared adjacent exterior edges that remain after expandConvexFaces. Note that calling\n // clusterAndMergeXYTheta here can create non-manifold topology!\n graph.allHalfEdges.push(...childGraph.allHalfEdges);\n }\n }\n }\n } else {\n graph = this.triangulateRegionComponent(region, options);\n }\n if (!graph)\n return undefined;\n if (options?.maximizeConvexFacets)\n HalfEdgeGraphOps.expandConvexFaces(graph);\n return PolyfaceBuilder.graphToPolyface(graph, options);\n }\n /**\n * Decompose a polygon with optional holes into an array of convex polygons.\n * @param polygon polygon and hole loops, e.g., as returned by [[CurveCollection.cloneStroked]] on a Loop or ParityRegion. All z-coordinates are ignored.\n * @param maximize whether to return maximally convex polygons. If false, triangles are returned.\n * @returns array of convex polygons, or undefined if triangulation failed\n */\n public static convexDecomposePolygonXY(polygon: MultiLineStringDataVariant, maximize: boolean = true): GrowableXYZArray[] | undefined {\n const graph = RegionOps.triangulateStrokedRegionComponent(polygon);\n if (!graph)\n return undefined;\n if (maximize)\n HalfEdgeGraphOps.expandConvexFaces(graph);\n const convexPolygons: GrowableXYZArray[] = [];\n graph.announceFaceLoops((_graph, seed) => {\n if (!seed.isMaskSet(HalfEdgeMask.EXTERIOR))\n convexPolygons.push(GrowableXYZArray.create(seed.collectAroundFace((node) => { return node.getPoint3d(); })));\n return true;\n });\n return convexPolygons;\n }\n}\n/** @internal */\nfunction pushToInOnOutArrays(\n curve: AnyCurve, select: number, arrayNegative: AnyCurve[], array0: AnyCurve[], arrayPositive: AnyCurve[],\n): void {\n if (select > 0)\n arrayPositive.push(curve);\n else if (select < 0)\n arrayNegative.push(curve);\n else\n array0.push(curve);\n}\n\n/**\n * * Options to control method `RegionOps.consolidateAdjacentPrimitives`.\n * @public\n */\nexport class ConsolidateAdjacentCurvePrimitivesOptions {\n /** True to consolidate adjacent linear geometry into a single LineString3d. */\n public consolidateLinearGeometry: boolean = true;\n /** True to consolidate contiguous compatible arcs into a single Arc3d. */\n public consolidateCompatibleArcs: boolean = true;\n /** True to consolidate the first and last primitives of a [[Loop]], allowing the start/end point to change. */\n public consolidateLoopSeam?: boolean = false;\n /** Disable LineSegment3d and LineString3d point compression. */\n public disableLinearCompression?: boolean = false;\n /** Tolerance for detecting identical points. */\n public duplicatePointTolerance: number = Geometry.smallMetricDistance;\n /** Tolerance for removing interior colinear points (if `!disableLinearCompression`). */\n public colinearPointTolerance: number = Geometry.smallMetricDistance;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"RegionOps.js","sourceRoot":"","sources":["../../../src/curve/RegionOps.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegionOpsClassificationSweeps.js","sourceRoot":"","sources":["../../../src/curve/RegionOpsClassificationSweeps.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAwB,MAAM,mBAAmB,CAAC;AAChG,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AACzF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAA2B,kBAAkB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;;;;;;;;;;;;;GAcG;AACH,MAAe,kCAAkC;IAC/C,uEAAuE;IAChE,cAAc,CAAC,KAAe;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,qCAAqC;IAC9B,eAAe,CAAC,KAAe;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,2BAA2B;IACpB,SAAS,CAAC,cAA0B,EAAE,YAAsB;QACjE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,0BAA0B;IACnB,SAAS,CAAC,cAA0B,EAAE,YAAsB;QACjE,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAYD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,oCAAqC,SAAQ,kCAAkC;IAC3E,mBAAmB,CAA8B;IACjD,YAAY,CAAY;IACxB,aAAa,CAAe;IACpC,YAAmB,kBAA+C,EAAE,YAA0B;QAC5F,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,YAAY,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,2BAA2B;QACtE,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;IAChD,CAAC;IACD,iCAAiC;IACjB,cAAc,CAAC,IAAc,IAAa,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACpH;;;OAGG;IACa,SAAS,CAAC,cAA0B,EAAE,IAAc;QAClE,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC;QACnC,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC;YAC1C,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QACvE,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACvE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IACD;;OAEG;IACa,SAAS,CAAC,cAA0B,EAAE,IAAc;QAClE,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC;QACnC,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC;YAC1C,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AACD;;;GAGG;AACH,MAAM,OAAO,yBAAyB;IACpC;;;;;;;;;OASG;IACI,MAAM,CAAC,6BAA6B,CACzC,MAAqB,EACrB,IAAc,EACd,kBAAgC,EAChC,kBAAgC,EAChC,SAA6C;QAE7C,IAAI,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC;YACpC,OAAO;QACT,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC;YACjC,OAAO;QACT,MAAM,aAAa,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;QAC3C,IAAI,UAAU,GAAG,IAAI,CAAC;QACtB,GAAG,CAAC;YACF,IAAI,SAAS,GAAG,UAAU,CAAC;YAC3B,IAAI,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBACxC,0DAA0D;gBAC1D,mEAAmE;gBACnE,kDAAkD;gBAClD,6CAA6C;gBAC7C,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC/B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzB,IAAI,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;gBAClC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;gBAC3C,SAAS,GAAG,IAAI,CAAC;gBACjB,IAAI,SAAS,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC;oBAC7C,SAAU,CAAC;wBACT,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC;wBACzB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,CAAC;4BACxC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;4BAC3C,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC;gCAC3C,OAAO;4BACT,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;4BAC7B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BACzB,QAAQ,GAAG,IAAI,CAAC;4BAChB,SAAS,GAAG,IAAI,CAAC;wBACnB,CAAC;wBACD,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;wBACrC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC;wBAClC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;4BAC3B,SAAS,CAAC,SAAS,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;4BAC7C,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gCAC9B,MAAM;4BACR,CAAC;4BACD,aAAa,CAAC,GAAG,EAAE,CAAC;4BACpB,QAAQ,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;4BACnD,aAAa,CAAC,GAAG,EAAE,CAAC;4BACpB,SAAS,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBACtD,CAAC;wBACD,IAAI,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,CAAC;4BAC3C,mBAAmB;4BACnB,OAAO;wBACT,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,8BAA8B;YAC9B,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC;QACxC,CAAC,QAAQ,UAAU,KAAK,IAAI,EAAE;QAC9B,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IACD;;;;;;;;;;OAUG;IACI,MAAM,CAAC,gBAAgB,CAAC,MAAkC,EAAE,MAAkC,EAAE,kBAA2D,EAAE,eAAyC;QAC3M,MAAM,KAAK,GAAG,IAAI,aAAa,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,YAAY,CAAC,aAAa,GAAG,YAAY,CAAC,YAAY,CAAC;QACxE,MAAM,KAAK,GAAG,SAAS,CAAC,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC/E,MAAM,KAAK,GAAG,SAAS,CAAC,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC/E,IAAI,eAAe;YACjB,eAAe,CAAC,gBAAgB,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAChD,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;YACnB,qCAAqC;YACrC,kBAAkB,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;YACjD,IAAI,eAAe;gBACjB,eAAe,CAAC,8BAA8B,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9D,iCAAiC;YACjC,kBAAkB,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;YACjD,IAAI,eAAe;gBACjB,eAAe,CAAC,8BAA8B,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9D,2DAA2D;YAC3D,MAAM,OAAO,GAAG,IAAI,qBAAqB,CAAC,KAAK,CAAC,CAAC;YACjD,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACpC,IAAI,eAAe;gBACjB,eAAe,CAAC,kBAAkB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACnD,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACxE,IAAI,gBAAgB,KAAK,SAAS;gBAChC,OAAO,SAAS,CAAC;YACnB,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC;YAC3C,MAAM,eAAe,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YACzC,MAAM,eAAe,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YACzC,MAAM,eAAe,GAAG,YAAY,GAAG,eAAe,GAAG,eAAe,CAAC;YACzE,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YACjC,MAAM,SAAS,GAAG,IAAI,oCAAoC,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;YAC7F,IAAI,CAAC,6BAA6B,CAAC,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;YACzG,IAAI,eAAe;gBACjB,eAAe,CAAC,qCAAqC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YACvE,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YAChC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YAChC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD;;;;;;;;;;;;;;;OAeG;IACI,MAAM,CAAC,qCAAqC,CACjD,KAAmC,EACnC,GAAsB,EACtB,QAA4B,EAC5B,KAAmC,EACnC,GAAsB,EACtB,wBAAiC;QAEjC,MAAM,KAAK,GAAG,IAAI,aAAa,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,YAAY,CAAC,aAAa,GAAG,YAAY,CAAC,YAAY,CAAC;QACxE,MAAM,SAAS,GAAG,oBAAoB,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACxD,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;QACxB,SAAS,CAAC,gBAAgB,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAEhF,mCAAmC;QACnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC7D,SAAS,CAAC,0BAA0B,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC7D,SAAS,CAAC,0BAA0B,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;QACD,qCAAqC;QACrC,kBAAkB,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACjD,iCAAiC;QACjC,kBAAkB,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACjD,2DAA2D;QAC3D,MAAM,OAAO,GAAG,IAAI,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACjD,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpC,SAAS,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,wBAAwB;YAC1B,SAAS,CAAC,qBAAqB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC3B,2DAAS,CAAA;IACT,6DAAU,CAAA;IACV,yEAAgB,CAAA;IAChB,wEAAgB,CAAA;AAClB,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,QAK5B;AAED;;;;;;GAMG;AACH,MAAM,OAAO,iBAAiB;IACrB,MAAM,CAAoE;IAC1E,UAAU,CAAS;IACnB,WAAW,CAAc;IAChC,YAAmB,MAAyE,EAAE,WAAwB;QACpH,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACtB,CAAC;IACM,UAAU;QACf,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,WAAW;IACf,OAAO,CAAsB;IAC7B,WAAW,CAAoB;IAC/B,MAAM,CAAuB;IAC5B,MAAM,CAAS;IACvB,YAAmB,MAA4B,EAAE,WAA8B;QAC7E,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IACD,gEAAgE;IACzD,UAAU;QACf,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO;YAC/B,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IACM,KAAK;QACV,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,CAAC,MAAM,YAAY,aAAa;gBACnC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;iBACzB,CAAC;gBACJ,MAAM,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACvD,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,oFAAoF;IAC7E,QAAQ;QACb,8CAA8C;QAC9C,IAAI,IAAI,CAAC,WAAW,KAAK,iBAAiB,CAAC,KAAK;YAC9C,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACzB,oDAAoD;QACpD,IAAI,IAAI,CAAC,WAAW,KAAK,iBAAiB,CAAC,MAAM;YAC/C,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,iDAAiD;QACjD,IAAI,IAAI,CAAC,WAAW,KAAK,iBAAiB,CAAC,YAAY;YACrD,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAC7C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,mCAAmC;IAC5B,SAAS,CAAC,IAAyD,EAAE,mBAA4B,KAAK;QAC3G,IAAI,IAAI,YAAY,IAAI,IAAI,IAAI,YAAY,YAAY,EAAE,CAAC;YACzD,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,EAA2B,CAAC;YACxD,SAAS,CAAC,6BAA6B,CAAC,WAAW,CAAC,CAAC;YACrD,WAAW,GAAG,qBAAqB,CAAC,KAAK,CAAC,WAAW,CAA0B,CAAC;YAChF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9D,CAAC;aAAM,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;YACvC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;gBACxB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;aAAM,IAAI,gBAAgB,IAAI,IAAI,YAAY,aAAa,EAAE,CAAC;YAC7D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IACD,uGAAuG;IAChG,uBAAuB,CAAC,QAAgB,EAAE,QAAgB;QAC/D,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,IAAI,KAAK;YACjB,IAAI,CAAC,MAAM,EAAE,CAAC;aACX,IAAI,KAAK,IAAI,CAAC,KAAK;YACtB,IAAI,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;CACF;AACD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,oBAAoB;IACxB,MAAM,CAAe;IACrB,MAAM,CAAe;IAC5B,mBAAmB;IACZ,aAAa,CAAe;IAC5B,KAAK,CAAiB;IACtB,gBAAgB,CAAwB;IACxC,QAAQ,CAAqB;IACpC,YAAoB,UAA6B,EAAE,UAA6B;QAC9E,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,aAAa,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC1E,IAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,oCAAoC;IAChF,CAAC;IACD;;;;;OAKG;IACI,MAAM,CAAC,MAAM,CAAC,UAA6B,EAAE,UAA6B;QAC/E,OAAO,IAAI,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC1D,CAAC;IACM,UAAU,CAAC,KAA0C,EAAE,KAA0C;QACtG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IACO,YAAY,CAAiB;IAC7B,MAAM,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAE,CAAC,CAAC,+CAA+C;IACrI;;;;;;;OAOG;IACI,cAAc;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,SAAS,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,MAAM,GAAG,GAAG,CAAC;QACjB,IAAI,CAAC,YAAY,GAAG,yBAAyB,CAAC,4BAA4B,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,oBAAoB,CAAC,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACxJ,IAAI,IAAI,CAAC,YAAY;YACnB,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAE,6CAA6C;QAC/H,MAAM,SAAS,GAAc,EAAE,CAAC;QAChC,MAAM,uBAAuB,GAAG,CAAC,MAAY,EAAE,EAAE;YAC/C,MAAM,IAAI,GAAG,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO;gBAChD,OAAO,CAAG,+BAA+B;YAC3C,IAAI,CAAC,YAAY,GAAG,yBAAyB,CAAC,4BAA4B,CAAC,MAAM,EAAE,oBAAoB,CAAC,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAC7I,IAAI,IAAI,CAAC,YAAY;gBACnB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAChD,CAAC,CAAC;QACF,KAAK,MAAM,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YACtE,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;gBAC7B,IAAI,CAAC,CAAC,MAAM,YAAY,IAAI,EAAE,CAAC;oBAC7B,uBAAuB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACpC,CAAC;qBAAM,IAAI,CAAC,CAAC,MAAM,YAAY,YAAY,EAAE,CAAC;oBAC5C,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ;wBAClC,uBAAuB,CAAC,IAAI,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,mBAAmB;YACnB,8CAA8C;YAC9C,8CAA8C;YAC9C,2CAA2C;YAC3C,kFAAkF;YAClF,2GAA2G;YAC3G,MAAM,YAAY,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,oBAAoB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;YAChI,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,EAAE,oBAAoB,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;YACtG,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YAC5E,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IACD;;;;;;OAMG;IACK,2BAA2B;QACjC,MAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,MAAM,eAAe,GAAe,EAAE,CAAC;QAEvC,kGAAkG;QAClG,MAAM,cAAc,GAAG,CAAC,IAAc,EAAW,EAAE;YACjD,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,GAAG;gBACnC,OAAO,IAAI,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACrC,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;YACpD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,iHAAiH;QACjH,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,MAAqB,EAAE,IAAc,EAAW,EAAE;YAC1E,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC/B,IAAI,IAAI,CAAC,OAAO,YAAY,mBAAmB,EAAE,CAAC;oBAChD,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;wBACvB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,YAAY,iBAAiB,EAAE,CAAC;4BAC3D,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;gCACjE,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;oCAC5H,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;oCAClC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;oCAC3C,IAAI,CAAC,WAAW,EAAE,CAAC;gCACrB,CAAC;qCAAM,CAAC;oCACN,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gCAC7B,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,gGAAgG;QAChG,uGAAuG;QACvG,IAAI,mBAA2B,CAAC;QAChC,GAAG,CAAC;YACF,mBAAmB,GAAG,CAAC,CAAC;YACxB,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;gBACnC,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;oBAClC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;oBAC3C,IAAI,CAAC,WAAW,EAAE,CAAC;oBACnB,mBAAmB,EAAE,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC,QAAQ,mBAAmB,GAAG,CAAC,EAAE;QAElC,kEAAkE;QAClE,MAAM,YAAY,GAAG,CAAC,EAAwB,EAAE,WAAoB,EAAE,QAAkB,EAAQ,EAAE;YAC9F,IAAI,EAAE,IAAI,EAAE,CAAC,OAAO,YAAY,mBAAmB,IAAI,EAAE,CAAC,QAAQ,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,IAAI,QAAQ,EAAE,CAAC;gBAC1H,IAAI,EAAE,CAAC,QAAQ,GAAG,CAAC;oBACjB,EAAE,CAAC,OAAO,CAAC,sBAAsB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;;oBAEzD,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC,CAAC;QAEJ,uGAAuG;QACvG,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC;YACxC,KAAK,gCAAgC;YACnC,OAAO,KAAK,OAAO;gBACnB,OAAO,CAAC,OAAO,YAAY,mBAAmB,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;gBAChF,OAAO,CAAC,OAAO,YAAY,mBAAmB,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;gBAChF,OAAO,CAAC,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,KAAK;gBAC/C,OAAO,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,YAAY;gBAC5D,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,CAAC;gBACvC,CAAC,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,IAAI,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,SAAU,CAAC,CAAC;oBACzG,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,IAAI,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,SAAU,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAC3G,CAAC;gBACD,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACpD,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,YAAY,GAAG,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;oBACnG,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;oBAC1F,YAAY,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;oBACjD,MAAM,YAAY,GAAG,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;oBACnG,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;oBAC1F,YAAY,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;IAC1C,CAAC;IACD;;;;;;;OAOG;IACI,6BAA6B,CAAC,iBAAyB,QAAQ,CAAC,mBAAmB;QACxF,MAAM,aAAa,GAAqB,EAAE,CAAC;QAC3C,wDAAwD;QACxD,KAAK,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YACnE,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnC,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC;gBAC7B,IAAI,MAAM,CAAC,MAAM,YAAY,aAAa,EAAE,CAAC;oBAC3C,SAAS,CAAC,sBAAsB,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;oBAC3E,OAAO,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE;wBAClC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,aAAa,GAAG,UAAU,CAAC,iCAAiC,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;QAClG,MAAM,KAAK,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,aAAa,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;QACpG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,gBAAgB,GAAG,0BAA0B,CAAC;QACnD,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IACO,qBAAqB,CAA0B;IACvD;;;;;;;OAOG;IACI,sBAAsB,CAAC,QAA4B,EAAE,oBAA6C;QACvG,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC;QAClD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC5C,KAAK,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;YAC5C,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,MAAM,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrD,MAAM,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrD,MAAM,cAAc,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9D,KAAK,MAAM,SAAS,IAAI,cAAc,CAAC,UAAU,EAAE,CAAC;YAClD,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,mBAAmB,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACzG,IAAI,gBAAgB,EAAE,CAAC;gBACrB,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC;gBAC3C,MAAM,eAAe,GAAG,YAAY,GAAG,sBAAsB,GAAG,sBAAsB,CAAC;gBACvF,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;gBACtC,yBAAyB,CAAC,6BAA6B,CACrD,IAAI,CAAC,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,IAAI,CACnF,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;IAC9C,CAAC;IACD,kCAAkC;IAClC,qBAAqB;IACrB,0BAA0B;IAC1B,wCAAwC;IACxC,qBAAqB;IACd,qBAAqB,CAAC,IAAY;QACvC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC;YAClC,IAAI,KAAK,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;gBAClC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC/C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;wBACnE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;wBACtB,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBACxB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACO,QAAQ;QACd,IAAI,IAAI,CAAC,QAAQ,KAAK,kBAAkB,CAAC,KAAK;YAC5C,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC1D,IAAI,IAAI,CAAC,QAAQ,KAAK,kBAAkB,CAAC,YAAY;YACnD,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC1D,IAAI,IAAI,CAAC,QAAQ,KAAK,kBAAkB,CAAC,OAAO;YAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC3D,IAAI,IAAI,CAAC,QAAQ,KAAK,kBAAkB,CAAC,OAAO;YAC9C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC3D,IAAI,IAAI,CAAC,QAAQ,KAAK,kBAAkB,CAAC,MAAM;YAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC3D,OAAO,KAAK,CAAC;IACf,CAAC;IACD;;;;;;;;;;OAUG;IACK,0BAA0B,CAAC,IAAc,EAAE,KAAa;QAC9D,MAAM,4BAA4B,GAAG,CAAC,MAAyB,EAAqB,EAAE;YACpF,IAAI,MAAM,CAAC,WAAW,CAAC,WAAW,KAAK,iBAAiB,CAAC,WAAW;gBAClE,OAAO,MAAM,CAAC,CAAE,qCAAqC;YACvD,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC;gBACxC,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC;gBAC3B,MAAM,CAAC,WAAW,CAAC,uBAAuB,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;YAC/E,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;QAC1B,IAAI,IAAI,YAAY,iBAAiB;YACnC,OAAO,4BAA4B,CAAC,IAAI,CAAC,CAAC;QAE5C,IAAI,IAAI,YAAY,mBAAmB,EAAE,CAAC;YACxC,kHAAkH;YAClH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAM,CAAC,MAAM,CAAC;YAClC,IAAI,MAAM,YAAY,iBAAiB;gBACrC,OAAO,4BAA4B,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,2CAA2C;IAC3C,uEAAuE;IAChE,cAAc,CAAC,aAAuB;QAC3C,aAAa,CAAC,iBAAiB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,qBAAqB;YAC5B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC,EAAE,0BAA0B,CAAC,aAAa,CAAC,CAAC,CAAC;QACvG,OAAO,IAAI,CAAC;IACd,CAAC;IACD,qCAAqC;IAC9B,eAAe,CAAC,KAAe;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IACD;;;;;;OAMG;IACI,SAAS,CAAC,cAA0B,EAAE,WAAqB;QAChE,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK;YACR,WAAW,CAAC,iBAAiB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,qBAAqB;YAC5B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,0BAA0B,CAAC,WAAW,CAAC,CAAC,CAAC;QAC9G,OAAO,IAAI,CAAC;IACd,CAAC;IACD,yBAAyB;IAClB,SAAS,CAAC,cAA0B,EAAE,WAAqB;QAChE,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;;AAEH;;;GAGG;AACH,SAAS,uBAAuB,CAC9B,MAAuC,EAAE,OAAc,EAAE,KAAY,EAAE,cAAqB;IAE5F,kCAAkC;IAClC,IAAI,aAAa,CAAC;IAClB,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAC5B,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IACtH,CAAC;SAAM,CAAC;QACN,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,WAAW,GAAG,GAAG,CAAC;IACtB,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QAClD,IAAI,MAAM,CAAC,KAAK,YAAY,aAAa,EAAE,CAAC;YAC1C,mCAAmC;QACrC,CAAC;aAAM,IAAI,MAAM,CAAC,KAAK,YAAY,KAAK,EAAE,CAAC;YACzC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAU,CAAC,CAAC;QAC/E,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAU,CAAC,CAAC;YACnF,WAAW,GAAG,OAAO,CAAC,CAAC;gBACrB,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,MAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;gBACtG,CAAC,CAAC,CAAC,CAAC;QACR,CAAC;IACH,CAAC;IACD,OAAO,aAAa,GAAG,WAAW,CAAC;AACrC,CAAC;AACD,kHAAkH;AAClH,SAAS,0BAA0B,CAAC,QAAkB;IACpD,IAAI,IAAI,GAAG,GAAG,CAAC;IACf,IAAI,IAAI,GAAG,QAAQ,CAAC;IACpB,GAAG,CAAC;QACF,IAAI,IAAK,IAAI,CAAC,QAAmB,GAAG,uBAAuB,CAAE,IAAI,CAAC,OAA+B,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IACzI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,QAAQ,EAAE;IACnD,OAAO,IAAI,CAAC;AACd,CAAC;AAQD;;;GAGG;AACH,MAAM,OAAO,cAAc;IAClB,KAAK,CAAa;IAClB,SAAS,CAAW;IACpB,KAAK,CAAU;IACtB,YAAmB,KAAiB;QAClC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IACD;;;;OAIG;IACI,aAAa,CAAC,kBAAoD,EAAE,gBAAkD;QAC3H,MAAM,cAAc,GAAG,CAAC,IAAc,EAAE,EAAE;YACxC,IAAI,kBAAkB;gBACpB,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;;gBAErC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;YACtC,OAAO,CAAC,CAAC;QACX,CAAC,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACrB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,gBAAgB;YACnB,gBAAgB,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACxE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;CACF;AACD;;;GAGG;AACH,MAAM,OAAO,mBAAmB;IACvB,UAAU,CAAmB;IAC7B,KAAK,CAAgB;IAC5B,YAAoB,KAAoB;QACtC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACvB,CAAC;IACM,MAAM,CAAC,MAAM,CAClB,KAAoB,EAAE,kBAA6D;QAEnF,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,eAAe,GAAG,mBAAmB,CAAC,iDAAiD,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAChH,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE,CAAC;YAC7C,MAAM,SAAS,GAAG,IAAI,cAAc,CAAC,cAAc,CAAC,CAAC;YACrD,SAAS,CAAC,aAAa,CAAC,kBAAkB,EAAE,0BAA0B,CAAC,CAAC;YACxE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Curve\n */\n\nimport { Geometry } from \"../Geometry\";\nimport { MultiLineStringDataVariant } from \"../geometry3d/IndexedXYZCollection\";\nimport { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\nimport { Range2d, Range3d } from \"../geometry3d/Range\";\nimport { Ray3d } from \"../geometry3d/Ray3d\";\nimport { XAndY } from \"../geometry3d/XYZProps\";\nimport { HalfEdge, HalfEdgeGraph, HalfEdgeMask, NodeToNumberFunction } from \"../topology/Graph\";\nimport { HalfEdgeGraphSearch } from \"../topology/HalfEdgeGraphSearch\";\nimport { HalfEdgeGraphMerge } from \"../topology/Merging\";\nimport { RegularizationContext } from \"../topology/RegularizeFace\";\nimport { Arc3d } from \"./Arc3d\";\nimport { CurveCurve } from \"./CurveCurve\";\nimport { CurveLocationDetail } from \"./CurveLocationDetail\";\nimport { CurvePrimitive } from \"./CurvePrimitive\";\nimport { AnyRegion } from \"./CurveTypes\";\nimport { GeometryQuery } from \"./GeometryQuery\";\nimport { PlaneAltitudeRangeContext } from \"./internalContexts/PlaneAltitudeRangeContext\";\nimport { TransferWithSplitArcs } from \"./internalContexts/TransferWithSplitArcs\";\nimport { LineSegment3d } from \"./LineSegment3d\";\nimport { Loop } from \"./Loop\";\nimport { ParityRegion } from \"./ParityRegion\";\nimport { PlanarSubdivision } from \"./Query/PlanarSubdivision\";\nimport { GraphCheckPointFunction, RegionBinaryOpType, RegionOps } from \"./RegionOps\";\nimport { UnionRegion } from \"./UnionRegion\";\n\n/**\n * base class for callbacks during region sweeps.\n * * At start of a component, `startComponent(node)` is called announcing a representative node on the outermost face.\n * * A Component in this usage is a component that is edge connected when ignoring \"exterior bridge edges\".\n * * As each face is entered, `enterFace(facePathStack, newFaceNode)` is called\n * * facePathStack[0] is the outermost node of the path from the outer face.\n * * facePathStack[1] is its inside mate.\n * * facePathStack[2k] is the outside node at crossing to face at depth k.\n * * facePathStack[2k+1] is the node where face at depth k was entered.\n * * newFaceNode is the entry node (redundant of stack tip)\n * * On retreat from a face, `leaveFace(facePathStack, faceNode)` is called.\n * * At end of component, `finishComponent (node)` is called.\n * * The base class is fully implemented to do nothing during the sweep.\n * @internal\n */\nabstract class RegionOpsFaceToFaceSearchCallbacks {\n /** Announce a representative node on the outer face of a component. */\n public startComponent(_node: HalfEdge): boolean {\n return true;\n }\n /** Announce return to outer face. */\n public finishComponent(_node: HalfEdge): boolean {\n return true;\n }\n /** Announce face entry. */\n public enterFace(_facePathStack: HalfEdge[], _newFaceNode: HalfEdge): boolean {\n return true;\n }\n /** Announce face exit. */\n public leaveFace(_facePathStack: HalfEdge[], _newFaceNode: HalfEdge): boolean {\n return true;\n }\n}\n/** Function signature to test if a pair of boolean states is to be accepted by area booleans (during face-to-face sweeps)\n * @internal\n */\ntype BinaryBooleanAcceptFunction = (stateA: boolean, stateB: boolean) => boolean;\n/** Function signature ot announce classification of a face.\n * The `faceType` parameters are\n * * -1 for a fully exterior face. This is a negative area face.\n * * 0 for a positive area face classified as \"out\" for the boolean.\n * * 1 for a positive area face classified as \"in\" for the boolean.\n */\ntype AnnounceClassifiedFace = (graph: HalfEdgeGraph, faceSeed: HalfEdge, faceType: -1 | 0 | 1, area: number) => void;\n/**\n * Implementation of `RegionOpsFaceToFaceSearchCallbacks` for binary boolean sweep with polygonal regions.\n * * For this linear-boundary case the boundary geometry is carried entirely from the coordinates in the half edges.\n * * This assumes the each node in the graph has edgeTag set to:\n * * `edgeTag === undefined` if the edge crossing does not change classification.\n * * for example, an edge added by regularization\n * * `edgeTag === 1` if this is a boundary for the first of the boolean input regions\n * * `edgeTag === 2` if this is a boundary for the second of the boolean input regions\n * * constructor\n * * takes caller-supplied function to decide whether to accept a face given its state relative to the two boolean terms.\n * * sets the in/out status of both terms to false.\n * * `startComponent` marks the entire outer face as `EXTERIOR`\n * * `enterFace`\n * * if this is a bounding edge (according to `node.faceTag`) toggle the in/out status if this boolean term.\n * * ask the faceAcceptFunction if the current term states combine to in/out for the result\n * * if out, set the `EXTERIOR` mask around the face.\n * * `leaveFace`\n * * if this is a bounding edge (according to `node.faceTag`) toggle the in/out status if this boolean term.\n * * `finishComponent` is not reimplemented.\n * @internal\n */\nclass RegionOpsBinaryBooleanSweepCallbacks extends RegionOpsFaceToFaceSearchCallbacks {\n private _faceSelectFunction: BinaryBooleanAcceptFunction;\n private _inComponent: boolean[];\n private _exteriorMask: HalfEdgeMask;\n public constructor(acceptFaceFunction: BinaryBooleanAcceptFunction, exteriorMask: HalfEdgeMask) {\n super();\n this._inComponent = [false, false, false]; // entry 0 is never reused.\n this._exteriorMask = exteriorMask;\n this._faceSelectFunction = acceptFaceFunction;\n }\n /** Mark this face as exterior */\n public override startComponent(node: HalfEdge): boolean { node.setMaskAroundFace(this._exteriorMask); return true; }\n /**\n * * If necessary, toggle a term state.\n * * if indicated, mark this face exterior.\n */\n public override enterFace(_facePathStack: HalfEdge[], node: HalfEdge): boolean {\n const thisFaceIndex = node.edgeTag;\n if (node.edgeTag === 1 || node.edgeTag === 2)\n this._inComponent[thisFaceIndex] = !this._inComponent[thisFaceIndex];\n if (!this._faceSelectFunction(this._inComponent[1], this._inComponent[2]))\n node.setMaskAroundFace(this._exteriorMask);\n return true;\n }\n /**\n * * If necessary, toggle a term state.\n */\n public override leaveFace(_facePathStack: HalfEdge[], node: HalfEdge): boolean {\n const thisFaceIndex = node.edgeTag;\n if (node.edgeTag === 1 || node.edgeTag === 2)\n this._inComponent[thisFaceIndex] = !this._inComponent[thisFaceIndex];\n return true;\n }\n}\n/**\n * Low level graph search for face classification.\n * @internal\n */\nexport class RegionOpsFaceToFaceSearch {\n /**\n * Run a DFS with face-to-face step announcements.\n * * false return from any function terminates search immediately.\n * * all reachable nodes assumed to have both visit masks clear.\n * @param graph containing graph.\n * @param seed first node to visit.\n * @param faceHasBeenVisited mask marking faces that have been seen.\n * @param nodeHasBeenVisited mask marking node-to-node step around face.\n * @param callbacks callbacks.\n */\n public static faceToFaceSearchFromOuterLoop(\n _graph: HalfEdgeGraph,\n seed: HalfEdge,\n faceHasBeenVisited: HalfEdgeMask,\n nodeHasBeenVisited: HalfEdgeMask,\n callbacks: RegionOpsFaceToFaceSearchCallbacks,\n ): void {\n if (seed.isMaskSet(faceHasBeenVisited))\n return;\n if (!callbacks.startComponent(seed))\n return;\n const facePathStack = [];\n seed.setMaskAroundFace(faceHasBeenVisited);\n let faceWalker = seed;\n do {\n let entryNode = faceWalker;\n let mate = faceWalker.edgeMate;\n if (!mate.isMaskSet(faceHasBeenVisited)) {\n // The faceWalker seed is always on the base of the stack.\n // The stack then contains even-odd pairs of (entryNode, faceNode).\n // entryNode is the node where a face was entered.\n // faceNode is another node around that face.\n facePathStack.push(faceWalker);\n facePathStack.push(mate);\n let faceNode = mate.faceSuccessor;\n mate.setMaskAroundFace(faceHasBeenVisited);\n entryNode = mate;\n if (callbacks.enterFace(facePathStack, mate)) {\n for (; ;) {\n mate = faceNode.edgeMate;\n if (!mate.isMaskSet(faceHasBeenVisited)) {\n mate.setMaskAroundFace(faceHasBeenVisited);\n if (!callbacks.enterFace(facePathStack, mate))\n return;\n facePathStack.push(faceNode);\n facePathStack.push(mate);\n faceNode = mate;\n entryNode = mate;\n }\n faceNode.setMask(nodeHasBeenVisited);\n faceNode = faceNode.faceSuccessor;\n if (faceNode === entryNode) {\n callbacks.leaveFace(facePathStack, faceNode);\n if (facePathStack.length <= 2) {\n break;\n }\n facePathStack.pop();\n faceNode = facePathStack[facePathStack.length - 1];\n facePathStack.pop();\n entryNode = facePathStack[facePathStack.length - 1];\n }\n if (faceNode.isMaskSet(nodeHasBeenVisited)) {\n // this is disaster\n return;\n }\n }\n }\n }\n // continue at outermost level\n faceWalker = faceWalker.faceSuccessor;\n } while (faceWalker !== seed);\n callbacks.finishComponent(seed);\n }\n /** Complete multi-step process for polygon binary booleans starting with arrays of coordinates.\n * * Each of the binary input terms is a collection of loops\n * * Within the binary term, in/out is determined by edge-crossing parity rules.\n * * Processing steps are\n * * Build the loops for each set.\n * * Each edge labeled with 1 or 2 as binary term identifier.\n * * find crossings among the edges.\n * * Edges are split as needed, but split preserves the edgeTag\n * * sort edges around vertices\n * * add regularization edges so holes are connected to their parent.\n */\n public static doPolygonBoolean(loopsA: MultiLineStringDataVariant, loopsB: MultiLineStringDataVariant, faceSelectFunction: (inA: boolean, inB: boolean) => boolean, graphCheckPoint?: GraphCheckPointFunction): HalfEdgeGraph | undefined {\n const graph = new HalfEdgeGraph();\n const baseMask = HalfEdgeMask.BOUNDARY_EDGE | HalfEdgeMask.PRIMARY_EDGE;\n const seedA = RegionOps.addLoopsWithEdgeTagToGraph(graph, loopsA, baseMask, 1);\n const seedB = RegionOps.addLoopsWithEdgeTagToGraph(graph, loopsB, baseMask, 2);\n if (graphCheckPoint)\n graphCheckPoint(\"unmerged loops\", graph, \"U\");\n if (seedA || seedB) {\n // split edges where they cross . . .\n HalfEdgeGraphMerge.splitIntersectingEdges(graph);\n if (graphCheckPoint)\n graphCheckPoint(\"After splitIntersectingEdges\", graph, \"S\");\n // sort radially around vertices.\n HalfEdgeGraphMerge.clusterAndMergeXYTheta(graph);\n if (graphCheckPoint)\n graphCheckPoint(\"After clusterAndMergeXYTheta\", graph, \"M\");\n // add edges to connect various components (e.g. holes!!!)\n const context = new RegularizationContext(graph);\n context.regularizeGraph(true, true);\n if (graphCheckPoint)\n graphCheckPoint(\"After regularize\", graph, \"MR\");\n const exteriorHalfEdge = HalfEdgeGraphSearch.findMinimumAreaFace(graph);\n if (exteriorHalfEdge === undefined)\n return undefined;\n const exteriorMask = HalfEdgeMask.EXTERIOR;\n const faceVisitedMask = graph.grabMask();\n const nodeVisitedMask = graph.grabMask();\n const allMasksToClear = exteriorMask | faceVisitedMask | nodeVisitedMask;\n graph.clearMask(allMasksToClear);\n const callbacks = new RegionOpsBinaryBooleanSweepCallbacks(faceSelectFunction, exteriorMask);\n this.faceToFaceSearchFromOuterLoop(graph, exteriorHalfEdge, faceVisitedMask, nodeVisitedMask, callbacks);\n if (graphCheckPoint)\n graphCheckPoint(\"After faceToFaceSearchFromOuterLoop\", graph, \"MRX\");\n graph.dropMask(faceVisitedMask);\n graph.dropMask(nodeVisitedMask);\n return graph;\n }\n return undefined;\n }\n /** Complete multi-step process for polygon binary booleans starting with arrays of coordinates.\n * * the manyLoopsAndParitySets input is an array.\n * * Each entry is one or more loops.\n * * An entry that is \"just points\" is a simple loop.\n * * An entry that is itself an array of arrays of points is a set of loops with \"parity\" -- relation:\n * * typically the first is an outer loop an others are holes.\n * * but if there is self intersection or multiple outer loops, parity rules are applied to decide inner and outer.\n * * Processing steps are\n * * Build the loops for each set.\n * * Each edge labeled with index to the outer array.\n * * find crossings among the edges.\n * * Edges are split as needed, but split preserves the edgeTag\n * * sort edges around vertices\n * * add regularization edges so holes are connected to their parent.\n * * assign inside/outside by parity within each set and overall union.\n */\n public static doBinaryBooleanBetweenMultiLoopInputs(\n dataA: MultiLineStringDataVariant[],\n opA: RegionGroupOpType,\n binaryOp: RegionBinaryOpType,\n dataB: MultiLineStringDataVariant[],\n opB: RegionGroupOpType,\n purgeSliverExteriorFaces: boolean,\n ): HalfEdgeGraph | undefined {\n const graph = new HalfEdgeGraph();\n const baseMask = HalfEdgeMask.BOUNDARY_EDGE | HalfEdgeMask.PRIMARY_EDGE;\n const callbacks = RegionBooleanContext.create(opA, opB);\n callbacks.graph = graph;\n callbacks.faceAreaFunction = (node) => HalfEdgeGraphSearch.signedFaceArea(node);\n\n // Add all the members in groupA ..\n for (const data of dataA) {\n if (data.length > 2) {\n const member = new RegionGroupMember(data, callbacks.groupA);\n RegionOps.addLoopsWithEdgeTagToGraph(graph, data, baseMask, member);\n }\n }\n for (const data of dataB) {\n if (data.length > 2) {\n const member = new RegionGroupMember(data, callbacks.groupB);\n RegionOps.addLoopsWithEdgeTagToGraph(graph, data, baseMask, member);\n }\n }\n // split edges where they cross . . .\n HalfEdgeGraphMerge.splitIntersectingEdges(graph);\n // sort radially around vertices.\n HalfEdgeGraphMerge.clusterAndMergeXYTheta(graph);\n // add edges to connect various components (e.g. holes!!!)\n const context = new RegularizationContext(graph);\n context.regularizeGraph(true, true);\n callbacks.runClassificationSweep(binaryOp);\n if (purgeSliverExteriorFaces)\n callbacks.unmaskMaskedNullFaces(HalfEdgeMask.EXTERIOR);\n return graph;\n }\n}\n\n/**\n * Enumeration of operation types \"within a group operand\" for a `RegionBooleanContext`.\n * @internal\n */\nexport enum RegionGroupOpType {\n Union = 0,\n Parity = 1,\n Intersection = 2,\n NonBounding = -1,\n}\n\n/**\n * Each loop or parity region in a `RegionBooleanContext` is recorded as a `RegionGroupMember`, which carries\n * * the Loop or parityRegion object\n * * a numeric indication of the sweep state (parity) during the classification search.\n * * a reference to the parent group (which in turn leads back to the `RegionBooleanContext`)\n * @internal\n */\nexport class RegionGroupMember {\n public region: Loop | ParityRegion | CurvePrimitive | MultiLineStringDataVariant;\n public sweepState: number;\n public parentGroup: RegionGroup;\n public constructor(region: Loop | ParityRegion | CurvePrimitive | MultiLineStringDataVariant, parentGroup: RegionGroup) {\n this.region = region;\n this.parentGroup = parentGroup;\n this.sweepState = 0;\n }\n public clearState() {\n this.sweepState = 0;\n }\n}\n\n/**\n * A `RegionGroup` is\n * * An array of `RegionGroupMembers`, carrying the regions of the Ai or Bi part of the boolean expression.\n * * The `RegionGroupOpType` to be applied among those members.\n * * Pointer to the containing context\n * * The count of number of regions known to be \"in\" as the search progresses.\n * @internal\n */\nexport class RegionGroup {\n public members: RegionGroupMember[];\n public groupOpType: RegionGroupOpType;\n public parent: RegionBooleanContext;\n private _numIn: number;\n public constructor(parent: RegionBooleanContext, groupOpType: RegionGroupOpType) {\n this.members = [];\n this.parent = parent;\n this.groupOpType = groupOpType;\n this._numIn = 0;\n }\n /** deep clear of state data -- group header plus all members */\n public clearState() {\n for (const member of this.members)\n member.clearState();\n this._numIn = 0;\n }\n public range(): Range3d {\n const range = Range3d.createNull();\n for (const m of this.members) {\n if (m.region instanceof GeometryQuery)\n m.region.extendRange(range);\n else {\n const range1 = Range3d.createFromVariantData(m.region);\n range.extendRange(range1);\n }\n }\n return range;\n }\n /** Ask if the current _numIn count qualifies as an \"in\" for this operation type. */\n public getInOut(): boolean {\n // UNION is true if one or more members are IN\n if (this.groupOpType === RegionGroupOpType.Union)\n return this._numIn > 0;\n // PARITY is true if an odd number of regions are IN\n if (this.groupOpType === RegionGroupOpType.Parity)\n return Geometry.isOdd(this._numIn);\n // INTERSECTION is true if ALL the regions are IN\n if (this.groupOpType === RegionGroupOpType.Intersection)\n return this._numIn === this.members.length;\n return false;\n }\n // push new members into the group.\n public addMember(data: AnyRegion | AnyRegion[] | LineSegment3d | undefined, allowLineSegment: boolean = false) {\n if (data instanceof Loop || data instanceof ParityRegion) {\n let cleanerData = data.clone() as (ParityRegion | Loop);\n RegionOps.consolidateAdjacentPrimitives(cleanerData);\n cleanerData = TransferWithSplitArcs.clone(cleanerData) as (ParityRegion | Loop);\n this.members.push(new RegionGroupMember(cleanerData, this));\n } else if (data instanceof UnionRegion) {\n for (const child of data.children) {\n this.addMember(child);\n }\n } else if (Array.isArray(data)) {\n for (const item of data) {\n this.addMember(item);\n }\n } else if (allowLineSegment && data instanceof LineSegment3d) {\n this.members.push(new RegionGroupMember(data, this));\n }\n }\n // update the \"in\" count _numIn according to old and new states (parity counts) for some member region.\n public recordMemberStateChange(oldState: number, newState: number) {\n const oldIn = Geometry.isOdd(oldState);\n const newIn = Geometry.isOdd(newState);\n if (!oldIn && newIn)\n this._numIn++;\n else if (oldIn && !newIn)\n this._numIn--;\n }\n}\n/**\n * A `RegionBooleanContext` carries structure and operations for binary operations between two sets of regions.\n * * In the binary operation OP (union, intersection, parity, difference), the left and right operands\n * are each a composite union, difference, or parity among multiple inputs, i.e.,\n * * (operationA among Ai) OP (operationB among Bi)\n * * where the Ai are one set of regions, being combined by operationA\n * * and the Bi are the another set of regions, being combined by operationB.\n * * Each group of Ai and Bi is a `RegionGroup`.\n * * This is an extremely delicate structure.\n * * Members are public because of the unique variety of queries, but should only be used for queries.\n * * The graph and curves in the booleans are connected by an extended pointer chain:\n * * (HalfEdge in Graph).edgeTag points to a CurveLocationDetail.\n * * (CurveLocationDetail).curve points to a curve.\n * * (Curve).parent points to RegionGroupMember.\n * * (RegionGroupMember) points to RegionGroup.\n * * (RegionGroup) points to RegionBooleanBinaryContext.\n * * So when a graph sweep crosses an edge\n * * the chain leads to a parity count in the RegionGroupMember.\n * * that can change the number of members active in the RegionGroup.\n * * which can change the state of the context.\n * @internal\n */\nexport class RegionBooleanContext implements RegionOpsFaceToFaceSearchCallbacks {\n public groupA!: RegionGroup;\n public groupB!: RegionGroup;\n /** bridge edges */\n public extraGeometry!: RegionGroup;\n public graph!: HalfEdgeGraph;\n public faceAreaFunction!: NodeToNumberFunction;\n public binaryOp: RegionBinaryOpType;\n private constructor(groupTypeA: RegionGroupOpType, groupTypeB: RegionGroupOpType) {\n this.groupA = new RegionGroup(this, groupTypeA);\n this.groupB = new RegionGroup(this, groupTypeB);\n this.extraGeometry = new RegionGroup(this, RegionGroupOpType.NonBounding);\n this.binaryOp = RegionBinaryOpType.Union; // revised in runClassificationSweep\n }\n /**\n * Create a context with both A and B groups empty.\n * * Caller follows up by calls to `context.groupA.addMember (loopOrParityRegion)` or `context.groupB.addMember (loopOrParityRegion)`\n * @param groupTypeA\n * @param groupTypeB\n */\n public static create(groupTypeA: RegionGroupOpType, groupTypeB: RegionGroupOpType): RegionBooleanContext {\n return new RegionBooleanContext(groupTypeA, groupTypeB);\n }\n public addMembers(dataA: AnyRegion | AnyRegion[] | undefined, dataB: AnyRegion | AnyRegion[] | undefined) {\n this.groupA.addMember(dataA);\n this.groupB.addMember(dataB);\n this.addConnectives();\n }\n private _workSegment?: LineSegment3d;\n private static _bridgeDirection = Vector3d.createNormalized(1.0, -0.12328974132467)!; // magic unit direction to minimize vertex hits\n /**\n * The sweep operations require access to all geometry by edge crossings and face walk.\n * If input loops are non-overlapping, there may be disconnected islands not reachable.\n * This method:\n * * finds the total range\n * * creates parallel rays from the extreme point of each loop and extending beyond the overall range\n * * places those lines in the extraGeometry group\n */\n public addConnectives() {\n const rangeA = this.groupA.range();\n const rangeB = this.groupB.range();\n const rangeAB = rangeA.union(rangeB);\n const areaTol = RegionOps.computeXYAreaTolerance(rangeAB);\n let margin = 0.1;\n this._workSegment = PlaneAltitudeRangeContext.findExtremePointsInDirection(rangeAB.corners(), RegionBooleanContext._bridgeDirection, this._workSegment);\n if (this._workSegment)\n margin *= this._workSegment.point0Ref.distanceXY(this._workSegment.point1Ref); // how much further to extend each bridge ray\n const maxPoints: Point3d[] = [];\n const findExtremePointsInLoop = (region: Loop) => {\n const area = RegionOps.computeXYArea(region);\n if (area === undefined || Math.abs(area) < areaTol)\n return; // avoid bridging trivial faces\n this._workSegment = PlaneAltitudeRangeContext.findExtremePointsInDirection(region, RegionBooleanContext._bridgeDirection, this._workSegment);\n if (this._workSegment)\n maxPoints.push(this._workSegment.point1Ref);\n };\n for (const groupMembers of [this.groupA.members, this.groupB.members]) {\n for (const m of groupMembers) {\n if (m.region instanceof Loop) {\n findExtremePointsInLoop(m.region);\n } else if (m.region instanceof ParityRegion) {\n for (const loop of m.region.children)\n findExtremePointsInLoop(loop);\n }\n }\n }\n const ray = Ray3d.createZero();\n for (const p of maxPoints) {\n // Make a line from\n // 1) exactly the max point of the loops to\n // 2) a point clearly outside the big range\n // If p came from some inner loop this will\n // 1) create a bridge from the inner loop through any containing loops (always)\n // 2) avoid crossing any containing loop at a vertex. (with high probability, but not absolutely always)\n const bridgeLength = margin + Ray3d.create(p, RegionBooleanContext._bridgeDirection, ray).intersectionWithRange3d(rangeAB).high;\n const outside = Point3d.createAdd2Scaled(p, 1.0, RegionBooleanContext._bridgeDirection, bridgeLength);\n const bridgeLine = LineSegment3d.createXYXY(p.x, p.y, outside.x, outside.y);\n this.extraGeometry.addMember(bridgeLine, true);\n }\n }\n /**\n * Simplify the graph by removing bridge edges that do not serve to connect inner and outer loops, i.e.:\n * * the bridge edge is dangling\n * * the bridge edge is adjacent to multiple faces\n * * the bridge edge is adjacent to a negative area face\n * @returns the number of extraneous bridge edges removed from the graph.\n */\n private removeExtraneousBridgeEdges(): number {\n const toHeal: HalfEdge[] = [];\n const interiorBridges: HalfEdge[] = [];\n\n // lambda test for boundary edge. Relies only on face loop orientation. Doesn't use HalfEdgeMasks!\n const isExteriorEdge = (node: HalfEdge): boolean => {\n if (this.faceAreaFunction(node) < 0.0)\n return true;\n if (!node.findAroundFace(node.edgeMate))\n return this.faceAreaFunction(node.edgeMate) < 0.0;\n return false;\n };\n\n // isolate dangling bridges, bridges separating different faces, and \"exterior\" bridges in the negative area face\n this.graph.announceEdges((_graph: HalfEdgeGraph, node: HalfEdge): boolean => {\n if (node.edgeTag !== undefined) {\n if (node.edgeTag instanceof CurveLocationDetail) {\n if (node.edgeTag.curve) {\n if (node.edgeTag.curve.parent instanceof RegionGroupMember) {\n if (node.edgeTag.curve.parent.parentGroup === this.extraGeometry) {\n if (node.isDangling || node.edgeMate.isDangling || !node.findAroundFace(node.edgeMate) || this.faceAreaFunction(node) < 0.0) {\n toHeal.push(node.vertexSuccessor);\n toHeal.push(node.edgeMate.vertexSuccessor);\n node.isolateEdge();\n } else {\n interiorBridges.push(node);\n }\n }\n }\n }\n }\n }\n return true;\n });\n\n // At this point, all bridges that were exterior are isolated, but this may have caused formerly\n // interior bridges to become exterior. Now we successively isolate exterior bridges until none remain.\n let numIsolatedThisPass: number;\n do {\n numIsolatedThisPass = 0;\n for (const node of interiorBridges) {\n if (!node.isIsolatedEdge && isExteriorEdge(node)) {\n toHeal.push(node.vertexSuccessor);\n toHeal.push(node.edgeMate.vertexSuccessor);\n node.isolateEdge();\n numIsolatedThisPass++;\n }\n }\n } while (numIsolatedThisPass > 0);\n\n // lambda to extend the detail interval on a side of a healed edge\n const mergeDetails = (he: HalfEdge | undefined, newFraction?: number, newPoint?: Point3d): void => {\n if (he && he.edgeTag instanceof CurveLocationDetail && he.sortData !== undefined && newFraction !== undefined && newPoint) {\n if (he.sortData > 0)\n he.edgeTag.captureFraction1Point1(newFraction, newPoint);\n else\n he.edgeTag.captureFractionPoint(newFraction, newPoint);\n }\n };\n\n // At this point all removable bridges are isolated. Clean up their original vertex loops, if possible.\n for (const doomedA of toHeal) {\n const doomedB = doomedA.vertexSuccessor;\n if ( // are the geometries mergeable?\n doomedA !== doomedB &&\n doomedA.edgeTag instanceof CurveLocationDetail && doomedA.sortData !== undefined &&\n doomedB.edgeTag instanceof CurveLocationDetail && doomedB.sortData !== undefined &&\n doomedA.edgeTag.curve === doomedB.edgeTag.curve &&\n doomedA.edgeTag.hasFraction1 && doomedB.edgeTag.hasFraction1 &&\n doomedA.sortData * doomedB.sortData < 0 &&\n ((doomedA.sortData > 0 && Geometry.isSmallRelative(doomedA.edgeTag.fraction - doomedB.edgeTag.fraction1!)) ||\n (doomedA.sortData < 0 && Geometry.isSmallRelative(doomedA.edgeTag.fraction1! - doomedB.edgeTag.fraction)))\n ) {\n const survivorA = HalfEdge.healEdge(doomedA, false);\n if (survivorA) {\n const endFractionA = (doomedA.sortData > 0) ? doomedA.edgeTag.fraction1 : doomedA.edgeTag.fraction;\n const endPointA = (doomedA.sortData > 0) ? doomedA.edgeTag.point1 : doomedA.edgeTag.point;\n mergeDetails(survivorA, endFractionA, endPointA);\n const endFractionB = (doomedB.sortData > 0) ? doomedB.edgeTag.fraction1 : doomedB.edgeTag.fraction;\n const endPointB = (doomedB.sortData > 0) ? doomedB.edgeTag.point1 : doomedB.edgeTag.point;\n mergeDetails(survivorA.edgeMate, endFractionB, endPointB);\n }\n }\n }\n return this.graph.deleteIsolatedEdges();\n }\n /**\n * Markup and assembly steps for geometry in the RegionGroups.\n * * Annotate connection from group to curves.\n * * groups with point data but no curves get no further annotation.\n * * compute intersections.\n * * assemble and merge the HalfEdgeGraph.\n * @param mergeTolerance absolute distance tolerance for merging loops\n */\n public annotateAndMergeCurvesInGraph(mergeTolerance: number = Geometry.smallMetricDistance) {\n const allPrimitives: CurvePrimitive[] = [];\n // ASSUME loops have fine-grained types (no linestrings)\n for (const group of [this.groupA, this.groupB, this.extraGeometry]) {\n for (const member of group.members) {\n let k = allPrimitives.length;\n if (member.region instanceof GeometryQuery) {\n RegionOps.collectCurvePrimitives(member.region, allPrimitives, true, true);\n for (; k < allPrimitives.length; k++)\n allPrimitives[k].parent = member;\n }\n }\n }\n const intersections = CurveCurve.allIntersectionsAmongPrimitivesXY(allPrimitives, mergeTolerance);\n const graph = PlanarSubdivision.assembleHalfEdgeGraph(allPrimitives, intersections, mergeTolerance);\n this.graph = graph;\n this.faceAreaFunction = faceAreaFromCurvedEdgeData;\n this.removeExtraneousBridgeEdges();\n }\n private _announceFaceFunction?: AnnounceClassifiedFace;\n /**\n * Sweep through the graph to assign in/out classifications to all faces.\n * * the classification is announced in two ways:\n * * the EXTERNAL mask is set on all half edges that are NOT interior faces.\n * * the announceFaceFunction is called once for each face.\n * @param binaryOp\n * @param announceFaceFunction\n */\n public runClassificationSweep(binaryOp: RegionBinaryOpType, announceFaceFunction?: AnnounceClassifiedFace): void {\n this._announceFaceFunction = announceFaceFunction;\n this.binaryOp = binaryOp;\n this.graph.clearMask(HalfEdgeMask.EXTERIOR);\n for (const group of [this.groupA, this.groupB])\n group.clearState();\n const faceHasBeenVisitedMask = this.graph.grabMask();\n const nodeHasBeenVisitedMask = this.graph.grabMask();\n const componentArray = GraphComponentArray.create(this.graph);\n for (const component of componentArray.components) {\n const exteriorHalfEdge = HalfEdgeGraphSearch.findMinimumAreaFace(component.faces, this.faceAreaFunction);\n if (exteriorHalfEdge) {\n const exteriorMask = HalfEdgeMask.EXTERIOR;\n const allMasksToClear = exteriorMask | faceHasBeenVisitedMask | nodeHasBeenVisitedMask;\n this.graph.clearMask(allMasksToClear);\n RegionOpsFaceToFaceSearch.faceToFaceSearchFromOuterLoop(\n this.graph, exteriorHalfEdge, faceHasBeenVisitedMask, nodeHasBeenVisitedMask, this,\n );\n }\n }\n this.graph.dropMask(faceHasBeenVisitedMask);\n this.graph.dropMask(nodeHasBeenVisitedMask);\n }\n // search the graph for faces with\n // .. exactly 2 edges\n // .. both with given mask\n // .. at least one mate is not exterior.\n // .. clear that mark\n public unmaskMaskedNullFaces(mask: number) {\n for (const nodeA of this.graph.allHalfEdges) {\n const nodeB = nodeA.faceSuccessor;\n if (nodeB.faceSuccessor === nodeA) {\n if (nodeA.getMask(mask) && nodeB.getMask(mask)) {\n if (!nodeA.edgeMate.getMask(mask) || !nodeB.edgeMate.getMask(mask)) {\n nodeA.clearMask(mask);\n nodeB.clearMask(mask);\n }\n }\n }\n }\n }\n private getInOut(): boolean {\n if (this.binaryOp === RegionBinaryOpType.Union)\n return this.groupA.getInOut() || this.groupB.getInOut();\n if (this.binaryOp === RegionBinaryOpType.Intersection)\n return this.groupA.getInOut() && this.groupB.getInOut();\n if (this.binaryOp === RegionBinaryOpType.AMinusB)\n return this.groupA.getInOut() && !this.groupB.getInOut();\n if (this.binaryOp === RegionBinaryOpType.BMinusA)\n return !this.groupA.getInOut() && this.groupB.getInOut();\n if (this.binaryOp === RegionBinaryOpType.Parity)\n return this.groupA.getInOut() !== this.groupB.getInOut();\n return false;\n }\n /**\n * Record transition across an edge as entry or exit from a RegionGroup.\n * * Work backward from the node to a RegionGroup. This path can be:\n * * If the node points to a CurveLocationDetail of a (possibly partial) curve, the path is (take a deep breath)\n * * node points to CurveLocation Detail\n * * CurveLocationDetail points to curve\n * * curve points to RegionGroupMember\n * * If the node points directly to a RegionGroup, it's ready to go!!!\n * @param node\n * @param delta\n */\n private recordTransitionAcrossEdge(node: HalfEdge, delta: number): RegionGroupMember | undefined {\n const updateRegionGroupMemberState = (member: RegionGroupMember): RegionGroupMember => {\n if (member.parentGroup.groupOpType === RegionGroupOpType.NonBounding)\n return member; // no transition across a bridge edge\n if (delta !== 0) {\n const oldSweepState = member.sweepState;\n member.sweepState += delta;\n member.parentGroup.recordMemberStateChange(oldSweepState, member.sweepState);\n }\n return member;\n };\n\n const data = node.edgeTag;\n if (data instanceof RegionGroupMember)\n return updateRegionGroupMemberState(data);\n\n if (data instanceof CurveLocationDetail) {\n // We trust that the caller has linked from the graph node to a curve which has a RegionGroupMember as its parent.\n const member = data.curve!.parent;\n if (member instanceof RegionGroupMember)\n return updateRegionGroupMemberState(member);\n }\n return undefined;\n }\n // obligations to act as sweep callback ...\n /** Announce a representative node on the outer face of a component. */\n public startComponent(outerFaceNode: HalfEdge): boolean {\n outerFaceNode.setMaskAroundFace(HalfEdgeMask.EXTERIOR);\n if (this._announceFaceFunction)\n this._announceFaceFunction(this.graph, outerFaceNode, -1, faceAreaFromCurvedEdgeData(outerFaceNode));\n return true;\n }\n /** Announce return to outer face. */\n public finishComponent(_node: HalfEdge): boolean {\n return true;\n }\n /**\n * Announce entry to a graph face.\n * * Both both sides of a graph edge are from the same RegionGroupMember.\n * * Hence \"crossing that edge\" changes the parity count for the RegionGroupMember that owns that edge by 1.\n * * The parity count for other RegionGroupMembers are never affected by this crossing.\n * * Crossing a bridge edge does not change the parity count.\n */\n public enterFace(_facePathStack: HalfEdge[], newFaceNode: HalfEdge): boolean {\n this.recordTransitionAcrossEdge(newFaceNode, 1);\n const state = this.getInOut();\n if (!state)\n newFaceNode.setMaskAroundFace(HalfEdgeMask.EXTERIOR);\n if (this._announceFaceFunction)\n this._announceFaceFunction(this.graph, newFaceNode, state ? 1 : 0, faceAreaFromCurvedEdgeData(newFaceNode));\n return true;\n }\n /** Announce face exit */\n public leaveFace(_facePathStack: HalfEdge[], oldFaceNode: HalfEdge): boolean {\n this.recordTransitionAcrossEdge(oldFaceNode, -1);\n return true;\n }\n}\n/**\n * Return xy area between (part of) a curve and the x axis through a reference point.\n * If detail is undefined or does not have both start and end fractions, just do trapezoid area.\n */\nfunction areaUnderPartialCurveXY(\n detail: CurveLocationDetail | undefined, xyStart: XAndY, xyEnd: XAndY, referencePoint: XAndY,\n): number {\n // area between trapezoid and axis\n let trapezoidArea;\n if (detail && detail.point1) {\n trapezoidArea = -(detail.point1.x - detail.point.x) * (0.5 * (detail.point.y + detail.point1.y) - referencePoint.y);\n } else {\n trapezoidArea = -(xyEnd.x - xyStart.x) * (0.5 * (xyStart.y + xyEnd.y) - referencePoint.y);\n }\n let areaToChord = 0.0;\n if (detail && detail.curve && detail.hasFraction1) {\n if (detail.curve instanceof LineSegment3d) {\n // nothing to do for a line segment\n } else if (detail.curve instanceof Arc3d) {\n areaToChord = detail.curve.areaToChordXY(detail.fraction, detail.fraction1!);\n } else {\n const partial = detail.curve.clonePartialCurve(detail.fraction, detail.fraction1!);\n areaToChord = partial ?\n RegionOps.computeXYArea(Loop.create(partial, LineSegment3d.create(detail.point1!, detail.point))) ?? 0\n : 0;\n }\n }\n return trapezoidArea + areaToChord;\n}\n/** Compute face area for a face whose edges are decorated with CurveLocationDetail for their (partial) curves. */\nfunction faceAreaFromCurvedEdgeData(faceSeed: HalfEdge): number {\n let area = 0.0;\n let edge = faceSeed;\n do {\n area += (edge.sortData as number) * areaUnderPartialCurveXY((edge.edgeTag as CurveLocationDetail), edge, edge.faceSuccessor, faceSeed);\n } while ((edge = edge.faceSuccessor) !== faceSeed);\n return area;\n}\n\n/**\n * Function to accumulate area under edges.\n * Array of nodes representing faces in a subset of a graph.\n * @internal\n */\nexport type NodeAndRangeFunction = (edge: HalfEdge, range: Range2d) => void;\n/**\n * Array of nodes representing faces in a subset of a graph.\n * @internal\n */\nexport class GraphComponent {\n public faces: HalfEdge[];\n public faceAreas: number[];\n public range: Range2d;\n public constructor(faces: HalfEdge[]) {\n this.faces = faces;\n this.range = Range2d.createNull();\n this.faceAreas = [];\n }\n /**\n * Visit all vertices and edges in the component to build face area array and composite range.\n * @param extendRangeForEdge optional function to compute edge range. If undefined, linear edge is assumed.\n * @param faceAreaFunction optional function to compute face area. If undefined, linear edges are assumed.\n */\n public buildFaceData(extendRangeForEdge: NodeAndRangeFunction | undefined, faceAreaFunction: NodeToNumberFunction | undefined) {\n const vertexFunction = (node: HalfEdge) => {\n if (extendRangeForEdge)\n extendRangeForEdge(node, this.range);\n else\n this.range.extendXY(node.x, node.y);\n return 0;\n };\n this.range.setNull();\n for (const f of this.faces) {\n f.sumAroundFace(vertexFunction);\n }\n this.faceAreas.length = 0;\n if (!faceAreaFunction)\n faceAreaFunction = (node) => HalfEdgeGraphSearch.signedFaceArea(node);\n for (const f of this.faces) {\n this.faceAreas.push(faceAreaFunction(f));\n }\n }\n}\n/**\n * Build and hold an array of component data for a HalfEdgeGraph.\n * @internal\n */\nexport class GraphComponentArray {\n public components: GraphComponent[];\n public graph: HalfEdgeGraph;\n private constructor(graph: HalfEdgeGraph) {\n this.graph = graph;\n this.components = [];\n }\n public static create(\n graph: HalfEdgeGraph, extendRangeForEdge?: (edge: HalfEdge, range: Range2d) => void,\n ): GraphComponentArray {\n const result = new GraphComponentArray(graph);\n const componentArrays = HalfEdgeGraphSearch.collectConnectedComponentsWithExteriorParityMasks(graph, undefined);\n for (const componentFaces of componentArrays) {\n const component = new GraphComponent(componentFaces);\n component.buildFaceData(extendRangeForEdge, faceAreaFromCurvedEdgeData);\n result.components.push(component);\n }\n return result;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"RegionOpsClassificationSweeps.js","sourceRoot":"","sources":["../../../src/curve/RegionOpsClassificationSweeps.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StrokeOptions.js","sourceRoot":"","sources":["../../../src/curve/StrokeOptions.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Curve\n */\n\nimport { Geometry } from \"../Geometry\";\nimport { Angle } from \"../geometry3d/Angle\";\n\n/**\n * Tolerance blob for various stroking methods.\n *\n * * Across many applications, the critical concepts are: chordTol, angleTol, maxEdgeLength\n * * Chord error is an distance measured from a curve or facet to its approximating stroke or facet.\n * * angle is the angle between two contiguous strokes or across a facet edge.\n * * maxEdgeLength is the length of a stroke or a edge of a facet.\n * * It is rare for all three to be active at once.\n * * Nearly all stroke and facet use cases will apply an angle tolerance.\n * * For curves, 15 degrees is typical\n * * For facets, 22.5 degrees is typical.\n * * Halving the angle tolerance will (roughly) make curves get twice as many strokes, and surfaces get 4 times as many facets.\n * * The angle tolerance has the useful property that its effect is independent of scale of that data. If data is suddenly scaled into millimeters rather than meters, the facet counts remain the same.\n * * When creating output for devices such as 3D printing will want a chord tolerance.\n * * For graphics display, use an angle tolerance of around 15 degrees and an chord tolerance which is the size of several pixels.\n * * Analysis meshes (e.g. Finite Elements) commonly need to apply maxEdgeLength.\n * * Using maxEdgeLength for graphics probably produces too many facets. For example, it causes long cylinders to get many nearly-square facets instead of the small number of long quads usually used for graphics.\n * * Facet tolerances are, as the Pirates' Code, guidelines, not absolute rules. Facet and stroke code may ignore tolerances in awkward situations.\n * * If multiple tolerances are in effect, the actual count will usually be based on the one that demands the most strokes or facets, unless it is so high that it violates some upper limit on the number of facets on an arc or a section of a curve.\n * @public\n */\nexport class StrokeOptions {\n /** Distance from stroke to actual geometry. */\n public chordTol?: number;\n /** Turning angle between strokes. Larger value leads to fewer strokes. */\n public angleTol?: Angle;\n /** Maximum length of a single stroke. */\n public maxEdgeLength?: number;\n /**\n * Caller expects convex facets.\n * @deprecated in 4.2.0 - will not be removed until after 2026-06-13. Never used. See [[shouldTriangulate]] and [[maximizeConvexFacets]].\n */\n public needConvexFacets?: boolean;\n /** Minimum strokes on a primitive. */\n public minStrokesPerPrimitive?: number;\n /** Whether or not to triangulate each added facet. */\n public shouldTriangulate: boolean = false;\n private _needNormals?: boolean;\n private _needTwoSided?: boolean;\n private _needParams?: boolean;\n /** Whether params are requested. */\n public get needParams(): boolean {\n return this._needParams !== undefined ? this._needParams : false;\n }\n public set needParams(value: boolean) {\n this._needParams = value;\n }\n /** Whether normals are requested */\n public get needNormals(): boolean {\n return this._needNormals !== undefined ? this._needNormals : false;\n }\n public set needNormals(value: boolean) {\n this._needNormals = value;\n }\n /**\n * Whether to request facets that are viewable from the back.\n * * Default value is true.\n * * Set to false only if the requested facets are expected to form a closed volume with outward normals,\n * indicating they are amenable to backface culling for improved display performance.\n */\n public get needTwoSided(): boolean {\n return this._needTwoSided !== undefined ? this._needTwoSided : true;\n }\n public set needTwoSided(value: boolean) {\n this._needTwoSided = value;\n }\n /** Optional color request flag */\n public needColors?: boolean;\n /** Default number of strokes for a circle. */\n public defaultCircleStrokes = 16;\n /** Ask if angleTol is specified */\n public get hasAngleTol(): boolean {\n return this.angleTol !== undefined && Math.abs(this.angleTol.radians) > 0.0;\n }\n /** Ask if chordTol is specified */\n public get hasChordTol(): boolean {\n return this.chordTol !== undefined && this.chordTol > 0.0;\n }\n /** Ask if maxEdgeLength is specified */\n public get hasMaxEdgeLength(): boolean {\n return this.maxEdgeLength !== undefined && this.maxEdgeLength > 0.0;\n }\n private _maximizeConvexFacets?: boolean;\n /**\n * Whether to post-process a planar triangulation by removing edges to maximize the size of convex facets.\n * * Setting this to true also sets [[shouldTriangulate]] to true.\n */\n public get maximizeConvexFacets(): boolean {\n return this._maximizeConvexFacets ?? false;\n }\n public set maximizeConvexFacets(value: boolean) {\n this._maximizeConvexFacets = value;\n if (value)\n this.shouldTriangulate = value;\n }\n /** Return a deep clone */\n public clone(): StrokeOptions {\n const options = new StrokeOptions();\n options.chordTol = this.chordTol;\n options.angleTol = this.angleTol?.clone();\n options.maxEdgeLength = this.maxEdgeLength;\n options.minStrokesPerPrimitive = this.minStrokesPerPrimitive;\n options.shouldTriangulate = this.shouldTriangulate;\n options._needNormals = this._needNormals;\n options._needTwoSided = this._needTwoSided;\n options._needParams = this._needParams;\n options.needColors = this.needColors;\n options.defaultCircleStrokes = this.defaultCircleStrokes;\n options._maximizeConvexFacets = this._maximizeConvexFacets;\n return options;\n }\n /** Return stroke count which is the larger of the minCount or count needed for edge length condition. */\n public applyMaxEdgeLength(minCount: number, totalLength: number): number {\n totalLength = Math.abs(totalLength);\n if (this.maxEdgeLength && this.maxEdgeLength > 0.0 && minCount * this.maxEdgeLength < totalLength) {\n minCount = Geometry.stepCount(this.maxEdgeLength, totalLength, minCount);\n }\n return minCount;\n }\n /**\n * Return stroke count which is the larger of the existing count or count needed for angle condition for given\n * sweepRadians.\n * * defaultStepRadians is assumed to be larger than zero.\n */\n public applyAngleTol(minCount: number, sweepRadians: number, defaultStepRadians: number): number {\n return StrokeOptions.applyAngleTol(this, minCount, sweepRadians, defaultStepRadians);\n }\n /**\n * Return stroke count which is the larger of minCount and the count required to turn sweepRadians, using tolerance\n * from the options.\n */\n public static applyAngleTol(\n options: StrokeOptions | undefined, minCount: number, sweepRadians: number, defaultStepRadians?: number,\n ): number {\n sweepRadians = Math.abs(sweepRadians);\n let stepRadians = defaultStepRadians ? defaultStepRadians : Math.PI / 8.0;\n if (options && options.angleTol && options.angleTol.radians > 0.0)\n stepRadians = options.angleTol.radians;\n if (minCount * stepRadians < sweepRadians)\n minCount = Geometry.stepCount(stepRadians, sweepRadians, minCount);\n return minCount;\n }\n /**\n * Return the number of strokes needed for given edgeLength curve.\n * @param options\n * @param minCount smallest allowed count\n * @param edgeLength\n */\n public static applyMaxEdgeLength(\n options: StrokeOptions | undefined, minCount: number, edgeLength: number,\n ): number {\n if (edgeLength < 0)\n edgeLength = - edgeLength;\n if (minCount < 1)\n minCount = 1;\n if (options && options.maxEdgeLength && options.maxEdgeLength * minCount < edgeLength) {\n minCount = Geometry.stepCount(options.maxEdgeLength, edgeLength, minCount);\n }\n return minCount;\n }\n /**\n * Determine a stroke count for a (partial) circular arc of given radius. This considers angle, maxEdgeLength,\n * chord, and minimum stroke.\n */\n public applyTolerancesToArc(radius: number, sweepRadians: number = Math.PI * 2): number {\n let numStrokes = 1;\n numStrokes = this.applyAngleTol(numStrokes, sweepRadians, Math.PI * 0.25);\n numStrokes = this.applyMaxEdgeLength(numStrokes, sweepRadians * radius);\n numStrokes = this.applyChordTol(numStrokes, radius, sweepRadians);\n numStrokes = this.applyMinStrokesPerPrimitive(numStrokes);\n return numStrokes;\n }\n /** Return stroke count which is the larger of existing count or count needed for circular arc chord tolerance condition. */\n public applyChordTol(minCount: number, radius: number, sweepRadians: number): number {\n if (this.chordTol && this.chordTol > 0.0 && this.chordTol < radius) {\n const a = this.chordTol;\n const stepRadians = 2.0 * Math.acos((1.0 - a / radius));\n minCount = Geometry.stepCount(stepRadians, sweepRadians, minCount);\n }\n return minCount;\n }\n /**\n * Return stroke count which is the larger of existing count or count needed for circular arc chord tol with given\n * arc length and radians\n */\n public applyChordTolToLengthAndRadians(minCount: number, length: number, sweepRadians: number): number {\n if (this.chordTol && this.chordTol > 0.0) {\n const radius = Geometry.conditionalDivideFraction(length, sweepRadians);\n if (radius !== undefined)\n return this.applyChordTol(minCount, radius, sweepRadians);\n }\n return minCount;\n }\n /** Return stroke count which is the larger of existing count or `this.minStrokesPerPrimitive` */\n public applyMinStrokesPerPrimitive(minCount: number): number {\n if (this.minStrokesPerPrimitive !== undefined && Number.isFinite(this.minStrokesPerPrimitive)\n && this.minStrokesPerPrimitive > minCount)\n minCount = this.minStrokesPerPrimitive;\n return minCount;\n }\n /**\n * Create `StrokeOptions` with defaults appropriate for curves.\n * * angle tolerance of 15 degrees.\n * * all others inactive.\n */\n public static createForCurves(): StrokeOptions {\n const options = new StrokeOptions();\n options.angleTol = Angle.createDegrees(15.0);\n return options;\n }\n /**\n * Create `StrokeOptions` with defaults appropriate for surfaces facets\n * * angle tolerance of 22.5 degrees.\n * * all others inactive.\n */\n public static createForFacets(): StrokeOptions {\n const options = new StrokeOptions();\n options.angleTol = Angle.createDegrees(22.5);\n return options;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"StrokeOptions.js","sourceRoot":"","sources":["../../../src/curve/StrokeOptions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnionRegion.js","sourceRoot":"","sources":["../../../src/curve/UnionRegion.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAO/F,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C;;;;;;GAMG;AACH,MAAM,OAAO,WAAY,SAAQ,eAAe;IAC9C,wCAAwC;IACxB,mBAAmB,GAAG,aAAa,CAAC;IACpD,yCAAyC;IAClC,mBAAmB,CAAC,KAAoB;QAC7C,OAAO,KAAK,YAAY,WAAW,CAAC;IACtC,CAAC;IACD,oDAAoD;IAC1C,SAAS,CAA6B;IAChD,kCAAkC;IAClC,IAAoB,QAAQ;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IACD,iDAAiD;IACjD;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IACD,yEAAyE;IAClE,MAAM,CAAC,MAAM,CAAC,GAAG,IAAgC;QACtD,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QACjC,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,+EAA+E;IACxE,eAAe;QACpB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,2FAA2F;IACpF,wBAAwB,CAAC,SAAkC,EAAE,gBAAwB,CAAC,CAAC;QAC5F,OAAO,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC5D,CAAC;IACD,uDAAuD;IAChD,YAAY,CAAC,OAAuB;QACzC,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC;QAChC,IAAI,KAAK,CAAC;QACV,KAAK,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACjD,IAAI,YAAY;gBACd,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,qCAAqC;IAC9B,cAAc;QACnB,OAAO,IAAI,WAAW,EAAE,CAAC;IAC3B,CAAC;IACD;;;OAGG;IACI,WAAW,CAAC,KAAe;QAChC,IAAI,KAAK,IAAI,CAAC,KAAK,YAAY,YAAY,IAAI,KAAK,YAAY,IAAI,CAAC,EAAE,CAAC;YACtE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,0CAA0C;IACnC,QAAQ,CAAC,CAAS;QACvB,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM;YAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC3B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,8EAA8E;IACvE,yBAAyB,CAAC,OAAwB;QACvD,OAAO,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;CACF"
|
|
1
|
+
{"version":3,"file":"UnionRegion.js","sourceRoot":"","sources":["../../../src/curve/UnionRegion.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAO/F,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C;;;;;;GAMG;AACH,MAAM,OAAO,WAAY,SAAQ,eAAe;IAC9C,wCAAwC;IACxB,mBAAmB,GAAG,aAAa,CAAC;IACpD,yCAAyC;IAClC,mBAAmB,CAAC,KAAoB;QAC7C,OAAO,KAAK,YAAY,WAAW,CAAC;IACtC,CAAC;IACD,oDAAoD;IAC1C,SAAS,CAA6B;IAChD,kCAAkC;IAClC,IAAoB,QAAQ;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IACD,iDAAiD;IACjD;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IACD,yEAAyE;IAClE,MAAM,CAAC,MAAM,CAAC,GAAG,IAAgC;QACtD,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QACjC,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,+EAA+E;IACxE,eAAe;QACpB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,2FAA2F;IACpF,wBAAwB,CAAC,SAAkC,EAAE,gBAAwB,CAAC,CAAC;QAC5F,OAAO,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC5D,CAAC;IACD,uDAAuD;IAChD,YAAY,CAAC,OAAuB;QACzC,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC;QAChC,IAAI,KAAK,CAAC;QACV,KAAK,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACjD,IAAI,YAAY;gBACd,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,qCAAqC;IAC9B,cAAc;QACnB,OAAO,IAAI,WAAW,EAAE,CAAC;IAC3B,CAAC;IACD;;;OAGG;IACI,WAAW,CAAC,KAAe;QAChC,IAAI,KAAK,IAAI,CAAC,KAAK,YAAY,YAAY,IAAI,KAAK,YAAY,IAAI,CAAC,EAAE,CAAC;YACtE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,0CAA0C;IACnC,QAAQ,CAAC,CAAS;QACvB,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM;YAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC3B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,8EAA8E;IACvE,yBAAyB,CAAC,OAAwB;QACvD,OAAO,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnnounceTangentStrokeHandler.js","sourceRoot":"","sources":["../../../../src/curve/internalContexts/AnnounceTangentStrokeHandler.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Curve\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { Geometry } from \"../../Geometry\";\nimport { IStrokeHandler } from \"../../geometry3d/GeometryHandler\";\nimport { Point3d, Vector3d } from \"../../geometry3d/Point3dVector3d\";\nimport { Ray3d } from \"../../geometry3d/Ray3d\";\nimport { Newton1dUnboundedApproximateDerivative } from \"../../numerics/Newton\";\nimport { CurveLocationDetail } from \"../CurveLocationDetail\";\nimport { CurvePrimitive, TangentOptions } from \"../CurvePrimitive\";\nimport { NewtonRtoRStrokeHandler } from \"./NewtonRtoRStrokeHandler\";\n\n/**\n * Context for searching for the tangent(s) to a CurvePrimitive.\n * @internal\n */\nexport class AnnounceTangentStrokeHandler extends NewtonRtoRStrokeHandler implements IStrokeHandler {\n private _curve: CurvePrimitive | undefined;\n private _announceTangent: (tangent: CurveLocationDetail) => any;\n private _spacePoint: Point3d;\n private _vectorToEye: Vector3d;\n private _distanceTol: number;\n private _distanceTolSquared: number;\n // fraction and function value on one side of an interval that may bracket a root\n private _fractionA: number = 0;\n private _functionA: number = 0;\n // fraction and function value on the other side of an interval that may bracket a root\n private _fractionB: number = 0;\n private _functionB: number = 0;\n private _numThisCurve: number = 0;\n // scratch vars to use within methods\n private _fractionMRU?: number;\n private _curveMRU?: CurvePrimitive;\n private _workRay: Ray3d;\n private _workDetail?: CurveLocationDetail;\n private _newtonSolver: Newton1dUnboundedApproximateDerivative;\n /** Constructor */\n public constructor(spacePoint: Point3d, announceTangent: (tangent: CurveLocationDetail) => any, options?: TangentOptions) {\n super();\n this._announceTangent = announceTangent;\n this._spacePoint = spacePoint;\n this._vectorToEye = options?.vectorToEye ?? Vector3d.unitZ();\n this._distanceTol = options?.distanceTol ?? Geometry.smallMetricDistance;\n this._distanceTolSquared = this._distanceTol * this._distanceTol;\n this._workRay = Ray3d.createZero();\n this.startCurvePrimitive(undefined);\n this._newtonSolver = new Newton1dUnboundedApproximateDerivative(this);\n }\n /** Specified by IStrokeHandler. */\n public needPrimaryGeometryForStrokes() {\n return true;\n }\n /** Specified by IStrokeHandler. */\n public startCurvePrimitive(curve: CurvePrimitive | undefined) {\n this._curve = curve;\n this._fractionA = 0.0;\n this._numThisCurve = 0;\n this._functionA = 0.0;\n }\n /** Specified by IStrokeHandler. */\n public endCurvePrimitive() {\n }\n /** Specified by IStrokeHandler. */\n public announceIntervalForUniformStepStrokes(\n cp: CurvePrimitive, numStrokes: number, fraction0: number, fraction1: number,\n ): void {\n this.startCurvePrimitive(cp);\n if (numStrokes < 1)\n numStrokes = 1;\n const df = 1.0 / numStrokes;\n for (let i = 0; i <= numStrokes; i++) {\n const fraction = Geometry.interpolate(fraction0, i * df, fraction1);\n cp.fractionToPointAndDerivative(fraction, this._workRay);\n this.announceRay(fraction, this._workRay);\n }\n }\n private announceCandidate(cp: CurvePrimitive, fraction: number, point: Point3d): void {\n if (this._parentCurvePrimitive)\n cp = this._parentCurvePrimitive;\n if (this._curveMRU === cp && Geometry.isAlmostEqualOptional(this._fractionMRU, fraction, Geometry.smallFloatingPoint))\n return; // avoid announcing duplicate tangents in succession (e.g., at interior stroke point)\n this._workDetail = CurveLocationDetail.createCurveFractionPoint(cp, fraction, point, this._workDetail);\n this._announceTangent(this._workDetail);\n this._fractionMRU = fraction;\n this._curveMRU = cp;\n }\n /** Specified by IStrokeHandler. */\n public announceSegmentInterval(\n cp: CurvePrimitive, point0: Point3d, point1: Point3d, _numStrokes: number, fraction0: number, fraction1: number,\n ): void {\n let fraction: number;\n let point: Point3d;\n const distance0 = this._spacePoint.distanceSquared(point0);\n const distance1 = this._spacePoint.distanceSquared(point1);\n if (distance0 < distance1) {\n fraction = fraction0;\n point = point0;\n } else {\n fraction = fraction1;\n point = point1;\n }\n // evaluate at midpoint; the endpoints may be at corners, which have ambiguous tangent\n const value = this.evaluateFunction(undefined, (fraction0 + fraction1) / 2, cp);\n if (value !== undefined && Geometry.isDistanceWithinTol(value, this._distanceTol))\n this.announceCandidate(cp, fraction, point);\n }\n /**\n * Given a function `f` and (unordered) fractions `a` and `b`, search for and announce a root of `f` in this\n * fractional interval.\n * * This method searches for a root of `f` if and only if the stroke segment defined by `(a, f(a))` and\n * `(b, f(b))` has a root. This is a HEURISTIC: given continuous `f` between `a` and `b`, a root of the stroke\n * segment implies a root of `f`, but not vice-versa. Therefore, if the strokes are not sufficiently dense,\n * this method can miss a root of `f`.\n */\n private searchInterval() {\n // directly announce at endpoint if we are extra certain it's a root; Newton can miss it if it has multiplicity > 1\n if (Geometry.isDistanceWithinTol(this._functionA, this._distanceTolSquared))\n this.announceSolutionFraction(this._fractionA);\n if (Geometry.isDistanceWithinTol(this._functionB, this._distanceTolSquared))\n this.announceSolutionFraction(this._fractionB);\n if (this._functionA * this._functionB < 0) {\n // by the Intermediate Value Theorem, a root lies between fractionA and fractionB; use Newton to find it.\n const fraction = Geometry.inverseInterpolate(this._fractionA, this._functionA, this._fractionB, this._functionB);\n if (fraction) {\n this._newtonSolver.setX(fraction);\n if (this._newtonSolver.runIterations())\n this.announceSolutionFraction(this._newtonSolver.getX());\n }\n }\n }\n private announceSolutionFraction(fraction: number) {\n if (this._curve)\n this.announceCandidate(this._curve, fraction, this._curve.fractionToPoint(fraction));\n }\n /**\n * Evaluate the univariate real-valued function for which we are finding roots.\n * * For finding the tangents to curve `X` from point `Q` as seen in a view plane with normal `N`, this\n * function is `f(t) := (Q - X(t)) dot (X'(t) cross N)`. The second vector in the dot product defines a\n * _tangent plane_ at `X(t)`.\n * * Either `pointAndDerivative` must be defined, or both `fraction` and `curve`.\n * @param pointAndDerivative pre-evaluated curve\n * @param fraction fraction at which to evaluate `curve`\n * @param curve curve to evaluate at `fraction`\n * @returns distance of `Q` from the tangent plane at `X(t)`.\n */\n private evaluateFunction(pointAndDerivative?: Ray3d, fraction?: number, curve?: CurvePrimitive): number | undefined {\n if (pointAndDerivative)\n this._workRay.setFrom(pointAndDerivative);\n else if (fraction !== undefined && curve)\n this._workRay = curve.fractionToPointAndDerivative(fraction, this._workRay);\n else\n return undefined;\n const cross = this._vectorToEye.unitCrossProduct(this._workRay.direction); // normalized so we return true distance\n return cross ? cross.dotProductStartEnd(this._workRay.origin, this._spacePoint) : undefined;\n }\n /** Specified by NewtonRtoRStrokeHandler. */\n public evaluate(fraction: number): boolean {\n const curve = this._parentCurvePrimitive ?? this._curve;\n const value = this.evaluateFunction(undefined, fraction, curve);\n if (value === undefined)\n return false;\n this.currentF = value;\n return true;\n }\n private announceRay(fraction: number, data: Ray3d): void {\n this._functionB = this.evaluateFunction(data)!;\n this._fractionB = fraction;\n if (this._numThisCurve++ > 0) // after the first stroke point, a stroke segment is defined, so we have an interval\n this.searchInterval();\n this._functionA = this._functionB;\n this._fractionA = this._fractionB;\n }\n /** Specified by IStrokeHandler. */\n public announcePointTangent(_point: Point3d, _fraction: number, _tangent: Vector3d) {\n assert(false, \"No callers expected. IStrokeHandler probably didn't need to specify this method.\");\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"AnnounceTangentStrokeHandler.js","sourceRoot":"","sources":["../../../../src/curve/internalContexts/AnnounceTangentStrokeHandler.ts"],"names":[],"mappings":"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"}
|