Esempio n. 1
0
File: Edge.cs Progetto: craigge/dx11
        public static Edge CreateBisectingEdge(Site s0, Site s1) {
            var edge = Create();
            edge.LeftSite = s0;
            edge.RightSite = s1;
            s0.AddEdge(edge);
            s1.AddEdge(edge);

            var dx = s1.X - s0.X;
            var dy = s1.Y - s0.Y;
            var absdx = dx > 0 ? dx : -dx;
            var absdy = dy > 0 ? dy : -dy;
            edge.C = s0.X*dx + s0.Y*dy + (dx*dx + dy*dy)*0.5f;
            if (absdx > absdy) {
                edge.A = 1.0f;
                edge.B = dy/dx;
                edge.C /= dx;
            } else {
                edge.B = 1.0f;
                edge.A = dx/dy;
                edge.C /= dy;
            }
            Console.WriteLine(edge);

            return edge;
        }
Esempio n. 2
0
File: Site.cs Progetto: craigge/dx11
        private static int CompareInt(Site s1, Site s2) {
            int returnValue = Voronoi.CompareByYThenX(s1, s2);

            if (returnValue == -1) {
                if (s1.SiteIndex > s2.SiteIndex) {
                    var temp = s2.SiteIndex;
                    s2.SiteIndex = s1.SiteIndex;
                    s1.SiteIndex = temp;
                }
            } else if (returnValue == 1) {
                if (s2.SiteIndex > s1.SiteIndex) {
                    var temp = s2.SiteIndex;
                    s2.SiteIndex = s1.SiteIndex;
                    s1.SiteIndex = temp;
                }
            }
            return returnValue;
        }
Esempio n. 3
0
File: Site.cs Progetto: craigge/dx11
 private static int Compare(Site s1, Site s2) {
     return CompareInt(s1, s2);
 }
Esempio n. 4
0
 public int Push(Site site) {
     _sorted = false;
     _sites.Add(site);
     return Length;
 }