@itwin/core-geometry 5.5.0-dev.4 → 5.5.0-dev.5
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/lib/cjs/Geometry.d.ts +7 -0
- package/lib/cjs/Geometry.d.ts.map +1 -1
- package/lib/cjs/Geometry.js +9 -0
- package/lib/cjs/Geometry.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -1
- package/lib/cjs/bspline/BSplineCurve.js +2 -1
- package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurveOps.d.ts.map +1 -1
- package/lib/cjs/bspline/BSplineCurveOps.js +4 -1
- package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
- package/lib/cjs/bspline/BezierCurve3d.d.ts.map +1 -1
- package/lib/cjs/bspline/BezierCurve3d.js +14 -4
- package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
- package/lib/cjs/bspline/BezierCurve3dH.d.ts +2 -0
- package/lib/cjs/bspline/BezierCurve3dH.d.ts.map +1 -1
- package/lib/cjs/bspline/BezierCurve3dH.js +19 -3
- package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
- package/lib/cjs/bspline/BezierCurveBase.d.ts +8 -2
- package/lib/cjs/bspline/BezierCurveBase.d.ts.map +1 -1
- package/lib/cjs/bspline/BezierCurveBase.js +10 -4
- package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
- package/lib/cjs/clipping/AlternatingConvexClipTree.js +4 -4
- package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
- package/lib/cjs/clipping/ClipPlane.d.ts +0 -3
- package/lib/cjs/clipping/ClipPlane.d.ts.map +1 -1
- package/lib/cjs/clipping/ClipPlane.js +9 -2
- package/lib/cjs/clipping/ClipPlane.js.map +1 -1
- package/lib/cjs/clipping/ClipPrimitive.d.ts +59 -9
- package/lib/cjs/clipping/ClipPrimitive.d.ts.map +1 -1
- package/lib/cjs/clipping/ClipPrimitive.js +124 -55
- package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
- package/lib/cjs/clipping/ClipUtils.js +1 -1
- package/lib/cjs/clipping/ClipUtils.js.map +1 -1
- package/lib/cjs/clipping/ClipVector.d.ts.map +1 -1
- package/lib/cjs/clipping/ClipVector.js +12 -8
- package/lib/cjs/clipping/ClipVector.js.map +1 -1
- package/lib/cjs/clipping/ConvexClipPlaneSet.d.ts +0 -2
- package/lib/cjs/clipping/ConvexClipPlaneSet.d.ts.map +1 -1
- package/lib/cjs/clipping/ConvexClipPlaneSet.js +19 -18
- package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
- package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.d.ts +1 -1
- package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.d.ts.map +1 -1
- package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js +4 -5
- package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
- package/lib/cjs/core-geometry.d.ts +0 -1
- package/lib/cjs/core-geometry.d.ts.map +1 -1
- package/lib/cjs/core-geometry.js +0 -1
- package/lib/cjs/core-geometry.js.map +1 -1
- package/lib/cjs/curve/Arc3d.js +2 -2
- package/lib/cjs/curve/Arc3d.js.map +1 -1
- package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +12 -4
- package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
- package/lib/cjs/curve/CurveChainWithDistanceIndex.js +52 -33
- package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
- package/lib/cjs/curve/CurveCollection.js +13 -6
- package/lib/cjs/curve/CurveCollection.js.map +1 -1
- package/lib/cjs/curve/CurveCurve.js +1 -1
- package/lib/cjs/curve/CurveCurve.js.map +1 -1
- package/lib/cjs/curve/CurveFactory.d.ts.map +1 -1
- package/lib/cjs/curve/CurveFactory.js +13 -1
- package/lib/cjs/curve/CurveFactory.js.map +1 -1
- package/lib/cjs/curve/CurveLocationDetail.d.ts +12 -4
- package/lib/cjs/curve/CurveLocationDetail.d.ts.map +1 -1
- package/lib/cjs/curve/CurveLocationDetail.js +14 -5
- package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
- package/lib/cjs/curve/CurvePrimitive.d.ts +5 -4
- package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -1
- package/lib/cjs/curve/CurvePrimitive.js +7 -4
- package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
- package/lib/cjs/curve/LineString3d.d.ts +25 -16
- package/lib/cjs/curve/LineString3d.d.ts.map +1 -1
- package/lib/cjs/curve/LineString3d.js +90 -72
- package/lib/cjs/curve/LineString3d.js.map +1 -1
- package/lib/cjs/curve/Path.d.ts +0 -3
- package/lib/cjs/curve/Path.d.ts.map +1 -1
- package/lib/cjs/curve/Path.js +9 -2
- package/lib/cjs/curve/Path.js.map +1 -1
- package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
- package/lib/cjs/curve/Query/PlanarSubdivision.d.ts.map +1 -1
- package/lib/cjs/curve/Query/PlanarSubdivision.js +25 -31
- package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/cjs/curve/Query/StrokeCountChain.d.ts +7 -1
- package/lib/cjs/curve/Query/StrokeCountChain.d.ts.map +1 -1
- package/lib/cjs/curve/Query/StrokeCountChain.js +27 -36
- package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
- package/lib/cjs/curve/RegionMomentsXY.d.ts.map +1 -1
- package/lib/cjs/curve/RegionMomentsXY.js +7 -1
- package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
- package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
- package/lib/cjs/curve/RegionOps.js +8 -5
- package/lib/cjs/curve/RegionOps.js.map +1 -1
- package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
- package/lib/cjs/curve/RegionOpsClassificationSweeps.js +6 -6
- package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.js +4 -1
- package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js +6 -1
- package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.d.ts +5 -21
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js +29 -73
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts +55 -13
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js +238 -110
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js +1 -1
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
- package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts +1 -4
- package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts.map +1 -1
- package/lib/cjs/curve/spiral/DirectSpiral3d.js +9 -9
- package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts +11 -14
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -1
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.js +18 -18
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/TransitionConditionalProperties.d.ts +7 -1
- package/lib/cjs/curve/spiral/TransitionConditionalProperties.d.ts.map +1 -1
- package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
- package/lib/cjs/geometry3d/Ellipsoid.d.ts +19 -7
- package/lib/cjs/geometry3d/Ellipsoid.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Ellipsoid.js +26 -11
- package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
- package/lib/cjs/geometry3d/FrustumAnimation.d.ts.map +1 -1
- package/lib/cjs/geometry3d/FrustumAnimation.js +11 -1
- package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableFloat64Array.d.ts +5 -1
- package/lib/cjs/geometry3d/GrowableFloat64Array.d.ts.map +1 -1
- package/lib/cjs/geometry3d/GrowableFloat64Array.js +11 -1
- package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYArray.d.ts +1 -1
- package/lib/cjs/geometry3d/GrowableXYArray.js +1 -1
- package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYZArray.d.ts +49 -8
- package/lib/cjs/geometry3d/GrowableXYZArray.d.ts.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYZArray.js +90 -37
- package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts +100 -3
- package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.js +125 -0
- package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
- package/lib/cjs/geometry3d/Matrix3d.d.ts +10 -1
- package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Matrix3d.js +53 -34
- package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js +1 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dArrayCarrier.d.ts +49 -2
- package/lib/cjs/geometry3d/Point3dArrayCarrier.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Point3dArrayCarrier.js +67 -9
- package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.d.ts +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.js +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/cjs/geometry3d/PointStreaming.js +1 -1
- package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
- package/lib/cjs/geometry3d/PolygonOps.d.ts +24 -32
- package/lib/cjs/geometry3d/PolygonOps.d.ts.map +1 -1
- package/lib/cjs/geometry3d/PolygonOps.js +147 -180
- package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
- package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js +5 -5
- package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
- package/lib/cjs/geometry3d/PolylineOps.d.ts.map +1 -1
- package/lib/cjs/geometry3d/PolylineOps.js +13 -3
- package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
- package/lib/cjs/geometry3d/Range.js.map +1 -1
- package/lib/cjs/geometry3d/Ray3d.d.ts +0 -3
- package/lib/cjs/geometry3d/Ray3d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Ray3d.js +5 -1
- package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
- package/lib/cjs/geometry3d/SortablePolygon.d.ts +2 -2
- package/lib/cjs/geometry3d/SortablePolygon.d.ts.map +1 -1
- package/lib/cjs/geometry3d/SortablePolygon.js +14 -18
- package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
- package/lib/cjs/geometry3d/Transform.d.ts +8 -0
- package/lib/cjs/geometry3d/Transform.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Transform.js +15 -9
- package/lib/cjs/geometry3d/Transform.js.map +1 -1
- package/lib/cjs/numerics/ClusterableArray.d.ts +4 -2
- package/lib/cjs/numerics/ClusterableArray.d.ts.map +1 -1
- package/lib/cjs/numerics/ClusterableArray.js +6 -4
- package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
- package/lib/cjs/numerics/Newton.d.ts +3 -1
- package/lib/cjs/numerics/Newton.d.ts.map +1 -1
- package/lib/cjs/numerics/Newton.js +5 -1
- package/lib/cjs/numerics/Newton.js.map +1 -1
- package/lib/cjs/polyface/AuxData.d.ts +1 -4
- package/lib/cjs/polyface/AuxData.d.ts.map +1 -1
- package/lib/cjs/polyface/AuxData.js +5 -1
- package/lib/cjs/polyface/AuxData.js.map +1 -1
- package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js +3 -3
- package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
- package/lib/cjs/polyface/Polyface.d.ts.map +1 -1
- package/lib/cjs/polyface/Polyface.js +14 -16
- package/lib/cjs/polyface/Polyface.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceBuilder.d.ts +84 -28
- package/lib/cjs/polyface/PolyfaceBuilder.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceBuilder.js +277 -217
- package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceClip.d.ts +4 -3
- package/lib/cjs/polyface/PolyfaceClip.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceClip.js +11 -4
- package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceQuery.js +9 -7
- package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.d.ts.map +1 -1
- package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js +3 -2
- package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.d.ts +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.js +2 -2
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.d.ts.map +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js +14 -12
- package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
- package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.d.ts +1 -1
- package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.d.ts.map +1 -1
- package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js +10 -6
- package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
- package/lib/cjs/polyface/multiclip/OffsetMeshContext.js +4 -3
- package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
- package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.d.ts.map +1 -1
- package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js +3 -5
- package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
- package/lib/cjs/polyface/multiclip/XYPointBuckets.d.ts +1 -1
- package/lib/cjs/polyface/multiclip/XYPointBuckets.d.ts.map +1 -1
- package/lib/cjs/polyface/multiclip/XYPointBuckets.js +4 -8
- package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
- package/lib/cjs/serialization/BGFBAccessors.d.ts.map +1 -1
- package/lib/cjs/serialization/BGFBAccessors.js +1 -0
- package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
- package/lib/cjs/serialization/BGFBReader.d.ts.map +1 -1
- package/lib/cjs/serialization/BGFBReader.js +37 -7
- package/lib/cjs/serialization/BGFBReader.js.map +1 -1
- package/lib/cjs/serialization/BGFBWriter.d.ts +4 -4
- package/lib/cjs/serialization/BGFBWriter.d.ts.map +1 -1
- package/lib/cjs/serialization/BGFBWriter.js +24 -40
- package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
- package/lib/cjs/serialization/IModelJsonSchema.d.ts.map +1 -1
- package/lib/cjs/serialization/IModelJsonSchema.js +9 -3
- package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/cjs/serialization/SerializationHelpers.d.ts +0 -3
- package/lib/cjs/serialization/SerializationHelpers.d.ts.map +1 -1
- package/lib/cjs/serialization/SerializationHelpers.js +16 -7
- package/lib/cjs/serialization/SerializationHelpers.js.map +1 -1
- package/lib/cjs/solid/Box.d.ts +2 -2
- package/lib/cjs/solid/Box.d.ts.map +1 -1
- package/lib/cjs/solid/Box.js.map +1 -1
- package/lib/cjs/solid/Cone.d.ts +3 -2
- package/lib/cjs/solid/Cone.d.ts.map +1 -1
- package/lib/cjs/solid/Cone.js +4 -1
- package/lib/cjs/solid/Cone.js.map +1 -1
- package/lib/cjs/solid/LinearSweep.d.ts +1 -1
- package/lib/cjs/solid/LinearSweep.d.ts.map +1 -1
- package/lib/cjs/solid/LinearSweep.js +1 -1
- package/lib/cjs/solid/LinearSweep.js.map +1 -1
- package/lib/cjs/solid/RotationalSweep.d.ts.map +1 -1
- package/lib/cjs/solid/RotationalSweep.js +1 -3
- package/lib/cjs/solid/RotationalSweep.js.map +1 -1
- package/lib/cjs/solid/TorusPipe.d.ts +4 -3
- package/lib/cjs/solid/TorusPipe.d.ts.map +1 -1
- package/lib/cjs/solid/TorusPipe.js.map +1 -1
- package/lib/cjs/topology/ChainMerge.d.ts +4 -4
- package/lib/cjs/topology/ChainMerge.d.ts.map +1 -1
- package/lib/cjs/topology/ChainMerge.js +11 -1
- package/lib/cjs/topology/ChainMerge.js.map +1 -1
- package/lib/cjs/topology/Graph.d.ts +2 -0
- package/lib/cjs/topology/Graph.d.ts.map +1 -1
- package/lib/cjs/topology/Graph.js +5 -0
- package/lib/cjs/topology/Graph.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSearch.js +2 -0
- package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
- package/lib/cjs/topology/HalfEdgePointInGraphSearch.d.ts.map +1 -1
- package/lib/cjs/topology/HalfEdgePointInGraphSearch.js +23 -16
- package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
- package/lib/cjs/topology/HalfEdgePositionDetail.d.ts +20 -9
- package/lib/cjs/topology/HalfEdgePositionDetail.d.ts.map +1 -1
- package/lib/cjs/topology/HalfEdgePositionDetail.js +17 -13
- package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
- package/lib/cjs/topology/HalfEdgePriorityQueue.d.ts.map +1 -1
- package/lib/cjs/topology/HalfEdgePriorityQueue.js +3 -1
- package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
- package/lib/cjs/topology/InsertAndRetriangulateContext.d.ts +6 -2
- package/lib/cjs/topology/InsertAndRetriangulateContext.d.ts.map +1 -1
- package/lib/cjs/topology/InsertAndRetriangulateContext.js +41 -35
- package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
- package/lib/cjs/topology/MaskManager.d.ts +7 -3
- package/lib/cjs/topology/MaskManager.d.ts.map +1 -1
- package/lib/cjs/topology/MaskManager.js +10 -4
- package/lib/cjs/topology/MaskManager.js.map +1 -1
- package/lib/cjs/topology/RegularizeFace.d.ts.map +1 -1
- package/lib/cjs/topology/RegularizeFace.js.map +1 -1
- package/lib/cjs/topology/Triangulation.d.ts +2 -1
- package/lib/cjs/topology/Triangulation.d.ts.map +1 -1
- package/lib/cjs/topology/Triangulation.js +12 -7
- package/lib/cjs/topology/Triangulation.js.map +1 -1
- package/lib/esm/Geometry.d.ts +7 -0
- package/lib/esm/Geometry.d.ts.map +1 -1
- package/lib/esm/Geometry.js +9 -0
- package/lib/esm/Geometry.js.map +1 -1
- package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
- package/lib/esm/bspline/BSplineCurve.js +2 -1
- package/lib/esm/bspline/BSplineCurve.js.map +1 -1
- package/lib/esm/bspline/BSplineCurveOps.d.ts.map +1 -1
- package/lib/esm/bspline/BSplineCurveOps.js +4 -1
- package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
- package/lib/esm/bspline/BezierCurve3d.d.ts.map +1 -1
- package/lib/esm/bspline/BezierCurve3d.js +14 -4
- package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
- package/lib/esm/bspline/BezierCurve3dH.d.ts +2 -0
- package/lib/esm/bspline/BezierCurve3dH.d.ts.map +1 -1
- package/lib/esm/bspline/BezierCurve3dH.js +19 -3
- package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
- package/lib/esm/bspline/BezierCurveBase.d.ts +8 -2
- package/lib/esm/bspline/BezierCurveBase.d.ts.map +1 -1
- package/lib/esm/bspline/BezierCurveBase.js +10 -4
- package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
- package/lib/esm/clipping/AlternatingConvexClipTree.js +4 -4
- package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
- package/lib/esm/clipping/ClipPlane.d.ts +0 -3
- package/lib/esm/clipping/ClipPlane.d.ts.map +1 -1
- package/lib/esm/clipping/ClipPlane.js +9 -2
- package/lib/esm/clipping/ClipPlane.js.map +1 -1
- package/lib/esm/clipping/ClipPrimitive.d.ts +59 -9
- package/lib/esm/clipping/ClipPrimitive.d.ts.map +1 -1
- package/lib/esm/clipping/ClipPrimitive.js +124 -55
- package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
- package/lib/esm/clipping/ClipUtils.js +1 -1
- package/lib/esm/clipping/ClipUtils.js.map +1 -1
- package/lib/esm/clipping/ClipVector.d.ts.map +1 -1
- package/lib/esm/clipping/ClipVector.js +12 -8
- package/lib/esm/clipping/ClipVector.js.map +1 -1
- package/lib/esm/clipping/ConvexClipPlaneSet.d.ts +0 -2
- package/lib/esm/clipping/ConvexClipPlaneSet.d.ts.map +1 -1
- package/lib/esm/clipping/ConvexClipPlaneSet.js +20 -19
- package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
- package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.d.ts +1 -1
- package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.d.ts.map +1 -1
- package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js +4 -5
- package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
- package/lib/esm/core-geometry.d.ts +0 -1
- package/lib/esm/core-geometry.d.ts.map +1 -1
- package/lib/esm/core-geometry.js +0 -1
- package/lib/esm/core-geometry.js.map +1 -1
- package/lib/esm/curve/Arc3d.js +2 -2
- package/lib/esm/curve/Arc3d.js.map +1 -1
- package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +12 -4
- package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
- package/lib/esm/curve/CurveChainWithDistanceIndex.js +53 -34
- package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
- package/lib/esm/curve/CurveCollection.js +13 -6
- package/lib/esm/curve/CurveCollection.js.map +1 -1
- package/lib/esm/curve/CurveCurve.js +1 -1
- package/lib/esm/curve/CurveCurve.js.map +1 -1
- package/lib/esm/curve/CurveFactory.d.ts.map +1 -1
- package/lib/esm/curve/CurveFactory.js +13 -1
- package/lib/esm/curve/CurveFactory.js.map +1 -1
- package/lib/esm/curve/CurveLocationDetail.d.ts +12 -4
- package/lib/esm/curve/CurveLocationDetail.d.ts.map +1 -1
- package/lib/esm/curve/CurveLocationDetail.js +14 -5
- package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
- package/lib/esm/curve/CurvePrimitive.d.ts +5 -4
- package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
- package/lib/esm/curve/CurvePrimitive.js +7 -4
- package/lib/esm/curve/CurvePrimitive.js.map +1 -1
- package/lib/esm/curve/LineString3d.d.ts +25 -16
- package/lib/esm/curve/LineString3d.d.ts.map +1 -1
- package/lib/esm/curve/LineString3d.js +90 -72
- package/lib/esm/curve/LineString3d.js.map +1 -1
- package/lib/esm/curve/Path.d.ts +0 -3
- package/lib/esm/curve/Path.d.ts.map +1 -1
- package/lib/esm/curve/Path.js +9 -2
- package/lib/esm/curve/Path.js.map +1 -1
- package/lib/esm/curve/Query/InOutTests.js.map +1 -1
- package/lib/esm/curve/Query/PlanarSubdivision.d.ts.map +1 -1
- package/lib/esm/curve/Query/PlanarSubdivision.js +25 -31
- package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/esm/curve/Query/StrokeCountChain.d.ts +7 -1
- package/lib/esm/curve/Query/StrokeCountChain.d.ts.map +1 -1
- package/lib/esm/curve/Query/StrokeCountChain.js +27 -36
- package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
- package/lib/esm/curve/RegionMomentsXY.d.ts.map +1 -1
- package/lib/esm/curve/RegionMomentsXY.js +7 -1
- package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
- package/lib/esm/curve/RegionOps.d.ts.map +1 -1
- package/lib/esm/curve/RegionOps.js +8 -5
- package/lib/esm/curve/RegionOps.js.map +1 -1
- package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
- package/lib/esm/curve/RegionOpsClassificationSweeps.js +6 -6
- package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js +4 -1
- package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js +6 -1
- package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.d.ts +5 -21
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js +29 -73
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts +55 -13
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js +239 -111
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.js +1 -1
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
- package/lib/esm/curve/spiral/DirectSpiral3d.d.ts +1 -4
- package/lib/esm/curve/spiral/DirectSpiral3d.d.ts.map +1 -1
- package/lib/esm/curve/spiral/DirectSpiral3d.js +9 -9
- package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts +11 -14
- package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -1
- package/lib/esm/curve/spiral/IntegratedSpiral3d.js +18 -18
- package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/TransitionConditionalProperties.d.ts +7 -1
- package/lib/esm/curve/spiral/TransitionConditionalProperties.d.ts.map +1 -1
- package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
- package/lib/esm/geometry3d/Ellipsoid.d.ts +19 -7
- package/lib/esm/geometry3d/Ellipsoid.d.ts.map +1 -1
- package/lib/esm/geometry3d/Ellipsoid.js +26 -11
- package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
- package/lib/esm/geometry3d/FrustumAnimation.d.ts.map +1 -1
- package/lib/esm/geometry3d/FrustumAnimation.js +11 -1
- package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
- package/lib/esm/geometry3d/GrowableFloat64Array.d.ts +5 -1
- package/lib/esm/geometry3d/GrowableFloat64Array.d.ts.map +1 -1
- package/lib/esm/geometry3d/GrowableFloat64Array.js +11 -1
- package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
- package/lib/esm/geometry3d/GrowableXYArray.d.ts +1 -1
- package/lib/esm/geometry3d/GrowableXYArray.js +1 -1
- package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
- package/lib/esm/geometry3d/GrowableXYZArray.d.ts +49 -8
- package/lib/esm/geometry3d/GrowableXYZArray.d.ts.map +1 -1
- package/lib/esm/geometry3d/GrowableXYZArray.js +90 -37
- package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.d.ts +100 -3
- package/lib/esm/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.js +125 -0
- package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
- package/lib/esm/geometry3d/Matrix3d.d.ts +10 -1
- package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Matrix3d.js +53 -34
- package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js +1 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
- package/lib/esm/geometry3d/Point3dArrayCarrier.d.ts +49 -2
- package/lib/esm/geometry3d/Point3dArrayCarrier.d.ts.map +1 -1
- package/lib/esm/geometry3d/Point3dArrayCarrier.js +67 -9
- package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.d.ts +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.js +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/esm/geometry3d/PointStreaming.js +1 -1
- package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
- package/lib/esm/geometry3d/PolygonOps.d.ts +24 -32
- package/lib/esm/geometry3d/PolygonOps.d.ts.map +1 -1
- package/lib/esm/geometry3d/PolygonOps.js +147 -180
- package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js +5 -5
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
- package/lib/esm/geometry3d/PolylineOps.d.ts.map +1 -1
- package/lib/esm/geometry3d/PolylineOps.js +13 -3
- package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
- package/lib/esm/geometry3d/Range.js.map +1 -1
- package/lib/esm/geometry3d/Ray3d.d.ts +0 -3
- package/lib/esm/geometry3d/Ray3d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Ray3d.js +5 -1
- package/lib/esm/geometry3d/Ray3d.js.map +1 -1
- package/lib/esm/geometry3d/SortablePolygon.d.ts +2 -2
- package/lib/esm/geometry3d/SortablePolygon.d.ts.map +1 -1
- package/lib/esm/geometry3d/SortablePolygon.js +14 -18
- package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
- package/lib/esm/geometry3d/Transform.d.ts +8 -0
- package/lib/esm/geometry3d/Transform.d.ts.map +1 -1
- package/lib/esm/geometry3d/Transform.js +15 -9
- package/lib/esm/geometry3d/Transform.js.map +1 -1
- package/lib/esm/numerics/ClusterableArray.d.ts +4 -2
- package/lib/esm/numerics/ClusterableArray.d.ts.map +1 -1
- package/lib/esm/numerics/ClusterableArray.js +6 -4
- package/lib/esm/numerics/ClusterableArray.js.map +1 -1
- package/lib/esm/numerics/Newton.d.ts +3 -1
- package/lib/esm/numerics/Newton.d.ts.map +1 -1
- package/lib/esm/numerics/Newton.js +5 -1
- package/lib/esm/numerics/Newton.js.map +1 -1
- package/lib/esm/polyface/AuxData.d.ts +1 -4
- package/lib/esm/polyface/AuxData.d.ts.map +1 -1
- package/lib/esm/polyface/AuxData.js +5 -1
- package/lib/esm/polyface/AuxData.js.map +1 -1
- package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js +3 -3
- package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
- package/lib/esm/polyface/Polyface.d.ts.map +1 -1
- package/lib/esm/polyface/Polyface.js +14 -16
- package/lib/esm/polyface/Polyface.js.map +1 -1
- package/lib/esm/polyface/PolyfaceBuilder.d.ts +84 -28
- package/lib/esm/polyface/PolyfaceBuilder.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceBuilder.js +277 -217
- package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/esm/polyface/PolyfaceClip.d.ts +4 -3
- package/lib/esm/polyface/PolyfaceClip.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceClip.js +11 -4
- package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
- package/lib/esm/polyface/PolyfaceData.js.map +1 -1
- package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceQuery.js +9 -7
- package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.d.ts.map +1 -1
- package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js +3 -2
- package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeNode.d.ts +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeNode.js +2 -2
- package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.d.ts.map +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js +14 -12
- package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
- package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.d.ts +1 -1
- package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.d.ts.map +1 -1
- package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js +10 -6
- package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
- package/lib/esm/polyface/multiclip/OffsetMeshContext.js +4 -3
- package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
- package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.d.ts.map +1 -1
- package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js +3 -5
- package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
- package/lib/esm/polyface/multiclip/XYPointBuckets.d.ts +1 -1
- package/lib/esm/polyface/multiclip/XYPointBuckets.d.ts.map +1 -1
- package/lib/esm/polyface/multiclip/XYPointBuckets.js +4 -8
- package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
- package/lib/esm/serialization/BGFBAccessors.d.ts.map +1 -1
- package/lib/esm/serialization/BGFBAccessors.js +1 -0
- package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
- package/lib/esm/serialization/BGFBReader.d.ts.map +1 -1
- package/lib/esm/serialization/BGFBReader.js +37 -7
- package/lib/esm/serialization/BGFBReader.js.map +1 -1
- package/lib/esm/serialization/BGFBWriter.d.ts +4 -4
- package/lib/esm/serialization/BGFBWriter.d.ts.map +1 -1
- package/lib/esm/serialization/BGFBWriter.js +24 -40
- package/lib/esm/serialization/BGFBWriter.js.map +1 -1
- package/lib/esm/serialization/IModelJsonSchema.d.ts.map +1 -1
- package/lib/esm/serialization/IModelJsonSchema.js +9 -3
- package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/esm/serialization/SerializationHelpers.d.ts +0 -3
- package/lib/esm/serialization/SerializationHelpers.d.ts.map +1 -1
- package/lib/esm/serialization/SerializationHelpers.js +16 -7
- package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
- package/lib/esm/solid/Box.d.ts +2 -2
- package/lib/esm/solid/Box.d.ts.map +1 -1
- package/lib/esm/solid/Box.js.map +1 -1
- package/lib/esm/solid/Cone.d.ts +3 -2
- package/lib/esm/solid/Cone.d.ts.map +1 -1
- package/lib/esm/solid/Cone.js +4 -1
- package/lib/esm/solid/Cone.js.map +1 -1
- package/lib/esm/solid/LinearSweep.d.ts +1 -1
- package/lib/esm/solid/LinearSweep.d.ts.map +1 -1
- package/lib/esm/solid/LinearSweep.js +1 -1
- package/lib/esm/solid/LinearSweep.js.map +1 -1
- package/lib/esm/solid/RotationalSweep.d.ts.map +1 -1
- package/lib/esm/solid/RotationalSweep.js +1 -3
- package/lib/esm/solid/RotationalSweep.js.map +1 -1
- package/lib/esm/solid/TorusPipe.d.ts +4 -3
- package/lib/esm/solid/TorusPipe.d.ts.map +1 -1
- package/lib/esm/solid/TorusPipe.js.map +1 -1
- package/lib/esm/topology/ChainMerge.d.ts +4 -4
- package/lib/esm/topology/ChainMerge.d.ts.map +1 -1
- package/lib/esm/topology/ChainMerge.js +11 -1
- package/lib/esm/topology/ChainMerge.js.map +1 -1
- package/lib/esm/topology/Graph.d.ts +2 -0
- package/lib/esm/topology/Graph.d.ts.map +1 -1
- package/lib/esm/topology/Graph.js +5 -0
- package/lib/esm/topology/Graph.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSearch.js +2 -0
- package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
- package/lib/esm/topology/HalfEdgePointInGraphSearch.d.ts.map +1 -1
- package/lib/esm/topology/HalfEdgePointInGraphSearch.js +23 -16
- package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
- package/lib/esm/topology/HalfEdgePositionDetail.d.ts +20 -9
- package/lib/esm/topology/HalfEdgePositionDetail.d.ts.map +1 -1
- package/lib/esm/topology/HalfEdgePositionDetail.js +17 -13
- package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
- package/lib/esm/topology/HalfEdgePriorityQueue.d.ts.map +1 -1
- package/lib/esm/topology/HalfEdgePriorityQueue.js +4 -2
- package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
- package/lib/esm/topology/InsertAndRetriangulateContext.d.ts +6 -2
- package/lib/esm/topology/InsertAndRetriangulateContext.d.ts.map +1 -1
- package/lib/esm/topology/InsertAndRetriangulateContext.js +41 -35
- package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
- package/lib/esm/topology/MaskManager.d.ts +7 -3
- package/lib/esm/topology/MaskManager.d.ts.map +1 -1
- package/lib/esm/topology/MaskManager.js +10 -4
- package/lib/esm/topology/MaskManager.js.map +1 -1
- package/lib/esm/topology/RegularizeFace.d.ts.map +1 -1
- package/lib/esm/topology/RegularizeFace.js.map +1 -1
- package/lib/esm/topology/Triangulation.d.ts +2 -1
- package/lib/esm/topology/Triangulation.d.ts.map +1 -1
- package/lib/esm/topology/Triangulation.js +12 -7
- package/lib/esm/topology/Triangulation.js.map +1 -1
- package/package.json +3 -3
- package/lib/cjs/serialization/GeometrySamples.d.ts +0 -705
- package/lib/cjs/serialization/GeometrySamples.d.ts.map +0 -1
- package/lib/cjs/serialization/GeometrySamples.js +0 -2433
- package/lib/cjs/serialization/GeometrySamples.js.map +0 -1
- package/lib/esm/serialization/GeometrySamples.d.ts +0 -705
- package/lib/esm/serialization/GeometrySamples.d.ts.map +0 -1
- package/lib/esm/serialization/GeometrySamples.js +0 -2428
- package/lib/esm/serialization/GeometrySamples.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegularizeFace.d.ts","sourceRoot":"","sources":["../../../src/topology/RegularizeFace.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAgB,MAAM,SAAS,CAAC;AAGhE;;;GAGG;AACH,qBAAa,qBAAqB;IAMhC,OAAc,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;gBAC1F,KAAK,EAAE,aAAa;IAUvC;;OAEG;IACI,KAAK,EAAE,aAAa,CAAC;IAC5B,6GAA6G;IACtG,OAAO,EAAE,QAAQ,EAAE,CAAC;IAC3B,8GAA8G;IACvG,SAAS,EAAE,QAAQ,EAAE,CAAC;IAC7B,2FAA2F;IACpF,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAC5B,6FAA6F;IACtF,WAAW,EAAE,QAAQ,EAAE,CAAC;IAE/B,kGAAkG;IAC3F,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAC5B,oGAAoG;IAC7F,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAC5B;;;;OAIG;IACI,+BAA+B,CAAC,QAAQ,EAAE,QAAQ;IAuCzD;;;;OAIG;IACI,uCAAuC,CAAC,cAAc,EAAE,QAAQ,EAAE;IAsCzE,OAAO,CAAC,UAAU;IAMlB;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;
|
|
1
|
+
{"version":3,"file":"RegularizeFace.d.ts","sourceRoot":"","sources":["../../../src/topology/RegularizeFace.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAgB,MAAM,SAAS,CAAC;AAGhE;;;GAGG;AACH,qBAAa,qBAAqB;IAMhC,OAAc,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;gBAC1F,KAAK,EAAE,aAAa;IAUvC;;OAEG;IACI,KAAK,EAAE,aAAa,CAAC;IAC5B,6GAA6G;IACtG,OAAO,EAAE,QAAQ,EAAE,CAAC;IAC3B,8GAA8G;IACvG,SAAS,EAAE,QAAQ,EAAE,CAAC;IAC7B,2FAA2F;IACpF,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAC5B,6FAA6F;IACtF,WAAW,EAAE,QAAQ,EAAE,CAAC;IAE/B,kGAAkG;IAC3F,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAC5B,oGAAoG;IAC7F,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAC5B;;;;OAIG;IACI,+BAA+B,CAAC,QAAQ,EAAE,QAAQ;IAuCzD;;;;OAIG;IACI,uCAAuC,CAAC,cAAc,EAAE,QAAQ,EAAE;IAsCzE,OAAO,CAAC,UAAU;IAMlB;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IA2B1B;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IA+B/B,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,gCAAgC;IAaxC,wGAAwG;IACxG,OAAO,CAAC,iBAAiB;IASzB;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAcjB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,iBAAiB;IAiCzB;;;;;;;;;;OAUG;IACI,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,GAAE,OAAc,EAAE,SAAS,GAAE,OAAc;IAKrF,eAAe,CAAC,OAAO,GAAE,OAAc,EAAE,SAAS,GAAE,OAAc;IAKzE,yEAAyE;WAC3D,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS;IAsBlE;;;;;;OAMG;WACW,gCAAgC,CAC5C,KAAK,EAAE,aAAa,EACpB,gBAAgB,EAAE,OAAO,EACzB,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,QAAQ,GAAG,SAAS,EAChD,WAAW,EAAE,QAAQ,EAAE,GAAG,SAAS,EACnC,aAAa,EAAE,QAAQ,EAAE,GAAG,SAAS;CAwBxC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegularizeFace.js","sourceRoot":"","sources":["../../../src/topology/RegularizeFace.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Topology\r\n */\r\n\r\nimport { HalfEdge, HalfEdgeGraph, HalfEdgeMask } from \"./Graph\";\r\nimport { HalfEdgeGraphOps } from \"./Merging\";\r\n\r\n/**\r\n * * Context for regularizing single faces.\r\n * @internal\r\n */\r\nexport class RegularizationContext {\r\n // For debugging use ... \"almost always\" undefined.\r\n // If defined, it is called with each inserted node pair.\r\n // scale will be either plus or minus one.\r\n // when it is negative, the node coordinates (both x and y) have been negated.\r\n // The call is made after full insertion into vertex loop.\r\n public static announceEdge?: (graph: HalfEdgeGraph, nodeA: HalfEdge, nodeB: HalfEdge, scale: number) => void;\r\n public constructor(graph: HalfEdgeGraph) {\r\n this.graph = graph;\r\n this.upEdges = [];\r\n this.downEdges = [];\r\n this.bottomPeaks = [];\r\n this.topPeaks = [];\r\n this.localMin = [];\r\n this.localMax = [];\r\n }\r\n\r\n /**\r\n * These are public only for testing.\r\n */\r\n public graph: HalfEdgeGraph;\r\n /** array of edges directed upward. Turn can be left or right, but is not large enough to be a min or max */\r\n public upEdges: HalfEdge[];\r\n /** array of edges directed downward, Turn can be left or right, but is not large enough to be a min or max */\r\n public downEdges: HalfEdge[];\r\n /** Array of edges whose start is an upward peak (right turn, inbound up, outbound down) */\r\n public topPeaks: HalfEdge[];\r\n /** Array of edges whose start is an downward peak (right turn, inbound down, outbound up) */\r\n public bottomPeaks: HalfEdge[];\r\n\r\n /** Array of edges at local minima (left turn, inbound down, outbound up). Ensuing chain is up */\r\n public localMin: HalfEdge[];\r\n /** Array of edges at local maxima (left turn, inbound up, outbound down). Ensuing chain is down */\r\n public localMax: HalfEdge[];\r\n /**\r\n * Collect (and classify) all the edges around a single face.\r\n * * The various arrays are collected: upEdges, downEdges, topPeaks, bottomPeaks, upChains, downChains\r\n * @param faceSeed face to examine\r\n */\r\n public collectVerticalEventsAroundFace(faceSeed: HalfEdge) {\r\n let nodeA = faceSeed;\r\n let nodeB;\r\n let nodeC;\r\n let abUp;\r\n let bcUp;\r\n this.upEdges.length = 0;\r\n this.downEdges.length = 0;\r\n this.topPeaks.length = 0;\r\n this.bottomPeaks.length = 0;\r\n this.localMin.length = 0;\r\n this.localMax.length = 0;\r\n do {\r\n nodeB = nodeA.faceSuccessor;\r\n nodeC = nodeB.faceSuccessor;\r\n abUp = HalfEdgeGraphOps.compareNodesYXUp(nodeA, nodeB) < 0;\r\n bcUp = HalfEdgeGraphOps.compareNodesYXUp(nodeB, nodeC) < 0;\r\n if (abUp) {\r\n this.upEdges.push(nodeA);\r\n if (!bcUp) {\r\n if (HalfEdgeGraphOps.crossProductToTargets(nodeB, nodeA, nodeC) < 0)\r\n this.localMax.push(nodeB);\r\n else\r\n this.topPeaks.push(nodeB);\r\n }\r\n\r\n } else { // ab is DOWN\r\n this.downEdges.push(nodeA);\r\n if (bcUp) {\r\n if (HalfEdgeGraphOps.crossProductToTargets(nodeB, nodeA, nodeC) > 0)\r\n this.bottomPeaks.push(nodeB);\r\n else\r\n this.localMin.push(nodeB);\r\n }\r\n }\r\n nodeA = nodeB;\r\n } while (nodeA !== faceSeed);\r\n }\r\n\r\n /**\r\n * Collect (and classify) all the edges in an array.\r\n * * The various arrays are collected: upEdges, downEdges, topPeaks, bottomPeaks, upChains, downChains\r\n * @param candidateEdges array of edges.\r\n */\r\n public collectVerticalEventFromEdgesInAndArray(candidateEdges: HalfEdge[]) {\r\n let nodeA;\r\n let nodeB;\r\n let nodeC;\r\n let abUp;\r\n let bcUp;\r\n this.upEdges.length = 0;\r\n this.downEdges.length = 0;\r\n this.topPeaks.length = 0;\r\n this.bottomPeaks.length = 0;\r\n this.localMin.length = 0;\r\n this.localMax.length = 0;\r\n for (nodeA of candidateEdges) {\r\n nodeB = nodeA.faceSuccessor;\r\n nodeC = nodeB.faceSuccessor;\r\n abUp = HalfEdgeGraphOps.compareNodesYXUp(nodeA, nodeB) < 0;\r\n bcUp = HalfEdgeGraphOps.compareNodesYXUp(nodeB, nodeC) < 0;\r\n if (abUp) {\r\n this.upEdges.push(nodeA);\r\n if (!bcUp) {\r\n if (HalfEdgeGraphOps.crossProductToTargets(nodeB, nodeA, nodeC) < 0)\r\n this.localMax.push(nodeB);\r\n else\r\n this.topPeaks.push(nodeB);\r\n }\r\n\r\n } else { // ab is DOWN\r\n this.downEdges.push(nodeA);\r\n if (bcUp) {\r\n if (HalfEdgeGraphOps.crossProductToTargets(nodeB, nodeA, nodeC) > 0)\r\n this.bottomPeaks.push(nodeB);\r\n else\r\n this.localMin.push(nodeB);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private swapArrays() {\r\n let save = this.downEdges; this.downEdges = this.upEdges; this.upEdges = save;\r\n save = this.localMax; this.localMax = this.localMin; this.localMin = save;\r\n save = this.topPeaks; this.topPeaks = this.bottomPeaks; this.bottomPeaks = save;\r\n }\r\n\r\n /**\r\n * Find the edge (among candidates) which is first struck by a \"rightward\" scan from node\r\n * * comparisonFunction determines scan sense\r\n * * HalfEdge.compareNodeYXTheta is an upward scan.\r\n * * HalfEdge.compareNodeYXThetaDownward is a downward scan.\r\n * @param node\r\n * @param candidates Array of nodes to search\r\n * @param nodeComparisonFunction function for lexical comparison.\r\n */\r\n private findTopVisibleEdge(node: HalfEdge, candidates: HalfEdge[],\r\n directionSign: number) {\r\n const y0 = node.y;\r\n const x0 = node.x;\r\n let dx;\r\n let distanceRight = Number.MAX_SAFE_INTEGER;\r\n let result: HalfEdge | undefined;\r\n for (const rightBase of candidates) {\r\n const rightTop = rightBase.faceSuccessor;\r\n if (rightBase === node || rightTop === node)\r\n continue;\r\n // for horizontal edge cases -- require edges ends to have strict sign change (no zeros!!)\r\n const cRight = HalfEdgeGraphOps.compareNodesYXUp(node, rightBase);\r\n const cTop = HalfEdgeGraphOps.compareNodesYXUp(node, rightTop);\r\n // GeometryCoreTestIO.consoleLog(node.id, rightBase.id, rightTop.id, cRight, cTop);\r\n if (cRight * cTop >= 0)\r\n continue;\r\n const fraction = HalfEdge.horizontalScanFraction01(rightBase, y0);\r\n if (fraction !== undefined) {\r\n dx = directionSign * (rightBase.fractionToX(fraction) - x0);\r\n if (dx > 0 && dx < distanceRight) {\r\n result = rightBase;\r\n distanceRight = dx;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n /**\r\n *\r\n * @param downPeak a \"bottom\" node where the interior CCW loop has a local min\r\n * @param downEdgeStart (optional) node at the start (heading downwards!) of an edge that brackets downPeak on the left.\r\n * @param upEdgeStart (optional) node at the start (heading up!) of the edge that brackets downPeak on the right.\r\n */\r\n private highestUpPeakConnection(downPeak: HalfEdge, downEdgeStart: HalfEdge | undefined, upEdgeStart: HalfEdge | undefined): HalfEdge | undefined {\r\n let highestPeak;\r\n\r\n for (const upPeak of this.topPeaks) {\r\n const y0 = upPeak.y;\r\n const x0 = upPeak.x;\r\n // is upPeak higher than prior upPeak?\r\n if (highestPeak !== undefined && HalfEdgeGraphOps.compareNodesYXUp(upPeak, highestPeak) < 0)\r\n continue;\r\n // is upPeak BELOW downPeak, ABOVE both limit edges lower node, and between limit edge interiors.\r\n if (HalfEdgeGraphOps.compareNodesYXUp(upPeak, downPeak) < 0) {\r\n if (downEdgeStart) {\r\n const fraction = HalfEdge.horizontalScanFraction01(downEdgeStart, y0);\r\n if (fraction === undefined)\r\n continue;\r\n if (x0 <= downEdgeStart.fractionToX(fraction))\r\n continue;\r\n }\r\n if (upEdgeStart) {\r\n const fraction = HalfEdge.horizontalScanFraction01(upEdgeStart, y0);\r\n if (fraction === undefined)\r\n continue;\r\n if (upEdgeStart.fractionToX(fraction) <= x0)\r\n continue;\r\n }\r\n highestPeak = upPeak;\r\n }\r\n }\r\n return highestPeak;\r\n }\r\n\r\n private updateMaxNode(maxNode: HalfEdge | undefined, candidate: HalfEdge | undefined, compare: (a: HalfEdge, b: HalfEdge) => number): HalfEdge | undefined {\r\n if (!maxNode)\r\n return candidate;\r\n if (!candidate)\r\n return maxNode;\r\n // both are defined .. look for positive compare ...\r\n if (compare(maxNode, candidate) < 0)\r\n return candidate;\r\n return maxNode;\r\n }\r\n private negateXY() {\r\n for (const node of this.graph.allHalfEdges) {\r\n node.x *= -1;\r\n node.y *= -1;\r\n }\r\n }\r\n private downwardConnectionFromBottomPeak(node: HalfEdge): HalfEdge | undefined {\r\n let connectTo;\r\n const upFunction = (a: HalfEdge, b: HalfEdge) => HalfEdgeGraphOps.compareNodesYXUp(a, b);\r\n const upEdgeBase = this.findTopVisibleEdge(node, this.upEdges, 1.0)!;\r\n const downEdgeBase = this.findTopVisibleEdge(node, this.downEdges, -1.0)!;\r\n connectTo = this.updateMaxNode(connectTo, upEdgeBase, upFunction);\r\n if (downEdgeBase)\r\n connectTo = this.updateMaxNode(connectTo, downEdgeBase.faceSuccessor, upFunction);\r\n const upPeakConnection = this.highestUpPeakConnection(node, downEdgeBase, upEdgeBase);\r\n if (upPeakConnection !== undefined)\r\n connectTo = this.updateMaxNode(connectTo, upPeakConnection, upFunction);\r\n return connectTo;\r\n }\r\n /** Search around the vertex of nodeA for a nodeA1 such that nodeB is visible in the sector at nodeA1 */\r\n private findVisibleSector(nodeA: HalfEdge, nodeB: HalfEdge): HalfEdge | undefined {\r\n let nodeA1 = nodeA;\r\n do {\r\n if (HalfEdge.isNodeVisibleInSector(nodeB, nodeA1))\r\n return nodeA1;\r\n nodeA1 = nodeA1.vertexSuccessor;\r\n } while (nodeA1 !== nodeA);\r\n return undefined;\r\n }\r\n /**\r\n * Create an edge from (some node around the vertex of) nodeA to (some node around the vertex of) nodeB.\r\n * * looking around the vertex for alternate insertion corrects cusp insertion errors.\r\n * @param nodeA\r\n * @param nodeB\r\n */\r\n private joinNodes(nodeA: HalfEdge, nodeB: HalfEdge, direction: number): HalfEdge | undefined {\r\n const nodeC = this.graph.createEdgeXYZXYZ(nodeA.x, nodeA.y, nodeA.z, 0, nodeB.x, nodeB.y, nodeB.z, 0);\r\n const nodeA1 = this.findVisibleSector(nodeA, nodeB);\r\n const nodeB1 = this.findVisibleSector(nodeB, nodeA);\r\n if (nodeA1 !== undefined && nodeB1 !== undefined) {\r\n HalfEdge.pinch(nodeA1, nodeC);\r\n HalfEdge.pinch(nodeB1, nodeC.edgeMate);\r\n nodeC.setMaskAroundEdge(HalfEdgeMask.REGULARIZED_EDGE);\r\n if (RegularizationContext.announceEdge)\r\n RegularizationContext.announceEdge(this.graph, nodeC, nodeC.edgeMate, direction);\r\n return nodeC;\r\n }\r\n return undefined;\r\n }\r\n /**\r\n * Regularize a single face.\r\n * * Insert edge from any downward interior vertex to something lower\r\n * * Insert an edge from each upward interior vertex to something higher.\r\n * * The face is split into smaller faces\r\n * * Each final face has at most one \"min\" and one \"max\", and is easy to triangulate with a bottom to top sweep.\r\n * * Normal usage is to sweep in both directions, i.e. use the default (true,true) for the upSweep and downSweep parameters.\r\n * @param faceSeed any representative half edge on the face\r\n * @param upSweep true to do the upward sweep.\r\n * @param downSweep true to do the downward sweep.\r\n */\r\n private runRegularization(upSweep: boolean = true, downSweep: boolean = true) {\r\n if (upSweep) {\r\n this.bottomPeaks.sort((a, b) => HalfEdgeGraphOps.compareNodesYXUp(a, b));\r\n for (const bottomPeak of this.bottomPeaks) {\r\n // GeometryCoreTestIO.consoleLog(\"SEARCH\", bottomPeak.id, [bottomPeak.x, bottomPeak.y]);\r\n if (!HalfEdgeGraphOps.isDownPeak(bottomPeak))\r\n continue;\r\n const target = this.downwardConnectionFromBottomPeak(bottomPeak);\r\n if (target !== undefined) {\r\n // GeometryCoreTestIO.consoleLog(\"join\", bottomPeak.id, [bottomPeak.x, bottomPeak.y], target.id, [target.x, target.y]);\r\n this.joinNodes(bottomPeak, target, 1);\r\n }\r\n }\r\n }\r\n if (downSweep) {\r\n // flip the whole graph (ouch)\r\n this.negateXY();\r\n // swap the various p and down seeds ....\r\n this.swapArrays();\r\n this.bottomPeaks.sort((a, b) => HalfEdgeGraphOps.compareNodesYXUp(a, b));\r\n for (const bottomPeak of this.bottomPeaks) {\r\n if (!HalfEdgeGraphOps.isDownPeak(bottomPeak))\r\n continue;\r\n const target = this.downwardConnectionFromBottomPeak(bottomPeak);\r\n if (target !== undefined) {\r\n this.joinNodes(bottomPeak, target, -1);\r\n }\r\n }\r\n this.negateXY();\r\n this.swapArrays();\r\n }\r\n }\r\n\r\n /**\r\n * Regularize a single face.\r\n * * Insert edge from any downward interior vertex to something lower\r\n * * Insert an edge from each upward interior vertex to something higher.\r\n * * The face is split into smaller faces\r\n * * Each final face has at most one \"min\" and one \"max\", and is easy to triangulate with a bottom to top sweep.\r\n * * Normal usage is to sweep in both directions, i.e. use the default (true,true) for the upSweep and downSweep parameters.\r\n * @param faceSeed any representative half edge on the face\r\n * @param upSweep true to do the upward sweep.\r\n * @param downSweep true to do the downward sweep.\r\n */\r\n public regularizeFace(faceSeed: HalfEdge, upSweep: boolean = true, downSweep: boolean = true) {\r\n this.collectVerticalEventsAroundFace(faceSeed);\r\n this.runRegularization(upSweep, downSweep);\r\n }\r\n\r\n public regularizeGraph(upSweep: boolean = true, downSweep: boolean = true) {\r\n this.collectVerticalEventFromEdgesInAndArray(this.graph.allHalfEdges);\r\n this.runRegularization(upSweep, downSweep);\r\n }\r\n\r\n /** test if a single face is monotone; if so, return its (single) min */\r\n public static isMonotoneFace(seed: HalfEdge): HalfEdge | undefined {\r\n let numMin = 0;\r\n let numMax = 0;\r\n let nodeMin: HalfEdge | undefined;\r\n let nodeA = seed;\r\n do {\r\n const nodeB = nodeA.faceSuccessor;\r\n const nodeC = nodeB.faceSuccessor;\r\n const ab = HalfEdgeGraphOps.compareNodesYXUp(nodeA, nodeB);\r\n const bc = HalfEdgeGraphOps.compareNodesYXUp(nodeB, nodeC);\r\n if (ab * bc <= 0) {\r\n if (ab > 0) {\r\n numMin++;\r\n nodeMin = nodeB;\r\n }\r\n if (bc > 0) {\r\n numMax++;\r\n }\r\n }\r\n } while ((nodeA = nodeA.faceSuccessor) !== seed);\r\n return numMin === 1 && numMax === 1 ? nodeMin : undefined;\r\n }\r\n /** Return faces filtered by area and test function.\r\n * * find one arbitrary representative of each face\r\n * * offer the candidate to the mutate function.\r\n * * collect results\r\n * @param mappedSeeds when filter returns a HalfEdge, collect it here\r\n * @param unmappedSeeds when filter does not return a half edge, collect the candidate.\r\n */\r\n public static collectMappedFaceRepresentatives(\r\n graph: HalfEdgeGraph,\r\n positiveAreaOnly: boolean,\r\n mutate: (seed: HalfEdge) => HalfEdge | undefined,\r\n mappedEdges: HalfEdge[] | undefined,\r\n unMappedSeeds: HalfEdge[] | undefined) {\r\n if (mappedEdges)\r\n mappedEdges.length = 0;\r\n if (unMappedSeeds)\r\n unMappedSeeds.length = 0;\r\n const mask = HalfEdgeMask.VISITED;\r\n graph.clearMask(mask);\r\n for (const seed of graph.allHalfEdges) {\r\n if (!seed.getMask(mask)) {\r\n seed.setMaskAroundFace(mask);\r\n if (!positiveAreaOnly || seed.signedFaceArea() > 0) {\r\n const edge = mutate(seed);\r\n if (edge) {\r\n if (mappedEdges)\r\n mappedEdges.push(edge);\r\n } else {\r\n if (unMappedSeeds)\r\n unMappedSeeds.push(seed);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"RegularizeFace.js","sourceRoot":"","sources":["../../../src/topology/RegularizeFace.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Topology\r\n */\r\n\r\nimport { HalfEdge, HalfEdgeGraph, HalfEdgeMask } from \"./Graph\";\r\nimport { HalfEdgeGraphOps } from \"./Merging\";\r\n\r\n/**\r\n * * Context for regularizing single faces.\r\n * @internal\r\n */\r\nexport class RegularizationContext {\r\n // For debugging use ... \"almost always\" undefined.\r\n // If defined, it is called with each inserted node pair.\r\n // scale will be either plus or minus one.\r\n // when it is negative, the node coordinates (both x and y) have been negated.\r\n // The call is made after full insertion into vertex loop.\r\n public static announceEdge?: (graph: HalfEdgeGraph, nodeA: HalfEdge, nodeB: HalfEdge, scale: number) => void;\r\n public constructor(graph: HalfEdgeGraph) {\r\n this.graph = graph;\r\n this.upEdges = [];\r\n this.downEdges = [];\r\n this.bottomPeaks = [];\r\n this.topPeaks = [];\r\n this.localMin = [];\r\n this.localMax = [];\r\n }\r\n\r\n /**\r\n * These are public only for testing.\r\n */\r\n public graph: HalfEdgeGraph;\r\n /** array of edges directed upward. Turn can be left or right, but is not large enough to be a min or max */\r\n public upEdges: HalfEdge[];\r\n /** array of edges directed downward, Turn can be left or right, but is not large enough to be a min or max */\r\n public downEdges: HalfEdge[];\r\n /** Array of edges whose start is an upward peak (right turn, inbound up, outbound down) */\r\n public topPeaks: HalfEdge[];\r\n /** Array of edges whose start is an downward peak (right turn, inbound down, outbound up) */\r\n public bottomPeaks: HalfEdge[];\r\n\r\n /** Array of edges at local minima (left turn, inbound down, outbound up). Ensuing chain is up */\r\n public localMin: HalfEdge[];\r\n /** Array of edges at local maxima (left turn, inbound up, outbound down). Ensuing chain is down */\r\n public localMax: HalfEdge[];\r\n /**\r\n * Collect (and classify) all the edges around a single face.\r\n * * The various arrays are collected: upEdges, downEdges, topPeaks, bottomPeaks, upChains, downChains\r\n * @param faceSeed face to examine\r\n */\r\n public collectVerticalEventsAroundFace(faceSeed: HalfEdge) {\r\n let nodeA = faceSeed;\r\n let nodeB;\r\n let nodeC;\r\n let abUp;\r\n let bcUp;\r\n this.upEdges.length = 0;\r\n this.downEdges.length = 0;\r\n this.topPeaks.length = 0;\r\n this.bottomPeaks.length = 0;\r\n this.localMin.length = 0;\r\n this.localMax.length = 0;\r\n do {\r\n nodeB = nodeA.faceSuccessor;\r\n nodeC = nodeB.faceSuccessor;\r\n abUp = HalfEdgeGraphOps.compareNodesYXUp(nodeA, nodeB) < 0;\r\n bcUp = HalfEdgeGraphOps.compareNodesYXUp(nodeB, nodeC) < 0;\r\n if (abUp) {\r\n this.upEdges.push(nodeA);\r\n if (!bcUp) {\r\n if (HalfEdgeGraphOps.crossProductToTargets(nodeB, nodeA, nodeC) < 0)\r\n this.localMax.push(nodeB);\r\n else\r\n this.topPeaks.push(nodeB);\r\n }\r\n\r\n } else { // ab is DOWN\r\n this.downEdges.push(nodeA);\r\n if (bcUp) {\r\n if (HalfEdgeGraphOps.crossProductToTargets(nodeB, nodeA, nodeC) > 0)\r\n this.bottomPeaks.push(nodeB);\r\n else\r\n this.localMin.push(nodeB);\r\n }\r\n }\r\n nodeA = nodeB;\r\n } while (nodeA !== faceSeed);\r\n }\r\n\r\n /**\r\n * Collect (and classify) all the edges in an array.\r\n * * The various arrays are collected: upEdges, downEdges, topPeaks, bottomPeaks, upChains, downChains\r\n * @param candidateEdges array of edges.\r\n */\r\n public collectVerticalEventFromEdgesInAndArray(candidateEdges: HalfEdge[]) {\r\n let nodeA;\r\n let nodeB;\r\n let nodeC;\r\n let abUp;\r\n let bcUp;\r\n this.upEdges.length = 0;\r\n this.downEdges.length = 0;\r\n this.topPeaks.length = 0;\r\n this.bottomPeaks.length = 0;\r\n this.localMin.length = 0;\r\n this.localMax.length = 0;\r\n for (nodeA of candidateEdges) {\r\n nodeB = nodeA.faceSuccessor;\r\n nodeC = nodeB.faceSuccessor;\r\n abUp = HalfEdgeGraphOps.compareNodesYXUp(nodeA, nodeB) < 0;\r\n bcUp = HalfEdgeGraphOps.compareNodesYXUp(nodeB, nodeC) < 0;\r\n if (abUp) {\r\n this.upEdges.push(nodeA);\r\n if (!bcUp) {\r\n if (HalfEdgeGraphOps.crossProductToTargets(nodeB, nodeA, nodeC) < 0)\r\n this.localMax.push(nodeB);\r\n else\r\n this.topPeaks.push(nodeB);\r\n }\r\n\r\n } else { // ab is DOWN\r\n this.downEdges.push(nodeA);\r\n if (bcUp) {\r\n if (HalfEdgeGraphOps.crossProductToTargets(nodeB, nodeA, nodeC) > 0)\r\n this.bottomPeaks.push(nodeB);\r\n else\r\n this.localMin.push(nodeB);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private swapArrays() {\r\n let save = this.downEdges; this.downEdges = this.upEdges; this.upEdges = save;\r\n save = this.localMax; this.localMax = this.localMin; this.localMin = save;\r\n save = this.topPeaks; this.topPeaks = this.bottomPeaks; this.bottomPeaks = save;\r\n }\r\n\r\n /**\r\n * Find the edge (among candidates) which is first struck by a \"rightward\" scan from node\r\n * * comparisonFunction determines scan sense\r\n * * HalfEdge.compareNodeYXTheta is an upward scan.\r\n * * HalfEdge.compareNodeYXThetaDownward is a downward scan.\r\n * @param node\r\n * @param candidates Array of nodes to search\r\n * @param nodeComparisonFunction function for lexical comparison.\r\n */\r\n private findTopVisibleEdge(node: HalfEdge, candidates: HalfEdge[], directionSign: number): HalfEdge | undefined {\r\n const y0 = node.y;\r\n const x0 = node.x;\r\n let dx;\r\n let distanceRight = Number.MAX_SAFE_INTEGER;\r\n let result: HalfEdge | undefined;\r\n for (const rightBase of candidates) {\r\n const rightTop = rightBase.faceSuccessor;\r\n if (rightBase === node || rightTop === node)\r\n continue;\r\n // for horizontal edge cases -- require edges ends to have strict sign change (no zeros!!)\r\n const cRight = HalfEdgeGraphOps.compareNodesYXUp(node, rightBase);\r\n const cTop = HalfEdgeGraphOps.compareNodesYXUp(node, rightTop);\r\n // GeometryCoreTestIO.consoleLog(node.id, rightBase.id, rightTop.id, cRight, cTop);\r\n if (cRight * cTop >= 0)\r\n continue;\r\n const fraction = HalfEdge.horizontalScanFraction01(rightBase, y0);\r\n if (fraction !== undefined) {\r\n dx = directionSign * (rightBase.fractionToX(fraction) - x0);\r\n if (dx > 0 && dx < distanceRight) {\r\n result = rightBase;\r\n distanceRight = dx;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n /**\r\n *\r\n * @param downPeak a \"bottom\" node where the interior CCW loop has a local min\r\n * @param downEdgeStart (optional) node at the start (heading downwards!) of an edge that brackets downPeak on the left.\r\n * @param upEdgeStart (optional) node at the start (heading up!) of the edge that brackets downPeak on the right.\r\n */\r\n private highestUpPeakConnection(downPeak: HalfEdge, downEdgeStart: HalfEdge | undefined, upEdgeStart: HalfEdge | undefined): HalfEdge | undefined {\r\n let highestPeak;\r\n\r\n for (const upPeak of this.topPeaks) {\r\n const y0 = upPeak.y;\r\n const x0 = upPeak.x;\r\n // is upPeak higher than prior upPeak?\r\n if (highestPeak !== undefined && HalfEdgeGraphOps.compareNodesYXUp(upPeak, highestPeak) < 0)\r\n continue;\r\n // is upPeak BELOW downPeak, ABOVE both limit edges lower node, and between limit edge interiors.\r\n if (HalfEdgeGraphOps.compareNodesYXUp(upPeak, downPeak) < 0) {\r\n if (downEdgeStart) {\r\n const fraction = HalfEdge.horizontalScanFraction01(downEdgeStart, y0);\r\n if (fraction === undefined)\r\n continue;\r\n if (x0 <= downEdgeStart.fractionToX(fraction))\r\n continue;\r\n }\r\n if (upEdgeStart) {\r\n const fraction = HalfEdge.horizontalScanFraction01(upEdgeStart, y0);\r\n if (fraction === undefined)\r\n continue;\r\n if (upEdgeStart.fractionToX(fraction) <= x0)\r\n continue;\r\n }\r\n highestPeak = upPeak;\r\n }\r\n }\r\n return highestPeak;\r\n }\r\n\r\n private updateMaxNode(maxNode: HalfEdge | undefined, candidate: HalfEdge | undefined, compare: (a: HalfEdge, b: HalfEdge) => number): HalfEdge | undefined {\r\n if (!maxNode)\r\n return candidate;\r\n if (!candidate)\r\n return maxNode;\r\n // both are defined .. look for positive compare ...\r\n if (compare(maxNode, candidate) < 0)\r\n return candidate;\r\n return maxNode;\r\n }\r\n private negateXY() {\r\n for (const node of this.graph.allHalfEdges) {\r\n node.x *= -1;\r\n node.y *= -1;\r\n }\r\n }\r\n private downwardConnectionFromBottomPeak(node: HalfEdge): HalfEdge | undefined {\r\n let connectTo;\r\n const upFunction = (a: HalfEdge, b: HalfEdge) => HalfEdgeGraphOps.compareNodesYXUp(a, b);\r\n const upEdgeBase = this.findTopVisibleEdge(node, this.upEdges, 1.0);\r\n const downEdgeBase = this.findTopVisibleEdge(node, this.downEdges, -1.0);\r\n connectTo = this.updateMaxNode(connectTo, upEdgeBase, upFunction);\r\n if (downEdgeBase)\r\n connectTo = this.updateMaxNode(connectTo, downEdgeBase.faceSuccessor, upFunction);\r\n const upPeakConnection = this.highestUpPeakConnection(node, downEdgeBase, upEdgeBase);\r\n if (upPeakConnection !== undefined)\r\n connectTo = this.updateMaxNode(connectTo, upPeakConnection, upFunction);\r\n return connectTo;\r\n }\r\n /** Search around the vertex of nodeA for a nodeA1 such that nodeB is visible in the sector at nodeA1 */\r\n private findVisibleSector(nodeA: HalfEdge, nodeB: HalfEdge): HalfEdge | undefined {\r\n let nodeA1 = nodeA;\r\n do {\r\n if (HalfEdge.isNodeVisibleInSector(nodeB, nodeA1))\r\n return nodeA1;\r\n nodeA1 = nodeA1.vertexSuccessor;\r\n } while (nodeA1 !== nodeA);\r\n return undefined;\r\n }\r\n /**\r\n * Create an edge from (some node around the vertex of) nodeA to (some node around the vertex of) nodeB.\r\n * * looking around the vertex for alternate insertion corrects cusp insertion errors.\r\n * @param nodeA\r\n * @param nodeB\r\n */\r\n private joinNodes(nodeA: HalfEdge, nodeB: HalfEdge, direction: number): HalfEdge | undefined {\r\n const nodeC = this.graph.createEdgeXYZXYZ(nodeA.x, nodeA.y, nodeA.z, 0, nodeB.x, nodeB.y, nodeB.z, 0);\r\n const nodeA1 = this.findVisibleSector(nodeA, nodeB);\r\n const nodeB1 = this.findVisibleSector(nodeB, nodeA);\r\n if (nodeA1 !== undefined && nodeB1 !== undefined) {\r\n HalfEdge.pinch(nodeA1, nodeC);\r\n HalfEdge.pinch(nodeB1, nodeC.edgeMate);\r\n nodeC.setMaskAroundEdge(HalfEdgeMask.REGULARIZED_EDGE);\r\n if (RegularizationContext.announceEdge)\r\n RegularizationContext.announceEdge(this.graph, nodeC, nodeC.edgeMate, direction);\r\n return nodeC;\r\n }\r\n return undefined;\r\n }\r\n /**\r\n * Regularize a single face.\r\n * * Insert edge from any downward interior vertex to something lower\r\n * * Insert an edge from each upward interior vertex to something higher.\r\n * * The face is split into smaller faces\r\n * * Each final face has at most one \"min\" and one \"max\", and is easy to triangulate with a bottom to top sweep.\r\n * * Normal usage is to sweep in both directions, i.e. use the default (true,true) for the upSweep and downSweep parameters.\r\n * @param faceSeed any representative half edge on the face\r\n * @param upSweep true to do the upward sweep.\r\n * @param downSweep true to do the downward sweep.\r\n */\r\n private runRegularization(upSweep: boolean = true, downSweep: boolean = true) {\r\n if (upSweep) {\r\n this.bottomPeaks.sort((a, b) => HalfEdgeGraphOps.compareNodesYXUp(a, b));\r\n for (const bottomPeak of this.bottomPeaks) {\r\n // GeometryCoreTestIO.consoleLog(\"SEARCH\", bottomPeak.id, [bottomPeak.x, bottomPeak.y]);\r\n if (!HalfEdgeGraphOps.isDownPeak(bottomPeak))\r\n continue;\r\n const target = this.downwardConnectionFromBottomPeak(bottomPeak);\r\n if (target !== undefined) {\r\n // GeometryCoreTestIO.consoleLog(\"join\", bottomPeak.id, [bottomPeak.x, bottomPeak.y], target.id, [target.x, target.y]);\r\n this.joinNodes(bottomPeak, target, 1);\r\n }\r\n }\r\n }\r\n if (downSweep) {\r\n // flip the whole graph (ouch)\r\n this.negateXY();\r\n // swap the various p and down seeds ....\r\n this.swapArrays();\r\n this.bottomPeaks.sort((a, b) => HalfEdgeGraphOps.compareNodesYXUp(a, b));\r\n for (const bottomPeak of this.bottomPeaks) {\r\n if (!HalfEdgeGraphOps.isDownPeak(bottomPeak))\r\n continue;\r\n const target = this.downwardConnectionFromBottomPeak(bottomPeak);\r\n if (target !== undefined) {\r\n this.joinNodes(bottomPeak, target, -1);\r\n }\r\n }\r\n this.negateXY();\r\n this.swapArrays();\r\n }\r\n }\r\n\r\n /**\r\n * Regularize a single face.\r\n * * Insert edge from any downward interior vertex to something lower\r\n * * Insert an edge from each upward interior vertex to something higher.\r\n * * The face is split into smaller faces\r\n * * Each final face has at most one \"min\" and one \"max\", and is easy to triangulate with a bottom to top sweep.\r\n * * Normal usage is to sweep in both directions, i.e. use the default (true,true) for the upSweep and downSweep parameters.\r\n * @param faceSeed any representative half edge on the face\r\n * @param upSweep true to do the upward sweep.\r\n * @param downSweep true to do the downward sweep.\r\n */\r\n public regularizeFace(faceSeed: HalfEdge, upSweep: boolean = true, downSweep: boolean = true) {\r\n this.collectVerticalEventsAroundFace(faceSeed);\r\n this.runRegularization(upSweep, downSweep);\r\n }\r\n\r\n public regularizeGraph(upSweep: boolean = true, downSweep: boolean = true) {\r\n this.collectVerticalEventFromEdgesInAndArray(this.graph.allHalfEdges);\r\n this.runRegularization(upSweep, downSweep);\r\n }\r\n\r\n /** test if a single face is monotone; if so, return its (single) min */\r\n public static isMonotoneFace(seed: HalfEdge): HalfEdge | undefined {\r\n let numMin = 0;\r\n let numMax = 0;\r\n let nodeMin: HalfEdge | undefined;\r\n let nodeA = seed;\r\n do {\r\n const nodeB = nodeA.faceSuccessor;\r\n const nodeC = nodeB.faceSuccessor;\r\n const ab = HalfEdgeGraphOps.compareNodesYXUp(nodeA, nodeB);\r\n const bc = HalfEdgeGraphOps.compareNodesYXUp(nodeB, nodeC);\r\n if (ab * bc <= 0) {\r\n if (ab > 0) {\r\n numMin++;\r\n nodeMin = nodeB;\r\n }\r\n if (bc > 0) {\r\n numMax++;\r\n }\r\n }\r\n } while ((nodeA = nodeA.faceSuccessor) !== seed);\r\n return numMin === 1 && numMax === 1 ? nodeMin : undefined;\r\n }\r\n /** Return faces filtered by area and test function.\r\n * * find one arbitrary representative of each face\r\n * * offer the candidate to the mutate function.\r\n * * collect results\r\n * @param mappedSeeds when filter returns a HalfEdge, collect it here\r\n * @param unmappedSeeds when filter does not return a half edge, collect the candidate.\r\n */\r\n public static collectMappedFaceRepresentatives(\r\n graph: HalfEdgeGraph,\r\n positiveAreaOnly: boolean,\r\n mutate: (seed: HalfEdge) => HalfEdge | undefined,\r\n mappedEdges: HalfEdge[] | undefined,\r\n unMappedSeeds: HalfEdge[] | undefined) {\r\n if (mappedEdges)\r\n mappedEdges.length = 0;\r\n if (unMappedSeeds)\r\n unMappedSeeds.length = 0;\r\n const mask = HalfEdgeMask.VISITED;\r\n graph.clearMask(mask);\r\n for (const seed of graph.allHalfEdges) {\r\n if (!seed.getMask(mask)) {\r\n seed.setMaskAroundFace(mask);\r\n if (!positiveAreaOnly || seed.signedFaceArea() > 0) {\r\n const edge = mutate(seed);\r\n if (edge) {\r\n if (mappedEdges)\r\n mappedEdges.push(edge);\r\n } else {\r\n if (unMappedSeeds)\r\n unMappedSeeds.push(seed);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}\r\n"]}
|
|
@@ -30,7 +30,8 @@ export declare class Triangulator {
|
|
|
30
30
|
/**
|
|
31
31
|
* * Visit each node of the graph array
|
|
32
32
|
* * If a flip would be possible, test the results of flipping using circumcircle condition
|
|
33
|
-
* * If revealed to be an improvement, conduct the flip, mark involved nodes as unvisited, and repeat until all nodes are visited
|
|
33
|
+
* * If revealed to be an improvement, conduct the flip, mark involved nodes as unvisited, and repeat until all nodes are visited.
|
|
34
|
+
* * @returns number of edges flipped.
|
|
34
35
|
*/
|
|
35
36
|
static flipTriangles(graph: HalfEdgeGraph): number;
|
|
36
37
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Triangulation.d.ts","sourceRoot":"","sources":["../../../src/topology/Triangulation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Triangulation.d.ts","sourceRoot":"","sources":["../../../src/topology/Triangulation.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ exports.Triangulator = void 0;
|
|
|
8
8
|
/** @packageDocumentation
|
|
9
9
|
* @module Topology
|
|
10
10
|
*/
|
|
11
|
+
const core_bentley_1 = require("@itwin/core-bentley");
|
|
11
12
|
const ClipUtils_1 = require("../clipping/ClipUtils");
|
|
12
13
|
const Geometry_1 = require("../Geometry");
|
|
13
14
|
const FrameBuilder_1 = require("../geometry3d/FrameBuilder");
|
|
@@ -109,10 +110,13 @@ class Triangulator {
|
|
|
109
110
|
/**
|
|
110
111
|
* * Visit each node of the graph array
|
|
111
112
|
* * If a flip would be possible, test the results of flipping using circumcircle condition
|
|
112
|
-
* * If revealed to be an improvement, conduct the flip, mark involved nodes as unvisited, and repeat until all nodes are visited
|
|
113
|
+
* * If revealed to be an improvement, conduct the flip, mark involved nodes as unvisited, and repeat until all nodes are visited.
|
|
114
|
+
* * @returns number of edges flipped.
|
|
113
115
|
*/
|
|
114
116
|
static flipTriangles(graph) {
|
|
115
117
|
const edgeSet = HalfEdgeMarkSet_1.MarkedEdgeSet.create(graph);
|
|
118
|
+
if (!edgeSet)
|
|
119
|
+
return 0;
|
|
116
120
|
for (const node of graph.allHalfEdges)
|
|
117
121
|
edgeSet.addToSet(node);
|
|
118
122
|
const numFlip = this.flipTrianglesInEdgeSet(graph, edgeSet);
|
|
@@ -166,15 +170,13 @@ class Triangulator {
|
|
|
166
170
|
PointHelpers_1.Point3dArray.computeConvexHullXY(points, hull, interior, true);
|
|
167
171
|
const graph = new Graph_1.HalfEdgeGraph();
|
|
168
172
|
const context = InsertAndRetriangulateContext_1.InsertAndRetriangulateContext.create(graph, pointTolerance);
|
|
173
|
+
(0, core_bentley_1.assert)(context !== undefined, "expect defined since a newly created graph has masks available");
|
|
169
174
|
const face0 = Triangulator.createFaceLoopFromCoordinates(graph, hull, true, true);
|
|
170
175
|
if (undefined === face0)
|
|
171
176
|
return undefined;
|
|
172
177
|
// HalfEdgeGraphMerge.clusterAndMergeXYTheta(graph);
|
|
173
|
-
|
|
174
|
-
for (const p of interior) {
|
|
178
|
+
for (const p of interior)
|
|
175
179
|
context.insertAndRetriangulate(p, zRule);
|
|
176
|
-
numInsert++; // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
177
|
-
}
|
|
178
180
|
if (face0.countEdgesAroundFace() > 3) // no strictly interior vertices to split the hull polygon, so triangulate it
|
|
179
181
|
return Triangulator.createTriangulatedGraphFromSingleLoop(hull);
|
|
180
182
|
return graph;
|
|
@@ -1032,8 +1034,11 @@ class AssembleXYZXYZChains extends PointStreaming_1.PointStreamXYZXYZHandlerBase
|
|
|
1032
1034
|
this._nodeB = this._baseNode.faceSuccessor;
|
|
1033
1035
|
}
|
|
1034
1036
|
else {
|
|
1035
|
-
|
|
1036
|
-
this._nodeB
|
|
1037
|
+
(0, core_bentley_1.assert)(this._nodeB !== undefined, "expect defined because baseNode and nodeB are un/defined in tandem");
|
|
1038
|
+
if (this._nodeB) {
|
|
1039
|
+
Graph_1.HalfEdge.pinch(this._nodeB, this._nodeC);
|
|
1040
|
+
this._nodeB = this._nodeC.faceSuccessor;
|
|
1041
|
+
}
|
|
1037
1042
|
}
|
|
1038
1043
|
}
|
|
1039
1044
|
endChain(chainData, isLeaf) {
|