Beispiel #1
0
int main()
{
  const int N=10000;

  CGAL::Random rnd = CGAL::get_default_random();
  std::cout << "seed: " << rnd.get_seed() << std::endl;

  // generator for random data points in the square ( (-1,-1), (1,1) )
  Random_points_iterator rpit(1.0, rnd);

  // construct list containing N random points
  std::list<Point> all_points(N_Random_points_iterator(rpit,0),
                              N_Random_points_iterator(N));

  // add some interesting points
  all_points.push_back(Point(0., 0.));
  all_points.push_back(Point(-CGAL_PI/10.+0.1, -CGAL_PI/10.+0.1));
  all_points.push_back(Point(1., 1.));
  all_points.push_back(Point(0., 1.));
  all_points.push_back(Point(0.3, 0.4));
  all_points.push_back(Point(0.2, 0.3));
  all_points.push_back(Point(0., 0.1));

  run<Traits>(all_points, rnd);
  run<Traits_with_info>(all_points, rnd);

  return 0;
}
Beispiel #2
0
int main() {
  const int D = 4;
  const int N = 1000;
  // generator for random data points in the square ( (-1000,-1000), (1000,1000) )
  Random_points_iterator rpit(4, 1000.0);

  // Insert N points in the tree
  Tree tree(N_Random_points_iterator(rpit,0),
	    N_Random_points_iterator(rpit,N));

  // define range query objects
  double  pcoord[D] = { 300, 300, 300, 300 };
  double  qcoord[D] = { 900.0, 900.0, 900.0, 900.0 };
  Point_d p(D, pcoord, pcoord+D);
  Point_d q(D, qcoord, qcoord+D);
  Fuzzy_sphere fs(p, 700.0, 100.0);
  Fuzzy_iso_box fib(p, q, 100.0);

  std::cout << "points approximately in fuzzy range query" << std::endl;
  std::cout << "with center (300.0, 300.0, 300.0, 300.0)" << std::endl;
  std::cout << "and fuzzy radius <200.0,400.0> are:" << std::endl;
  tree.search(std::ostream_iterator<Point_d>(std::cout, "\n"), fs);

  std::cout << "points approximately in fuzzy range query ";
  std::cout << "[<200,4000>,<800,1000>]]^4 are:" << std::endl;

  tree.search(std::ostream_iterator<Point_d>(std::cout, "\n"), fib);
  return 0;
}
int main() {
  const unsigned int K = 5;
  // generator for random data points in the cube ( (-1,-1,-1), (1,1,1) )
  Random_points_iterator rpit( 1.0);
  std::vector<Point_3> points;
  
  points.push_back(Point_3(*rpit++));
  points.push_back(Point_3(*rpit++));
  points.push_back(Point_3(*rpit++));
  points.push_back(Point_3(*rpit++));
  points.push_back(Point_3(*rpit++));
  points.push_back(Point_3(*rpit++));
  points.push_back(Point_3(*rpit++));

  My_point_property_map ppmap(points);

  // Insert number_of_data_points in the tree
  Tree tree(
    boost::counting_iterator<std::size_t>(0),
    boost::counting_iterator<std::size_t>(points.size()),
    Splitter(),
    Traits(ppmap)
  );
  Point_3 query(0.0, 0.0, 0.0);
  Distance tr_dist(ppmap);

  // search K nearest neighbours
  K_neighbor_search search(tree, query, K,0,true,tr_dist);
  for(K_neighbor_search::iterator it = search.begin(); it != search.end(); it++){
    std::cout << " d(q, nearest neighbor)=  "
	      << tr_dist.inverse_of_transformed_distance(it->second) << " " 
              << points[it->first] << " " << it->first << std::endl;
  }
  return 0;
}
int main() {

  const int N=1000;

  // generator for random data points in the square ( (-1,-1), (1,1) )
  Random rnd(0);
  Random_points_iterator rpit(1.0, rnd);

  // Insert also the N points in the tree
  Tree tree(N_Random_points_iterator(rpit,0),
			      N_Random_points_iterator(N));

  // define exact circular range query
  Point center(0.2, 0.2);
  Fuzzy_circle exact_range(center, 0.2);

  std::list<Point> result;
  tree.search(std::back_inserter( result ), exact_range);

  std::cout << "\nPoints in cirle with center " << center << " and radius 0.2" << std::endl;

  std::list<Point>::iterator it;
  for (it=result.begin(); (it != result.end()); ++it) {
    std::cout << *it << std::endl;
  }

  result.clear();
  // approximate range searching using value 0.1 for fuzziness parameter
  Fuzzy_circle approximate_range(center, 0.2, 0.1);

  tree.search(std::back_inserter( result ), approximate_range);

  std::cout << "\n\nPoints in cirle with center " << center << " and fuzzy radius [0.1,0.3]" << std::endl;

  for (it=result.begin(); (it != result.end()); ++it) {
    std::cout << *it << std::endl;
  }
  std::cout << "\ndone" << std::endl;
  return 0;
}
int main() {
  const unsigned int K = 5;
  // generator for random data points in the cube ( (-1,-1,-1), (1,1,1) )
  Random_points_iterator rpit( 1.0);
  std::vector<Point_3> points;
  std::vector<int>     indices;
  
  points.push_back(Point_3(*rpit++));
  points.push_back(Point_3(*rpit++));
  points.push_back(Point_3(*rpit++));
  points.push_back(Point_3(*rpit++));
  points.push_back(Point_3(*rpit++));
  points.push_back(Point_3(*rpit++));
  points.push_back(Point_3(*rpit++));

  indices.push_back(0);
  indices.push_back(1);
  indices.push_back(2);
  indices.push_back(3);
  indices.push_back(4);
  indices.push_back(5);
  indices.push_back(6);

  // Insert number_of_data_points in the tree
  Tree tree(
    boost::make_zip_iterator(boost::make_tuple( points.begin(),indices.begin() )),
    boost::make_zip_iterator(boost::make_tuple( points.end(),indices.end() ) )  
  );
  Point_3 query(0.0, 0.0, 0.0);
  Distance tr_dist;

  // search K nearest neighbours
  K_neighbor_search search(tree, query, K);
  for(K_neighbor_search::iterator it = search.begin(); it != search.end(); it++){
    std::cout << " d(q, nearest neighbor)=  "
	      << tr_dist.inverse_of_transformed_distance(it->second) << " " 
              << boost::get<0>(it->first)<< " " << boost::get<1>(it->first) << std::endl;
  }
  return 0;
}
Beispiel #6
0
int main(int argc, char* argv[]) {
  const unsigned int D = 4;
  const unsigned int N = 100000;
  CGAL::Random rand(42);
  Random_points_iterator rpit(D, 1.0, rand);
  std::vector<Point_d> pts;
  pts.reserve(N);
  for(int i = 0; i < N; i++) {
    pts.push_back(*rpit++);
  }
  WSPD wspd(D, 1.0, pts.begin(), pts.end());

  // Uncomment to print the size of the sets of each pair in the WSPD.
  /*for(Well_separated_pair_iterator it = wspd.wspd_begin(); it < wspd.wspd_end(); it++) {
    Well_separated_pair &pair = *it;
    std::cout << "(" << pair.a()->point_container().size() << ", " << pair.b()->point_container().size() << ")" << std::endl;
  }*/

  // Prints the number of pairs in the WSPD.
  std::cout << wspd.wspd_size() << std::endl;
  return 0;
}
int  main() {
  const int N = 1000;
  const unsigned int K = 10;

  Tree tree;
  Random_points_iterator rpit(4,1000.0);
  for(int i = 0; i < N; i++){
    tree.insert(*rpit++);
  }
  Point_d pp(0.1,0.1,0.1,0.1);
  Point_d qq(0.2,0.2,0.2,0.2);
  Iso_box_d query(pp,qq);

  Distance tr_dist;
  Neighbor_search N1(tree, query, 5, 10.0, false); // eps=10.0, nearest=false

  std::cout << "For query rectangle = [0.1, 0.2]^4 " << std::endl
	    <<  "the " << K << " approximate furthest neighbors are: " << std::endl;
  for (Neighbor_search::iterator it = N1.begin();it != N1.end();it++) {
    std::cout << " Point " << it->first << " at distance  " << tr_dist.inverse_of_transformed_distance(it->second) << std::endl;
  }
  return 0;
}