Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }