1 #include <CGAL/Exact_predicates_inexact_constructions_kernel.h> 2 #include <CGAL/Stream_lines_2.h> 3 #include <CGAL/Runge_kutta_integrator_2.h> 4 #include <CGAL/Triangular_field_2.h> 5 6 #include <iostream> 7 #include <fstream> 8 9 typedef CGAL::Exact_predicates_inexact_constructions_kernel K; 10 typedef K::Point_2 Point; 11 typedef K::Vector_2 Vector; 12 typedef CGAL::Triangular_field_2<K> Field; 13 typedef CGAL::Runge_kutta_integrator_2<Field> Runge_kutta_integrator; 14 typedef CGAL::Stream_lines_2<Field, Runge_kutta_integrator> Strl; 15 typedef Strl::Stream_line_iterator_2 stl_iterator; 16 main()17int main() 18 { 19 Runge_kutta_integrator runge_kutta_integrator(1); 20 21 /*datap.tri.cin and datav.tri.cin are ascii files where are stored the vector values*/ 22 std::ifstream inp("data/datap.tri.cin"); 23 std::ifstream inv("data/datav.tri.cin"); 24 std::istream_iterator<Point> beginp(inp); 25 std::istream_iterator<Vector> beginv(inv); 26 std::istream_iterator<Point> endp; 27 28 Field triangular_field(beginp, endp, beginv); 29 30 /* the placement of streamlines */ 31 std::cout << "processing...\n"; 32 double dSep = 30.0; 33 double dRat = 1.6; 34 Strl Stream_lines(triangular_field, runge_kutta_integrator,dSep,dRat); 35 std::cout << "placement generated\n"; 36 37 /*writing streamlines to streamlines.stl */ 38 std::cout << "streamlines.stl\n"; 39 std::ofstream fw("streamlines.stl",std::ios::out); 40 Stream_lines.print_stream_lines(fw); 41 } 42