Exemplo n.º 1
0
        public static bool checkCore(Point u, Point v, int[] gi, List <Point> vertices, out bool uRedundant, out bool vRedundant)
        {
            List <Point> corePoints = new List <Point>();
            string       index;

            corePoints.AddRange(vertices);

            for (int i = 0; i < Globals.d; i++)
            {
                index = (Globals.d - 1).ToString() + Globals.k.ToString() + gi[i].ToString();

                if (Globals.coreSet.ContainsKey(index))
                {
                    foreach (Point p in Globals.coreSet[index])
                    {
                        Point q = p.clone();
                        q.increaseDimensionality(i / 2, (i % 2 == 0));
                        corePoints.Add(q);
                    }
                }
            }

            //todo -- this should check that the vertices remain vertices after chull.
            return(CDD.convexHullVertex(corePoints, u, v, out uRedundant, out vRedundant));
        }
Exemplo n.º 2
0
        //returns true if points are vertices of the convex core
        private static bool checkConvexCore(Point u, Point v, int[] gap, out bool uRedundant, out bool vRedundant)
        {
            List <Point> corePoints = new List <Point>();
            string       index0, indexk;
            Point        q;

            corePoints.Add(u);
            corePoints.Add(v);

            for (int i = 0; i < Globals.d; i++)
            {
                index0 = (Globals.d - 1).ToString() + Globals.k.ToString() + gap[i].ToString();
                indexk = (Globals.d - 1).ToString() + Globals.k.ToString() + (((2 * Globals.gap - gap[i]) > Globals.gap) ? (Globals.gap) : (2 * Globals.gap - gap[i])).ToString();

                //List<Point> corePoints0 = FileIO.readPointsFromFile(Globals.directory + "/" + index0 + "/coreSet");
                //List<Point> corePointsk = FileIO.readPointsFromFile(Globals.directory + "/" + indexk + "/coreSet");

                List <Point> corePoints0 = (Globals.coreSet.ContainsKey(index0)) ? Globals.coreSet[index0] : new List <Point>();
                List <Point> corePointsk = (Globals.coreSet.ContainsKey(indexk)) ? Globals.coreSet[indexk] : new List <Point>();

                foreach (Point p in corePoints0)
                {
                    q = p.clone();
                    q.increaseDimensionality(i, true);
                    corePoints.Add(q);
                }
                foreach (Point p in corePointsk)
                {
                    q = p.clone();
                    q.increaseDimensionality(i, false);
                    corePoints.Add(q);
                }
            }

            return(CDD.convexHullVertex(corePoints, u, v, out uRedundant, out vRedundant));
        }