Ticket #8375: ticket_8375.cpp

File ticket_8375.cpp, 1.5 KB (added by mkaravel, 8 years ago)

stand-along program for reproducing ticket #8375

Line 
1#include <iostream>
2
3#include <boost/assert.hpp>
4
5#include <boost/geometry/geometry.hpp>
6#include <boost/geometry/geometries/geometries.hpp>
7#include <boost/geometry/multi/geometries/multi_geometries.hpp>
8
9namespace bg = boost::geometry;
10
11typedef bg::model::point<int, 2, bg::cs::cartesian> point_type;
12typedef bg::model::polygon<point_type, false, false> polygon_type; //ccw, open
13typedef bg::model::multi_polygon<polygon_type> multi_polygon_type; //ccw, open
14
15int main()
16{
17 polygon_type p1, p2;
18 multi_polygon_type result;
19 bg::read_wkt("POLYGON((813 277,1341 319,1863 361,2391 571,2913 361,3441 319,3963 277,3963 32767,813 32767))", p1);
20
21 bg::read_wkt("POLYGON((813 277,1341 319,1863 571,2391 571,2913 571,3441 319,3963 277,3963 32767,813 32767))", p2);
22
23 bool is_valid1 = bg::is_valid(p1);
24 bool is_valid2 = bg::is_valid(p2);
25
26 if ( is_valid1 )
27 {
28 std::cout << "1st polygon is valid ..." << std::endl;
29 }
30 else
31 {
32 std::cout << "1st polygon is NOT valid ..." << std::endl;
33 bg::correct(p1);
34 BOOST_ASSERT( bg::is_valid(p1) );
35 }
36
37 if ( is_valid2 )
38 {
39 std::cout << "2nd polygon is valid ..." << std::endl;
40 }
41 else
42 {
43 std::cout << "2nd polygon is NOT valid ..." << std::endl;
44 bg::correct(p2);
45 BOOST_ASSERT( bg::is_valid(p2) );
46 }
47
48 bg::sym_difference(p1, p2, result);
49
50 std::cout << bg::wkt(result) << std::endl;
51 std::cout << bg::dsv(result) << std::endl;
52 std::cout << "# of points: " << bg::num_points(result) << std::endl;
53
54 return 0;
55}