public void GenerateandCheckCenters(VoronoiSegment vrnSeg) { var delaunayline = vrnSeg.DelaunayLine(); leftCenters = CenterWarehouse(delaunayline.startleft); rightCenters = CenterWarehouse(delaunayline.endright); }
public void GenerateandCheckCorners(VoronoiSegment vrnSeg) { var voronoiline = vrnSeg.VoronoiLine(); startCorner = MakeCorner(voronoiline.startleft); endCorner = MakeCorner(voronoiline.endright); }
public void GetYCoordTest() { var sut = new VoronoiSegment(-11048.960017837, 1.924694284, new Arc(new SiteEvent(new VoronoiPoint(1, 1))), new Arc(new SiteEvent(new VoronoiPoint(1, 1))), 7); sut.finish(35559885627.6882, 10327767.6276044, 8); Assert.AreEqual(8.038006, sut.GetYCoord(10000), .0001); }
public void getlimitTest() { var sut = new VoronoiSegment(-11048.960017837, 1.924694284, new Arc(new SiteEvent(new VoronoiPoint(1, 1))), new Arc(new SiteEvent(new VoronoiPoint(1, 1))), 7); Assert.AreEqual(10000, sut.getlimit(1)); Assert.AreEqual(-10000, sut.getlimit(-1)); }
public void CalculateSlopeAndInterceptTest() { var sut = new VoronoiSegment(-11048.960017837, 1.924694284, new Arc(new SiteEvent(new VoronoiPoint(1, 1))), new Arc(new SiteEvent(new VoronoiPoint(1, 1))), 7); sut.finish(-35559885627.6882, -10327767.6276044, 8); Assert.AreEqual(0.000290433, sut.m, .000000001); Assert.AreEqual(5.133679529, sut.b, .0000001); }
public void AddToBeachLine(SiteEvent newarcpoint) { if (BeachPoints is null) { BeachPoints = new Arc(newarcpoint); } else { knownSite = BeachPoints; while (!(knownSite is null)) { var intersection = FindIntersectedArc(newarcpoint, knownSite); if (intersection.flag) { var nextpointcheckZ = FindIntersectedArc(newarcpoint, knownSite.nextpoint); if (!(knownSite.nextpoint is null) && !nextpointcheckZ.flag) { knownSite.nextpoint.previouspoint = new Arc(knownSite.arcpoint, knownSite, knownSite.nextpoint); knownSite.nextpoint = knownSite.nextpoint.previouspoint; } else { knownSite.nextpoint = new Arc(knownSite.arcpoint, knownSite); } knownSite.nextpoint.s1 = knownSite.s1; knownSite.nextpoint.previouspoint = new Arc(newarcpoint, knownSite, knownSite.nextpoint); knownSite.nextpoint = knownSite.nextpoint.previouspoint; knownSite = knownSite.nextpoint; var vifSeg = new VoronoiSegment(intersection.siteEvent.X, intersection.siteEvent.Y, knownSite, knownSite.previouspoint, 3); knownSite.previouspoint.s1 = vifSeg; knownSite.s0 = vifSeg; VoronoiGraph.Add(vifSeg); vifSeg = new VoronoiSegment(intersection.siteEvent.X, intersection.siteEvent.Y, knownSite.nextpoint, knownSite, 7); knownSite.s1 = vifSeg; knownSite.nextpoint.s0 = vifSeg; VoronoiGraph.Add(vifSeg); //Yes this needs to be added twice CheckForCircleEventsInTriple(newarcpoint.X); return; } knownSite = knownSite.nextpoint ?? null; } knownSite = BeachPoints; while (!(knownSite.nextpoint is null)) { knownSite = knownSite.nextpoint; } knownSite.nextpoint = new Arc(newarcpoint, knownSite); var x = _boundx0; var y = (knownSite.nextpoint.arcpoint.Y + knownSite.arcpoint.Y) / 2.0; var segmentEvent = new SiteEvent(new VoronoiPoint(x, y)); var vSeg = new VoronoiSegment(segmentEvent.X, segmentEvent.Y, knownSite.nextpoint, knownSite, 1); VoronoiGraph.Add(vSeg); knownSite.s1 = vSeg; knownSite.nextpoint.s0 = vSeg; }
public void SetXAndYTest_BiggerY_ReturnsNormalizedY() { var sut = new VoronoiSegment(1.924694284, -11048.960017837, new Arc(new SiteEvent(new VoronoiPoint(1, 1))), new Arc(new SiteEvent(new VoronoiPoint(1, 1))), 7); sut.finish(10327767.6276044, 35559885627.6882, 8); Assert.AreEqual(-10000, sut.start.Y); Assert.AreEqual(2.229346837, sut.start.X, .00001); Assert.AreEqual(10000, sut.end.Y); Assert.AreEqual(8.038006, sut.end.X, .00001); }