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

MultiPlatform

  1. #include <LEDA/graph.h>
  2. #include <LEDA/window.h>
  3. #include <LEDA/rat_point1.h>
  4. #include <LEDA/rat_segment1.h>
  5. extern void sweep1(const list<rat_segment1>&, GRAPH<rat_point1,rat_segment1>&);
  6. main()
  7.   window W;
  8.   W.set_node_width(3);
  9.   int size = 5;
  10.   int  N = 100;
  11.   panel P("sweep demo");
  12.   P.int_item("grid size",size,1,40);
  13.   P.int_item("# segments", N, 1,2000);
  14.   P.button("continue");
  15.   P.button("repeat");
  16.   P.button("quit");
  17.   bool repeat = false;
  18.   for(;;)
  19.   {
  20.     if ( !repeat && P.open(0,0) == 1) repeat = true;;
  21.   
  22.     W.init(-0.25*size,1.25*size,-0.25*size);
  23.     list<rat_segment1> seglist;
  24.     GRAPH<rat_point1,rat_segment1>   G;
  25.   
  26.     for (int i=0; i<N; i++)
  27.     { int x1 = rand_int(0,size);
  28.       int y1 = rand_int(0,size);
  29.       int x2 = rand_int(0,size);
  30.       int y2 = rand_int(0,size);
  31.       seglist.append(rat_segment1(x1,y1,x2,y2));
  32.      }
  33.   
  34.   
  35.     rat_segment1 s;
  36.     int c = 0;
  37.     forall(s,seglist) 
  38.     { if (++c == 16) c = 1;
  39.       W.draw_segment(s.xcoord1(),s.ycoord1(), s.xcoord2(),s.ycoord2(),color(c));
  40.      }
  41.   
  42.     sweep1(seglist,G);
  43.   
  44.     cout << G.number_of_nodes() << endl;
  45.   
  46.     node v;
  47.     forall_nodes(v,G) 
  48.        W.draw_filled_node(G[v].xcoord(),G[v].ycoord());
  49.   }
  50.  return 0;
  51. }