public void CanCutRoundRound() { var cap = new RoundCap(); SegmentProxy segment0 = CreateSegment(0, 0, 0, 10); var hull = new SegmentHull(segment0, 1, cap, cap); SegmentProxy segment1 = CreateSegment(-5, 5, 5, 5); var neighbor = new SegmentHull(segment1, 1, cap, cap); var pair = new SegmentPair2D(hull, neighbor); IList <double[]> limits; NearSegment startNear; NearSegment endNear; bool coincident; bool intersects = pair.CutCurveHull(0, out limits, out startNear, out endNear, out coincident); Assert.IsTrue(intersects); }
public void CutCurveHullTest() { //seg0 = CreateSegment(GeometryFactory.CreatePoint(0, 0, 0), GeometryFactory.CreatePoint(100, 200, 10)); //seg1 = CreateSegment(GeometryFactory.CreatePoint(0, 0, 0), GeometryFactory.CreatePoint(100, 200, 10)); //SegmentUtils.CutCurveHull(seg0, seg1, 0, 0, true, // out limits, out hullStartNear, out hullEndNear, out coincident); const double r = 0.0001; const double x0 = 600000; const double y0 = 200000; SegmentProxy seg0 = CreateSegment( GeometryFactory.CreatePoint(x0 + 100, y0 + 200, 10), GeometryFactory.CreatePoint(x0, y0, 500)); SegmentProxy seg1 = CreateSegment( GeometryFactory.CreatePoint(x0, y0, 500 + 2 * r), GeometryFactory.CreatePoint(x0 - 200 - r, y0, 20)); IList <double[]> limits; NearSegment hullStartNear; NearSegment hullEndNear; bool coincident; SegmentHull hull0 = seg0.CreateHull(0); SegmentHull hull1 = seg1.CreateHull(0); var pair2D = new SegmentPair2D(hull0, hull1); pair2D.CutCurveHull(0, out limits, out hullStartNear, out hullEndNear, out coincident); Assert.AreEqual(1, limits.Count); var pair3D = new SegmentPair3D(hull0, hull1); pair3D.CutCurveHull(0, out limits, out hullStartNear, out hullEndNear, out coincident); Assert.AreEqual(0, limits.Count); }