delau_tree.c
上传用户:gzelex
上传日期:2007-01-07
资源大小:707k
文件大小:1k
开发平台:

MultiPlatform

  1. #include <LEDA/impl/delaunay_tree.h>
  2. #include <LEDA/plane.h>
  3. const double R = 1000;  // "length of inifinite rays"
  4. void infi_pt(double x1, double y1, double x2, double y2, double *x, double* y)
  5. /* retourne le point a l'infini dans la direction x2 y2 depuis x1 y1*/
  6. { vector v(x2,y2);
  7.   v = v.norm();
  8.   *x = x1 + R * v[0];
  9.   *y = y1 + R * v[1];
  10. }
  11. list<segment> seg_list;
  12. void draw_triang_seg(double x1, double y1, double x2, double y2)
  13. { seg_list.append(segment(x1,y1,x2,y2));  }
  14. random_source& operator>>(random_source& R, point& p)
  15. { double x,y;
  16.   R >> x >>y;
  17.   p = point(x,y);
  18.   return R;
  19. }
  20. main()
  21. {
  22.    int N = read_int("N = ");
  23.    list<point> L;
  24.    random_source ran(0,1000);
  25.    ran.set_seed(12345*N);
  26.    for(int i=0; i<N; i++) 
  27.    { point p;
  28.      ran >> p;
  29.      L.append(p);
  30.     }
  31.   DELAUNAY_TREE<int> DT;
  32.   float T = used_time();
  33.   point p;
  34.   forall(p,L) DT.insert(p,0);
  35.   cout << string("insert time = %.2f",used_time(T)) << endl;
  36.   DT.trace_triang_edges( draw_triang_seg);
  37.   cout << string("trace time  = %.2f",used_time(T)) << endl;
  38. }