예제 #1
0
        public void InCircleTest()
        {
            var a = new CdtSite(new Point());
            var b = new CdtSite(new Point(2, 0));
            var c = new CdtSite(new Point(1, 2));
            var s = new CdtSite(new Point(1, 1));

            Assert.IsTrue(CdtSweeper.InCircle(s, a, b, c));
            MoveSites(a, b, c, s);
            Assert.IsTrue(CdtSweeper.InCircle(s, a, b, c));
            RotateSites(a, b, c, s);
            Assert.IsTrue(CdtSweeper.InCircle(s, a, b, c));
            a = new CdtSite(new Point());
            b = new CdtSite(new Point(2, 0));
            c = new CdtSite(new Point(1, 2));
            s = new CdtSite(new Point(1, -1));
            Assert.IsTrue(!CdtSweeper.InCircle(s, a, b, c));
            MoveSites(a, b, c, s);
            Assert.IsTrue(!CdtSweeper.InCircle(s, a, b, c));
            RotateSites(a, b, c, s);
            Assert.IsTrue(!CdtSweeper.InCircle(s, a, b, c));
            a = new CdtSite(new Point());
            b = new CdtSite(new Point(1, 0));
            c = new CdtSite(new Point(5, 5));
            s = new CdtSite(new Point(3, 1));
            Assert.IsTrue(CdtSweeper.InCircle(s, a, b, c));
            MoveSites(a, b, c, s);
            Assert.IsTrue(CdtSweeper.InCircle(s, a, b, c));
            RotateSites(a, b, c, s);
            Assert.IsTrue(CdtSweeper.InCircle(s, a, b, c));
            Assert.IsTrue(CdtSweeper.InCircle(s, c, a, b));
            a = new CdtSite(new Point());
            b = new CdtSite(new Point(1, 0));
            c = new CdtSite(new Point(5, 5));
            s = new CdtSite(new Point(4, 1));
            Assert.IsTrue(!CdtSweeper.InCircle(s, a, b, c));
            MoveSites(a, b, c, s);
            Assert.IsTrue(!CdtSweeper.InCircle(s, a, b, c));
            RotateSites(a, b, c, s);
            Assert.IsTrue(!CdtSweeper.InCircle(s, a, b, c));
            a = new CdtSite(new Point());
            b = new CdtSite(new Point(1, 0));
            c = new CdtSite(new Point(5, 5));
            s = new CdtSite(new Point(3, 0.5));
            Assert.IsTrue(!CdtSweeper.InCircle(s, a, b, c));
            MoveSites(a, b, c, s);
            Assert.IsTrue(!CdtSweeper.InCircle(s, a, b, c));
            RotateSites(a, b, c, s);
            Assert.IsTrue(!CdtSweeper.InCircle(s, a, b, c));
            Assert.IsTrue(!CdtSweeper.InCircle(s, c, a, b));
        }
예제 #2
0
        void TestTriangle(CdtTriangle triangle, Set <CdtSite> usedSites)
        {
            var tsites = triangle.Sites;

            foreach (var site in usedSites)
            {
                if (!tsites.Contains(site))
                {
                    Assert.IsTrue(SeparatedByConstrainedEdge(triangle, site) || !CdtSweeper.InCircle(site, tsites[0], tsites[1], tsites[2]));
//                    {
//                        List<ICurve> redCurves = new List<ICurve>();
//                        redCurves.Add(new Ellipse(2, 2, site.Point));
//                        List<ICurve> blueCurves = new List<ICurve>();
//                        blueCurves.Add(Circumcircle(tsites[0].Point, tsites[1].Point, tsites[2].Point));
//                        ShowFront(Triangles, front, redCurves, blueCurves);
//                    }
                }
            }
        }