#include <cmath>
#include <cstdlib>
#include <ctime>
#include <vector>
 
using namespace std;
using namespace LibBoard;
 
int coordinate(int width)
{
  return 1 + (int)(width * (rand() / (RAND_MAX + 1.0)));
}
 
int main(int, char *[])
{
  board.
clear(Color::White);
  vector<Point> points;
  vector<Point>::iterator i1, i2, end;
  int n = 22;
  while (n--) {
    points.push_back(
Point(coordinate(40), coordinate(40)));
  }
 
  end = points.end();
  i1 = points.begin();
  while (i1 != end) {
    i2 = i1;
    Color pen = Color::fromHueColormap(
static_cast<float>(Tools::boardRandDouble()));
 
    while (i2 != end) {
      if (i1 != i2 && !(rand() % 6)) {
        board << 
Arrow(*i1, *i2, Arrow::Plain, pen, pen, 0.1);
        const double norm = v.
norm();
 
        board << 
Arrow(*i1, (*i1) + ((norm > 8) ? (vn * 8.0) : v), Arrow::Plain, pen, pen, 0.1).
translated(45, 0);
      }
      ++i2;
    }
    ++i1;
  }
 
  i1 = points.begin();
  while (i1 != end) {
    board << LibBoard::circle(*i1, 0.25, Color::Black, Color::Black, 0);
    board << LibBoard::circle(*i1, 0.25, Color::Black, Color::Black, 0).
translated(45, 0);
    ++i1;
  }
 
  board.
saveEPS(
"graph.eps", 100, 100);
  board.
saveFIG(
"graph.fig", 100, 100);
  board.
saveSVG(
"graph.svg", Board::BoundingBox, 2.0, Board::UCentimeter);
}