// file: examples/Interval_skip_list/terrain.C #include #include #include #include #include #include #include typedef CGAL::Simple_cartesian SC; typedef SC::Point_3 Point_3; typedef CGAL::Triangulation_euclidean_traits_xy_3 K; typedef CGAL::Delaunay_triangulation_2 Delaunay; typedef Delaunay::Face_handle Face_handle; typedef Delaunay::Finite_faces_iterator Finite_faces_iterator; typedef CGAL::Level_interval Interval; typedef CGAL::Interval_skip_list Interval_skip_list; int main() { std::ifstream fin("terrain.pts"); // elevation ranges from 0 to 100 Delaunay dt; dt.insert(std::istream_iterator(fin), std::istream_iterator()); Interval_skip_list isl; for(Finite_faces_iterator fh = dt.finite_faces_begin(); fh != dt.finite_faces_end(); ++fh){ isl.insert(Interval(fh)); } std::list level; isl.find_intervals(50, std::back_inserter(level)); for(std::list::iterator it = level.begin(); it != level.end(); ++it){ std::cout << dt.triangle(it->face_handle()) << std::endl; } return 0; }