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; }
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; }
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; }