Example #1
0
        public void GenerateandCheckCenters(VoronoiSegment vrnSeg)
        {
            var delaunayline = vrnSeg.DelaunayLine();

            leftCenters  = CenterWarehouse(delaunayline.startleft);
            rightCenters = CenterWarehouse(delaunayline.endright);
        }
Example #2
0
        public void GenerateandCheckCorners(VoronoiSegment vrnSeg)
        {
            var voronoiline = vrnSeg.VoronoiLine();

            startCorner = MakeCorner(voronoiline.startleft);
            endCorner   = MakeCorner(voronoiline.endright);
        }
Example #3
0
        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);
        }
Example #4
0
        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));
        }
Example #5
0
        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);
        }
Example #6
0
        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;
            }
Example #7
0
        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);
        }