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()17 int 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