// file: examples/Apollonius_graph_2/example4.C #include // standard includes #include #include #include // example that uses the filtered traits #include #include // constructions kernel (inexact) typedef CGAL::Simple_cartesian CK; // exact kernel typedef CGAL::Simple_cartesian EK; // typedefs for the traits and the algorithm #include #include // Type definition for the traits class. // In this example we explicitly define the exact kernel. We also // explicitly define what operations to use for the evaluation of the // predicates and constructions, when the filtering and the exact // kernels are used respectively. // Note that the operations allowed for the filtering and the // constructions (field operations plus square roots) are different // from the operations allowed when the exact kernel is used (ring // operations). typedef CGAL::Sqrt_field_tag CM; typedef CGAL::Ring_tag EM; typedef CGAL::Apollonius_graph_filtered_traits_2 Traits; // Now we use the Apollonius graph hierarchy. // The hierarchy is faster for inputs consisting of about more than // 1,000 sites typedef CGAL::Apollonius_graph_hierarchy_2 Apollonius_graph; int main() { std::ifstream ifs("data/hierarchy.cin"); assert( ifs ); Apollonius_graph ag; Apollonius_graph::Site_2 site; // read the sites and insert them in the Apollonius graph while ( ifs >> site ) { ag.insert(site); } // validate the Apollonius graph assert( ag.is_valid(true, 1) ); return 0; }