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

MultiPlatform

  1. #include <LEDA/graph.h>
  2. #include <LEDA/window.h>
  3. #include <LEDA/rat_point.h>
  4. #include <LEDA/rat_segment.h>
  5. #include <LEDA/plane_alg.h>
  6. main()
  7.   window W;
  8.   W.set_node_width(3);
  9.   int size = 5;
  10.   int  N = 200;
  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 )
  21.     { int but = P.open(0,0);
  22.       if (but == 1) repeat = true;
  23.       if (but == 2) break;
  24.      }
  25.   
  26.     W.init(-0.25*size,1.25*size,-0.25*size);
  27.     list<rat_segment> seglist;
  28.     GRAPH<rat_point,rat_segment>   G;
  29.   
  30.     for (int i=0; i<N; i++)
  31.     { int x1 = rand_int(0,size);
  32.       int y1 = rand_int(0,size);
  33.       int x2 = rand_int(0,size);
  34.       int y2 = rand_int(0,size);
  35.       seglist.append(rat_segment(x1,y1,x2,y2));
  36.      }
  37.   
  38.   
  39.     int j = 0;
  40.     rat_segment s;
  41.     forall(s,seglist) 
  42.     { j++;
  43.       W.del_messages();
  44.       W.message(string("%4d",j));
  45.       color c = color(1 + (j % 15));
  46.       W.draw_segment(s.xcoord1(),s.ycoord1(), s.xcoord2(),s.ycoord2(),c);
  47.      }
  48.   
  49.     SWEEP_SEGMENTS(seglist,G);
  50.   
  51.     W.del_messages();
  52.     W.message(string("|V| = %d",G.number_of_nodes()));
  53.   
  54.     node v;
  55.     forall_nodes(v,G) 
  56.        W.draw_filled_node(G[v].xcoord(),G[v].ycoord());
  57.   }
  58.  return 0;
  59. }