@itwin/core-geometry 4.2.0-dev.9 → 4.3.0-dev.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 +36 -1
- package/lib/cjs/Geometry.d.ts +4 -4
- package/lib/cjs/Geometry.d.ts.map +1 -1
- package/lib/cjs/Geometry.js +2 -2
- package/lib/cjs/Geometry.js.map +1 -1
- package/lib/cjs/clipping/AlternatingConvexClipTree.d.ts +4 -3
- package/lib/cjs/clipping/AlternatingConvexClipTree.d.ts.map +1 -1
- package/lib/cjs/clipping/AlternatingConvexClipTree.js +1 -1
- package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
- package/lib/cjs/clipping/BooleanClipNode.d.ts +4 -3
- package/lib/cjs/clipping/BooleanClipNode.d.ts.map +1 -1
- package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
- package/lib/cjs/clipping/ClipPlane.d.ts +2 -1
- package/lib/cjs/clipping/ClipPlane.d.ts.map +1 -1
- package/lib/cjs/clipping/ClipPlane.js.map +1 -1
- package/lib/cjs/clipping/ClipUtils.d.ts +17 -11
- package/lib/cjs/clipping/ClipUtils.d.ts.map +1 -1
- package/lib/cjs/clipping/ClipUtils.js +14 -8
- package/lib/cjs/clipping/ClipUtils.js.map +1 -1
- package/lib/cjs/clipping/ClipVector.d.ts +6 -5
- package/lib/cjs/clipping/ClipVector.d.ts.map +1 -1
- package/lib/cjs/clipping/ClipVector.js +1 -1
- package/lib/cjs/clipping/ClipVector.js.map +1 -1
- package/lib/cjs/clipping/ConvexClipPlaneSet.d.ts +3 -2
- package/lib/cjs/clipping/ConvexClipPlaneSet.d.ts.map +1 -1
- package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
- package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.d.ts +2 -1
- package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.d.ts.map +1 -1
- package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
- package/lib/cjs/core-geometry.d.ts +1 -3
- package/lib/cjs/core-geometry.d.ts.map +1 -1
- package/lib/cjs/core-geometry.js +1 -3
- package/lib/cjs/core-geometry.js.map +1 -1
- package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
- package/lib/cjs/curve/Arc3d.js +4 -4
- package/lib/cjs/curve/Arc3d.js.map +1 -1
- package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +93 -91
- package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
- package/lib/cjs/curve/CurveChainWithDistanceIndex.js +171 -152
- package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/cjs/curve/CurveCollection.d.ts +19 -19
- package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
- package/lib/cjs/curve/CurveCollection.js +20 -22
- package/lib/cjs/curve/CurveCollection.js.map +1 -1
- package/lib/cjs/curve/CurveCurve.d.ts +47 -30
- package/lib/cjs/curve/CurveCurve.d.ts.map +1 -1
- package/lib/cjs/curve/CurveCurve.js +81 -46
- package/lib/cjs/curve/CurveCurve.js.map +1 -1
- package/lib/cjs/curve/CurveFactory.d.ts +1 -1
- package/lib/cjs/curve/CurveFactory.js.map +1 -1
- package/lib/cjs/curve/CurveLocationDetail.d.ts +17 -5
- package/lib/cjs/curve/CurveLocationDetail.d.ts.map +1 -1
- package/lib/cjs/curve/CurveLocationDetail.js +14 -2
- package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
- package/lib/cjs/curve/CurveOps.d.ts +1 -1
- package/lib/cjs/curve/CurveOps.js.map +1 -1
- package/lib/cjs/curve/CurvePrimitive.d.ts +1 -2
- package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -1
- package/lib/cjs/curve/CurvePrimitive.js +2 -2
- package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
- package/lib/cjs/curve/CurveProcessor.d.ts +1 -1
- package/lib/cjs/curve/CurveProcessor.js.map +1 -1
- package/lib/cjs/curve/{CurveChain.d.ts → CurveTypes.d.ts} +6 -6
- package/lib/cjs/curve/CurveTypes.d.ts.map +1 -0
- package/lib/cjs/curve/{CurveChain.js → CurveTypes.js} +1 -1
- package/lib/cjs/curve/CurveTypes.js.map +1 -0
- package/lib/cjs/curve/CurveWireMomentsXYZ.d.ts +1 -1
- package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
- package/lib/cjs/curve/ParityRegion.d.ts +3 -3
- package/lib/cjs/curve/ParityRegion.d.ts.map +1 -1
- package/lib/cjs/curve/ParityRegion.js +2 -2
- package/lib/cjs/curve/ParityRegion.js.map +1 -1
- package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.d.ts +3 -2
- package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.d.ts.map +1 -1
- package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js +2 -2
- package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
- package/lib/cjs/curve/Query/CurveSplitContext.d.ts +1 -1
- package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
- package/lib/cjs/curve/Query/CylindricalRange.d.ts +1 -1
- package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
- package/lib/cjs/curve/Query/InOutTests.d.ts +1 -1
- package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
- package/lib/cjs/curve/Query/StrokeCountChain.d.ts +1 -1
- package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
- package/lib/cjs/curve/RegionOps.d.ts +54 -5
- package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
- package/lib/cjs/curve/RegionOps.js +154 -3
- package/lib/cjs/curve/RegionOps.js.map +1 -1
- package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts +1 -1
- package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/cjs/curve/StrokeOptions.d.ts +20 -11
- package/lib/cjs/curve/StrokeOptions.d.ts.map +1 -1
- package/lib/cjs/curve/StrokeOptions.js +22 -11
- package/lib/cjs/curve/StrokeOptions.js.map +1 -1
- package/lib/cjs/curve/UnionRegion.d.ts +3 -3
- package/lib/cjs/curve/UnionRegion.d.ts.map +1 -1
- package/lib/cjs/curve/UnionRegion.js +2 -2
- package/lib/cjs/curve/UnionRegion.js.map +1 -1
- package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.d.ts +1 -1
- package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js +2 -2
- package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.d.ts +233 -0
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.d.ts.map +1 -0
- package/lib/cjs/curve/{CurveCurveCloseApproachXY.js → internalContexts/CurveCurveCloseApproachXY.js} +299 -202
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -0
- package/lib/{esm/curve → cjs/curve/internalContexts}/CurveCurveIntersectXY.d.ts +45 -51
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -0
- package/lib/cjs/curve/{CurveCurveIntersectXY.js → internalContexts/CurveCurveIntersectXY.js} +104 -115
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -0
- package/lib/cjs/curve/{CurveCurveIntersectXYZ.d.ts → internalContexts/CurveCurveIntersectXYZ.d.ts} +18 -18
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.d.ts.map +1 -0
- package/lib/cjs/curve/{CurveCurveIntersectXYZ.js → internalContexts/CurveCurveIntersectXYZ.js} +134 -108
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -0
- package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.d.ts +2 -2
- package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js +9 -5
- package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/MultiChainCollector.d.ts +1 -1
- package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
- package/lib/cjs/geometry3d/BarycentricTriangle.d.ts +1 -0
- package/lib/cjs/geometry3d/BarycentricTriangle.d.ts.map +1 -1
- package/lib/cjs/geometry3d/BarycentricTriangle.js +1 -0
- package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
- package/lib/cjs/geometry3d/FrameBuilder.d.ts +28 -11
- package/lib/cjs/geometry3d/FrameBuilder.d.ts.map +1 -1
- package/lib/cjs/geometry3d/FrameBuilder.js +57 -45
- package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
- package/lib/cjs/geometry3d/GeometryHandler.d.ts +15 -26
- package/lib/cjs/geometry3d/GeometryHandler.d.ts.map +1 -1
- package/lib/cjs/geometry3d/GeometryHandler.js +23 -32
- package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYZArray.d.ts +0 -8
- package/lib/cjs/geometry3d/GrowableXYZArray.d.ts.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYZArray.js +0 -16
- package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts +4 -4
- package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.js +12 -0
- package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
- package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Matrix3d.js +3 -6
- package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dArrayCarrier.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.d.ts +1 -2
- package/lib/cjs/geometry3d/Point3dVector3d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.js +0 -1
- package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/cjs/geometry3d/PolygonOps.d.ts +2 -2
- package/lib/cjs/geometry3d/PolygonOps.d.ts.map +1 -1
- package/lib/cjs/geometry3d/PolygonOps.js +2 -3
- package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
- package/lib/cjs/geometry3d/Range.d.ts +1 -1
- package/lib/cjs/geometry3d/Range.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Range.js +1 -1
- package/lib/cjs/geometry3d/Range.js.map +1 -1
- package/lib/cjs/geometry3d/Ray3d.d.ts +3 -1
- package/lib/cjs/geometry3d/Ray3d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Ray3d.js +4 -3
- package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
- package/lib/cjs/geometry3d/ReusableObjectCache.d.ts +2 -1
- package/lib/cjs/geometry3d/ReusableObjectCache.d.ts.map +1 -1
- package/lib/cjs/geometry3d/ReusableObjectCache.js +1 -1
- package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
- package/lib/cjs/geometry3d/SortablePolygon.d.ts +1 -1
- package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
- package/lib/cjs/geometry3d/Transform.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Transform.js +4 -6
- package/lib/cjs/geometry3d/Transform.js.map +1 -1
- package/lib/cjs/geometry3d/YawPitchRollAngles.js +1 -1
- package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
- package/lib/cjs/geometry4d/Map4d.d.ts +14 -8
- package/lib/cjs/geometry4d/Map4d.d.ts.map +1 -1
- package/lib/cjs/geometry4d/Map4d.js +38 -16
- package/lib/cjs/geometry4d/Map4d.js.map +1 -1
- package/lib/cjs/geometry4d/Matrix4d.d.ts.map +1 -1
- package/lib/cjs/geometry4d/Matrix4d.js +4 -2
- package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
- package/lib/cjs/geometry4d/Point4d.js.map +1 -1
- package/lib/cjs/numerics/Polynomials.d.ts +2 -2
- package/lib/cjs/numerics/Polynomials.d.ts.map +1 -1
- package/lib/cjs/numerics/Polynomials.js +2 -2
- package/lib/cjs/numerics/Polynomials.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceBuilder.d.ts +18 -6
- package/lib/cjs/polyface/PolyfaceBuilder.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceBuilder.js +55 -25
- package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceClip.d.ts +16 -7
- package/lib/cjs/polyface/PolyfaceClip.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceClip.js +38 -7
- package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceData.d.ts +5 -39
- package/lib/cjs/polyface/PolyfaceData.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceData.js +7 -41
- package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceQuery.d.ts +10 -8
- package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceQuery.js +64 -18
- package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/cjs/serialization/GeometrySamples.d.ts +6 -0
- package/lib/cjs/serialization/GeometrySamples.d.ts.map +1 -1
- package/lib/cjs/serialization/GeometrySamples.js +68 -2
- package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
- package/lib/cjs/solid/LinearSweep.d.ts +1 -1
- package/lib/cjs/solid/LinearSweep.js.map +1 -1
- package/lib/cjs/solid/RotationalSweep.d.ts +1 -1
- package/lib/cjs/solid/RotationalSweep.js.map +1 -1
- package/lib/cjs/solid/RuledSweep.d.ts +1 -1
- package/lib/cjs/solid/RuledSweep.js.map +1 -1
- package/lib/cjs/solid/SweepContour.d.ts +35 -26
- package/lib/cjs/solid/SweepContour.d.ts.map +1 -1
- package/lib/cjs/solid/SweepContour.js +84 -100
- package/lib/cjs/solid/SweepContour.js.map +1 -1
- package/lib/cjs/topology/Graph.d.ts +29 -11
- package/lib/cjs/topology/Graph.d.ts.map +1 -1
- package/lib/cjs/topology/Graph.js +45 -26
- package/lib/cjs/topology/Graph.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeMarkSet.d.ts +2 -2
- package/lib/cjs/topology/HalfEdgeMarkSet.d.ts.map +1 -1
- package/lib/cjs/topology/HalfEdgeMarkSet.js +4 -4
- package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
- package/lib/cjs/topology/Merging.d.ts +3 -0
- package/lib/cjs/topology/Merging.d.ts.map +1 -1
- package/lib/cjs/topology/Merging.js +19 -5
- package/lib/cjs/topology/Merging.js.map +1 -1
- package/lib/cjs/topology/Triangulation.d.ts +15 -7
- package/lib/cjs/topology/Triangulation.d.ts.map +1 -1
- package/lib/cjs/topology/Triangulation.js +89 -47
- package/lib/cjs/topology/Triangulation.js.map +1 -1
- package/lib/esm/Geometry.d.ts +4 -4
- package/lib/esm/Geometry.d.ts.map +1 -1
- package/lib/esm/Geometry.js +2 -2
- package/lib/esm/Geometry.js.map +1 -1
- package/lib/esm/clipping/AlternatingConvexClipTree.d.ts +4 -3
- package/lib/esm/clipping/AlternatingConvexClipTree.d.ts.map +1 -1
- package/lib/esm/clipping/AlternatingConvexClipTree.js +1 -1
- package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
- package/lib/esm/clipping/BooleanClipNode.d.ts +4 -3
- package/lib/esm/clipping/BooleanClipNode.d.ts.map +1 -1
- package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
- package/lib/esm/clipping/ClipPlane.d.ts +2 -1
- package/lib/esm/clipping/ClipPlane.d.ts.map +1 -1
- package/lib/esm/clipping/ClipPlane.js.map +1 -1
- package/lib/esm/clipping/ClipUtils.d.ts +17 -11
- package/lib/esm/clipping/ClipUtils.d.ts.map +1 -1
- package/lib/esm/clipping/ClipUtils.js +14 -8
- package/lib/esm/clipping/ClipUtils.js.map +1 -1
- package/lib/esm/clipping/ClipVector.d.ts +6 -5
- package/lib/esm/clipping/ClipVector.d.ts.map +1 -1
- package/lib/esm/clipping/ClipVector.js +1 -1
- package/lib/esm/clipping/ClipVector.js.map +1 -1
- package/lib/esm/clipping/ConvexClipPlaneSet.d.ts +3 -2
- package/lib/esm/clipping/ConvexClipPlaneSet.d.ts.map +1 -1
- package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.d.ts +2 -1
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.d.ts.map +1 -1
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
- package/lib/esm/core-geometry.d.ts +1 -3
- package/lib/esm/core-geometry.d.ts.map +1 -1
- package/lib/esm/core-geometry.js +1 -3
- package/lib/esm/core-geometry.js.map +1 -1
- package/lib/esm/curve/Arc3d.d.ts.map +1 -1
- package/lib/esm/curve/Arc3d.js +4 -4
- package/lib/esm/curve/Arc3d.js.map +1 -1
- package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +93 -91
- package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
- package/lib/esm/curve/CurveChainWithDistanceIndex.js +171 -152
- package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/esm/curve/CurveCollection.d.ts +19 -19
- package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
- package/lib/esm/curve/CurveCollection.js +19 -20
- package/lib/esm/curve/CurveCollection.js.map +1 -1
- package/lib/esm/curve/CurveCurve.d.ts +47 -30
- package/lib/esm/curve/CurveCurve.d.ts.map +1 -1
- package/lib/esm/curve/CurveCurve.js +81 -46
- package/lib/esm/curve/CurveCurve.js.map +1 -1
- package/lib/esm/curve/CurveFactory.d.ts +1 -1
- package/lib/esm/curve/CurveFactory.js.map +1 -1
- package/lib/esm/curve/CurveLocationDetail.d.ts +17 -5
- package/lib/esm/curve/CurveLocationDetail.d.ts.map +1 -1
- package/lib/esm/curve/CurveLocationDetail.js +12 -1
- package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
- package/lib/esm/curve/CurveOps.d.ts +1 -1
- package/lib/esm/curve/CurveOps.js.map +1 -1
- package/lib/esm/curve/CurvePrimitive.d.ts +1 -2
- package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
- package/lib/esm/curve/CurvePrimitive.js +2 -2
- package/lib/esm/curve/CurvePrimitive.js.map +1 -1
- package/lib/esm/curve/CurveProcessor.d.ts +1 -1
- package/lib/esm/curve/CurveProcessor.js.map +1 -1
- package/lib/esm/curve/{CurveChain.d.ts → CurveTypes.d.ts} +6 -6
- package/lib/esm/curve/CurveTypes.d.ts.map +1 -0
- package/lib/esm/curve/{CurveChain.js → CurveTypes.js} +1 -1
- package/lib/esm/curve/CurveTypes.js.map +1 -0
- package/lib/esm/curve/CurveWireMomentsXYZ.d.ts +1 -1
- package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
- package/lib/esm/curve/ParityRegion.d.ts +3 -3
- package/lib/esm/curve/ParityRegion.d.ts.map +1 -1
- package/lib/esm/curve/ParityRegion.js +2 -2
- package/lib/esm/curve/ParityRegion.js.map +1 -1
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.d.ts +3 -2
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.d.ts.map +1 -1
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js +1 -1
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
- package/lib/esm/curve/Query/CurveSplitContext.d.ts +1 -1
- package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
- package/lib/esm/curve/Query/CylindricalRange.d.ts +1 -1
- package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
- package/lib/esm/curve/Query/InOutTests.d.ts +1 -1
- package/lib/esm/curve/Query/InOutTests.js.map +1 -1
- package/lib/esm/curve/Query/StrokeCountChain.d.ts +1 -1
- package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
- package/lib/esm/curve/RegionOps.d.ts +54 -5
- package/lib/esm/curve/RegionOps.d.ts.map +1 -1
- package/lib/esm/curve/RegionOps.js +153 -3
- package/lib/esm/curve/RegionOps.js.map +1 -1
- package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts +1 -1
- package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/esm/curve/StrokeOptions.d.ts +20 -11
- package/lib/esm/curve/StrokeOptions.d.ts.map +1 -1
- package/lib/esm/curve/StrokeOptions.js +22 -11
- package/lib/esm/curve/StrokeOptions.js.map +1 -1
- package/lib/esm/curve/UnionRegion.d.ts +3 -3
- package/lib/esm/curve/UnionRegion.d.ts.map +1 -1
- package/lib/esm/curve/UnionRegion.js +2 -2
- package/lib/esm/curve/UnionRegion.js.map +1 -1
- package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.d.ts +1 -1
- package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js +2 -2
- package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.d.ts +233 -0
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.d.ts.map +1 -0
- package/lib/esm/curve/{CurveCurveCloseApproachXY.js → internalContexts/CurveCurveCloseApproachXY.js} +299 -202
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -0
- package/lib/{cjs/curve → esm/curve/internalContexts}/CurveCurveIntersectXY.d.ts +45 -51
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -0
- package/lib/esm/curve/{CurveCurveIntersectXY.js → internalContexts/CurveCurveIntersectXY.js} +103 -113
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -0
- package/lib/esm/curve/{CurveCurveIntersectXYZ.d.ts → internalContexts/CurveCurveIntersectXYZ.d.ts} +18 -18
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.d.ts.map +1 -0
- package/lib/esm/curve/{CurveCurveIntersectXYZ.js → internalContexts/CurveCurveIntersectXYZ.js} +134 -108
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -0
- package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.d.ts +2 -2
- package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js +9 -5
- package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/MultiChainCollector.d.ts +1 -1
- package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
- package/lib/esm/geometry3d/BarycentricTriangle.d.ts +1 -0
- package/lib/esm/geometry3d/BarycentricTriangle.d.ts.map +1 -1
- package/lib/esm/geometry3d/BarycentricTriangle.js +1 -0
- package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
- package/lib/esm/geometry3d/FrameBuilder.d.ts +28 -11
- package/lib/esm/geometry3d/FrameBuilder.d.ts.map +1 -1
- package/lib/esm/geometry3d/FrameBuilder.js +57 -45
- package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
- package/lib/esm/geometry3d/GeometryHandler.d.ts +15 -26
- package/lib/esm/geometry3d/GeometryHandler.d.ts.map +1 -1
- package/lib/esm/geometry3d/GeometryHandler.js +23 -32
- package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
- package/lib/esm/geometry3d/GrowableXYZArray.d.ts +0 -8
- package/lib/esm/geometry3d/GrowableXYZArray.d.ts.map +1 -1
- package/lib/esm/geometry3d/GrowableXYZArray.js +0 -16
- package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.d.ts +4 -4
- package/lib/esm/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.js +12 -0
- package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
- package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Matrix3d.js +3 -6
- package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
- package/lib/esm/geometry3d/Point3dArrayCarrier.d.ts.map +1 -1
- package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.d.ts +1 -2
- package/lib/esm/geometry3d/Point3dVector3d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.js +0 -1
- package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/esm/geometry3d/PolygonOps.d.ts +2 -2
- package/lib/esm/geometry3d/PolygonOps.d.ts.map +1 -1
- package/lib/esm/geometry3d/PolygonOps.js +2 -3
- package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
- package/lib/esm/geometry3d/Range.d.ts +1 -1
- package/lib/esm/geometry3d/Range.d.ts.map +1 -1
- package/lib/esm/geometry3d/Range.js +1 -1
- package/lib/esm/geometry3d/Range.js.map +1 -1
- package/lib/esm/geometry3d/Ray3d.d.ts +3 -1
- package/lib/esm/geometry3d/Ray3d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Ray3d.js +4 -3
- package/lib/esm/geometry3d/Ray3d.js.map +1 -1
- package/lib/esm/geometry3d/ReusableObjectCache.d.ts +2 -1
- package/lib/esm/geometry3d/ReusableObjectCache.d.ts.map +1 -1
- package/lib/esm/geometry3d/ReusableObjectCache.js +1 -1
- package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
- package/lib/esm/geometry3d/SortablePolygon.d.ts +1 -1
- package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
- package/lib/esm/geometry3d/Transform.d.ts.map +1 -1
- package/lib/esm/geometry3d/Transform.js +4 -6
- package/lib/esm/geometry3d/Transform.js.map +1 -1
- package/lib/esm/geometry3d/YawPitchRollAngles.js +1 -1
- package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
- package/lib/esm/geometry4d/Map4d.d.ts +14 -8
- package/lib/esm/geometry4d/Map4d.d.ts.map +1 -1
- package/lib/esm/geometry4d/Map4d.js +38 -16
- package/lib/esm/geometry4d/Map4d.js.map +1 -1
- package/lib/esm/geometry4d/Matrix4d.d.ts.map +1 -1
- package/lib/esm/geometry4d/Matrix4d.js +4 -2
- package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
- package/lib/esm/geometry4d/Point4d.js.map +1 -1
- package/lib/esm/numerics/Polynomials.d.ts +2 -2
- package/lib/esm/numerics/Polynomials.d.ts.map +1 -1
- package/lib/esm/numerics/Polynomials.js +2 -2
- package/lib/esm/numerics/Polynomials.js.map +1 -1
- package/lib/esm/polyface/PolyfaceBuilder.d.ts +18 -6
- package/lib/esm/polyface/PolyfaceBuilder.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceBuilder.js +55 -25
- package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/esm/polyface/PolyfaceClip.d.ts +16 -7
- package/lib/esm/polyface/PolyfaceClip.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceClip.js +38 -7
- package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
- package/lib/esm/polyface/PolyfaceData.d.ts +5 -39
- package/lib/esm/polyface/PolyfaceData.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceData.js +7 -41
- package/lib/esm/polyface/PolyfaceData.js.map +1 -1
- package/lib/esm/polyface/PolyfaceQuery.d.ts +10 -8
- package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceQuery.js +64 -18
- package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/esm/serialization/GeometrySamples.d.ts +6 -0
- package/lib/esm/serialization/GeometrySamples.d.ts.map +1 -1
- package/lib/esm/serialization/GeometrySamples.js +68 -2
- package/lib/esm/serialization/GeometrySamples.js.map +1 -1
- package/lib/esm/solid/LinearSweep.d.ts +1 -1
- package/lib/esm/solid/LinearSweep.js.map +1 -1
- package/lib/esm/solid/RotationalSweep.d.ts +1 -1
- package/lib/esm/solid/RotationalSweep.js.map +1 -1
- package/lib/esm/solid/RuledSweep.d.ts +1 -1
- package/lib/esm/solid/RuledSweep.js.map +1 -1
- package/lib/esm/solid/SweepContour.d.ts +35 -26
- package/lib/esm/solid/SweepContour.d.ts.map +1 -1
- package/lib/esm/solid/SweepContour.js +84 -100
- package/lib/esm/solid/SweepContour.js.map +1 -1
- package/lib/esm/topology/Graph.d.ts +29 -11
- package/lib/esm/topology/Graph.d.ts.map +1 -1
- package/lib/esm/topology/Graph.js +45 -26
- package/lib/esm/topology/Graph.js.map +1 -1
- package/lib/esm/topology/HalfEdgeMarkSet.d.ts +2 -2
- package/lib/esm/topology/HalfEdgeMarkSet.d.ts.map +1 -1
- package/lib/esm/topology/HalfEdgeMarkSet.js +2 -2
- package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
- package/lib/esm/topology/Merging.d.ts +3 -0
- package/lib/esm/topology/Merging.d.ts.map +1 -1
- package/lib/esm/topology/Merging.js +19 -5
- package/lib/esm/topology/Merging.js.map +1 -1
- package/lib/esm/topology/Triangulation.d.ts +15 -7
- package/lib/esm/topology/Triangulation.d.ts.map +1 -1
- package/lib/esm/topology/Triangulation.js +89 -47
- package/lib/esm/topology/Triangulation.js.map +1 -1
- package/package.json +4 -4
- package/lib/cjs/curve/CurveChain.d.ts.map +0 -1
- package/lib/cjs/curve/CurveChain.js.map +0 -1
- package/lib/cjs/curve/CurveCurveCloseApproachXY.d.ts +0 -175
- package/lib/cjs/curve/CurveCurveCloseApproachXY.d.ts.map +0 -1
- package/lib/cjs/curve/CurveCurveCloseApproachXY.js.map +0 -1
- package/lib/cjs/curve/CurveCurveIntersectXY.d.ts.map +0 -1
- package/lib/cjs/curve/CurveCurveIntersectXY.js.map +0 -1
- package/lib/cjs/curve/CurveCurveIntersectXYZ.d.ts.map +0 -1
- package/lib/cjs/curve/CurveCurveIntersectXYZ.js.map +0 -1
- package/lib/esm/curve/CurveChain.d.ts.map +0 -1
- package/lib/esm/curve/CurveChain.js.map +0 -1
- package/lib/esm/curve/CurveCurveCloseApproachXY.d.ts +0 -175
- package/lib/esm/curve/CurveCurveCloseApproachXY.d.ts.map +0 -1
- package/lib/esm/curve/CurveCurveCloseApproachXY.js.map +0 -1
- package/lib/esm/curve/CurveCurveIntersectXY.d.ts.map +0 -1
- package/lib/esm/curve/CurveCurveIntersectXY.js.map +0 -1
- package/lib/esm/curve/CurveCurveIntersectXYZ.d.ts.map +0 -1
- package/lib/esm/curve/CurveCurveIntersectXYZ.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SweepContour.js","sourceRoot":"","sources":["../../../src/solid/SweepContour.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 Solid\r\n */\r\n\r\nimport { ClipPlane } from \"../clipping/ClipPlane\";\r\nimport { ConvexClipPlaneSet } from \"../clipping/ConvexClipPlaneSet\";\r\nimport { UnionOfConvexClipPlaneSets } from \"../clipping/UnionOfConvexClipPlaneSets\";\r\nimport { AnyCurve } from \"../curve/CurveChain\";\r\nimport { CurveCollection } from \"../curve/CurveCollection\";\r\nimport { CurvePrimitive } from \"../curve/CurvePrimitive\";\r\nimport { LineString3d } from \"../curve/LineString3d\";\r\nimport { Loop } from \"../curve/Loop\";\r\nimport { ParityRegion } from \"../curve/ParityRegion\";\r\nimport { Path } from \"../curve/Path\";\r\nimport { RegionOps } from \"../curve/RegionOps\";\r\nimport { StrokeOptions } from \"../curve/StrokeOptions\";\r\nimport { FrameBuilder } from \"../geometry3d/FrameBuilder\";\r\nimport { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\r\nimport { PolygonOps } from \"../geometry3d/PolygonOps\";\r\nimport { Ray3d } from \"../geometry3d/Ray3d\";\r\nimport { Transform } from \"../geometry3d/Transform\";\r\nimport { IndexedPolyface } from \"../polyface/Polyface\";\r\nimport { PolyfaceBuilder } from \"../polyface/PolyfaceBuilder\";\r\nimport { HalfEdgeGraphSearch } from \"../topology/HalfEdgeGraphSearch\";\r\nimport { MultiLineStringDataVariant, Triangulator } from \"../topology/Triangulation\";\r\n\r\n/**\r\n * Sweepable contour with Transform for local to world interaction.\r\n * * The surface/solid classes `LinearSweep`, `RotationalSweep`, `RuledSweep` use this for their swept contours.\r\n * @public\r\n */\r\nexport class SweepContour {\r\n /** The underlying curve collection, in its world coordinates position. */\r\n public curves: CurveCollection;\r\n /** coordinate frame that in which the curves are all in the xy plane. */\r\n public localToWorld: Transform;\r\n /** Axis used only in rotational case. */\r\n public axis: Ray3d | undefined;\r\n\r\n private constructor(contour: AnyCurve, map: Transform, axis: Ray3d | undefined) {\r\n if (contour instanceof CurvePrimitive) {\r\n // this.curves is a CurveCollection (not AnyCurve) so that contour type determines closure.\r\n // This is the only time we detect CurvePrimitive closure and wrap as a relevant CurveChain.\r\n const primitive = contour;\r\n contour = contour.startPoint().isAlmostEqual(contour.endPoint()) ? new Loop() : new Path();\r\n contour.tryAddChild(primitive);\r\n }\r\n this.curves = contour;\r\n this.localToWorld = map;\r\n this.axis = axis;\r\n }\r\n /** Create for linear sweep.\r\n * * The optional default normal may be useful for guiding coordinate frame setup.\r\n * * the contour is CAPTURED.\r\n */\r\n public static createForLinearSweep(contour: AnyCurve, defaultNormal?: Vector3d): SweepContour | undefined {\r\n const localToWorld = FrameBuilder.createRightHandedFrame(defaultNormal, contour);\r\n if (localToWorld) {\r\n return new SweepContour(contour, localToWorld, undefined);\r\n }\r\n return undefined;\r\n }\r\n\r\n /** Create for linear sweep.\r\n * * The optional default normal may be useful for guiding coordinate frame setup.\r\n * * the points are captured into linestrings and Loops as needed.\r\n */\r\n public static createForPolygon(points: MultiLineStringDataVariant, defaultNormal?: Vector3d): SweepContour | undefined {\r\n const localToWorld = FrameBuilder.createRightHandedFrame(defaultNormal, points);\r\n if (localToWorld) {\r\n if (defaultNormal !== undefined) {\r\n if (localToWorld.matrix.dotColumnZ(defaultNormal))\r\n localToWorld.matrix.scaleColumnsInPlace(1.0, -1.0, -1.0);\r\n }\r\n const linestrings = LineString3d.createArrayOfLineString3d(points);\r\n const loops = [];\r\n for (const ls of linestrings) {\r\n ls.addClosurePoint();\r\n loops.push(Loop.create(ls));\r\n }\r\n if (loops.length === 1) {\r\n return new SweepContour(loops[0], localToWorld, undefined);\r\n } else if (loops.length > 1) {\r\n return new SweepContour(ParityRegion.createLoops(loops), localToWorld, undefined);\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n /** Create for rotational sweep.\r\n * * The axis ray is retained.\r\n * * the contour is CAPTURED.\r\n */\r\n public static createForRotation(contour: AnyCurve, axis: Ray3d): SweepContour | undefined {\r\n // createRightHandedFrame -- the axis is a last-gasp resolver for in-plane vectors.\r\n const localToWorld = FrameBuilder.createRightHandedFrame(undefined, contour, axis);\r\n if (localToWorld) {\r\n return new SweepContour(contour, localToWorld, axis.clone());\r\n }\r\n return undefined;\r\n }\r\n /** Return (Reference to) the curves */\r\n public getCurves(): CurveCollection { return this.curves; }\r\n /** Apply `transform` to the curves, axis.\r\n * * The local to world frame is reconstructed for the transformed curves.\r\n */\r\n public tryTransformInPlace(transform: Transform): boolean {\r\n if (this.curves.tryTransformInPlace(transform)) {\r\n if (this.axis)\r\n this.axis.transformInPlace(transform);\r\n\r\n const localToWorld = this.axis !== undefined\r\n ? FrameBuilder.createRightHandedFrame(undefined, this.curves, this.axis)\r\n : FrameBuilder.createRightHandedFrame(undefined, this.curves);\r\n if (localToWorld) {\r\n this.localToWorld.setFrom(localToWorld);\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n /** Return a deep clone. */\r\n public clone(): SweepContour {\r\n return new SweepContour(this.curves.clone(), this.localToWorld.clone(), this.axis);\r\n }\r\n /** Return a transformed clone. */\r\n public cloneTransformed(transform: Transform): SweepContour | undefined {\r\n const newContour = this.clone();\r\n if (newContour.tryTransformInPlace(transform))\r\n return newContour;\r\n return undefined;\r\n }\r\n /** Test for near equality of cures and local frame. */\r\n public isAlmostEqual(other: any): boolean {\r\n if (other instanceof SweepContour) {\r\n return this.curves.isAlmostEqual(other.curves) && this.localToWorld.isAlmostEqual(other.localToWorld);\r\n }\r\n return false;\r\n }\r\n\r\n private _xyStrokes?: AnyCurve;\r\n private _facets?: IndexedPolyface;\r\n public get xyStrokes(): AnyCurve | undefined { return this._xyStrokes; }\r\n /**\r\n * build the (cached) internal facets.\r\n * @param options options for stroking the curves.\r\n */\r\n public buildFacets(options: StrokeOptions | undefined): void {\r\n if (!this._facets) {\r\n if (this.curves instanceof Loop) {\r\n this._xyStrokes = this.curves.cloneStroked(options);\r\n if (this._xyStrokes instanceof Loop && this._xyStrokes.children.length === 1) {\r\n const children = this._xyStrokes.children;\r\n const linestring = children[0] as LineString3d;\r\n const points = linestring.points;\r\n this.localToWorld.multiplyInversePoint3dArrayInPlace(points);\r\n if (PolygonOps.sumTriangleAreasXY(points) < 0)\r\n points.reverse();\r\n const graph = Triangulator.createTriangulatedGraphFromSingleLoop(points);\r\n if (graph) {\r\n Triangulator.flipTriangles(graph);\r\n const unflippedPoly = PolyfaceBuilder.graphToPolyface(graph, options);\r\n this._facets = unflippedPoly;\r\n this._facets.tryTransformInPlace(this.localToWorld);\r\n } else { // earcut failed (e.g., on a split washer polygon, where the bridge edge is traversed twice)\r\n const polyface = RegionOps.polygonXYAreaUnionLoopsToPolyface(points, [], true);\r\n if (polyface) {\r\n this._facets = polyface as IndexedPolyface;\r\n this._facets.tryTransformInPlace(this.localToWorld);\r\n }\r\n }\r\n }\r\n } else if (this.curves instanceof ParityRegion) {\r\n this._xyStrokes = this.curves.cloneStroked(options);\r\n if (this._xyStrokes instanceof (ParityRegion)) {\r\n const worldToLocal = this.localToWorld.inverse()!;\r\n this._xyStrokes.tryTransformInPlace(worldToLocal);\r\n const strokes = [];\r\n for (const childLoop of this._xyStrokes.children) {\r\n const loopCurves = childLoop.children;\r\n if (loopCurves.length === 1) {\r\n const c = loopCurves[0];\r\n if (c instanceof LineString3d)\r\n strokes.push(c.packedPoints);\r\n }\r\n }\r\n const numLoops = strokes.length;\r\n /** Try the earcut algorithm first -- lots less machinery, but can't handle any form of overlap */\r\n const graph = Triangulator.createTriangulatedGraphFromLoops(strokes);\r\n if (graph && HalfEdgeGraphSearch.isTriangulatedCCW(graph, true, numLoops - 1)) {\r\n Triangulator.flipTriangles(graph);\r\n const unflippedPoly = PolyfaceBuilder.graphToPolyface(graph, options);\r\n this._facets = unflippedPoly;\r\n this._facets.tryTransformInPlace(this.localToWorld);\r\n } else {\r\n // earcut failed. Restart with full merge and parity analysis.\r\n const polyface = RegionOps.polygonXYAreaUnionLoopsToPolyface(strokes, [], true);\r\n if (polyface) {\r\n this._facets = polyface as IndexedPolyface;\r\n this._facets.tryTransformInPlace(this.localToWorld);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n /** delete existing facets.\r\n * * This protects against PolyfaceBuilder reusing facets constructed with different options settings.\r\n */\r\n public purgeFacets() {\r\n this._facets = undefined;\r\n }\r\n\r\n /** Emit facets to a builder.\r\n * This method may cache and reuse facets over multiple calls.\r\n */\r\n public emitFacets(builder: PolyfaceBuilder, reverse: boolean, transform?: Transform) {\r\n this.buildFacets(builder.options);\r\n if (this._facets)\r\n builder.addIndexedPolyface(this._facets, reverse, transform);\r\n }\r\n\r\n /** Emit facets to a function\r\n * This method may cache and reuse facets over multiple calls.\r\n */\r\n public announceFacets(announce: (facets: IndexedPolyface) => void, options: StrokeOptions | undefined) {\r\n this.buildFacets(options);\r\n if (this._facets)\r\n announce(this._facets);\r\n }\r\n\r\n /**\r\n * Triangulate the region.\r\n * Create a UnionOfConvexClipPlaneSets that clips to the swept region.\r\n * * If sweepVector is not given, the sweep direction is perpendicular to the plane of the contour.\r\n * * If sweepVector is given, it is the sweep direction and does not have to be perpendicular to the contour.\r\n * * cap0 and cap1 indicate construction of clip planes parallel to the contour plane.\r\n * * If cap1 is true, the cap plane is at `anyPointOnPlane + sweepVector`. That is, the sweep vector indicates both direction and distance.\r\n * * caps are NOT created of sweepVector is not given.\r\n */\r\n public sweepToUnionOfConvexClipPlaneSets(sweepVector?: Vector3d, cap0: boolean = false, cap1: boolean = false): UnionOfConvexClipPlaneSets | undefined {\r\n const builder = PolyfaceBuilder.create();\r\n // It's a trip around the barn, but it's easy to make a polyface and scan it . . .\r\n if (!sweepVector)\r\n cap0 = cap1 = false;\r\n this.buildFacets(builder.options);\r\n if (sweepVector === undefined)\r\n sweepVector = this.localToWorld.matrix.columnZ();\r\n const zVector = this.localToWorld.matrix.columnZ();\r\n const facets = this._facets;\r\n const point0 = Point3d.create();\r\n const point1 = Point3d.create();\r\n if (facets) {\r\n const plane0Origin = this.localToWorld.getOrigin();\r\n const plane1Origin = plane0Origin.plus(sweepVector);\r\n const inwardNormal0 = zVector.clone();\r\n const inwardNormal1 = zVector.negate();\r\n\r\n const result = UnionOfConvexClipPlaneSets.createEmpty();\r\n const visitor = facets.createVisitor(1);\r\n for (visitor.reset(); visitor.moveToNextFacet();) {\r\n const numEdges = visitor.point.length - 1;\r\n const clipper = ConvexClipPlaneSet.createEmpty();\r\n for (let i = 0; i < numEdges; i++) {\r\n visitor.point.getPoint3dAtUncheckedPointIndex(i, point0);\r\n visitor.point.getPoint3dAtUncheckedPointIndex(i + 1, point1);\r\n const plane = ClipPlane.createEdgeAndUpVector(point1, point0, sweepVector);\r\n const visible = visitor.edgeVisible[i];\r\n plane?.setFlags(!visible, !visible);\r\n clipper.addPlaneToConvexSet(plane);\r\n }\r\n if (cap0)\r\n clipper.addPlaneToConvexSet(ClipPlane.createNormalAndPoint(inwardNormal0, plane0Origin));\r\n if (cap1)\r\n clipper.addPlaneToConvexSet(ClipPlane.createNormalAndPoint(inwardNormal1, plane1Origin));\r\n result.addConvexSet(clipper);\r\n }\r\n return result;\r\n }\r\n return undefined;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"SweepContour.js","sourceRoot":"","sources":["../../../src/solid/SweepContour.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 Solid\r\n */\r\n\r\nimport { ClipPlane } from \"../clipping/ClipPlane\";\r\nimport { ConvexClipPlaneSet } from \"../clipping/ConvexClipPlaneSet\";\r\nimport { UnionOfConvexClipPlaneSets } from \"../clipping/UnionOfConvexClipPlaneSets\";\r\nimport { AnyCurve, AnyRegion } from \"../curve/CurveTypes\";\r\nimport { CurveCollection } from \"../curve/CurveCollection\";\r\nimport { CurvePrimitive } from \"../curve/CurvePrimitive\";\r\nimport { LineString3d } from \"../curve/LineString3d\";\r\nimport { Loop } from \"../curve/Loop\";\r\nimport { ParityRegion } from \"../curve/ParityRegion\";\r\nimport { Path } from \"../curve/Path\";\r\nimport { RegionOps } from \"../curve/RegionOps\";\r\nimport { StrokeOptions } from \"../curve/StrokeOptions\";\r\nimport { FrameBuilder } from \"../geometry3d/FrameBuilder\";\r\nimport { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\r\nimport { Ray3d } from \"../geometry3d/Ray3d\";\r\nimport { Transform } from \"../geometry3d/Transform\";\r\nimport { IndexedPolyface } from \"../polyface/Polyface\";\r\nimport { PolyfaceBuilder } from \"../polyface/PolyfaceBuilder\";\r\nimport { MultiLineStringDataVariant } from \"../topology/Triangulation\";\r\n\r\n/**\r\n * Sweepable planar contour with Transform for local to world interaction.\r\n * * The surface/solid classes `LinearSweep`, `RotationalSweep`, `RuledSweep` use this for their swept contours.\r\n * @public\r\n */\r\nexport class SweepContour {\r\n /** The underlying curve collection, in its world coordinates position. */\r\n public curves: CurveCollection;\r\n /** coordinate frame that in which the curves are all in the xy plane. */\r\n public localToWorld: Transform;\r\n /** Axis used only in rotational case. */\r\n public axis: Ray3d | undefined;\r\n\r\n /** caches */\r\n private _xyStrokes?: CurveCollection;\r\n private _facets?: IndexedPolyface;\r\n\r\n private constructor(contour: AnyCurve, map: Transform, axis: Ray3d | undefined) {\r\n if (contour instanceof CurvePrimitive) {\r\n // this.curves is a CurveCollection (not AnyCurve) so that contour type determines closure.\r\n // This is the only time we detect CurvePrimitive closure and wrap as a relevant CurveChain.\r\n // Note that we are ASSUMING closure means planar here. This is potentially problematic.\r\n const primitive = contour;\r\n contour = contour.startPoint().isAlmostEqual(contour.endPoint()) ? new Loop() : new Path();\r\n contour.tryAddChild(primitive);\r\n }\r\n this.curves = contour;\r\n this.localToWorld = map;\r\n this.axis = axis;\r\n }\r\n /** Create for linear sweep.\r\n * @param contour curve to sweep, CAPTURED. For best results, contour should be planar.\r\n * @param defaultNormal optional default normal for guiding coordinate frame setup.\r\n */\r\n public static createForLinearSweep(contour: AnyCurve, defaultNormal?: Vector3d): SweepContour | undefined {\r\n const localToWorld = FrameBuilder.createRightHandedFrame(defaultNormal, contour);\r\n if (localToWorld) {\r\n return new SweepContour(contour, localToWorld, undefined);\r\n }\r\n return undefined;\r\n }\r\n /** Create for linear sweep.\r\n * @param points polygon to sweep, CAPTURED as a Loop. Closure point is optional. If multiple polygons are passed in, parity logic is employed.\r\n * For best results, all points should be coplanar.\r\n * @param defaultNormal optional default normal for guiding coordinate frame setup.\r\n */\r\n public static createForPolygon(points: MultiLineStringDataVariant, defaultNormal?: Vector3d): SweepContour | undefined {\r\n const localToWorld = FrameBuilder.createRightHandedFrame(defaultNormal, points);\r\n if (localToWorld) {\r\n if (defaultNormal !== undefined) {\r\n if (localToWorld.matrix.dotColumnZ(defaultNormal))\r\n localToWorld.matrix.scaleColumnsInPlace(1.0, -1.0, -1.0);\r\n }\r\n const linestrings = LineString3d.createArrayOfLineString3d(points);\r\n const loops = [];\r\n for (const ls of linestrings) {\r\n ls.addClosurePoint();\r\n loops.push(Loop.create(ls));\r\n }\r\n if (loops.length === 1) {\r\n return new SweepContour(loops[0], localToWorld, undefined);\r\n } else if (loops.length > 1) {\r\n return new SweepContour(ParityRegion.createLoops(loops), localToWorld, undefined);\r\n }\r\n }\r\n return undefined;\r\n }\r\n /** Create for rotational sweep.\r\n * @param contour curve to sweep, CAPTURED. For best results, contour should be planar.\r\n * @param axis rotation axis\r\n */\r\n public static createForRotation(contour: AnyCurve, axis: Ray3d): SweepContour | undefined {\r\n // createRightHandedFrame -- the axis is a last-gasp resolver for in-plane vectors.\r\n const localToWorld = FrameBuilder.createRightHandedFrame(undefined, contour, axis);\r\n if (localToWorld) {\r\n return new SweepContour(contour, localToWorld, axis.clone());\r\n }\r\n return undefined;\r\n }\r\n /** Return (Reference to) the curves */\r\n public getCurves(): CurveCollection { return this.curves; }\r\n /**\r\n * Apply `transform` to the curves, axis.\r\n * * The local to world frame is reconstructed for the transformed curves.\r\n */\r\n public tryTransformInPlace(transform: Transform): boolean {\r\n if (this.curves.tryTransformInPlace(transform)) {\r\n if (this.axis)\r\n this.axis.transformInPlace(transform);\r\n\r\n const localToWorld = this.axis !== undefined\r\n ? FrameBuilder.createRightHandedFrame(undefined, this.curves, this.axis)\r\n : FrameBuilder.createRightHandedFrame(undefined, this.curves);\r\n if (localToWorld) {\r\n this.localToWorld.setFrom(localToWorld);\r\n this._xyStrokes = undefined;\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n /** Return a deep clone. */\r\n public clone(): SweepContour {\r\n return new SweepContour(this.curves.clone(), this.localToWorld.clone(), this.axis);\r\n }\r\n /** Return a transformed clone. */\r\n public cloneTransformed(transform: Transform): SweepContour | undefined {\r\n const newContour = this.clone();\r\n if (newContour.tryTransformInPlace(transform))\r\n return newContour;\r\n return undefined;\r\n }\r\n /** Test for near equality of curves, frame, and axis. */\r\n public isAlmostEqual(other: any): boolean {\r\n if (! (other instanceof SweepContour))\r\n return false;\r\n if (!this.curves.isAlmostEqual(other.curves))\r\n return false;\r\n if (!this.localToWorld.isAlmostEqual(other.localToWorld))\r\n return false;\r\n if (this.axis && other.axis) {\r\n if (!this.axis.isAlmostEqual(other.axis))\r\n return false;\r\n } else if (this.axis || other.axis)\r\n return false;\r\n return true;\r\n }\r\n\r\n /** Recompute the local strokes cache for this contour */\r\n public computeXYStrokes(options?: StrokeOptions): void {\r\n this._xyStrokes = undefined;\r\n const worldToLocal = this.localToWorld.inverse();\r\n if (worldToLocal) {\r\n const strokes = this.curves.cloneStroked(options);\r\n if (strokes.tryTransformInPlace(worldToLocal))\r\n this._xyStrokes = strokes;\r\n }\r\n }\r\n /** Return cached contour strokes */\r\n public get xyStrokes(): CurveCollection | undefined {\r\n return this._xyStrokes;\r\n }\r\n\r\n /**\r\n * Build the (cached) internal facets for the contour.\r\n * @param options primarily how to stroke the contour, but also how to facet it.\r\n * * By default, a triangulation is computed, but if `options.maximizeConvexFacets === true`, edges between coplanar triangles are removed to return maximally convex facets.\r\n */\r\n public buildFacets(options?: StrokeOptions): void {\r\n if (this._facets)\r\n return;\r\n if (!this.curves.isAnyRegion())\r\n return;\r\n const worldToLocal = this.localToWorld.inverse();\r\n if (!worldToLocal)\r\n return;\r\n const localRegion = this.curves.cloneTransformed(worldToLocal) as AnyRegion | undefined;\r\n if (!localRegion)\r\n return;\r\n if (this._facets = RegionOps.facetRegionXY(localRegion, options))\r\n this._facets.tryTransformInPlace(this.localToWorld);\r\n }\r\n /**\r\n * Delete facet cache.\r\n * * This protects against PolyfaceBuilder reusing facets constructed with different options settings.\r\n */\r\n public purgeFacets() {\r\n this._facets = undefined;\r\n }\r\n /** Emit facets to a builder.\r\n * This method may cache and reuse facets over multiple calls.\r\n */\r\n public emitFacets(builder: PolyfaceBuilder, reverse: boolean, transform?: Transform) {\r\n this.buildFacets(builder.options);\r\n if (this._facets)\r\n builder.addIndexedPolyface(this._facets, reverse, transform);\r\n }\r\n /** Emit facets to a function\r\n * This method may cache and reuse facets over multiple calls.\r\n * @param announce callback to receive the facet set\r\n * @param options how to stroke the contour\r\n */\r\n public announceFacets(announce: (facets: IndexedPolyface) => void, options?: StrokeOptions): void {\r\n this.buildFacets(options);\r\n if (this._facets)\r\n announce(this._facets);\r\n }\r\n /**\r\n * Create a UnionOfConvexClipPlaneSets that clips to the swept faceted contour region.\r\n * @param sweepVector the sweep direction (does not have to be perpendicular to the contour). If undefined, the sweep direction is perpendicular to the plane of the contour, and no caps are constructed.\r\n * @param cap0 construct a clip plane equal to the contour plane. Note that `sweepVector` must be defined.\r\n * @param cap1 construct a clip plane parallel to the contour plane at the end of `sweepVector`. That is, sweepVector indicates both direction and distance.\r\n * @param options how to stroke the contour\r\n * @returns clipper defined by faceting then sweeping the contour region\r\n */\r\n public sweepToUnionOfConvexClipPlaneSets(sweepVector?: Vector3d, cap0: boolean = false, cap1: boolean = false, options?: StrokeOptions): UnionOfConvexClipPlaneSets | undefined {\r\n if (!options)\r\n options = StrokeOptions.createForFacets();\r\n if (!sweepVector) {\r\n cap0 = cap1 = false;\r\n sweepVector = this.localToWorld.matrix.columnZ();\r\n }\r\n options.maximizeConvexFacets = true; // produce fewer ConvexClipPlaneSets\r\n // It's a trip around the barn, but it's easy to make a polyface and scan it . . .\r\n this.buildFacets(options);\r\n const facets = this._facets;\r\n if (facets) {\r\n const point0 = Point3d.create();\r\n const point1 = Point3d.create();\r\n const result = UnionOfConvexClipPlaneSets.createEmpty();\r\n const visitor = facets.createVisitor(1);\r\n for (visitor.reset(); visitor.moveToNextFacet();) {\r\n const numEdges = visitor.point.length - 1;\r\n const clipper = ConvexClipPlaneSet.createEmpty();\r\n for (let i = 0; i < numEdges; i++) {\r\n visitor.point.getPoint3dAtUncheckedPointIndex(i, point0);\r\n visitor.point.getPoint3dAtUncheckedPointIndex(i + 1, point1);\r\n const plane = ClipPlane.createEdgeAndUpVector(point1, point0, sweepVector);\r\n const visible = visitor.edgeVisible[i];\r\n plane?.setFlags(!visible, !visible);\r\n clipper.addPlaneToConvexSet(plane);\r\n }\r\n result.addConvexSet(clipper);\r\n }\r\n if (cap0 || cap1) {\r\n const zVector = this.localToWorld.matrix.columnZ();\r\n const plane0Origin = this.localToWorld.getOrigin();\r\n const plane1Origin = plane0Origin.plus(sweepVector);\r\n const inwardNormal0 = zVector.clone();\r\n const inwardNormal1 = zVector.negate();\r\n const clipper = ConvexClipPlaneSet.createEmpty();\r\n if (cap0)\r\n clipper.addPlaneToConvexSet(ClipPlane.createNormalAndPoint(inwardNormal0, plane0Origin));\r\n if (cap1)\r\n clipper.addPlaneToConvexSet(ClipPlane.createNormalAndPoint(inwardNormal1, plane1Origin));\r\n result.addConvexSet(clipper);\r\n }\r\n return result;\r\n }\r\n return undefined;\r\n }\r\n}\r\n"]}
|
|
@@ -253,8 +253,8 @@ export declare class HalfEdge implements HalfEdgeUserData {
|
|
|
253
253
|
*/
|
|
254
254
|
setMaskAroundEdge(mask: HalfEdgeMask): void;
|
|
255
255
|
/**
|
|
256
|
-
*
|
|
257
|
-
* @param mask mask to
|
|
256
|
+
* Clear a mask on both sides of an edge.
|
|
257
|
+
* @param mask mask to clear on this edge and its `edgeMate`
|
|
258
258
|
*/
|
|
259
259
|
clearMaskAroundEdge(mask: HalfEdgeMask): void;
|
|
260
260
|
/** Returns the number of edges around this face. */
|
|
@@ -382,17 +382,34 @@ export declare class HalfEdge implements HalfEdgeUserData {
|
|
|
382
382
|
*/
|
|
383
383
|
static crossProductXYAlongChain(nodeA: HalfEdge, nodeB: HalfEdge, nodeC: HalfEdge): number;
|
|
384
384
|
/**
|
|
385
|
-
*
|
|
385
|
+
* Compute whether the sector defined by the chain of nodes is convex.
|
|
386
|
+
* * This computation ignores z-coordinates and connectivity, so the nodes are not required to be in the same face loop.
|
|
387
|
+
* @param nodeA the first node in the chain, nominally the face predecessor of nodeB
|
|
388
|
+
* @param nodeB the second node in the chain; the node at the sector vertex
|
|
389
|
+
* @param nodeC the third node in the chain, nominally the face successor of nodeB
|
|
390
|
+
* @param signedAreaTol optional signed area tolerance to use in test for parallel vectors.
|
|
391
|
+
* Typically this is a fraction of the sector's face's signed area. We can't compute area here, so if undefined, zero tolerance is used.
|
|
392
|
+
* @returns true iff the sector is convex
|
|
386
393
|
*/
|
|
387
|
-
static isSectorConvex(nodeA: HalfEdge, nodeB: HalfEdge, nodeC: HalfEdge): boolean;
|
|
394
|
+
static isSectorConvex(nodeA: HalfEdge, nodeB: HalfEdge, nodeC: HalfEdge, signedAreaTol?: number): boolean;
|
|
388
395
|
/**
|
|
389
|
-
*
|
|
396
|
+
* Compute whether the sector at this node is convex.
|
|
397
|
+
* * This computation ignores z-coordinates.
|
|
398
|
+
* @param signedAreaTol optional signed area tolerance to use in test for parallel vectors.
|
|
399
|
+
* If undefined, a fraction ([[Geometry.smallMetricDistanceSquared]]) of the computed signed area is used.
|
|
400
|
+
* Pass zero to skip toleranced computation.
|
|
401
|
+
* @returns true iff the sector is convex and its two edges are not antiparallel.
|
|
390
402
|
*/
|
|
391
|
-
isSectorConvex(): boolean;
|
|
403
|
+
isSectorConvex(signedAreaTol?: number): boolean;
|
|
392
404
|
/**
|
|
393
|
-
*
|
|
405
|
+
* Compute whether this face is convex.
|
|
406
|
+
* * This computation ignores z-coordinates.
|
|
407
|
+
* @param tolerance optional relative tolerance to use in test for parallel vectors.
|
|
408
|
+
* Default value is [[Geometry.smallMetricDistanceSquared]].
|
|
409
|
+
* Pass zero to skip toleranced computation.
|
|
410
|
+
* @returns true iff this face is convex.
|
|
394
411
|
*/
|
|
395
|
-
isFaceConvex(): boolean;
|
|
412
|
+
isFaceConvex(tolerance?: number): boolean;
|
|
396
413
|
/**
|
|
397
414
|
* Isolate the edge from the graph by yanking each end from its vertex loop.
|
|
398
415
|
*/
|
|
@@ -405,7 +422,7 @@ export declare class HalfEdge implements HalfEdgeUserData {
|
|
|
405
422
|
belowYX(other: HalfEdge): boolean;
|
|
406
423
|
/** Returns Returns true if the node does NOT have Mask.EXTERIOR_MASK set. */
|
|
407
424
|
static testNodeMaskNotExterior(node: HalfEdge): boolean;
|
|
408
|
-
/** Returns Returns true if the
|
|
425
|
+
/** Returns Returns true if the edge mate has Mask.EXTERIOR_MASK set. */
|
|
409
426
|
static testMateMaskExterior(node: HalfEdge): boolean;
|
|
410
427
|
/** Returns radians between this edge and its face predecessor edge, using all three coordinates x,y,z and given normal to resolve sweep direction.
|
|
411
428
|
* * The returned angle is positive, i.e. may be larger than PI radians.
|
|
@@ -459,10 +476,11 @@ export declare class HalfEdge implements HalfEdgeUserData {
|
|
|
459
476
|
clearMaskAroundFace(mask: HalfEdgeMask): void;
|
|
460
477
|
/** For all the nodes in the vertex loop of the given node, clear out the mask given */
|
|
461
478
|
clearMaskAroundVertex(mask: HalfEdgeMask): void;
|
|
462
|
-
/**
|
|
463
|
-
*
|
|
479
|
+
/**
|
|
480
|
+
* Compute the signed sum of xy areas of triangles from first node to edges.
|
|
464
481
|
* * A positive area is counterclockwise.
|
|
465
482
|
* * A negative area is clockwise.
|
|
483
|
+
* @returns signed area of this node's face
|
|
466
484
|
*/
|
|
467
485
|
signedFaceArea(): number;
|
|
468
486
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Graph.d.ts","sourceRoot":"","sources":["../../../src/topology/Graph.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGvD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AASvD;;;;;;;;;;GAUG;AACH,oBAAY,YAAY;IACtB;;;;OAIG;IACH,QAAQ,IAAa;IACrB;;;OAGG;IACH,aAAa,IAAa;IAS1B;;OAEG;IACH,YAAY,IAAa;IAEzB,4EAA4E;IAC5E,OAAO,KAAY;IAEnB,uDAAuD;IACvD,iBAAiB,MAAa;IAC9B,2CAA2C;IAC3C,SAAS,MAAa;IAEtB,mBAAmB;IACnB,SAAS,IAAa;IACtB,8CAA8C;IAC9C,mBAAmB,aAAa;IAChC,oBAAoB;IACpB,QAAQ,aAAa;CAMtB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,QAAQ,KAAK,GAAG,CAAC;AACnD;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE,QAAQ,KAAK,MAAM,CAAC;AAC9D;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC;AACpE;;GAEG;AACH,MAAM,MAAM,gCAAgC,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC;AAC/F;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC;AAClF;;EAEE;AACF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,0BAA0B;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,0BAA0B;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,CAAC,EAAE,GAAG,CAAC;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,GAAG,CAAC;CACf;AACD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,QAAS,YAAW,gBAAgB;IAC/C,sDAAsD;IAC/C,CAAC,EAAE,MAAM,CAAC;IACjB,oGAAoG;IAC7F,QAAQ,EAAE,MAAM,CAAC;IACxB,0BAA0B;IACnB,CAAC,EAAE,MAAM,CAAC;IACjB,0BAA0B;IACnB,CAAC,EAAE,MAAM,CAAC;IACjB,0BAA0B;IACnB,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACI,OAAO,CAAC,EAAE,GAAG,CAAC;IACrB;;OAEG;IACI,OAAO,CAAC,EAAE,GAAG,CAAC;IACrB,OAAO,CAAC,GAAG,CAAM;IACjB,6EAA6E;IAC7E,IAAW,EAAE,QAAuB;IACpC,OAAO,CAAC,gBAAgB,CAAW;IACnC,OAAO,CAAC,cAAc,CAAW;IACjC,OAAO,CAAC,SAAS,CAAW;IAC5B;OACG;IACH,IAAW,eAAe,IAAI,QAAQ,CAAkC;IACxE,uCAAuC;IACvC,IAAW,aAAa,IAAI,QAAQ,CAAgC;IACpE;OACG;IACH,IAAW,QAAQ,IAAI,QAAQ,CAA2B;IAC1D;;;OAGG;IACI,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAQzC;;;;;OAKG;WACW,kBAAkB,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,SAAS,GAAG,QAAQ;IAc3E;;;;;;OAMG;WACW,iCAAiC,CAC7C,EAAE,oBAAY,EACd,EAAE,oBAAY,EACd,EAAE,oBAAY,EACd,EAAE,oBAAY,EACd,EAAE,oBAAY,EACd,EAAE,oBAAY,EACd,EAAE,oBAAY,EACd,EAAE,oBAAY,EACd,OAAO,EAAE,QAAQ,EAAE,GAAG,SAAS,GAAG,QAAQ;IAO5C;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAI3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAK3B;;;;;;;;;OASG;WACW,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,EACjD,EAAE,oBAAY,EAAE,EAAE,oBAAY,EAAE,EAAE,oBAAY,EAAE,EAAE,oBAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,SAAS,GAAG,QAAQ;IA2B5G;;;;;;;;;;OAUG;WACW,yBAAyB,CACrC,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,QAAQ,EAAE,GAAG,SAAS,GAAG,QAAQ;IAoB5C,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAA0H;IAC3J;;;;;;OAMG;WACW,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ;IASzE,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAK;gBACnB,CAAC,GAAE,MAAU,EAAE,CAAC,GAAE,MAAU,EAAE,CAAC,GAAE,MAAU,EAAE,CAAC,GAAE,MAAU;IAkB7E;;OAEG;IACH,IAAW,eAAe,IAAI,QAAQ,CAA0C;IAChF;;OAEG;IACH,IAAW,iBAAiB,IAAI,QAAQ,CAAwC;IAChF;;;OAGG;IACI,OAAO,CAAC,IAAI,EAAE,YAAY;IACjC;;;OAGG;IACI,OAAO,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAC1C;;;OAGG;IACI,SAAS,CAAC,IAAI,EAAE,YAAY;IACnC;;;OAGG;IACI,mBAAmB,CAAC,IAAI,EAAE,YAAY;IAQ7C;;;OAGG;IACI,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAOzD;;;OAGG;IACI,iBAAiB,CAAC,IAAI,EAAE,YAAY;IAQ3C;;;OAGG;IACI,iBAAiB,CAAC,IAAI,EAAE,YAAY;IAK3C;;;OAGG;IACI,mBAAmB,CAAC,IAAI,EAAE,YAAY;IAK7C,oDAAoD;IAC7C,oBAAoB,IAAI,MAAM;IAUrC,8DAA8D;IACvD,gBAAgB,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAUjD,4DAA4D;IACrD,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAU/C;;OAEG;IACI,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,GAAE,OAAc,GAAG,OAAO;IAkB7E;;;;;OAKG;IACI,2BAA2B,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,GAAE,OAAe;IAc7F,iDAAiD;IAC1C,sBAAsB,IAAI,MAAM;IAUvC,2FAA2F;IACpF,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,GAAE,OAAc,GAAG,MAAM;IAiB7E,6FAA6F;IACtF,qBAAqB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,GAAE,OAAc,GAAG,MAAM;IAiB/E,8EAA8E;IACvE,oBAAoB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,GAAE,OAAc,GAAG,QAAQ,GAAG,SAAS;IAU5F,4EAA4E;IACrE,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,GAAE,OAAc,GAAG,QAAQ,GAAG,SAAS;IAS1F,qGAAqG;IAC9F,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,GAAE,OAAc,GAAG,QAAQ,GAAG,SAAS;IAS1F;;OAEG;IACI,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAKjD;;;OAGG;IACI,UAAU,CAAC,IAAI,EAAE,QAAQ;IAMhC;;;OAGG;IACI,MAAM,CAAC,GAAG,EAAE,MAAM;IAKzB;;;OAGG;IACI,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO;IAE7C;;;OAGG;WACW,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO;IAGzE;;;OAGG;WACW,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO;IAI1E;;;;;;;;OAQG;WACW,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,QAAQ;IAU1G;;;;;;;OAOG;WACW,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ;IAWpD;;;OAGG;IACI,kBAAkB,IAAI,QAAQ,GAAG,SAAS;IAQjD;;OAEG;IACI,YAAY;IAMnB,kGAAkG;WACpF,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,GAAG;IAC7C,8DAA8D;WAChD,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,GAAG;IAC3C,4DAA4D;WAC9C,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,GAAG;IAEjD,uEAAuE;WACzD,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG;QAAE,EAAE,EAAE,GAAG,CAAC;QAAC,IAAI,EAAE,GAAG,CAAC;QAAC,EAAE,EAAE,MAAM,EAAE,CAAA;KAAE;IAGlF,uEAAuE;WACzD,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAKtD,yEAAyE;WAC3D,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAIvD;;;OAGG;WACW,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAQtD,4CAA4C;WAC9B,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE;IAChD,kEAAkE;IAC3D,uBAAuB,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ;IAG3D,wCAAwC;IACjC,qBAAqB,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ;IAQzD,wCAAwC;IACjC,uBAAuB,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ;IAQ3D,uDAAuD;WACzC,qBAAqB,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,GAAG,OAAO;IAgDvF,8FAA8F;WAChF,uBAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,GAAG,MAAM;IAMnG,kEAAkE;WACpD,6BAA6B,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,GAAG,MAAM;IAM3H;OACG;WACW,wBAAwB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,GAAG,MAAM;IAMjG;;OAEG;WACW,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO;IASxF;;OAEG;IAEI,cAAc,IAAI,OAAO;IAIhC;;OAEG;IAEI,YAAY,IAAI,OAAO;IAU9B;;OAEG;IACI,WAAW;IAMlB;;OAEG;IACH,IAAW,cAAc,YAExB;IAED,kFAAkF;IAC3E,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAcxC,6EAA6E;WAC/D,uBAAuB,CAAC,IAAI,EAAE,QAAQ;IAEpD,6EAA6E;WAC/D,oBAAoB,CAAC,IAAI,EAAE,QAAQ;IAEjD;;MAEE;WACY,qBAAqB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAG,MAAM;IAS7E,sEAAsE;WACxD,sBAAsB,CAAC,IAAI,EAAE,QAAQ;IAInD,6EAA6E;IACtE,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO;IAIlD,oEAAoE;IAC7D,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;IAI1C,qEAAqE;IAC9D,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;IAG3C;;;;;OAKG;IACI,iBAAiB,CAAC,CAAC,CAAC,EAAE,YAAY,GAAG,GAAG,EAAE;IASjD;;;;;;OAMG;IACI,8BAA8B,CACnC,IAAI,EAAE,YAAY,EAClB,KAAK,GAAE,OAAc,EACrB,MAAM,CAAC,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE;IAclC;;;;;OAKG;IACI,mBAAmB,CAAC,CAAC,CAAC,EAAE,YAAY,GAAG,GAAG,EAAE;IAUnD;;;;;OAKG;IACI,aAAa,CAAC,CAAC,EAAE,oBAAoB,GAAG,MAAM;IAUrD;;;;;OAKG;IACI,eAAe,CAAC,CAAC,EAAE,oBAAoB,GAAG,MAAM;IASvD,qFAAqF;IAC9E,mBAAmB,CAAC,IAAI,EAAE,YAAY;IAQ7C,uFAAuF;IAChF,qBAAqB,CAAC,IAAI,EAAE,YAAY;IAO/C;;;;OAIG;IACI,cAAc,IAAI,MAAM;IAwB/B;;;;OAIG;IACI,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO;IAOrE;;;;OAIG;IACI,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO;IAQrE;;;;;OAKG;IACI,sCAAsC,CAAC,aAAa,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO;IAU9H;;OAEG;IACI,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO;IAG5C;;OAEG;IACI,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO;IAG5C;;OAEG;IACI,oBAAoB,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ;IAKxD;;OAEG;IACI,oBAAoB,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ;IAIxD;;;OAGG;IACI,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI5C;;;OAGG;IACI,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAK5C;;;OAGG;IACI,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI5C;;;;;;;OAOG;WACW,+BAA+B,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS;IAa1H;;;;;;OAMG;WACW,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ;IAU/F;;;;;OAKG;WACW,wBAAwB,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAYtF;;;;;;;OAOG;IACI,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO;CAiB9H;AAED;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,qEAAqE;IAC9D,YAAY,EAAE,QAAQ,EAAE,CAAC;IAChC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,gBAAgB,CAAK;;IAK7B;;OAEG;IACI,QAAQ,CAAC,mBAAmB,GAAE,OAAc,GAAG,YAAY;IAOlE;;OAEG;IACI,QAAQ,CAAC,IAAI,EAAE,YAAY;IAClC;;;;;;OAMG;IACI,gBAAgB,CACrB,EAAE,GAAE,MAAU,EACd,EAAE,GAAE,MAAU,EACd,EAAE,GAAE,MAAU,EACd,EAAE,GAAE,MAAU,EACd,EAAE,GAAE,MAAU,EACd,EAAE,GAAE,MAAU,EACd,EAAE,GAAE,MAAU,EACd,EAAE,GAAE,MAAU,GAAG,QAAQ;IAI3B;;;;;;;;OAQG;IACI,cAAc,CAAC,EAAE,GAAE,MAAU,EAAE,EAAE,GAAE,MAAU,GAAG,QAAQ;IAI/D;;;OAGG;IACI,qBAAqB,CAC1B,EAAE,oBAAY,EACd,EAAE,oBAAY,EACd,EAAE,oBAAY,EACd,EAAE,oBAAY,EACd,IAAI,EAAE,QAAQ,EACd,EAAE,GAAE,MAAU,GAAG,QAAQ;IAM3B;;;OAGG;IACI,0BAA0B,CAC/B,KAAK,EAAE,QAAQ,EACf,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,QAAQ,EACf,GAAG,GAAE,MAAU,GAAG,QAAQ;IAQ5B;;;;;;OAMG;IACI,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ;IAKvF;;;;;;;OAOG;IACI,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,QAAQ,EACzC,EAAE,GAAE,MAAU,EAAE,EAAE,GAAE,MAAU,EAAE,EAAE,GAAE,MAAU,EAAE,EAAE,GAAE,MAAU,GAAG,QAAQ;IAK3E;;;;;;;;;OASG;IACI,yBAAyB,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ;IAK1D;;;;;;;OAOG;IACI,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ;IAItE;;OAEG;IACI,YAAY;IAKnB;;OAEG;IACI,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,QAAQ;IAQ1E,qDAAqD;IAC9C,SAAS,CAAC,IAAI,EAAE,YAAY;IAInC,mDAAmD;IAC5C,OAAO,CAAC,IAAI,EAAE,YAAY;IAIjC,sDAAsD;IAC/C,WAAW,CAAC,IAAI,EAAE,YAAY;IAKrC;;;OAGG;IACI,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAO5C;;;;OAIG;IACI,eAAe,IAAI,aAAa,EAAE;IASzC,8DAA8D;IACvD,gBAAgB,IAAI,MAAM;IAOjC,uCAAuC;IAChC,cAAc,IAAI,MAAM;IAM/B;;;OAGG;IACI,4BAA4B,CAAC,MAAM,EAAE,gCAAgC,EAAE,IAAI,EAAE,YAAY,GAAG,MAAM;IAWzG;OACG;IACI,gBAAgB,IAAI,QAAQ,EAAE;IAOrC;OACG;IACI,kBAAkB,IAAI,QAAQ,EAAE;IAavC;;;;;;OAMG;IACI,iBAAiB,CAAC,YAAY,EAAE,iBAAiB;IAUxD;;;;;;;SAOK;IACE,aAAa,CAAC,YAAY,EAAE,iBAAiB;IAapD;;;;;;OAMG;IACI,mBAAmB,CAAC,cAAc,EAAE,iBAAiB;IAU5D;;;;;;OAMG;IACI,aAAa,CAAC,YAAY,EAAE,iBAAiB;IAOpD,8CAA8C;IACvC,UAAU,IAAI,MAAM;IAC3B,2DAA2D;IACpD,gBAAgB,CAAC,SAAS,EAAE,SAAS;IAK5C;;;;OAIG;IACI,kBAAkB,CAAC,cAAc,EAAE,YAAY,GAAG,MAAM;IAe/D;;;OAGG;IACI,mBAAmB,IAAI,MAAM;CAcrC"}
|
|
1
|
+
{"version":3,"file":"Graph.d.ts","sourceRoot":"","sources":["../../../src/topology/Graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -336,8 +336,8 @@ class HalfEdge {
|
|
|
336
336
|
this.edgeMate.setMask(mask);
|
|
337
337
|
}
|
|
338
338
|
/**
|
|
339
|
-
*
|
|
340
|
-
* @param mask mask to
|
|
339
|
+
* Clear a mask on both sides of an edge.
|
|
340
|
+
* @param mask mask to clear on this edge and its `edgeMate`
|
|
341
341
|
*/
|
|
342
342
|
clearMaskAroundEdge(mask) {
|
|
343
343
|
this.clearMask(mask);
|
|
@@ -703,31 +703,50 @@ class HalfEdge {
|
|
|
703
703
|
return Geometry_1.Geometry.crossProductXYXY(nodeB.x - nodeA.x, nodeB.y - nodeA.y, nodeC.x - nodeB.x, nodeC.y - nodeB.y);
|
|
704
704
|
}
|
|
705
705
|
/**
|
|
706
|
-
*
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
706
|
+
* Compute whether the sector defined by the chain of nodes is convex.
|
|
707
|
+
* * This computation ignores z-coordinates and connectivity, so the nodes are not required to be in the same face loop.
|
|
708
|
+
* @param nodeA the first node in the chain, nominally the face predecessor of nodeB
|
|
709
|
+
* @param nodeB the second node in the chain; the node at the sector vertex
|
|
710
|
+
* @param nodeC the third node in the chain, nominally the face successor of nodeB
|
|
711
|
+
* @param signedAreaTol optional signed area tolerance to use in test for parallel vectors.
|
|
712
|
+
* Typically this is a fraction of the sector's face's signed area. We can't compute area here, so if undefined, zero tolerance is used.
|
|
713
|
+
* @returns true iff the sector is convex
|
|
714
|
+
*/
|
|
715
|
+
static isSectorConvex(nodeA, nodeB, nodeC, signedAreaTol = 0) {
|
|
716
|
+
const signedSectorArea = 0.5 * HalfEdge.crossProductXYAlongChain(nodeA, nodeB, nodeC);
|
|
717
|
+
signedAreaTol = signedAreaTol ?? 0.0;
|
|
718
|
+
if (Math.abs(signedSectorArea) <= Math.abs(signedAreaTol)) {
|
|
719
|
+
// the sector vectors are nearly parallel or antiparallel; only the former is deemed convex.
|
|
720
|
+
return HalfEdge.dotProductNodeToNodeVectorsXY(nodeA, nodeB, nodeB, nodeC) > 0.0;
|
|
721
|
+
}
|
|
722
|
+
return signedSectorArea > -signedAreaTol; // call it convex even if we are a little bit on the other side of zero
|
|
715
723
|
}
|
|
716
724
|
/**
|
|
717
|
-
*
|
|
725
|
+
* Compute whether the sector at this node is convex.
|
|
726
|
+
* * This computation ignores z-coordinates.
|
|
727
|
+
* @param signedAreaTol optional signed area tolerance to use in test for parallel vectors.
|
|
728
|
+
* If undefined, a fraction ([[Geometry.smallMetricDistanceSquared]]) of the computed signed area is used.
|
|
729
|
+
* Pass zero to skip toleranced computation.
|
|
730
|
+
* @returns true iff the sector is convex and its two edges are not antiparallel.
|
|
718
731
|
*/
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
732
|
+
isSectorConvex(signedAreaTol) {
|
|
733
|
+
if (signedAreaTol === undefined)
|
|
734
|
+
signedAreaTol = Geometry_1.Geometry.smallMetricDistanceSquared * this.signedFaceArea();
|
|
735
|
+
return HalfEdge.isSectorConvex(this.facePredecessor, this, this.faceSuccessor, signedAreaTol);
|
|
722
736
|
}
|
|
723
737
|
/**
|
|
724
|
-
*
|
|
738
|
+
* Compute whether this face is convex.
|
|
739
|
+
* * This computation ignores z-coordinates.
|
|
740
|
+
* @param tolerance optional relative tolerance to use in test for parallel vectors.
|
|
741
|
+
* Default value is [[Geometry.smallMetricDistanceSquared]].
|
|
742
|
+
* Pass zero to skip toleranced computation.
|
|
743
|
+
* @returns true iff this face is convex.
|
|
725
744
|
*/
|
|
726
|
-
|
|
727
|
-
isFaceConvex() {
|
|
745
|
+
isFaceConvex(tolerance = Geometry_1.Geometry.smallMetricDistanceSquared) {
|
|
728
746
|
let node = this;
|
|
747
|
+
const signedAreaTol = tolerance > 0.0 ? tolerance * node.signedFaceArea() : 0.0;
|
|
729
748
|
do {
|
|
730
|
-
if (!node.isSectorConvex())
|
|
749
|
+
if (!node.isSectorConvex(signedAreaTol))
|
|
731
750
|
return false;
|
|
732
751
|
node = node.faceSuccessor;
|
|
733
752
|
} while (node !== this);
|
|
@@ -763,7 +782,7 @@ class HalfEdge {
|
|
|
763
782
|
}
|
|
764
783
|
/** Returns Returns true if the node does NOT have Mask.EXTERIOR_MASK set. */
|
|
765
784
|
static testNodeMaskNotExterior(node) { return !node.isMaskSet(HalfEdgeMask.EXTERIOR); }
|
|
766
|
-
/** Returns Returns true if the
|
|
785
|
+
/** Returns Returns true if the edge mate has Mask.EXTERIOR_MASK set. */
|
|
767
786
|
static testMateMaskExterior(node) { return node.edgeMate.isMaskSet(HalfEdgeMask.EXTERIOR); }
|
|
768
787
|
/** Returns radians between this edge and its face predecessor edge, using all three coordinates x,y,z and given normal to resolve sweep direction.
|
|
769
788
|
* * The returned angle is positive, i.e. may be larger than PI radians.
|
|
@@ -885,15 +904,16 @@ class HalfEdge {
|
|
|
885
904
|
node = node.vertexSuccessor;
|
|
886
905
|
} while (node !== this);
|
|
887
906
|
}
|
|
888
|
-
/**
|
|
889
|
-
*
|
|
907
|
+
/**
|
|
908
|
+
* Compute the signed sum of xy areas of triangles from first node to edges.
|
|
890
909
|
* * A positive area is counterclockwise.
|
|
891
910
|
* * A negative area is clockwise.
|
|
911
|
+
* @returns signed area of this node's face
|
|
892
912
|
*/
|
|
893
913
|
signedFaceArea() {
|
|
894
914
|
let sum = 0;
|
|
895
915
|
// sum area of trapezoids.
|
|
896
|
-
// * the formula in the loop gives twice the area (because it does
|
|
916
|
+
// * the formula in the loop gives twice the area (because it does not average the y values).
|
|
897
917
|
// * this is fixed up at the end by a single multiply by 0.5
|
|
898
918
|
// * individual trapezoid heights are measured from y at the start node to keep area values numerical smaller.
|
|
899
919
|
const y0 = this.y;
|
|
@@ -1387,11 +1407,10 @@ class HalfEdgeGraph {
|
|
|
1387
1407
|
let numAccepted = 0;
|
|
1388
1408
|
for (let i = 0; i < numTotal; i++) {
|
|
1389
1409
|
const candidate = this.allHalfEdges[i];
|
|
1390
|
-
if (!deleteThisNode(candidate))
|
|
1410
|
+
if (!deleteThisNode(candidate))
|
|
1391
1411
|
this.allHalfEdges[numAccepted++] = candidate;
|
|
1392
|
-
}
|
|
1393
1412
|
else
|
|
1394
|
-
candidate.
|
|
1413
|
+
candidate.yankFromVertexLoop(); // ASSUME callback symmetry so we eventually yank the mate!
|
|
1395
1414
|
}
|
|
1396
1415
|
const numDeleted = numTotal - numAccepted;
|
|
1397
1416
|
this.allHalfEdges.length = numAccepted;
|