Ejemplo n.º 1
0
        internal void computeSection(Point_dt p1, Point_dt p2)
        {
            Triangle_dt t1 = _dt.find(p1);
            Triangle_dt t2 = _dt.find(p2);

            _p1 = t1.z(p1);
            _p2 = t2.z(p2);
            if (_tr == null)
            {
                _tr = new List <Triangle_dt>();
            }
            else
            {
                _tr.Clear();
            }
            if (_section == null)
            {
                _section = new List <Point_dt>();
            }
            else
            {
                _section.Clear();
            }
            Triangle_dt curr_t = t1;

            while (curr_t != t2 && curr_t != null)
            {
                _tr.Add(curr_t);
                cut(curr_t);
                curr_t = next_t(p1, p2, curr_t, _tr);
            }
            _tr.Add(t2);
        }
Ejemplo n.º 2
0
        static void DoTimeTest()
        {
            int    size = 100000, size2 = size;
            double delta = 1000, delta2 = delta / 2;

            double[]   xx  = new double[size], yy = new double[size];
            Point_dt[] ps  = new Point_dt[size];
            double[]   xx2 = new double[size2], yy2 = new double[size2];

            DateTime start            = DateTime.Now;
            Delaunay_Triangulation ad = new Delaunay_Triangulation();

            Random r = new Random();

            for (int i = 0; i < size; i++)
            {
                xx[i] = (r.NextDouble() * delta - (delta * 0.1));
                yy[i] = (r.NextDouble() * delta - (delta * 0.1));

                ps[i] = new Point_dt(xx[i], yy[i]);
                ad.insertPoint(ps[i]);
            }
            DateTime mid = DateTime.Now;

            for (int i = 0; i < size2; i++)
            {
                xx2[i] = (r.NextDouble() * delta2);
                yy2[i] = (r.NextDouble() * delta2);
            }
            DateTime m1 = DateTime.Now;

            for (int i = 0; i < size2; i++)
            {
                Point_dt    p  = new Point_dt(xx2[i], yy2[i]);
                Triangle_dt t1 = ad.find(p);
                if (!t1.contains(p))
                {
                    Console.WriteLine(i + ") **ERR: find *** T: " + t1);
                }
            }
            DateTime e1 = DateTime.Now;

            Console.WriteLine("delaunay_triangulation " + ad.size() + " points, "
                              + ad.trianglesSize() + " triangles,  Triangles_td: "
                              + Triangle_dt._counter + "  ,c2: " + Triangle_dt._c2);
            Console.WriteLine("Constructing time: " + (mid - start).TotalSeconds);
            Console.WriteLine("*** E3 find:  time: " + (e1 - m1).TotalSeconds);
            Console.WriteLine("delaunay_triangulation " + ad.size() + " points, "
                              + ad.trianglesSize() + " triangles,  Triangles_td: "
                              + Triangle_dt._counter + "  ,c2: " + Triangle_dt._c2);
        }