void Triangulate(int n, double size) { var random = new Random(n); var w = n * size; var cdt = new Cdt(PointsForCdt(random, n, w), null, SegmentsForCdt(w).ToList()); cdt.Run(); #if TEST_MSAGL && TEST_MSAGL CdtSweeper.ShowFront(cdt.GetTriangles(), null, null, null); #endif }
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)); }
static void Triangulation(bool reverseX) { #if TEST_MSAGL DisplayGeometryGraph.SetShowFunctions(); #endif int r = reverseX ? -1 : 1; IEnumerable <Point> points = Points().Select(p => new Point(r * p.X, p.Y)); var poly = (Polyline)RussiaPolyline.GetTestPolyline().ScaleFromOrigin(1, 1); var cdt = new Cdt(null, new[] { poly }, null); cdt.Run(); #if TEST_MSAGL CdtSweeper.ShowFront(cdt.GetTriangles(), null, null, null); #endif }
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); // } } } }